C语言上机试题库C语言上机试题库
C上机试题库
一、2002年4月
/*程序修改题1 给定程序MODI1.C中函数fun的功能是: 先从键盘上输入一个 3行3列矩阵的各个元素的值, 然后输出主对角线元素之和。 请改正函数 fun 中的错误或在横线处填上适当的内容并把横线删 除,使它能得出正确的结果。 注意: 不要改动 main 函数,不得增行或删行,也不得更改程序 的结构! */ #include int fun() { int a[3][3],sum; int i,j; /*********found**********/ sum=0; //______; for (i=0; i < 3; i++) { for (j=0; j < 3; j++) /*********found**********/ scanf("%d",&a[ i ][ j ]); //scanf("%d",a[ i ][ j ]); } for (i=0; i < 3; i++) sum=sum+a[ i ][ i ]; printf("Sum=%d\n",sum); }
main() { fun(); }
/*编程题 编写程序, 实现矩阵(3行3列)的转置(即行列互换) 例如, 输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900
注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun 的花括号中填入你编写的若干语句。 */ #include #include
int fun(int array[3][3]) {// int i,j,t; for(i=0; i < 3; i++) for(j=0; j < i; j++) { t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } // }
main() { int i,j; int array[3][3]={{100,200,300}, {400,500,600}, {700,800,900}};
clrscr() ; for (i=0; i < 3; i++) { for (j=0; j < 3; j++) printf("%7d",array[i][j]); printf("\n"); } fun(array); printf("Converted array:\n"); for (i=0; i < 3; i++) { for (j=0; j < 3; j++) printf("%7d",array[i][j]); printf("\n"); } NONO(); }
NONO() { /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ int i,j, array[3][3]; FILE *rf, *wf ;
rf = fopen("b0103.in", "r") ; wf = fopen("b0103.out", "w") ; for (i=0; i < 3; i++) for (j=0; j < 3; j++) fscanf(rf, "%d", &array[i][j]); fun(array); for (i=0; i < 3; i++) { for (j=0; j < 3; j++) fprintf(wf, "%7d", array[i][j]); fprintf(wf, "\n"); } fclose(rf) ; fclose(wf) ; } /*程序修改题2 给定程序MODI1.C中函数fun的功能是: 将从键盘上输入的每个 单词的第一个字母转换为大写字母, 输入时各单词必须用空格隔开, 用'.'结束输入。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数, 不得增行或删行,也不得更改 程序的结构! ****老王注:本类有输出结果的程序修改题,在评分时先看结果,如果 **** 结果正确,则直接给分;结果不正确或无结果,再一个错 **** 一个错评分。此法并不适用所有类似题。 */ #include
int fun(char *c,int status) { /***********found**********/ if (*c==' ') return 1; //if (c==' ') return