《XX历年全国计算机上机考试题》由会员分享,可在线阅读,更多相关《XX历年全国计算机上机考试题(34页珍藏版)》请在人人文库网上搜索。
1、1模拟试题(一)1.填空题请补充函数fun()该函数的功能是把从主函数中输入的字符串str2接在字符串strl的后面。例如 str仁 “ How do”str2= “ you do? ”结果输出How do you do?注意部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序#in clude#in clude#defi ne N 40void fun (char *str1,char *str2)int i=0;char *p1=str1;char *p2=str2;while(*(p1+i)i+;for( ;*p2【。
2、2 ;i+)*(p1+i)=*p2+【3;*(p1+i)=0:main ()char str1N,str2N;clrscr();prin tf(* in put the stri ng str1 &str2*n);printf( nstr1:);gets(strl);printf( nstr2:);gets(str2);prin tf(*The stri ng strl & str2*n);puts(strl);puts(str2);fun( str1,str2);prin tf(*The new stri ng *n);puts(strl);答案及评析:【1 *(p1+i)【2 *p2【3 。
3、*p2+【解析填空1 变量i用来记录字符串strl的长度当指针指到字符串strl结2束标志符0时 while循环结束变量i停止累加。填空2 指针p2指向字符串str2 通过for循环将字符串str2接在str1后面循环结束的条件是指针p2所指的字符是字符串结束标志符 0。填空3 指针p2最初指向字符串str2的首字符 通过自加1 使指针p2依次向后移动 指向str2的各个字符 实现将字符串str2 接在strl后面的功能。2.改错题下列给定程序中函数fun()的作用是 将字符串tt中的小写字母都改为对应的大写字母其他字符不变。例如若输入edS dAd则输出EDSDAD。请改正程序中的错误使它能。
4、得到正确结果。注意不要改动main函数不得增行或删行也不得更改程序的结构。试题程序#i nclude #in clude #in clude * fo un d*char fun( char tt) int i;for(i=0;tti;i+)*fo un d*if(tti=A)&(tti=A)&(tti=a )&(tti#defi ne N 80void fun (i nt *w, int p, int n)main ()int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;int i, p, n=15;prin tf(The origi nal data:n)。
5、;for(i=0;i=0;j-) /*实现循环右移 */wj+1=wj;w0=t;4 【解析】本题采用”循环右移”的算法。和我们在前面分析的稍有不同的是一个是整型数组一个是字符型数组。模拟试题(二)1.填空题请补充函数fun()该函数的功能是求一维数组xN的平均值并对所得结果进行四舍五入保留两位小数。例如 当 x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0 结果为 avg=15.030000。注意部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序#in clud。
6、e#in cludedouble fu n( double x10)int i;long t;double avg=0.0;double sum=0.0;for(i=0;i int fun ()int a33,mul;int i,j;mul=1;for (i=0;i#defi ne N 16typedef struct char num10;int s ;STREC;int fun (STREC *a, STREC *b)main ()STREC sN=GA005,82,GA003,75,GA002,85,GA004,78,GA001,95,GA007,62,GA008,60,GA006,85。
7、,GA015,83,GA013,94,GA012,78,GA014,97,GA011,60,GA017,65,GA018,60,GA016,74;STREC hN;int i, n;FILE *out;n=fun( s,h);prin tf(The %d lowest score :n ”, n);for (i=0; i ai.s)mi n=ai.s;/*找出最小值*/7 for(i=0;i#in clude#defi ne N 100void fun(char *tt,i nt alf)int i;char *p=tt;for(i=0;i=A&*p=a&*p#in clude * fo un。
8、 d*int fun (I ong s,l ong *t) long s1=10;*t=s%10;while(s0) *fo un d*s=s%100;*t=s%1O*s1+*t;s仁 s1*10;main ()9 long s, t; clrscr(); prin tf(nPlease en ter s:); scan f(%ld, &s); fun( s, &t);prin tf(The result is: %ldn ”,t);答案及评析:1 错误int fun(long s,lo ng *t)正确 void fun (Io ng s,lo ng *t)2 错误s=s%100;正确 s=。
9、s/100;【解析】错误1函数由指针来完成参数的传递所以没有返回值应定义函数的类型为void。100错误2 此处要注意特殊运算符号 -取余和/-整除的区别。将一个数整除 则可得到由其百位数以上的数组成的新数字将一个数整除100取余则可得到由十位数和个位数组成的新数。3.编程题请编写一个函数fun() 它的功能是 求出一个4X M整型二维数组中最小元素的值并将此值返回调用函数。注意部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容仅在函数fun的花括号中填入所编写的若干语句。试题程序#defi ne M 4#i nclude fun (int aM) main ()int arr4。
10、M=11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7; prin tf(mi n=%dn,fu n(arr);答案及评析:fun (int aM)10 int i,j,mi n=aOO; for(i=0;i aij) min=aij;/*return mi n;【解析】此类求最大值或最小值的 要求数组中的所有元素走动一遍min存放数组中的第一个元素的值。可按逐行查找也可按逐列查找的方式本题采用的是逐行查找的方式。即行下标在外层循环列下标在内层循环 因为在循环的嵌套中越在内层循环循环变化就越快。模拟试题(四)1.填空题请补充函数fun()该函数的功能是分类。
11、统计一个字符串中元音字母和其他字符的个数不区分大小写。例如 输入 aeiouAOUpqrt 结果为 A:2 E:1 1:1 O:2 U:2 other:4。注意部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容 仅在函数fun()的横线上填入所 编写的若干表达式或语句。试题程序#in clude#in clude#defi ne N 100void fun( char *str,i nt bb)char *p=str;int i=0;for(i=0;i#in clude int fun (i nt k) int m=O,mc=O, j;* fo un d*while(k=2) &。
12、(mc #in clude int fun (i nt k) int m=0,mc=0, j;/* fo un d*/ while(k=2) &(mc=2)&(mc=2)&( mc#in clude#in cludevoid fun( char *ss)13main ()char tt81;clrscr();prin tf(nPlease en ter an stri ng with in 80 characters: n);gets(tt);prin tf(nn After cha nging, the stri ngn %s,tt);fun( tt);prin tf(nbecomesn %。
13、sn,tt);答案及评析:void fun( char *ss)int i;for(i=0;ssi!=0;i+)/*将ss所指字符串中所有下标为偶数位置的字母转换为小写*/if(i%2=0&ssi=A&ssi#defi ne N 80void fun( char *s,i nt *num)int i,n=0;for(i=0; i=a&si#i nclude *#wN* /int fun (i nt m)double t=1.0,j=1.0;int i;* fo un d*for(i=1;i#i nclude void fun (i nt *a,i nt *n)mai n()int aa1000。
14、, n, k;clrscr();fun (aa,&n);for(k=0;k#defi ne N 80int bbN;int fun( char s,i nt bb,i nt num)int i,n=0;for(i=0;i= O &si= O &si#in clude #defi ne N 20int fun( float *s, int n, float *aver) int ave ,t=0;* fo un d*int coun t=0,k,i;for(k=0;kave)3错误 aver=ave;正确*aver=ave;【解析】错误1 ave和t分别用来存放成绩的平均值和总分应为实型数。错误。
15、2 根据题意找出高于平均分的数所以此处的关系运算符应为”错误3 aver是指针 而ave是一个数不能将一个数赋值给一个指针而要用符号*。3.编程题请编写一个函数fun()它的功能是比较两个字符串的长度不得调用C语言提供的求字符串长度的函数函数返回较短的字符串。若两个字符串长度相等则返回第1个字符串。例如 输入nanjing nanchang 19char *fun( char *s, char *t)main ()char a20,b10,*p,*q;int i;prin tf(l nput 1th stri ng:);gets(a);prin tf(l nput 2th stri ng:);。
16、gets(b);prin tf(%s,fu n(a,b);答案及评析:char *fun( char *s, char *t)int i,j;for(i=0;si!= 0;i+); /*求字符串的长度 */for(j=0;tj!= 0;j+);if(i/*一定要注意在最前面加#in clude*/char *fun( char *s,char *t)if(strle n( s)=strle n(t)return s;else retur n t;模拟试题(七)1.填空题从键盘输入一组无符号整数并保存在数组xxN中以整数结束输入要求这些数的最大位数不超过 位 其元素的个数通过变量 num传入函数。
17、fun()。请补 20充函数fun() 该函数的功能是 从数组xx中找出个位和十位的数字之和大于 的所有无符号整数结果保存在数组yy中 其个数由函数fun()返回。例如 当 xx8=123,11,25,222,42,333,14,5451 时bb4=25,42,333,5451。注意部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序#i nclude #defi ne N 1000int fun (i nt xx,i nt bb,i nt num)int i, n=0;int g, s;for(i=0;i5)bbn+=x。
18、xi【2】;return n【3】;main ()int xxN;int yyN;int num=0,n=0,i=0;prin tf(I nput nu mber :n ”);doscan f(%u, &xx num);while(xx nu m+!=0);n=fun( xx,yy, nu m);prin tf(nyy=);for(i=0;i*#wN* /void fun( char p)char min, *q;int i=0;min=pi;while (pi!=O)if (mi npi)* fo un d*p=q+i; mi n=pi;i+; while(qp)*q=*(q-1);q-;p。
19、0=mi n;main ()char str80;prin tf(E nter a stri ng:);gets(str);prin tf(nThe origi nal stri ng:);puts(str);fun( str);prin tf(nThe stri ng after movin g:);21的个位与十位的数字之和大于5时则将这个整数存于数组bb中同时变量n记录了满足条件的无符号整数的个数。填空3题目要求满足条件的无符号整数的个数由fun函数返回 所以函数返回n。2.改错题下列给定程序中函数fun()的功能是 在字符串str中找出ASCH码值最小的字符将其放在第一个位置上并将该字。
20、符前的原字符向后顺序移动。例如调用fun()函数之前给字符串输入fagAgBDh调用后字符串中的内容为AfaggBDh。请改正程序中的错误使它能得到正确结果。注意不要改动main函数不得增行或删行也不得更改程序的结构。试题程序#in clude void fun( char p)*fo un d*char min, *q;int i=0;min=pi; while (pi!=O)if (mi npi)* fo un d*p=q+i;mi n=pi;i+;while(qp)*q=*(q-1);q-;p0=mi n;main ()char str80;prin tf(E nter a stri n。
21、g:);gets(str);prin tf(nThe origi nal stri ng:);puts(str);fun( str);prin tf(nThe stri ng after movin g:);22 puts(str);prin tf(nn);答案及评析:1 错误void fun( char p)正确void fun( char *p)2 错误p=q+i;正确 q=p+i;【解析】错误由于本题中函数的功能是对字符串进行处理而不是对单个字符进行处理 因此函数的参数应为字符串指针。错误2 使指针q指向ASCII码最小的字符 本题解答需要3个步骤1 找到字符串中ASCII码值最小的字符。
22、并保存。2 将该字符复制并将该字符前面的字符串顺次后移。3 将ASCII码值最小的字符赋给字符串的第 1个字符。找到 ASCII码值最小 的字符可以通过定义一个字符 min 该字符初始时等于字符串的第 1个字符若 字符串的下一个字符小于 min 则将下一个字符赋给 min 如此循环到字符尾即可得到ASCII码值最小的字符同时令指针q指向最小字符。之后对最小字符前面的子串顺次后移可采用while语句实现。此题需要熟练掌握和灵活应用C语言的字符与整型变量的关系以及字符串操作。3.编程题N名学生的成绩已在主函数中放入一个带头节点的链表结构中h指向链表的头节点。请编写函数fun() 它的功能是 找出学。
23、生的最低分由函数值返回。注意部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容仅在函数fun的花括号中填入所编写的若干语句。试题程序#i nclude #i nclude #defi ne N 8struct slist double s;struct slist *n ext;typedef struct slist STREC;double fun( STREC *h)STREC * creat (double *s)23STREC *h,*p,*q;int i=0;h=p=(STREC*)malloc(sizeof(STREC);p-s=0;while(is=si; i+; p_n ext=q; p=q;p- next=NU。