内容发布更新时间 : 2024/11/20 12:36:32星期一 下面是文章的全部内容请认真阅读。
#include
{ int a[4][4],i,j,s=0,m=0;
float n=0;
for(i=0;i<4;i++) for(j=0;j<4;j++) a[i][j]=3*i+2*j-6; printf(\原始数组为:\\n\for(i=0;i<4;i++) { for(j=0;j<4;j++)
printf(\printf(\}
for(j=0;j<4;j++)
s+=a[1][j];
printf(\第二行4元素累加和为:%d\\n\for(j=0;j<4;j++)
n+=a[j][3];
printf(\第四列4元素平均值为:%.2f\\n\for(i=0;i<4;i++) if(a[i][i]<0) m++;
printf(\主对角线4元素中负数的个数为:%d\\n\}
10.约瑟夫环问题:编号为1,2,3,...,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计程序求出出列顺序。
分析:设整型数组a中保存n个人的密码,对应的人出列后,数组元素置0作为标志。顺时针确定下一个人的方法,可将下标加1,再对n求余。
#include
{ int a[100];
int i,j,m,n,k=0;
printf(\输入人数n和任选的一个正整数m:\ scanf(\
printf(\输入n个人的密码: \ for (i=0;i scanf(\ printf(\出列顺序为: \ for(i=0;i { j=1; while(j { while(a[k]==0) /*跳过已出列的人*/ k=(k+1)%n; j++; k=(k+1)%n; } while(a[k]==0) /*跳过已出列的人*/ k=(k+1)%n; printf(\ m=a[k]; a[k]=0; } } 第7章习题 一、选择题 1 A 2 D 3 D 4 B 5 A 6 D 7 C 8 D 9 B 10 A 二 填空题 1. main() 2. main() 3.函数首部 4. 解决函数必须“定义在前,使用在后”的原则问题 5. int 6. 定义 调用 7. 地址传递 值传递 8. return void 9. void f(float a,float b) float f(float a,float b) 10. static 三 程序分析题 1. a=48 2. 8,17 3. 2721 4. BASIC C COBOL FORTRAN PASCAL Smalltalk 5. 6 1 2 3 6 5 4 四、编程题 1.写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。 #include printf(\ scanf(\ if (prime(n)) printf(\ else printf(\ } int prime(int n) {int flag=1,i; for (i=2; i 2.写一个函数,用于实现函数strcmp()的功能,能将两个字符串进行比较,将两个字符串中第一个不相同字符的ASCII码值之差作为函数的返回值。 #include int MyStrcmp(char s[], char t[]); main() { char str1[20],str2[20]; printf(\gets(str1); printf(\gets(str2); if (MyStrcmp(str1,str2)>0) printf(\ else if (MyStrcmp(str1,str2)<0) printf(\ else printf(\} int MyStrcmp(char s[], char t[]) { int i; for (i=0;s[i]==t[i]; i++) if (s[i]=='\\0') return 0 ; return (s[i]-t[i]); } 3. 写一个函数,用于实现函数strcat()的功能, 能将两个字符串连接。 #include {void concatenate(char string1[],char string2[],char string[]); char s1[100],s2[100],s[100]; printf(\ scanf(\ printf(\ scanf(\ concatenate(s1,s2,s); printf(\ } void concatenate(char string1[],char string2[],char string[]) {int i,j; for (i=0;string1[i]!='\\0';i++) string[i]=string1[i]; for(j=0;string2[j]!='\\0';j++) string[i+j]=string2[j]; string[i+j]='\\0'; } 4. 从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。 #include void MaxMinExchang(int a[], int n) {