哈工大 C语言程序设计精髓 MOOC慕课 6-12周编程题答案 下载本文

int IsCancel(int a[], int n, int k){ int i,s=0; for (i=0;i

else return 0; } int main() {

int a[100]; int i,n,k;

printf(\ scanf(\ for (i=0;i

if(IsCancel(a,n,k)) printf(\else printf(\ }\9.3 \

请编程找出一个M*N矩阵中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。如果矩阵中没有鞍点,则输出“No saddle point!” 已知函数原型:

void FindSaddlePoint(int a[][N], int m, int n); 在该函数中输出有无鞍点的信息。 程序运行结果示例1: Input m,n: 3,3↙ Input matrix: 1 2 3 4 5 6 7 8 9 a[0][2] is 3

程序运行结果示例2: Input m,n:

3,4↙ Input matrix: 3 4 7 5 0 1 8 2 9 3 2 6

No saddle point!

输入提示: \ “Input matrix:\\n\输入格式:

输入矩阵大小: \输入矩阵元素: \输出格式:

找到鞍点的输出格式:\没找到鞍点的输出格式:\*/

#include #include main() {

int a[100][100],m;

int n,i,j,k,max,flag=0,shit=0,l;

printf(\ scanf(\printf(\for(i=0; i

scanf(\for(i=0; i

flag=0; m=a[i][0]; for(j=0; jm) {

m=a[i][j]; max=j; } for(k=0; k

if(a[k][max]<=m &&k!=i) {

flag=1; break;

} }

if(flag==0){

printf(\ } }

if (shit==0)

printf(\}\9.4 \

输入一串字符(字符数小于80),以回车表示输入结束,编程计算并输出这串字符中连续重复次数最多的字符和重复次数。如果重复次数最多的字符有两个,则输出最后出现的那一个。 已知函数原型:

//函数功能:统计字符串中连续重复次数最多的字符及其重复的次数

//函数参数:str指向待统计的字符串,指针形参tag返回重复字符最后出现的下标位置 //函数返回值:返回字符重复的次数 int CountRepeatStr(char str[], int *tag);

求解思路:设置一个计数器,遍历字符串中的所有字符,若str[i] == str[i+1],则计数器加1,同时判断计数器的值是否大于记录的最大重复次数max,若大于,则用计数器的值更新max,并记录该字符最后出现的位置i+1.若str[i] != str[i+1],则计数器重新初始化为1。遍历结束时,函数返回max的值。