《C上机试题及答案.docx》由会员分享,可在线阅读,更多相关《C上机试题及答案.docx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C上机试题及答案二级C语言上机考试复习资料,共有50套题目一、程序填空题 1、给定程序中,函数fun的功能是:在随意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数交换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。 例如,有9个正整数:1 5 7 23 87 5 8 21 45 按升序排列时的中间数为:8 处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序
2、的构造!#include #define N 9int fun(int x) int i,j,k,t,mid,bN; for(i=0;iN;i+) bi=xi; for(i=0;i=N/2;i+) k=i; for(j=i+1;jbj) k=j; if(k != i ) /*found*/ t=bi; bi=_1_; bk=t; /*found*/ mid=b_2_; for(i=0; iN; i+)/*found*/ if(xi _3_ mid) xi=mid; return mid;main() int i, xN=1,5,7,23,87,5,8,21,45; for(i=0; iN; i
3、+) printf(%d ,xi); printf(nThe mid data is: %dn,fun(x); for(i=0; iN; i+) printf(%d ,xi); printf(n); 2、给定程序中,函数fun的功能是建立一个NN的矩阵。 矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,依次类推。例如,若N=5,生成的矩阵为: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 留意:源程序存放在考生文件
4、夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #define N 7/*found*/void fun(int (*a) _1_) int i,j,k,m; if(N%2=0) m=N/2 ; else m=N/2+1; for(i=0; im; i+) /*found*/ for(j= _2_ ; jN-i; j+) aij=aN-i-1j=i+1; for(k=i+1; kN-i; k+)/*found*/ aki=akN-i-1= _3_; main() int xNN=0,i,j; fun(x); printf(nThe result is:n);
5、 for(i=0; iN; i+) for(j=0; jN; j+) printf(%3d,xij); printf(n); 3、给定程序中,函数fun的功能是: 将s所指字符串中的全部数字字符移到全部非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include void fun(char *s) int i,
6、 j=0, k=0; char t180, t280; for(i=0; si!=0; i+) if(si=0 & si=9) /*found*/ t2j=si; _1_; else t1k+=si; t2j=0; t1k=0;/*found*/ for(i=0; ik; i+) _2_;/*found*/ for(i=0; i_3_; i+) sk+i=t2i;main() char s80=def35adh3kjsdf7; printf(nThe original string is : %sn,s); fun(s); printf(nThe result is : %sn,s); 4、给
7、定程序中,函数fun的功能是:有NN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9计算结果为 1 0 0 6 5 0 10 14 9 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #define N 4/*found*/void fun(int (*t)_1_ ) int i, j; for(i=1; iN; i+) for(j=0; ji; j+) /*
8、found*/ _2_ =tij+tji;/*found*/ _3_ =0; main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j; printf(nThe original array:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); fun(t); printf(nThe result is:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); 5
9、、给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。 例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include void fun(char *s, char *p) int i, j, n, x, t; n=0; for(i=0; si!=
10、0; i+) n+; for(i=1; in-2; i=i+2) /*found*/ _1_;/*found*/ for(j=_2_+2 ; jsj) t=j; if(t!=i) x=si; si=st; st=x; for(i=1,j=0; in; i=i+2, j+) pj=si;/*found*/ pj=_3_;main() char s80=baawrskjghzlicda, p50; printf(nThe original string is : %sn,s); fun(s,p); printf(nThe result is : %sn,p); 6、程序通过定义并赋初值的方式,利用
11、构造体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include typedef struct int num; char name9; char sex; struct int year,month,day ; birthday; float score3;STU;/*found*/void show(STU _1_) int i; printf(n%d %s %c %d-%d-%d, tt.num, tt
12、.name, tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i3; i+)/*found*/ printf(%5.1f, _2_); printf(n);main( ) STU std= 1,Zhanghua,M,1961,10,8,76.5,78.0,82.0 ; printf(nA student data:n);/*found*/ show(_3_); 7、给定程序中,函数fun的功能是:计算NN矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。留意:要求先累加主对角线元素中的值,然
13、后累加反向对角线元素中的值。例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #define N 4fun(int tN, int n) int i, sum;/*found*/ _1_; for(i=0; in; i+)/*found*/ sum+=_2_ ; for(i=0; in; i+)/*found*/ sum+= ti
14、n-i-_3_ ; return sum;main() int tN=21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10,i,j; printf(nThe original data:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%4d,tij); printf(n); printf(The result is: %d,fun(t,N); 8、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定全部数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。 例如,
15、有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000 主函数中输出:46 32 40 45 48 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #include #define N 10double fun(double x,double *y) int i,j; double av;/*found*/ av=_1_;/*found*/ for(i=0; iN; i+) av = av + _2_; for(i=
16、j=0; iav) y_3_= xi; yj=-1; return av;main() int i; double xN = 46,30,32,40,6,17,45,15,48,26; double yN; for(i=0; i=0; i+) printf(%5.0f ,yi); printf(n); 9、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定全部数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和挪动后的数据。 例如,有10个正数:46 30 32 40 6 17 4
17、5 15 48 26,平均值为:30.500000 挪动后的输出为:30 6 17 15 26 46 32 40 45 48 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #include #define N 10double fun(double *x) int i, j; double av, yN; av=0;/*found*/ for(i=0; iN; i+) av +=_1_; for(i=j=0; iN; i+) if( xiav )/*found
18、*/ yj=xi; xi=-1; _2_; i=0; while(iN) if( xi!= -1 ) yj+=xi;/*found*/ _3_; for(i=0; iN; i+)xi = yi; return av;main() int i; double xN; for(i=0; iN; i+) xi=rand()%50; printf(%4.0f ,xi); printf(n); printf(nThe average is: %fn,fun(x); printf(nThe result :n,fun(x); for(i=0; iN; i+) printf(%5.0f ,xi); prin
19、tf(n); 10、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定全部数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和挪动后的数据。 例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000 挪动后的输出为:46 32 40 45 48 30 6 17 15 26 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构
20、造!#include #include #define N 10double fun(double *x) int i, j; double s, av, yN; s=0; for(i=0; iN; i+) s=s+xi;/*found*/ av=_1_; for(i=j=0; iav )/*found*/ y_2_=xi; xi=-1; for(i=0; iN; i+)/*found*/ if( xi!= _3_) yj+=xi; for(i=0; iN; i+)xi = yi; return av;main() int i; double xN= 46,30,32,40,6,17,45,1
21、5,48,26; for(i=0; iN; i+) printf(%4.0f ,xi); printf(n); printf(nThe average is: %fn,fun(x); printf(nThe result :n,fun(x); for(i=0; iN; i+) printf(%5.0f ,xi); printf(n); 11、函数fun的功能是:把形参a所指数组中的奇数按原依次依次存放到a0、a1、a2、中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返
22、回值为5。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #define N 9int fun(int a, int n) int i,j; j = 0; for (i=0; in; i+)/*found*/ if (ai%2=_1_) /*found*/ aj = ai; _2_; /*found*/ return _3_;main() int bN=9,1,4,2,3,6,5,8,7, i, n; printf(nThe original data :n)
23、; for (i=0; iN; i+) printf(%4d , bi); printf(n); n = fun(b, N); printf(nThe number of odd : %d n, n); printf(nThe odd number :n); for (i=0; in; i+) printf(%4d , bi); printf(n); 12、给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长N。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正
24、确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #include #define M 5#define N 20int fun(char (*ss)N, int *n) int i, k=0, len= N;/*found*/ for(i=0; i_1_; i+) len=strlen(ssi); if(i=0) *n=len;/*found*/ if(len _2_ *n) *n=len; k=i; /*found*/ return(_3_);main() char ssMN=shanghai,guangzhou,be
25、ijing,tianjing,chongqing; int n,k,i; printf(nThe original strings are :n); for(i=0;iM;i+)puts(ssi); k=fun(ss,&n); printf(nThe length of shortest string is : %dn,n); printf(nThe shortest string is : %sn,ssk); 13、人员的记录由编号和诞生年、月、日组成,N名人员的数据已在主函数中存入构造体数组std中。函数fun的功能是:找出指定诞生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,
26、同时由函数值返回满意指定条件的人数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #define N 8typedef struct int num; int year,month,day ;STU;int fun(STU *std, STU *k, int year) int i,n=0; for (i=0; iN; i+)/*found*/ if( _1_=year)/*found*/ kn+= _2_;/*found*/ return (_3_);ma
27、in() STU stdN= 1,1984,2,15,2,1983,9,21,3,1984,9,1,4,1983,7,15, 5,1985,9,28,6,1982,11,15,7,1982,6,22,8,1984,8,19; STU kN; int i,n,year; printf(Enter a year : ); scanf(%d,&year); n=fun(std,k,year); if(n=0) printf(nNo person was born in %d n,year); else printf(nThese persons were born in %d n,year); fo
28、r(i=0; in; i+) printf(%d %d-%d-%dn,ki.num,ki.year,ki.month,ki.day); 14、函数fun的功能是:将形参a所指数组中的前半局部元素中的值和后半局部元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则调换后为:6、7、8、9、5、1、2、3、4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #defin
29、e N 9void fun(int a, int n) int i, t, p;/*found*/ p = (n%2=0)n/2:n/2+_1_; for (i=0; in/2; i+) t=ai;/*found*/ ai = ap+_2_;/*found*/ _3_ = t; main() int bN=1,2,3,4,5,6,7,8,9, i; printf(nThe original data :n); for (i=0; iN; i+) printf(%4d , bi); printf(n); fun(b, N); printf(nThe data after moving :n);
30、for (i=0; iN; i+) printf(%4d , bi); printf(n); 15、给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从今文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确嶄绸果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include void fun(char *s, int a, double f)/*found*/ _1_ fp; char ch; fp = fopen(, w); fprintf(fp, %
31、s %d %fn, s, a, f); fclose(fp); fp = fopen(, r); printf(nThe result :nn); ch = fgetc(fp);/*found*/ while (!feof(_2_) /*found*/ putchar(_3_); ch = fgetc(fp); putchar(n); fclose(fp);main() char a10=Hello!; int b=12345; double c= 98.76; fun(a,b,c); 16、给定程序中,函数fun的功能是:找出NN矩阵中每列元素中的最大值,并按依次依次存放于形参b所指的一维数
32、组中。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include #define N 4void fun(int (*a)N, int *b) int i,j; for(i=0; iN; i+) /*found*/ bi= _1_; for(j=1; jN; j+)/*found*/ if(bi _2_ aji) bi=aji; main() int xNN= 12,5,8,7,6,1,9,3,1,2,3,4,2,8,4,3 ,yN,i,j; printf(nThe m
33、atrix :n); for(i=0;iN; i+) for(j=0;jN; j+) printf(%4d,xij); printf(n); /*found*/ fun(_3_); printf(nThe result is:); for(i=0; iN; i+) printf(%3d,yi); printf(n); 17、给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最终在主函数中输出。例如,形参s所指的字符串为:abcdef35adgh3kjsdf7。输出结果为:4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 留意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的构造!#include void fun(char *s, int *t) int i, n; n=0;/*found*/ for(i=0; _1_ !=0; i+)/*found*/ if(si=0&si= _2_ ) n+;/*found*
限制150内