计算机二级上机试题.doc_第1页
计算机二级上机试题.doc_第2页
计算机二级上机试题.doc_第3页
计算机二级上机试题.doc_第4页
计算机二级上机试题.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1套上机考试真题1程序填空 给定程序的功能是判断字符ch是否与串str中的某个字符相同:若相同,什么也不做,若不同,则插在串的最后。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果 注意:不得增行或删行,也不得更改程序的结构! 试题程序: #include #include void fun(char*str, char ch ) while ( *str & *str != ch ) str+; if( *str 1 ch ) str0 =ch; 2 = 0;main( ) char s81, c; printf( nPlease enter a string:n ); gets ( s ); printf (n Please enter the character to search : ); c = getcharO; fun( 3 ) ; printf( nThe result is %sn, s);1程序填空【答案】(1)!=(2)str1(3)s,c【评析】(1)fun函数中先设置了二个循环从字符串str中寻找字符ch,如果找到则中断循环并保留字符ch的地址,否则一直循环到串尾”。因此通过判断*str的内容即可判断是否已找到字符ch。(2)如果没有找到字符ch,则在while循环后str指针指向串结束符Ox00,此时应将字符ch写入这里并在下一地址写入一个串结束符Ox00,所以应该是“str1。O;”语句。(3)此句是调用fun()函数,括弧中是其实际参数。2程序修改 给定程序modic中,函数fun的功能是:根据形参m的值(2m9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。 例如,若输入2 若输入4 则输出: 则输出: 1 2 1 2 3 4 2 4 2 4 6 8 3 6 9 12 4 8 12 16请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序: #include #include #define M 10int aMM=0;fun(int *a, int m) int j,k; for (j=0;jm;j+) for (k=0;km;l+) ajk=k*j;main() int i,j,n; clrscr0; printf(Enter n:);scanf(%d,&n); fun(a,n); for(i=0;in;i+) forO=O;jn;j+) print f(%4d,ai j ); printf(n);2程序修改【答案】(1)错误:第5行fun(int*a,int m) 正确:fun(int aM,Int m)(2)错误:第9行 ajk=k*j; 正确:ajk=(k+1)*(j+1);【评析】第5行:第二个形参m是用户输入的维数,没有别的名堂,第一个形参是为了指明在函数fun()中要产生的多维数组,“*a”是不能正确表示一个多维数组的,我们应当使用“int aMM”。第9行:循环体的内容是给m维的多维数组赋值,这个多维数组在列方向是由1开始的自然数,在行方向上是行首第一数的n倍数,显然,“ajk=k*j;”不符合题意,我们应当使用“ajk=(k+1)*(j+1);”。3程序设计 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序: #include #include #include #define N 10typedef struct ss char num10;int s; STU;fun(STU a,STU *s)main() STU aN= A01,81, A02,89, A03,66, A04, 87, A05,77, A06,90, A07,79, A08,61, A09,80 , A10,71 ,m; int i; elrser(); printf(* The original data *n); for (i=0;iN;i+) printf(!No=%s Mark=%dn,ai.num,ai.s); fun(a,&m); printf(* THE RESULT *n); printfCThe top : %s, %dn,m.num,m.s); NON0( );NON0( )*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。* FILE *rf, *wf; STU aN, m ; Int i; rf = fopen(bc09.in, r,) ; wf= fopen(bc09.out, w) ; for(i = 0 ; i 10; i+) fscanf(rf, %s %d, ai.num, &ai.s) ; fun(a, &m) ; fprintf (wf, The top : %s, %dn, m.num, re.s) ; fclose(rf) ; fclose(wf) ;3程序设计【答案】 fun(STU a,STU。s) int i; STU *m; re=a; for(i=1;im0s) m=&ai; s0s=m0s; strcpy(s0Num,m0num);*将m指针中的学生学号复制给s数组中的学号变量* 【评析】 从题目的要求来看,我们应建立一个循环来寻找成绩最高的学生记录。我们给出的参考函数中定义了一个指针存放学生记录中的最高成绩。 第2套上机考试真题1程序填空 给定程序的功能是将十进制正整数m转换成k进制(2k9)数的数字输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序: #include Void fun(int m,int k) im aa20,i; for(i=0;m;i+) aai。_l_; m=_2_; for(;i;i-)printf(”d”,-3-i-1); main()。 int b,n; printf(nPlease enter a number and a base:n); scanf(”dd”,&n,&b); fun(nb);【答案】(1)mk(2)k(3)aa【评析】(1)此语句是将十进制的整型数据m转换为k进制数据时,将余数保存在数组aa中。 (2)此语句是将十进制的整型数据m转换为k进制数据时,每除一次k后,把商重新赋值给正整数m,以便重复取余。(3)在for循环之后,i即为转换成的k进制数的位数,所以根据题意要求,此语句应该是:print(d, aail);2程序修改 给定程序modic中,函数fun的功能是:将s所指字符串中最后一次出现的、tl所指子串替换成t2所指子串,所形成的新串放在w所指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如,当s所指字符串中的内容为: “abcdabfabc”,t1所指子串中的内容为:“ab”,t2所指子串中的内容为:“99”时,结果,在w所指的数组中的内容应为:“abcdabf99c”。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序: #include #include #include int fun(char*s,char*t1,char*t2,char*w) int i;char*p,*r,*a; strcpy(w,s); while(w) (p=w;r=tl; while(*r) IF(*r=*p) r+;p+; else break; if(*r=:=0)a=w; w+: r=t2; while(*r)*a芦*r;a+;r+;) ) main() char s100,t1100,t2100,w100; clrscr(); printf(nPlease enter string S:);scanf(s,s); printf(nPlease enter substring t1:”);scanf(s,t1); printf(nPlease entei substring t2:”);scanf(s,t2); if(strlen(t1)=strlen(t2) fun(s,t1,t2,w); printf(nThe resuk is:sn,w); else printf(nError:strlen(t1)!=strlen(t2)n); 【答案】 (1)错误:第7行while(w) 正确:while(*w) (2)错误:第11行 IF(*r=*p) r+;p+; 正确:if(*r=*p) r+;p+;【评析】第7行:题意中要求对这个地址所指向的内容进行判断,所以须在地址前加上+,源程序“while(w)”应改为“while(*w)”或相同作用的语句。第11行:c语言中,大小写的字母含意不同。源程序中“IF(*r=*p)”是错误的,“IF”应为小写,程序应改为“if(*r=*p)”或相同作用的语句。 3程序设计 请编写函数fun,函数的功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入:17,则应输出:9和4 6 8 9 10 12 14 15 16。 注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序: #include #include Void fun(int m,int*k,int xx) main()void fun(int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论