二级C语言上机题100套(答案附程序).pdf
《二级C语言上机题100套(答案附程序).pdf》由会员分享,可在线阅读,更多相关《二级C语言上机题100套(答案附程序).pdf(131页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 001套一、程序填空题第一处:t是通过取模的方式来得到*n的个位数字,所以应填:1 0。第二处:判断是否是奇数,所以应填:()。第三处:最后通形参n来返回新数x,所以应填:X。二、程序修改题第一处:条件语句书写格式错误,应改为:i f(n=0)。第二处:语句后缺少分号。三、程序设计题/*以下完成数字字符串转换为个数字*/w h i l e(*p)x =x*1 0-48+(*p+);r e t u r n x*t;第 002套一、程序填空题本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。第一处:定义文本文件类型变量,所以应填:F I L E *第二处:判断文件是否结束
2、,所以应填:f p。第三处:显示读出的字符,所以应填:c h。二、程序修改题第一处:要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j来控制新字符串的位置,所以应改为:s j+=s i;。第二处:置新字符串的结束符,所以应改为:s j=,(r;.三、程序设计题v o i d f u n(c h a r s N,c h a r *b)(i n t i,j,n=O;f o r(i=0;i N;i+)/*请填写相应语句完成其功能*/(f o r(j =0;j M;j+)b n =s j i;n =i *M+j +1;)b n=、0 ;本题是把二维数组中的字符数据按列存放到个字符串
3、中。1 .计算存放到一维数组中的位置。2 .取出二维数组中的字符存放到维数组(已计算出的位置)中。第 003套一、程序填空题本题是考察如何从文件中读出数据,再把结构中的数据写入文件中。第一处:从指定的文件中读出数据,所以应填:f i l e n a m e。第二处:读取文件f p的最后条记录,所以应填:f p。第三处:再把读出的记录,写入文件f p指定的位置上,所以应填:f p。二、程序修改题第一处:指向刚分配的结构指针,所以应改为:p=(N O D E *)m a I l o c(s i z e o f(N O DE);第二处:在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的
4、初始位置,最后返回不能使用P,是因为p的位置已经发生了变化,所以应改为返回h。三、程序设计题i n t f u n(c h a r *s)(i n t k =I ;w h i l e(*s)i f(*s =1)k+;s+;r e t u r n k;m a i n()c h a r l i n e|N;i n t n u m=0;p r i n t f(E n t e r a s t r i n g :n);g e t s(l i n e);n u m=f u n(l i n e);p r i n t f(Th e n u m b e r o f w o r d i s :%d n n,n u
5、 m);N O N O();)N O N O()本题是统计字符串中的单词数。1 .利用w h i l e循环语句和指针变量,当字符为空格时,则单词数k加1。2 .循环结束返回k第 004套一、程序填空题本题是考察把结构中的数据写入文件。第一处:建立文件的类型,考虑到是把结构中的数据(结构中的数据包含不打印的字符)从文件中读出,所以应填:r bno第二处:判断当前学号是否大于刚读出的学号进行相比,如果大于,则进行交换,所以应填:o第三处:把已排序的结构数据,重新写入文件,所以应填:f w r i t e。二、程序修改题第 处 指针p应指向s,所以应改为:p=s;o第二处:死循环,当d o w h
6、 i l e循环执行一次,临时变量p应该指向字符串的下一位置,所以应改为:w h i l e(*p+);o三、程序设计题 v o i d f u n(i n t *a,i n t *b)int i,j;for(i=0;i M;i+)bi=0;for(i=0;i 10)bM-l+;elsebj+;)double rnd()static t=29,c=217,m=1024,r=0;r=(r*t+c)%m;return(double)r/m);I本题是统计各年龄段的人数。1.初始化各年龄段人数为0。2.使 用 fo r循环以及求出各年龄的十位数字作为存放人数的地址,如果大于值大于1 0,则存入d10
7、中(大 于 110岁的人)。第 005套一、程序填空题本题是考察先把给定的数据写入到文本文件中,再从该文件读出并转换成相应的整数、浮点数显示在屏幕上。第一处:定义文本文件类型变量,所以应填:FILE*。第二处:关闭刚写入的文件,所以应填:fclose(fp)。第三处:从文件中读出数据,所以应填:fp。二、程序修改题第一处:语句最后缺少分号。第二处:应该使用方括号,而不是圆括号。像此类,使用编译,即可发现。三、程序设计题#include#define N 80int fun(int a,int n)(int i,j=1,k=a0;for(i=1 ;i n;i+)if(k!=ai)aj+=ai;k
8、=ai;1aU=0;return j;本题是删除已排序过数组中的相同数。1 .取出数组中的第1个数存放在临时变量k中,再利用f o r循环来依次判断所有的数。2 .如果取出的数和k相比,如果不相同,则仍存放在原数组中,其中存放的位置由j来控制,接着把这个数重新存入匕 如果相同,则取F数。第 006套一、程序填空题本题是根据给定的公式来计算函数的值。第一处:程序中使用双精度d o u b l e类型进行计算,所以函数的返回值类型也为d o u b l e,所以应填:d o u b l e。第二处:当i等于1时,则返回f l函数的值,所以应填:f l o第三处:如果i不等于1,则返回f 2函数的值
9、,所以应填:f 2 o二、程序修改题第一处:试题要求返何字符串的首地址,所以应改为:c h ar *f u n(c h ar*s,c h ar *1)第二处:取字符串指针s s的下一个位置,所以应改为:S S+;。第三处:取字符串指针t t的卜.一个位置,所以应改为:三、程序设计题#i n c l u d e#i n c l u d e#d e f i n e N 8 0vo i d f u n 1 (c h ar *w)/*本函数的功能是将字符串中字符循环左移一个位置*/(i n t i;c h ar t;t=w 0 J;f o r(i=0;i s t r l c n(w)-1 ;i+)w
10、i =w i+l ;w s t r l e n(w)-l =t;vo i d f u n(c h ar *w,i n t m)/*可调用 f u n 1 函数左移字符*/i n t i;f o r(i =0 ;i am)m=k:。三、程序设计题#include unsigned fun(unsigned w)(if(w 10000)w%=10000;else if(wl 000)w%=1000;else if(w100)w%=100;else if(w10)w%=10;return w;本题是考察考生怎样获取一个符合要求的无符号整数。本题是应用if条件语句首先判断给出的数是几位数,再模相应的值
11、,最后得出的余数就是结果。第 008套一、程序填空题本题是利用结构体存储学生记录并由实参SS返回。第一处:实参SS是一个结构型指针变量,所以应填:STU。第二处:该学生的各科成绩都乘以一个系数a,所以应填:scored。第三处:函数的调用,由于函数定义时使用的指针结构型变量,所以应填:&std。二、程序修改题第一处:条件判断缺少圆括号。第二处:判断相等的符号是=。三、程序设计题int fun(int aN,int n)(int i,j;for(i=0;i N;i+)for(j=0;j=i;j+)ai|j*=n;)main()int aNN,n,i,j;printf(*The array*nH)
12、本题是利用两重循环给二维数组左下三角元素中的值乘以n。第 009套一、程序填空题本题是考察使用链表方法,使用两重while循环语句,对链表的结点数据进行升序排列。第 处:由于外循环变量使用p 指针,内循环变量使用q 指针,所以q 指向必须指向p 的next指针,因此应填写:p.nexto第二处:判断内循环q指针是否结束,所以应填:q。第三处:外循环控制变量p指向自己的n e x t指针,所以应填:p.n e x t o二、程序修改题第 一 处 使 用w h i l e循环来判断字符串指针s是否结束,所以应改为:w h i l e(*s)o第二处:取字符串指针s的下一个位置,所以应改为:S+;。
13、三、程序设计题#i n c l u d e#d e f i n e N 8 0v o i d f i i n(i n t *w,i n t p,i n t n)(i n t i,j =0,b N ;f b r(i =p +1 ;i n ;i+)b j+=w i ;f o r(i =0 :i =p ;i+)b j+=w i ;f o r(i =0 ;i n ;i+)w i =b|i|;)m a i n()i n t a N =1,2,3,4,5,6,7,8,9,1 0,1 1,1 2,1 3,1 4,1 5);i n t i,p,n=!5;本题是考察一维数组的操作。I .定义一维数组中间变量b,
14、把n值后面数组中的内容存入b中。2 .再把m前的数组中的内容存入b中。3 .最后把数组b的内容依次存放到w中。第 010套一、程序填空题第 处:行列变量row和c o k i m的值初始化为0。第二处:两个条件只要有一个不满足就返回0,所以应填:I L第三处:如果矩阵是“幻方”,则返回1。二、程序修改题第 处:在除法运算中,如果除数和被除数都是整数,所么所除结果也是整数,因此应改为第二处:应是返回公式的值,函数中公式的值是存放在临时变量t中,所以应填r e t u r n I;。三、程序设计题#i n c l u d e#i n c l u d e i n t f u n(c h a r *s
15、 t r)(c h a r *p =s t r ;i n t i =0 ;w h i l e(*p)i f(*p !=1*)s t r i+=*p ;P+;)s t r i =0 ;本题是考察考生怎样利用字符串指针来删除字符串的空格字符。在函数开始处把指针P先指向字符串s t r以及位置变量i置.0,然后采用w h i l e循环和字符串指针p来处理的,每循环一次来判断指针p所指的字符是否为空格,如果不是空格,则把该字符写到s t r字符串中,位置由i来控制,如果是空格,则不处理,继续取下一字符,直至字符串结束为止,最后再把字符串结束符写到位置为i的s t r上,再通过形参s tr返回。第01
16、1套一、程序填空题本题是考察使用链表方法,对链表的结点数据进行降序排列。第一处:使用结构指针p,来控制链表的结束,p必须指向h结构指针的n e x t指针,来定位p的初始位置。所以应填写:h-ne xt。第二处:判断p指针是否结束,所以应填写:0 第三处:q指向原q的ne xt指针,所以应填:r。二、程序修改题第一处:程序中子串是由变量t来实现的,再根据下面wh il e循环体中语句可知,所以应改为:r=t;o第二处:是判断相等的条件,所以应改为:if(*r=0)。三、程序设计题void f un(c h a r a M N,c h a r *b)(/*以下代码仅供参考*/int i;*b=0
17、;f or(i=0 ;i M;i+)s tr c a t(b,a i);m a in()c h a r w M N =A A A A ;,BBBBBBB,C Cn,a 1 0 0;本题是考察字符串的操作。使用f or循环以及C语言函数s tr c a t依次连接起来。第012套一、程序填空题本题是考察使用链表方法,对链表的结点数据进行降序排列,最后通过函数进行返回。第 处:由于链表中的所有结果要求通过函数进行返回,所以应填:NOD E*o第二处:中间变量I用来保存q的ne xt指针,所以应填:ne xto第三处:q指向原q的ne xt指针,所以应填:r。二、程序修改题第 处:根据试题分析,两个
18、条件之间应该是“或”的关系,而不是“与”的关系,所以应改为:if(i%2I I s i%2=0)o第二处:当字符串处理结束后,应该补上字符串的结束符,那么字符串t的位置是由i来控制,所以应改为:三、程序设计题#include void fun(int(*s)I0,int*b,int*n,int mm,int nn)(/*以下代码仅供参考*/int i,j,np=O;/*np 用作 b 数组下标*/fbr(i=0;i nn;i+)for(j=0;j mm;j+)bnpl=sji;np=i*mm+j+1;*n=np;main()int w1010=33,33,33,33,44,44,44,44,5
19、5,55,55,55,i,j;int a100=0),n=0;printf(The matrixAn*);for(i=0;i3;i+)for(j=0;j4;j+)printf(,%3dwi|j|);printf(,nr,);)fun(w,a,&n,3,4);printf(The A array:n);for(i=0;in;i+)printf(%3d,ai);printf(,nn);NONOO;1NONO()/*请在此函数内打开文件,输入测试数据,调 用fu n函数,输出数据,关闭文件。*/FILE*rf,*w f;int i,j,k;int w1010,a100,n=0,mm,nn;rf=fo
20、pen(c:testi n.dat,r);wf=fopen(c:testout.datw);for(k=0;k 5;k+)fscanf(rf,%d%d,&mm,&nn);for(i=0;i mm;i+)for(j=0;j nn;j+)fscanf(rf,n%d;&wij);fun(w,a,&n,mm,nn);for(i=0;i ne xt第二处:使用wh il e循环,对链表中结点的数据进行排序,q必须指向p结构指针的ne xt指针。所以应填写:p-ne xt0第三处:如果当前结点中的数据大于(大于等于)循环中的结点数据,那么进行交换,所以应填写:(或 二)。二、程序修改题程序中是使用wh i
21、l e循环语句和结合结构指针p来找到数据域中的最大值。第 一 处p指向形参结构指针h的ne xt指针,所以应改为:p=h-ne xt;o第二处:p指向自己的下,个结点,所以应改为:p=p-ne xt,三、程序设计题#inc iud e void f iin(int(*s)1 0.int*b,int*n,int m m,int nn)(int i,j,k ;f or(i=0 ;i mm;i+)f or(j =0;j n n;j+)k =i *nn+j ;b k =s i j;*n=mm*nn;)m a in()int w 1 0 1 0 =3 3,3 3,3 3,3 3,4 4,4 4,4 4,
22、4 4,5 5,5 5,5 5,5 5,i,j ;int a 1 0 0 =0,n=0;pr intf(T h e m a tr ix:n);f or(i=0 ;i 3 ;i+)f or(j=0;j 4;j+)pr intf C,%3 d w i j);pr intf(n);)f un(w,a,&n,3,4);pr intf(HT h e A a r r a y:nn);f or(i=0 ;i n;i+)pr intf(%3 d ,a i);pr intf(nnu);NONO();1N O N O()/*请在此函数内打开文件,输入测试数据,调 用fu n函数,输出数据,关闭文件。*/F I L
23、 E *r f,*w f;ini i,j,k ;int w 1 0 1 0,a 1 0 0,n=0,m m,nn;r f =f ope n(r,c:te s tin.d a t,r );w f =f ope n(c:te s tout.d a t,w);f or(k =0;k5;k+)f s c a nf(r f,%d%d ,&mm,&n n);f or(i=0 ;i mm;i+)f or(j =0 ;j nn;j+)f s c a nf(r f,%d ,&w i j);f un(w,a,&n,m m,n n);f or(i=0 ;i ne x t;第二处:指向p的下,个结点来实现循环,所以应
24、改为:p=p-ne x t;三、程序设计题#include#define N 80int fun(char*str)(int i j=strlen(str);for(i=0;i j/2;i+)if(stri!=strj-i-1 )return 0;return 1 ;Imain()char sN;printf(Enter a string:);gets(s);printf(nn);puts(s);if(fun(s)printf(YESnn);else printf(n NOnu);NONO();)NONO()/*请在此函数内打开文件,输入测试数据,调 用 fu n 函数,输出数据,关闭文件。*
25、/FILE*rf,*wf;int i;char sN;rf=fopen(c:testin.dat,nr);wf=fopen(c:testout.dat,w);for(i=0;i 10;i+)fscanf(rf,%sn,s);if(fun(s)fprintf(wf,%s YESn;s);else fprintf(wf,%s NOn,s);)fclose(rf);fclose(wf);本题是考察如何判断个字符串是回文字符串,回文是指顺读和倒读都一样的字符串。可以利用for循环语句来判断,如果前后不一致,则不是回文字符串。第 015套一、程序填空题本题是考察如何从指定文件中找出指定学号的学生.数据,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 上机 100 答案 程序
限制150内