《机房C语言题库(共11套)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
【第一套】一、单项选择1.下列数据中,为字符串常量的是()OA、PB、Howdoyoudo.C、$abcD、"house”2.以下所列的C语言常量中,错误的是()。A、OxFFB、1.2e0.5C、2LD、,72’3.以下程序的输出结果是()omain(){floatx=3.6;inti;i=(int)x;printf("x=%f,i=%d
1",x,i);}A、x=3.600000,i=4B、x=3占3.600000C、x=3,i=3D、x=3.600000,i=34.若k是整型,则以下程序段的执行结果是:()k=-3;if(k<=0)printf("####M)elsepnntfC'&&&&H);
2A、####B、有语法错误,无结果C、&&&&D、####&&&&5.若x=2,y=3则x||y的结果是()。A、3B、0C、1D、26.针对下列程序段回答问题().for(t=1;t<=100;t++)(scanf("%d",&x);if(x<0)continue;printf("%3d",t);)A、x>=0时什么也不输出B、最多允许输出100个非负整数C、printf函数永远也不执行D、当x<0时整个循环结束7.以下程序的执行结果是()。main(){intnum=0;while(num<=2){num++;printf("%d,",num);}}A、0,1,2B、1,2,3,C、1,2,3,4,D、1,2,
35.选择正确的输入语句()。:(其中:charstring[20];)使得string的内容为"Iamstudent".A、scanf("%s",string);B、scanf("%c",&string);C、scanf("%s",&string);D、gets(string);6.对以下说明语句inta[10]={6>7,8,9,10};的正确理解是().A、将5个初值依次赋给a[6]至a[10]B、将5个初值依次赋给a[0]至a[4]C、因为数组长度与初值的个数不相同,所以此语句不正确D、将5个初值依次赋给a[1]至a[5]7.以下标识符中可以作为用户函数名的是().A、structB、intC、unionD,go_to8.以下叙述错误的是().A、函数调用可以出现在一个表达式中B、函数调用可以作为一个函数的形参C、函数调用可以作为•个函数的实参D、函数允许递归调用9.若用数组名作为函数的实参,传递给形参的是()oA、数组第一个元素的值B、数组的首地址C、数组元素的个数D、数组中全部元素的值10.在C语言程序中()。A、函数的定义可以嵌套,但函数的调用不可以嵌套B、函数的定义不可以嵌套,但函数的调用可以嵌套C、函数的定义和函数调用不可以嵌套
4D、函数的定义和函数调用均可以嵌套5.下列说法中正确的是().A、函数调用不占运行时间,只占编译时间.B、宏替换不占运行时间,只占编译时间.C、有参数的宏定义,就是函数.D、在定义宏时,宏名与带参数的括弧之间可以加空格.6.若有说明:int*p,m=5,n;以下正确的程序段是()。A、scanf("%d",&n);*p=n;B、p=&n;scanf("%d",*p)C、p=&n;scanf("%d",&p);D、p=&n;scanf("%d",p);7.对于下述定义,不正确的叙述是().uniondata{inti;charc;floatf;}a,b;A、变量a的地址和它的各成员地址都是相同的B、可以在定义类型的同时定义变量a,并对a的任意成员初始化C、变量a所占内存的长度等于成员f的长度D、如果有定义语句uniondataa={6};则对变量a的初始化是正确的8.有两个整型变量dog和cat,若要从磁盘文件把数据读到其中,正确的形式是().A.fscanf(dog,2,1,fp);B、fscanf(fp,"%d%d",&dog,&cat);Csfscanf(dog,cat,2,1,fp);
5D、fscanf(fp,"%d",&dog,&cat);DBDBCBBDBDBBBBDBB二、判断1.若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变2.charc[6]="abcde";printf("%3s”,c)表示输出的字段的宽度,如果被输出的数据的位数大于3,按实际位数输出.3.条件表达式x?aTb'中,若x=0时,表达式的值为'a:4.在逻辑运算符中的运算级别由高向低依次为&&->||->!5.do-while循环由do开始,while结束,循环体可能一次也不做。6.continue语句用于终止循环体的本次执行.7.若有定义和语句:inta(3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++)sum+=a[i][2-i];则sum=21.8.inta[3][4]={{1},{5},{9}};它的作用是将数组各行第一列的元素赋初值,其余元素值为0。9.定义一维数组的形式为:类型说明数组名[表达式],其中表达式可以是正整型常量表达式、字符常量表达式.10.在C语言中,函数名代表函数的入口地址.11.函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5.12.数组名可以作为函数的实参和形参.13.一个include命令只能指定1个被包含的文件。14.若p为指针变量,a为数组名,则a-p是合法的表达式.15.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。16.C语言中,关闭一个文件就删除了这个文件.对对错错错对对对对对错对对对对错三、填空1.已知floati=5.6;inta;写出语句a=(int)i;执行后变量i的值是.2.设有intx=11,则表达式(x++*1/3)的值是o3.若intx=6;则x+=x-=x*x表达式最后x的值是.4.设x=2&&2||5>1,x的值为.
61.连接字符串的函数是,只写函数名即可.2.函数不可以进行嵌套定义,但可以进行嵌套.3.设有以下结构类型说明和变量定义,则变量b在内存所占字节数是ostructstud{shortintage;charnum[3];floats[2];doubleave;}b,*p;4.若有fp=f。pen("a1.dat","r+")打开文件语句,这个文件的数据是以的形式存放在内存中,该文件的使用方式为读/。5.63-601strcat调用21ASCII码或ASCII文本四、程序设计1./*【程序设计】功能:输入n个数,并求出小于平均值的数的个数。#include"stdio.h"intaverage_num(inta[],intn)r/•**m则访**m**/I**********End**********/Imain()rintn,a[100],i,num;voidTestFunc();scanf("%d”,&n);for(i=0;i 7printf(Hthenumis:%d 8,,,num);TestFunc();voidTestFunc()ALE*IN,*OUT;intn;inti[1O];into;IN=fopen(win.datM,Mrw);if(IN==NULL)(printfC'FteadFileError");)OUT=fopen("out.dat","w");if(OUT==NULL)(printf("WriteRieError");)for(n=0;n<5;n++)(fscanf(IN,"%dM,&i[n]);)o=average_num(i,5);fprintf(OUT,M%d 9M,o);fclose(IN);fclose(OUT);【参考代码】 10inti,sum=O,k=O;doubleaverage;for(占0;ivn;i++)sum=sum+a[i];average=sum*1.0/n;for(i=0;i 11IN=fopen(Min.datM,MrM);if(IN==NULL)(printfC'FteadFileError");}OUT=fopen(,,out.dat",,,w,');if(OUT==NULL)(printfC'WriteFileError");)fscanf(IN,n%sM,i);fun(i/n');fprintf(OUT,M%sM,i);fclose(IN);fdose(OUT);}main()(staticcharstr[]="turbocandborlandc++charch; 12printf("输入一个字符scanf("%c”,&ch);fun(str,ch);printf(',str[]=%s 13,',str);TestFunc();}【参考代码】char*q=s;for(;*q;q++)if(*q!=c)*(s++)=*q;*s=0;五、程序改错1./*--——【程序改错】功能:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。例如:输入ab12c3d,则输出123。注意:不得增行或删行,也不得更改程序的结构!*/#indude"stdio.h',/**********ERROR**********/voidfun(chars)((nti,j;for(i=0,j=0;s[i]!='\0,;i++)if(s[i]>='0'&&s[i]<='9,)ERROR***** 14S[j]=S[i];/………*error**********/s[j]="\O";)main(){charitem[80];printf(" 15Enterastring:");gets(item);printf(M 16 17Thestringis:\w%s\" 18M,item);fun(item);printf(" 19 20Thestringofchangingis:\"%s\', 21,,,item);)【改错1】【学生答案】voidfun(chars)【参考答案】voidfun(char*s)voidfun(chars[])voidfun(chars[80])【改错2】【学生答案】s[j]=s[i];【参考答案】s[j++]=s[i];{s[j]=s[i];j++;} 22【改错3】【学生答案】s[j]="\O";【参考答案】s[j]='\O';【程序改错】功能:读入一个整数m(5SmS20),函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。例如:若输入整数7,则应输出:3101728323647。#include"conio.h"#include"stdio.h"voidsortpb(intn,inta[]){/**********ERROR**********/inti,j,p;for(j=0;j 23t=a[j];a[j]=a[P];a[p]=t;})voiddoublernd()statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);voidgetarr(intn,int*x)inti;for(i=1;i<=n;i++,x++)*x=(int)(50*rnd());voidputarr(intn,int*z)inti;for(i=1;i<=n;i++,z++)(printf("%4d",*z);if(!(i%10))printf(" 24");main()intaa[20],n;printf(" 25Reaseenteranintegernumberbetween5and20:");scant("%d",&n); 26getarr(n,aa);printf(" 27 28Beforesorting%dnumbers: 29",n);putarr(n,aa);sortpb(n,aa);printf(" 30Aftersorting%dnumbers: 31",n);putarr(n,aa);}【改错1】【学生答案】inti,j,p;【参考答案】inti,j,p,t;【改错2】【学生答案】if(a[P]>a[j])P=i;【参考答案】if(a[p]>a[i])p=i;if(a[i] 321./*【程序填空】功能:计算矩阵a的下三角(包含主对角线)元素之积,矩阵的行、列数和元素值均由键盘输入。*/#defineM10#include"stdio.h"intmain()(inti,j,n,a[M][M];longs=1;scanf("%d”,&n);/***********R||***********/for()for(j=0;j 33S=;printf("%ld 34”,s);return0;)【空1】【学生答案】for()【参考答案】i=0;i 35s*a[i皿【程序填空】题目:本程序的功能是从10个数中找出其中的最大值,完善程序。#include"stdio.h"main()(inta[10],i,*pmax;for(i=0;i<10;i++)scanf("%d”,&a[i]);y***********p|11***********Ipmax=;for(i=1;i<10;i++)if(a[i]>*pmax)pmax=&a[i];y*4r*********p|||***********/printf("%d",);}【空1】【学生答案】pmax=;【参考答案】pmax=&a[0]pmax=a 36【空2】【学生答案】printf("%d",);【参考答案】*pmax【第二套】一、单项选择1.字符串"\\\'efg\'\\"的长度是:().A、3B、11C、7D、52.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。A、doubleB、不确定C、intD,float3.下列语句的结果是()。main(){intj;j=3;printf("%d,",++j); 37printf("%d",j++);) 38B、4,4C、3,4D、4,31.逻辑表达式!(2・1)&&x||0的值是()A、1B、0C、3D、22.inta=1,b=2,c=3;if(a>b)a=b;if(a>c)a=c;则a的值为()。A、3B、2C、1D、不一定3.执行语句for(i=1;i++<4;);后变量i的值是()。A、3B、5C、4D、不定4.以下正确的描述是().A、只能用8ntinue语句来终止本次循环B、sw计ch语句中不能出现8ntinue语句C、在循环中break语句不能独立出现D、goto语句只能用于退出多层循环5.下面合法的语句定义是().A、chara[;8.inta[]=Mstring";C>inta[5]={0,1,2,3,4,5};D、chara="string',; 398.chara[10];不能将字符串"abc"存储在数组中的是()。A、inti;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;B、a="abc";C、strcpy(a,"abc");D、a[O]=O;strcat(a,"abc");9.在C语言中,・维数组的定义方式为:类型说明符数组名()«A、[整型常量]或[整型表达式]B、[正整型常量表达式]C、[整型表达式]D、【常量表达式]10.在定义全局变量和局部静态变量的同时赋值,变量的初始化在()时确定的.A、运行B、编辑C、编译D、调试11.关于建立函数的目的,以下正确的说法是(),A、提高程序的可读性B、减少程序文件所占内存C、减少程序的篇幅D、提高程序的执行效率12.以下函数调用语句中实参的个数是()。func((e1,e2),(e3,e4,e5));A、3B、5C、语法错误D、2 408.设有宏定义#(^万旭5116^,丫)(»*丫,且2=3力=4,则SUB(a++,b++)的值为().B、16C、20D、129.变量p为指针变量,^p=&a,下列写法不正确的是()。A、*(p++)==a++B、&*p==&aCn(*p)++==a++D、*&a==a10.下列程序正确的运行结果为().#include 41M,s.age);}A、8B、28C、1000D、不确定 4217.定义myjile为文件型指针变量,使用fopen只读方式打开一个已存在的二进制文件,以下正确的调用形式为().A、my_file=fopen("my.dat","r");B、my_file=fopen("my.dat","rb+");C、myjile=fopen("my.dat","rb");D、my_file=fopen("my.dat","r+");GABBCBAABBCADDACC二、判断1.若i=3,则printf("%d",-i++);输出的值为42.格式字符%x用来以八进制形式输出整数.3.设u=1,v=2,w=3,则逻辑表达式u||v-w&&v+w的值为0.4.已知a=4,b=2,c=3,d=5,表达式a>b?a:c 43三、填空1.设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为.2.在C语言中Jong类型数据占个字节,short类型数据占个字节.3.intx=2,y=3,z=4;则表达式x+y>z&&y==z的值为.4.intx=2,y=3,z=4;则表达式x+y&&(x=y)的值为.5.C语言中,二维数组在内存中的存放方式为按优先存放.6.函数调用时的实参和形参之间的数据是单向的传递.7.结构体是不同数据类型的数据集合,作为数据类型,必须先说明结构体,再说明结构体变量.8.调用fopen函数打开一文本文件,在“使用方式”这一项中,为输入而打开需填入.1或1.0或1.401行值类型r+或r四、程序设计1./*【程序设计】功能:求出二维数组外围元素之和,作为函数值返回。二维数组的值在主函数中赋予。-——*/#defineM4#defineN5#include"stdio.h" 44intfun(inta[M][N])****Begin*****「nd**********main()inta[M][N]={{1,3,5,7,9},{2}4,6,8,10},{2,3,4,5,6},{4,5,6,7,8});voidTestFunc();inty;y=fun(a);printf("s=%d 45”,y);TestFunc();voidTestFunc()FILE*IN,*OUT;intilN[M][N],iOUT; 46inti,j,k;IN=fopen("14.in","r");if(IN==NULL){printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");}OUT=fopen("14.out","w");if(OUT==NULL){printf("ReaseVerifyTheCurrentDir..ItMayBeChanged");}for(k=0;k<10;k++){for(i=0;i 47",iOUT);}fclose(IN);fclose(OUT);}【参考代码】ints=0;inti,j;for(i=0;i 48for(j=1;j 49voidTestFunc()(FILE*IN,*OUT;ints;intt;into;IN=fopen("in.dat",T);if(IN==NULL)(printf("ReadFileError");}OUT=fopen(',out.dat,,;,w,');if(OUT==NULL)(printf(,'WriteFileError1,);}for(s=1;s<=5;s++)(fscanf(IN;'%dw,&t);o=fun(t);fprintf(OUT,H%d 50M,o);}fclose(IN);fclose(OUT);main()( 51intm;printfC1Enterm:");scanf(',%d,',&m);printf(M 52Theresultis%d 53",fun(m));TestFunc();)【参考代码】inti,k;for(i=n+1;;i++){for(k=2;k 54是回文数,个位与万位相同,十位与千位相同。*/#include"stdio.h"main()(/**********ERROR**********/longge,shi,qian;wan,x;scanf("%ld",&x);*********error**********/wan=x%10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;*ERROR*………/if(ge==wan||shi==qian)printf(nthisnumberisahuiwen 55H);elseprintf("thisnumberisnotahuiwen 56H);}【改错1】【学生答案】longge,shi,qian;wan,x;【参考答案】longge,shi,qian,wan,x; 57【改错2】【学生答案】wan=x%10000;【参考答案】wan=x/10000;【改错3】【学生答案】if(ge==wan||shi==qian)【参考答案】if(ge==wan&&shi==qian)if(shi==qian&&ge==wan)2.【程序改错】功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于0.0001。n/4=1-1/3+1/5-1/7.... 58#include"stdio.hH/**********ERROR**********/#include"math”voidfun()(floats=0,t=1,i=1;/**********ERROR*********1intp=1;I………*error*********,while(fabs(t)<=1e-4)s=s+t;p=-p;i=i+2;t=p/i;)/**********ERROR**********/printf("pi=%d 59",s*4);)main()(fun();)【改错1】【学生答案】#include"math" 60【参考答案】#include"math.h"#include 61while(fabs(t)>0.0001)【改错4】【学生答案】printf(,'pi=%d 62,,,s*4); 63【参考答案】printf("p』%f 64”,s*4);printf(,'pi=%lf 65,',s*4);六、程序填空1./*-【程序填空】功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。*/#include"stdio.h"y***********pq|।***********iintfun()(intm=0,mc=0,j,n;y***********p|।j***********/while(k>=2&&)( 66/***********FILL***********/ 67m=m+k;mc++;}k-;}y***********p|।।***********I}main()(printf("%d 68",fun(500));)【空1】【学生答案】intfun()【参考答案】intk【空2】【学生答案】while(k>=2&&) 69【参考答案】me<1010>meme<=99>=me【空3】【学生答案】if(k%13==0||)【参考答案】k%17==0!(k%17)k/17*17==k【空4】【学生答案】【参考答案】returnmreturn(m) 701./*--【程序填空】功能:以下程序中,函数fun的功能是计算《2-2x+6,主函数中将调用fun函数计算:y1=(x+8『2-2(x+8)+6y2=(sin(x))A2-2sin(x)+6请填空。#———*/#include 71",y1,y2); 72【空1】【学生答案】doublex,:【参考答案】yi,y2y2,yi【空2】【学生答案】y1=fun();【参考答案】(x+8)(8+x)x+88+x【空3】【学生答案】y2=fun(); 73【参考答案】sin(x)【第三套】一、单项选择1.以下程序段char*alp[]={"ABC',nDEF',"GHr'):intj;puts(alp[1]);的输出结果是OoA、DB、AC、BD、DEF2.下列表达式中,可作为C合法表达式的是()oA、3.0%2B、3=2=1=0C>[3,2,1,0]D>(3,2,1,0)3.下面程序的正确输出结果是().(规定用U表示空格)main()(floatx=5.783,y=-10.2345; 74printfC'x=%-8.2f,y=%-8.2f 75H,x,y);}A、x=5.78UUUU,y=-10.23UUB、x=5.78,y=-10.23C、5.78,-10.23D、x=UUUU5.78,y=UU-10.231.当x为偶数或奇数时(0除外),其值都为0的表达式是:()A、(x/2*2-x)==0B^x%2==0C、!x!=0D、!(x%2)2.下列运算符优先级最低的是().A、=B、+C、!D、&&3.设有如下程序段:intk=10;while(k==O)k-;则下述说明中正确的是().A、循环体一次也不执行B、循环体执行一次C、死循环D、循环体执行10次 761.从循环体内某一层跳出,继续执行循环外的语句是()。A、continue语句B、空语句C、break语句D、return语句2.以下对一维整型数组a的正确说明是()oA.inta(10);B>intn;scanf("%d",&n);inta[n];C、intn=10,a[n];D、#defineSIZE10(换行)inta[SIZE];3.以下定义语句中,错误的是()»A、intn=5,a[n];C、chars[10]="test";D、char*a[3];4.下面叙述中不正确的是().A、可以对字符型数组进行整体输入和输出.B、不可以对浮点型数组进行整体输入和输出.C、可以对整型数组进行整体输入和输出.D、字符型数组可以存放字符串.5.函数定义时的参数为形参,调用函数时所用的参数为实参,则下列描述正确的是().A、实参与形参是双向传递B、形参可以是表达式C、形参和实参可以同名D、实参类型一定要在调用时指定 771.以下错误的描述是:函数调用可以().A、出现在执行语句中B、做为一个函数的实参C、出现在一个表达式中D、做为一个函数的形参2.以下不正确的说法是:C语言规定(),A、实参可以是常量,变量或表达式B、实参可以为任何类型C、形参可以是常量,变量或表达式D、形参应与其对应的实参类型一致3.下列形式,不属于编译预处理命令的是().A、#ifdefMB、#undefMC、#if(M>1)D、while(M>1)4.下面判断正确的是()oA、charc[4]="abc”,d[4]="abc”;等价于charc[4]=d[4]=MabcM;B、charstr[1O]={"china"};等价于charstr[10];str[]={wchinaM};C、char*a="china”;等价于char*a;*a=,,china";D、char*s="china";等价于char*s;s=MchinaM;5.若有以下结构体定义:structexample{intx;inty; 78}v2;则()是正确的引用或定义.A、example.x=10;B、structv2;v2.x=10;C、examplev2;v2.x=10;D^structexamplev2={10,3};1.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为()。A、-1B、1C、一个非。值D、0DDACAACDACCDCDDDD二、判断1.如果有一个字符串,其中第十个字符为'\斤,则此字符串的有效字符为9个2.格式字符%。用来以十六进制形式输出整数3.已知a=3,b=4,c=5,则逻辑表达式!(a>b)&&!c||1的值为1.4.已知x=2,y=2,执行分支语句if(x==y)y=1;elsey=-1;后,y=-1.5.continue语句对于while和do-while循环来说,意味着转去计算:While表达式.6.在do-while循环中,根据情况可以省略while.7.对于字符数为n个的字符串,其占用的内存为n+1个字节空间.8.puts函数用来输出一个字符.9.引用数组元素时,下标可以是整型表达式或整型常量.10.函数调用结束后,静态局部变量所占用的空间被释放.11.在一个函数中定义的静态局部变量可以被另一个函数调用.12.当全局变量与局部变量同名时,在局部变量的作用域范围之内,全局变量起作用. 791.计算机编译系统对宏定义在编译时进行语法检查.2.若定义intarray[5],*p;则赋值语句p=array;是正确的.3.共同体变量所占的内存长度等于最长的成员的长度。4.C语言中,打开一个文件就意味着产生了一个文件.错错对错对错对错对错错错错对对错三、填空1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是.2.已知a=-13,b=6,a%b的十进制数值为.3.已知a=12,写出表达式05)?0:1;执行后整型变量a的值是.5.C语言中,数组名是一个不可变的常量,不能对它进行加减和赋值运算.6.C语言中一个函数由函数首部和两部分组成.7.设有以下共用体类型说明和变量定义,则变量c在内存所占字节数是.unionstud{shortintnum;charname[10];floatscore[5];doubleave;}c;8.在C语言中,关闭文件即是文件指针不再指向该.0-101指针或地址函数体20文件四、程序设计1./*【程序设计】功能:计算并输出给定整数n的所有因子之和(不包括1与自身)。注意:n的值不大于1000。 80例如:n的值为855时,应输出704。--*/#include"stdio.h"intfun(intn){/*********gggjp**********IEnd…voidTestFunc()FILE*IN,*OUT;intilNJOUTJ;IN=fopen("in.dat”,T);if(IN==NULL)(printf("ReaseVerifyTheCurrerntDir..ItMayBeChanged");)OUT=fopen("out.dat","w");if(OUT==NULL)(printf("ReaseVerifyTheCurrentDir..ItMayBeChanged");)for(i=0;i<5;i++)(fscanf(IN,"%d”,&ilN); 81iOUT=fun(ilN);fprintf(OUT,H%d 82",iOUT);)fdose(IN);fclose(OUT);}main()(printf(ws=%d 83M,fun(855));TestFunc();【参考代码】ints=O,i;for(i=2;i 84intfun(inta[],intn){y*********访**********//**********End**********i}main()(voidTestFunc();inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;printfC'Theoriginaldata: 85H);for(i=0;i 86 87Thedataafterdeleted: 88M);for(i=0;i 89 90");TestFunc();}voidTestFunc()(FILE*INJOUT;inta[N];intn;inti;IN=fopen(,,in.datn,Hr,');if(IN==NULL){printf(HFteadFileError”);) 91OUT=fopen("out.dat”Jw”);if(OUT==NULL){printfC'WriteFileError");)fscanf(IN;'%d",&n);for(i=0;i 92#include"stdio.h"main(){intn,j;floats=0.0,t=1.0;for(n=1;n<=20;n++)★★★★ERROR*****for(j=1;j<=n;j++)/**********ERROR**********/t=t*n;/**********ERROR**********/s+t=s;}printf("jiecheng=%f 93",s);)【改错1】【学生答案】s=1;【参考答案】t=1;t=1.0;【改错2】【学生答案】t=t*n;【参考答案】t=t*j; 94t*=j;【改错3】【学生答案】s+t=s;【参考答案】S=S+t;s+=t;s=t+s;1./*-————————-【程序改错】功能:实现两个字符串的连接。例如:输入dfdfqe和12345时,则输出dfdfqel2345.#include"stdio.h"main()(chars1[80],s2[80];voidscat(chars1[],chars2[]); 95gets(s1);gets(s2);scat(s1,s2);puts(s1);}voidscat(chars1[],chars2[])(inti=0,j=0;/ERFOR**********/while(s1[i]=='\0')i++;/**********ERROR**********/while(s2[j]=='\0')(/*******************/s2[j]=s1[i];i++;j++;)/**********ERROR**********/s2[j]='\0';)【改错1】【学生答案】while(s1[i]=='\0')i++;【参考答案】while(s1[i]!='\0')i++;while(s1[i])i++;while(s1[i]!=NULL)i++;while(s1[i]!=0)i++; 96【改错2】【学生答案】while(s2[j]=='\0')【参考答案】while(s2[j]!='\0')while(s2[j])while(s2[j]!=NULL)while(s2[j]!=0)【改错3】【学生答案】s2[j]=s1[i];【参考答案】s1[i]=s2[j];【改错4】【学生答案】s2[j]='\0';【参考答案】s1[i]='\0';s1[i]=NULL;*(s1+i)='\0';s1[i]=0; 97六、程序填空1./*——【程序填空】功能:打印以下图形。-*/#include"stdio.h"main()(chara[5][9]={""};inti,j;for(i=0;i<5;i++)★★★★★★★★★★pqII***********/for(j=i;;j++)a[i][j]=**';/………**FlLL**……***/for(;i<5;i++)(for(j=0;j<9;j++)/***********FILL***********/printf("%c",);/FlLL*/ 98【学生答案】for(j=i;;j++)【参考答案】jjj<=i+4i+4>jj<5+i【空2】【学生答案】for(;i<5;i++)【参考答案】i=0【空3】【学生答案】printf("%c",); 99【参考答案】【空4】【学生答案】【参考答案】printf(" 100")【程序填空】功能:计算n门课程的平均分。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.80o*/#include 101inti;floatave=0.0;Iit**********p|11***********/for(i=0;;i++)ave=ave+a[i];ave=ave/n;/***********pi11***********i)intmain()(floatscore[30]={90.5,72,80,61.5,55},aver;/………**FILL*………*/aver=fun(,5);printf(" 102Averagescoreis:%5.2f 103",aver);return0;}【空1】【学生答案】for(i=0;;i++)【参考答案】i 104【学生答案】)【参考答案】returnave;【空3】【学生答案】aver=fun(,5);【参考答案】score 105【第四套】一单选1sizeof(float)是().A、一个浮点表达式B、一个不合法的表达式C、运算结果是一个整型表达式。D、•种函数调用2下列数据中属于"字符串常量”的是()。A、AB,"ABC'C、ABCD>'ABC3用下面的scanf函数输入数据,使得i=10,k=15选择正确的键盘输入方法().(用“CRT表示回车,U表示空格)main(){inti,k;scanf("i=%d,k=%d",&i,&k);)A.i=10[CR]k=15[CR]B、i=10,k=15[CR]C、10U15[CR]D、10,15[CR]4逻辑表达式3<2||-1&&4>3-!0的值为:()A、1 106D、25下列运算符中是C语言关系运算符的是()。A、&B^~C、!=D、!6语句while(!E);中的表达式!E等价于O。A、E==1B、日=0C、E!=1D、E==07以下正确的描述是().A、只能在循环体内和switch语句内使用break语句B、8ntinue语句的作用是终止整个循环的执行C、从多层嵌套的外层循环中退出时,只能使用goto语句D、在循环体内使用break和continue语句的作用相同8下面各语句中,能正确进行赋字符串操作的语句是().A、chars1[5][]={"ABCDE'};B、chars2[6]={'A'),B','C,'D','E};C、charst[][]={"ABODE'};D、chars[5]={'A','B,'C,'D','E};9若有说明:inta[3][4]={0};则下面正确的叙述是O。A、数组a中每个元素均可得到初值0B、只有元素a[0][0]可得到初值0C、数组a中各元素都可得到初值,但其值不一定为0D、此说明语句不正确 10710若有说明inta[3][4];则a数组元素的非法引用是()。 108A、a[1][3]B、a[0][4]C、a[0][2*1]D、a[4-2][0]11执行下面程序后,输出结果是().main(){inta,b,c;a=45,b=27,c=0;c=max(a,b);printf("%d 109",c);)intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}A、72B、18C、27D、4512以下正确的描述是:在C语言程序中().A、函数的定义可以嵌套,但函数的调用不可以嵌套B、函数的定义不可以嵌套,但函数的调用可以嵌套C、函数的定义和函数的调用均可以嵌套D、函数的定义和函数的调用均不可以嵌套13在C语言的函数中,下列正确的说法是().A、形参可以是常量和变量 110B、可以有也可以没有形参C、数组名不能作形参D、必须有形参14设有宏定义#definePI3.14WdefineS(r)PI*r*r,则S(2)的值为().A、6.28B、12.56C、3.14D、9.4215inta[10]={1,2,345,6,7,8};int*p;p=&a[5];p[-3]的值是()。A、4B、2C、不一定D、316若有以下程序段,则使用错误的选项是().structstudent(intnum;intage;);structstudentstu[3]={{1001,20},{1002,19},{1004,20}};main();(structstudent*p;p=stu; 111A、(*p).numB、(p++)->numC^p=&stu.ageD、p++C8BACDABABDBBBDC二判断1#define和printf都不是C语句。2格式字符%x用来以十六进制形式输出整数.3语句if(a>b)printf("%d",a);elseprintf("%d",b);可以用条件表达式a>b?a:b取代4逻辑表达式-5&&!8的值为1.5循环结构中的8ntinue语句是使整个循环终止执行6for循环语句不能用于循环次数未知的情况下.7引用数组元素时,数组元素下标必须是整型常量.8数组的首地址一定是第一个数组元素的地址.9数组整体不参加数据处理(即不参加各种运算),参加数据处理的只能是数组的元素.10数组名作为函数调用时的实参,实际上传递给形参的是数组全部元素的值.11在主函数中,必须要对被调用函数进行类型说明,否则在编译时会出现错误.12在一个函数中定义的静态局部变量不能被另外一个函数所调用.13计算机编译系统对宏定义在编译时进行语法检查.14指向某一变量的指针,就是该变量的内存地址.15对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义。16在打开文件时,必须说明文件的使用方式Jr"表示以只读方式打开一个文件.对对错错错错错对对错错时错对对对 112三填空1intx=2;z=x++-1;则x的值为.2设x=2.5,a=7,y=4.7,算术表达式x+a%3*(int)(x+y)%2/4的值为.3设x=62,表达式x>=60&&x<70||x==1的值为.4c语言表达式5>2>7>8的值是.5字符串比较的库函数是只写函数名即可.6从函数的形式上看,函数分为无参函数和两种类型.7设有以下共用体类型说明和变量定义,在TC编译环境下,变量a在内存所占字节数是unionstud{charnum[6];floats[4];doubleave;}a,*p;8在C语言中,根据要处理的文件存储的编码形式,可以把文件分为ASCII文件和文件.52.510strcmp有参函数16二进制四程序设计1/*【程序设计】功能:用函数求N个[10,60]上的整数中能被5整除的最大的数,如存在则返回这个最大值,如果不存在则返回0。*/#include"stdio.h"#include"stdlib.h"#defineN30intfind(intarr[],intn) 113intm=0;*****p*********/W******^retum(m);}main()(inta[N],i,k;voidTestFunc();for(i=0;i 114M);}k=find(a,N);if(k==O)printf("NOFOUND 115M);elseprintf(Mthemaxis:%d 116M,k); 117TestFunc();}voidTestFunc()(FILE*IN,*OUT;intn;inti[5];into;IN=fopen(”in.dat”,T);if(IN==NULL)(printf(”ReadFileError");}OUT=fopen(”out.dat“Jw”);if(OUT==NULL)(printfC'WriteFileError");)for(n=0;n<5;n++)(fscanf(IN,"%d",&i[n]);)o=find(i,5);fprintf(OUT,"%d 118",o);fclose(IN);fclose(OUT); 119}【参考代码】inti;for(i=0;i 120y**********End**********/}main()(intm;voidTestFunc();printf(nEnterm:");scanf("%cT,&m);printf(M 121Theresultis%f 122M,fun(m));TestFunc();}voidTestFunc()(FILE*IN,*OUT;ints;intt;doubleo;IN=fopen(,,in.dat",,,r"); 123if(IN==NULL)printf(MFteadFileError");}OUT=fopen(',out.dat,,,,,wH);if(OUT==NULL)(printf("WriteFileError1');)for(s=1;s<=5;s++)(fscanf(IN;'%d,,,&t);o=fun⑴;fprintf(OUT;'%f 124",o);}fclose(IN);fclose(OUT);【参考代码】doublea=1;inti;for(i=1;i 125五程序改错1/*--【程序改错】功能:实现3行3列矩阵的转置,即行列互换。#include"stdio.h"voidfun(inta[3][3],intn)(intfor(i=0;i 126M);}for(i=0;i 127a[i][j]=t;a[i][j]=a[j][i];/**********ERROR**********/t=a[j][i];}for(i=0;i 128");)main()intb[3][3];fun(b,3);【改错1】【参考答案】scanf("%d",(*(a+i)+j)); 129【改错2】【参考答案】for(j=0;jj;j++)for(j=0;j<=i;j++)for(j=0;i>=j;j++)for(j=i+1;j 13021*【程序改错】功能:从键盘输入10个字符,统计其中数字字符的个数。*/#include 131【改错1】【参考答案】c=getchar();【改错2】【参考答案】continue;六程序填空1/*---【程序填空】功能:从键盘上输入2名学生4门课成绩,求每个学生的平均成绩,并统计不及格门次。#*/#include 132for(j=1;j<=4;j++)(scanf(M%fM,&x);if(x<60)n++;;***********pi11****)avg=sum/4.0;printf(" 133avgofNO.%dis%5.2f",i,avg);)printf(" 134%d",n); 135return0;【空1】【参考答案】sum=0【空2】【参考答案】sum=sum+xsum+=x【程序填空】 136功能:设数组a中的兀素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。-*/#include 137M,k,ave);)return0; 138【空1】【参考答案】continue【空2】【参考答案】a[i]【第四套】一单项选择 1391先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是()oA、0='97'B、c=*a';C、c=“97”;D、c="aH;2已定义ch为字符型变量,以下赋值语句中错误的是()oA、ch='\';B、ch=*a';C、ch='\xaa';D、ch=62+3;3已定义两个字符数组a,b,则以下正确的输入格式是()0A、scanf("%s%s",&a,&b);B、scanf("%s%s",a,b);C、get(a,b);D、gets(waM),gets(wbw);4以下不正确的if语句形式是()oA、if(x 140D、Z6语句while(!E);中的表达式!E等价于().A、E==1B、日=0C、E!=1D、E==07针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是().A、break语句可以一次性跳出多层嵌套循环B、break语句只能跳出最内层循环C、sntinue语句可以一次性跳出多层嵌套循环D、continue语句可以跳出最内层循环8程序main(){chars[10];s="abcd”;printf("%s 141",s);}的运行结果(以下U代表空格)是().A、输出abedB、输出abcdUUUUUC、编译不通过D、输出a9若chara[10];已正确定义,以下语句中不能从键盘上给a数组的所有元素输入值的语句是()«A.for(i=0;i<10;i++)a[i]=getchar();B、scanf("%s",a);C、gets(a);D、a=getchar();10C语言中函数调用的方式有()。A、函数只可以作为语句调用。B、函数只可以作为函数表达式调用C、函数调用只可以作为语句或函数表达式调用。 142D、函数调用可以作为语句调用,uj■以作为函数表达式调用,也可以作为函数参数调用。11函数的形式参数系统默认存储类型说明是。A、staticB、externC、registerD,auto12设有宏定义#(^3308(5)凶*丫,且2=3上=4,则SUB(a++,b++)的值为().A、13B、16C、20D,1213以下程序段执行后输出的结果是().charstr[]="ABCD",*p=str;printf("%d 143",*(p+4));A、字符D'的地址B,0C、不确定的值D、6814使用共用体变量,不可以()oA、同时访问所有成员B、进行动态管理C、节省存储空间D、简化程序设计15若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是()。A,"rb+"B、"ab++” 144C,"ab"D,"wb+BABBBDBCDDDDBAD二判断1•个C程序只能由一个主函数组成。2在C程序中,逗号运算符的优先级最低。3c语言printf函数的格式控制串中可以设置需要的普通字符,输出时会原样输出。4双精度型数据输入应该选用If格式。5若floatx=2.0,y=1.0;,则条件表达式x>y?1:1.5的值为1.6逻辑表达式4>2&&1||5V3-10的值为为7逻辑表达式-5&&!8的值为1.8在do-while循环中,任何情况下都不能省略while.9break语句不能终止正在进行的多层循环.10在do-while循环中,根据情况可以省略while.11若有语句:chara[]="string";则a[6]的值为*\0';12二维数组在内存中存贮时,是按行的顺序进行存储的。13给数组赋初值时,初值的个数•定不小于所定义的元素的个数.14当全局变量与局部变量同名时,在局部变量的作用域范围之内,全局变量起作用.15当函数的类型与return语句后表达式的值的类型不一致时,函数返回值的类型由return语句后表达式值的类型决定.16在C语言中,主函数可以调用其它函数,同时,其它函数也可以调用主函数.17宏定义不是C语句,不必在行末加分号.18若定义intarray[5],*p;则赋值语句p=&array;是正确的.19在定义结构体变量时不允许对它赋初值.20c语言中,在打开文件时,必须说明文件的使用方式,"w”用于文件的读写.错对对对错对错对对错对对错错错错对错错错三填空 1451已知x=3,y=2,则表达式x*=y+8的值为.2C语言中的字符变量用保留字来说明.3intx=2,y=3,z=4;则表达式x+y&&z的值为.4表达式3&&0的值是.5设i,j,k均为int型变量,则执行完下面的for循环后,k的值为.for(i=0,j=10;i<=j;i++,j-)k=i+j;6若有以下数组a,数组元素:a[0卜a[9],其值为941282107513,该数组的元素中,数值最大的元素的下标值是.7执行以下程序段后,S的值是.inta[]={5,3,7,2,1,5,3,10},s=0,k;for(k=0;k<8;k+=2)s+=*(a+k);8函数调用时的实参和形参之间的数据是单向的传递.30char1010216值四程序设计1/*-——【程序设计】功能:将字符串中的小写字母转换为对应的大写字母,其它字符不变。#include"string.h"#include"stdio.h" 146voidchange(charstr[])(/…*…**Begin***Iit*********Efid**********/}main()(voidchange();charstr[40];voidTestFunc();gets(str);change(str);puts(str);TestFunc();}voidTestFunc()FILE*IN,*OUT;chari[200];IN=fopen("in.dat”,“r”);if(IN==NULL)( 147printf(,'FteadFileError”);)OUT=fopen(',out.dat,,,,,wH);if(OUT==NULL)(printfC'WriteFileError");)fscanf(IN,w%sH,i);change(i);fprintf(OUT,',%s 148,,,i);fclose(IN);fclose(OUT);【参考代码】inti;for(i=0;str[i]!='\0*;k+)if(str[i]>=,a,&&str[i]<=,z,)str[i]=str[i]-32;2/*--【程序设计】y=sin(m)*10o功能:根据整型形参m,计算如下公式的值:例如:若m=9,则应输出:4.121185 149#include"stdio.h',#includeMmath.hMdoublefun(intm)(/*********Begin*/**********End………*/}main()intn;voidTestFunc();printf(HBitern:");scanfC'%d",&n);printf(H 150Theresultis%1f 151M,fun(n));TestFunc();)voidTestFunc()(FILE*IN,*OUT;inti;intt;doubleo;IN=fopen("in.dat",T); 152if(IN==NULL)(printf("ReadFileError");}OUT=fopen(',out.dat,',nw");if(OUT==NULL)(printfC'WriteFileError”);)for(i=0;i<5;i++)(fscanf(IN,M%dM,&t);o=fun(t);fprintf(OUT,"%lf 153",o);)fclose(IN);fclose(OUT);【参考代码】doubley=0;y=sin(m)*10;return(y); 154五程序改错【程序改错】功能:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。#include"stdio.h"main(){/**********ERROR**********/longa,b,c,d,e,x,scanf("%ldM,&x);a=x/10000;/**********ERROR**********/b=x/10000/1000;c=x%1000/100;d=x%100/10;e=x%10;y**********FRRQR**********/if(a==0)printf(Mthereare5,%ld%ld%ld%ld%ld 155',,e,d,c,b,a);elseif(b!=0)printf(Mthereare4,%ld%ld%ld%ld 156M,e,d,c,b);elseif(c!=0)printf(Mthereare3,%ld%ld%ld 157H,e,d,c);elseif(d!=0) 158printf(nthereare2,%ld%ld 159M,e,d);elseif(e!=0)printf(Mthereare1,%ld 160H,e);}【改错1】【参考答案】longa,b,c,d,e,x;【改错2】【参考答案】b=x%10000/1000;【改错3】【参考答案】if(a!=0)2/*【程序改错】 161功能:读取7个整数(其值范围是1-50),每读取一个值,程序打印出该值个数的*。 162#5-clude-std-o-h--maino一、:::::ERROFr*wh=e(nA7){doscanf(一Uga); 163、**********ERROR**********一wh=e(aA1QOQOav50);、*******************一3「?0—.八“以-++)prmtfi-);prmuzw);n++;n【除龈明海】wh=e(r!AH7)
此文档下载收益归作者所有