中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案(4)

2018-12-21 12:01

}

9.2

n/=10; a[i]=b; i++; }

a[i]=n;

int flag=0;

for(c=0; c

for(d=c+1; d

if(a[c]==a[d]) {

flag=1; break; } }

//if (a[0] == a[i-1]||a[0] == a[1]) flag=1; if(flag) printf(\); else printf(\);

教授的课(4分)

题目内容:

教授正在为一个有N个学生的班级讲授离散数学课。他对某些学生缺乏纪律性很不满意,于是决定:如果课程开始后上课的人数小于K,就取消这门课程。从键盘输入每个学生的到达时间,请编程确定该课程是否被取消。如果该门课程被取消,则输出“Yes”,否则输出“No”。假设教授在时刻0开始上课。如果一个学生的到达时间是非正整数,则表示该学生在上课前进入教室。如果一个学生的到达时间是正整数,则表示该学生在上课后进入教室。如果一个学生在时刻0进入教室,也被认为是在上课前进入教室。假设到达时间的绝对值不超过100,学生数N不超过1000。要求在输入学生的到达时间之前,先输入N和K。 已知函数原型:

//函数功能:根据数组a中记录的学生到达时间确定课程是否被取消,取消则返回1,否则返回0 int IsCancel(int a[], int n, int k); 程序运行结果示例1: Input n,k: 4,3↙ -1 -3 4 2↙ YES

程序运行结果示例2:

Input n,k: 5,3↙ -1 -2 -3 0 4↙ NO

输入提示:\输入格式: \ \

输入包括两行数据: 第1行是n,k的值。 第2行是学生的到达时间。 输出格式:

课程被取消,输出\ 课程不取消,输出\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include

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

for (i=0;i

if (s

elsereturn 0; }

int main() {

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

printf(\); scanf(\,&n,&k); for (i=0;i

if(IsCancel(a,n,k)) printf(\); else printf(\);

return 0; }

9.3

寻找鞍点(4分)

题目内容:

请编程找出一个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(\,&n,&l);

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

scanf(\,&a[i][j]); 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(\,i,max,m);shit=1;break; } }

if (shit==0)

printf(\); }

9.4

统计重复字符(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的值。

程序运行结果示例1: Input a string: 2344455555↙ 5:5

程序运行结果示例2: Input a string: sgf222257↙ 2:4

输入提示信息:\ 输入格式: 用gets()输入字符串 输出格式:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include #include

int main() {

char a[80];

int b, i,j,t=1,tl,num=0;

printf(\); gets(a);

for (i=0;i

for (j=i+1;j

if (i==0){ tl=t; }


中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:桑树病虫害后期防治

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: