一、选择题
1.B或C 2.D 3.B 4.D 5.D 6.C和D 7.C 8.C 9.C 10.D(实际都正确) 11.C 12.B 13.D 14.A 15.B 16.B 17.C 18.D 19.B 20.D 21. D 22.B 23.D 24.D 25.D 26.D 27.C 28.A 29.A 30.A 31.D
二、填空题
1.i=1 x[i-1] 2. &a[i] i%4==0 putchar(‘\\n’);或printf(“\\n”); 3. k=0; k=i j=0; j=i i=a[k];a[k]=a[j];a[j]=i; 4. 1 3 4 5 5. 求数组中正数的和并输出 6.The number is :5,The average is:5. 7. 常量表达式 常量表达式 8.按行存放,即先存第一行,再存第二行,以此类推 9.0 6 10.0 11.30 12.j=2 j>=0 13. 1 6 7 11 12 13
16 17 18 19 21 22 23 24 25 14. j<=2 b[j][i]=a[i][j] 15. 58 16.在第一条scanf语句后增加j=n; % / 将第三个printf语句中的输出项n换成j j=i; j>0; j—
17. 8 18. 600 19. 在第三个for语句前增加s=0; k=0 a[i][k]*b[k][j] printf(“\\n”); 20. str[0] 并在第一个strcpy语句后增加一行: if(strcmp(str[1],s)<0) strcpy(s,str[1]); 最后的空为: s
三、编程题
1.参考程序如下: #include \"stdio.h\" #define N 10 void main() {
int i,price[N]; int max,min; float ave,sum;
for(i=0;i printf(\"价格范围为%d---%d;平均价格为%.2f\\n\ } 2.选择排序的程序如下: #include \"stdio.h\" void main() { int i,j,min,temp,a[10]; /*input*/ for(i=0;i<10;i++) scanf(\"%d\ printf(\"\\n\"); /* start to sort */ for(i=0;i<10-1;i++) { min=i; for(j=i+1;j<10;j++) if(a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } /*output*/ for(i=0;i<10;i++) printf(\"%5d\ } 3.冒泡排序的程序如下: #define N 10 #include \"stdio.h\" void main() { int i,j,m; int a[N]; for(i=0;i m=a[j]; a[j]=a[j+1]; a[j+1]=m; } for(i=0;i 4。二分查找(或折半查找)程序如下: #include \"stdio.h\" #define n 10 void main() { int a[n],find; int x,i,top,bottom,mid; printf(\"input the sorted numbers:\\n\"); for(i=0;i printf(\"input the number to find:\\n\"); scanf(\"%d\ find=0;top=0;bottom=n-1; while(!find && top<=bottom) { mid=(bottom+top+1)/2; if(x==a[mid]) { find=1; printf(\"x=%d position=%d\\n\ } else if(x>a[mid]) bottom=mid-1; else top=mid+1; } if(!find) printf(\"the number %d is not in the table\ } 5.寻找指定的年龄并删除,若无则提示程序如下: #include \"stdio.h\" void main() { int i,n,j,flag=0; int a[10]; printf(\"请输入10个年龄:\\n\"); for(i=0;i<10;i++) scanf(\"%d\ printf(\"再输入一个要删除的年龄:\"); scanf(\"%d\ for(i=0;i<10;i++) if(a[i]==n) { flag=1; break; } if(flag) { printf(\"有!\\n\"); for(j=i;j<10-flag;j++) a[j]=a[j+1]; } else printf(\"无该年龄!\\n\"); for(i=0;i<10-flag;i++) printf(\"%5d\ printf(\"\\n\"); } 6.插入排序的程序如下: #include \"stdio.h\" void main() { int value,t1,t2,i,j; int a[11]={1,10,20,30,40,50,60,70,80,90}; //在数组a中多设一个位置,以保存插入的数 for(i=0;i<10;i++) printf(\"%5d\ putchar('\\n'); scanf(\"%d\ if(value>a[9]) a[10]=value; else for(i=0;i<10;i++) if(a[i]>value) { t1=a[i]; a[i]=value; for(j=i+1;j<11;j++) { t2=a[j]; a[j]=t1; t1=t2; } break; } for(i=0;i<11;i++) printf(\"%5d\ putchar('\\n'); } 7.对称方阵检验的程序如下: #define N 5 #include \"stdio.h\" void main() { int a[N][N],i,j; int flag=0; //标识为对称方阵,若为1则不是 printf(\"请输入%dx%d个数据:\\n\ for(i=0;i if(!flag) printf(\"你输入的对称方阵如下:\\n\"); else printf(\"你输入的非对称方阵如下:\\n\"); for(i=0;i int a[N][M]; int i,j,flag,max,col; for(i=0;i for(j=0;j } } 9.矩阵填充程序如下: #define N 5 #include \"stdio.h\" void main() { int a[N][N],i,j; for(i=0;i for(i=0;i char str[]=\"Happy New Year!\"; int i=0; while(str[i]!='\\0') { if(str[i]>='a' &&str[i]<='z') str[i]=str[i]-32; i++; } printf(\"%s\\n\} 11.答案检查程序如下: #include \"stdio.h\" #include \"string.h\" void main() { char pass_str[80]; /*定义字符数组passstr*/ int i=0; /*检验答案*/ while(1) { if(i==3) { printf(\"你已三次输入错误答案。正确答案应是:Dennis Ritchie.\\n程序结束!\\n\"); break; /*输入三次错误的答案,退出程序*/ } else if(i>0) printf(\"再试一次:\\n\"); printf(\"请输入C语言的发明人:\\n\"); gets(pass_str); /*输入答案*/ if(strcmp(pass_str,\"Dennis Ritchie\")!=0) /*答案错*/ printf(\"答案错误!\"); else { printf(\"Good!\\n\"); printf(\"你已通过测试!\\n\"); break; }/*输入正确的答案,中止循环*/ i++; //次数加1 } } 12.从一个字符串中删除指定字符的程序如下: #include \"stdio.h\" #include \"string.h\" void main() { char p[80],ch; int i=0,j; gets(p); scanf(\"%c\ while(p[i]!='\\0') { if(p[i]==ch) for(j=i;j<=strlen(p);j++) p[j]=p[j+1]; else i++; } printf(\"%s\\n\ } 13。矩阵相乘的程序参见填空题的19题。 14.指定矩阵生成程序如下: #define N 5 #include \"stdio.h\" void main() { int a[N][N]={0},i,j; for(i=0;i 因篇幅问题不能全部显示,请点此查看更多更全内容