还剩36页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
一、单项选择题1.有下列程序段落:intia
[5];fori=0;i5;i++scanf“%d”a[i];若要使数组元素的值分别为1,2,3,4,5,应从键盘输入(B)A.12345↙B.12345↙ C.12345↙ D.1;2;3;4;5↙2.数组名作为函数参数进行传递时,形参获得的是(D)A.该数组第一个元素的值B.该数组所有元素的值C.该数组所有元素的地址D.该数组的首地址
3.设有如下宏定义:#defineA3+2#defineBA*A则表达式“B*B”的值为(A)A.23 B.5C.25 D.6254.在下列说明中,结构类型变量x所占用内存字节数为(D)structexp{inti;floatj;doublek;}x;A.8个B.7个C.14个D.随计算机而定5.设有定义intk=3*p=k;则表达式*p的值是(D)A.1B.0C.2D.36.下列程序的输出结果为(A)main(){inti=3,b;b=i--+i--;printf(“%d”,b);}A.6B.2C.3D.47.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是(D)A.c=b=aB.a=c||b=cC.a=c=bD.a=cb=c8.下列叙述不正确的是(A)A.函数定义可以嵌套B.宏定义可以嵌套C.函数调用可以嵌套D.循环结构可以嵌套9.设char*p=“abcde”,则printf“%s”p的输出结果为(D)A.cB.cdeC.bD.abcde10.p1p2为指向浮点的指针变量,下列运算没有意义的是(D)A.*p1-*p2B.p1++C.*p1+*p2D.p1+p211.设有inti=010j=10;则printf“%d%d\n”++ij--;的输出是(B)A.1110B.910C.0109D.10912.已知w=1x=2y=3z=3a=4b=2;则执行语句a=wxb=yz;后,ab的值为(D)A.1和1B.0和0C.4和2D.0和2前一条件为假,无论后面什么情况结果都为假13.定义如下变量关系,则下面语句的输出结果是(D)inti;intx
[3]
[3]={123456789};fori=0;i3;i++printf%dx
[0][2-i];A.159B.123C.357D.32114.已知数组floatb
[3]
[2];该数组行下标的范围是(D)A.1—3B.0—3C.1—2D.0—215.下列语句中,正确的是(D)A.#definePI=
3.14159B.include“stdio.h”C.defineM3D.#definePI
3.1415916.有如下程序该程序段的输出结果是(B)voidmainvoid{intn=5;whilen2{n--;printf“%d”n;}}A.543B.432C.4321D.543217.下列四种数组定义,合法的数组定义是(A)A.chara[]=hello;B.inta
[4]={43210};C.chara=hello;D.chara
[4]=hello;18.设p1和p2均为指向int型的指针变量k为int型变量,下列不正确的赋值语句是(C)A.k=*p1+*p2;B.k=*p1**p2C.p2=kD.p1=p219.有如下程序,该程序的输出结果是(C)voidmainvoid{chars[]=“ABCD”*p;forp=s+1;p=s+3;p++printf“%c\n”*p;}A.ABCB.AC.BD.BCDBCBCCDCCDD20.对于C程序的函数下列叙述中正确的是(A)A.函数的定义不能嵌套但函数调用可以嵌套B.函数的定义可以嵌套但函数调用不能嵌套C.函数的定义和调用均可以嵌套D.函数的定义和调用均不能嵌套
21.设x为整型变量p是指向整型的指针变量则下列赋值表达式正确的是(A)A.p=xB.p=xC.*p=xD.*p=*x22.函数定义时,形参是整型变量,则函数调用时,实参不可以是(C)A.整型常量B.字符型常量C.数组名D.整型表达式
23.以下程序的输出结果是(B)voidmainvoid{inta
[10]={12345678910}*p=a
[3]*q=p+2;printf“%d\n”*p+*q;}A.16B.10C.8D.624.设有如下定义,若有p=ab;则对ab中成员项的正确引用是(B)structss{inta;floatb;}ab*p;A.*p.ab.aB.p-aC.p-ab.aD.
25.若要对E盘上的一个非空文件“w
1.dat”进行修改,正确的打开语句是(D)A.fp=fopen“w
1.dat”“r+”;B.fp=fopen“w
1.dat”“w+”;C.fp=fopen“E:\\w
1.dat”“r+”;D.fp=fopen“E:\\w
1.dat”“w+”;26.C语言程序的三种基本结构是(A)A.顺序结构,分支结构,循环结构B.递归结构,循环结构,转移结构C.嵌套结构,循环结构,顺序结构 D.递归结构,分支结构,顺序结构27.能正确表达逻辑关系“0a1或0b1”的c语言表达式是(A)A.0aa1||0bb1B.0a||a10b||b1C.0a10b1D.0a1||0b128.设x和y为浮点型变量,则以下(C)语句是正确的赋值语句A. x=yB.x*x=yC.x=x+10*yD.*x=y+229.设inta=3;下列哪一个表达式的值等于0(D)A.aB.!a||aC.a=aD.a%=a30.定义如下变量和数组,则下面程序段落的输出结果是(A)inti;intx
[3]
[3]={012345678};fori=0;i3;i++printf“%d”x[i][2-i];A.246 B.036 C.048 D.25831.以下叙述错误的是(D)A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中,注释说明只能位于一条语句的后面32.C语言中运算对象必须是整型的运算符是(A)A.%=B./C.=D.〈=33.有如下程序程序运行后的输出结果是(B)main{unsignedintx=0xffff;printf“%u\n”x;}A.-1B.65535C.32767D.0xFFFF34.若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确代表该代数式的C语言表达式是(C)A.sqrtabsn^x+e^xB.sqrtfabspownx+powxeC.sqrtfabspownx+expxD.sqrtfabspowxn+expx35.字符串“\t12\x42\\abcd”的长度是(B)A.14B.9C.15D.2036.以下叙述中错误的是(D)A.计算机不能直接执行用C语言编写的源程序B.C语言经C编译程序编译后,生成后缀为.obj的文件是二进制文件C.后缀为.obj的文件,经连接后生成后缀为.exe的文件是二进制文件D.后缀为.obj和.exe的二进制文件都可以直接运行37.以下选项中,与k=x++;完全等价的表达式是(B)A.x=x+1;k=x;B.k=x;x=x+1;C.k=x+1;D.k+=x+1;38.以下叙述中正确的是(C)A.break语句只能用于switch语句中B.continue语句的作用是使程序的执行流程跳出包含它的所有循环C.break语句只能用在循环体内和switch语句体内D.在循环体内使用break语句和continue语句的作用相同39.判断字符型变量ch是否为大写英文字母的表达式为(B)A.‘A’=ch=‘Z’B.ch=‘A’ch=‘Z’C.ch‘a’ch=‘z’D.ch=‘A’||ch=‘Z’40.若表达式ma++:a--则表达式m和(B)等价A.m==0B.m!=0C.m=0D.m=141.在c语言中,运算对象的逻辑值“真”用(B)表示A.falseB.非0C.0D.负数42.已知函数原型声明为char*wwwcharacharb;该函数的类型为(A)A.指向字符型的指针B.字符型C.整型D.指向整型的指针43.设int类型的数据长度为2字节,则该类型数据的取值范围是(D)A.0至65536B.0至65535C.-32767至32768D.-32768至3276744.inta*p**w;p=aw=p;取a的值的表达式为(D)A.&aB.&*pC.**pD.**w45.C语言程序的基本单位是(A)A.函数B.标识符C.表达式D.语句46.判断字符型变量ch的值是否为大写英文字母的表达式为(B)A.‘A’=ch=’Z’B.ch=’A’ch=’Z’C.ch’a’ch=’z’D.ch=’A’||ch=’Z’47.已知w=3x=2y=3z=3a=4b=2;则执行语句a=wx||b=yz;后,ab的值为(C)A.1和1B.0和0C.1和2D.4和248.若有定义语句inta[]={12345678910}*p=a;值为8的数组元素的正确表示为(D)A.a
[8]B.a+7C.p+7D.*p+749.下列程序运行结果是(A)#defineA2#defineAAA+A/2voidmainvoid{printf“%d,”AA;printf“%d\n”5*AA;}A.3,11B.3,15C.2,10D.8,4050.若有如下定义,则对ex中的a成员的正确引用是(B)structsk{inta;floatb;}ex*p=ex;A.*p.ex.aB.p-aC.p-ex..a
二、填空题1.在内存中存储一个字符‘a’占用___1___个字节而存储字符串”abcdef”则占用___7___个字节2.表达式4/5的值为__0__3.设x=
4.5a=7y=
3.4表达式x+a%3*intx+y%2/4的值为_
4.500000_4.设a=14执行a+=a-=a*=a后,a=__0_5.设x=y=z=6执行x=yzx+2:x-2;后,x=__4__6.getchar函数用于输入_字符_而gets函数则用于输入_字符串__7.设有定义语句charww
[20]=”\t\\wab\n”;则表达式:strlenww的值是_68.设有定义语句charstr
[7]=”abcdef”则数组元素str
[2]中的字符是__c__数组元素str
[6]中的字符是_\0___9.函数中的形参和调用时的实参都是变量时,传递方式为_值传递__;都是数组名时,传递方式为__地址传递__10.设有char*p=”12345”则printf“%s”p的输出是_12345__;而printf“%c”*p的输出则是__1__11.若s是int型变量,且s=7,则表达式:s/2+s+1%2的值为__3_12.C语言中,以0x_打头的int常数是十六进制13.有说明语句chars=‘\102’;S包含了__1___个字符14.有数学表达式sinx+-6x,写出其对应的C语言的表达式___sinx+sqrtx-6*x__15.有定义语句inta[]
[3]={{0}{1}{2}};则数组元素a
[1]
[2]的值是016.若程序中使用了函数strlen,则必须包含的头文件名为__string.h__17.有如下程序,该程序的输出结果是a=2b=1voidmainvoid{intx=1a=0b=0;switchx{case0:b++;case1:a++;case2:a++b++;}printfa=%db=%d\nab;
18.若a函数中调用了b函数,而b函数又调用了a函数,这种调用称为_递归___调用19.函数调用时,若形参和实参均为数组名时,传递方式为_地址传递_20.若有以下定义语句,则输出的结果是__4__chars1[]=“abcdef”*s2=“1234”;printf“%d\n”strlenstrcpys1s2;21.若宏定义为#defineyx2+x则表达式a=4+3*y2的值为1222.设有以下语句staticinta
[4]
[2]={12345678};int*p
[2];p=a;则**p+2+1的值为623.在turboC中,int型数据占2字节,则定义structnode{charx
[10];inty;union{floata;longb;}ab;}t;后sizeoft=
1624.设有一个名为“ww
1.c”的C程序,其主函数为mainintargcchar*argv[],如果在执行时,输入的命令行为ww1aabbcc↙则形式参数argc的值是__4__
25.执行下列程序段后,**q-1的值为__99__inta*p**q;a=100;p=a;q=p;26.C语言源程序中主函数名由系统规定为__main___,程序员是不能改变的27.有数学表达式-3,其C语言表达式为___sqrtx-3____28.已知函数定义为intstatintafloat*p{......}则此函数的两个参数类型分别是整型、指向浮点型指针29.设有数组a
[10];则首地址可以写成___a或a
[0]_数组元素a
[3]的地址可以写成__a
[3]或a+3_30.要使以下程序段中的函数调用语句printf“***”;执行10次,应在
①处填入整数__19或20__fori=1;i=___
①___;i+=2printf“***”;31.用只读方式打开e:\20051234目录下的名为“aa.dat”的文件,正确的打开语句为FILE*fp;fp=_fopen“e:\20051234\aa.dat””r”___
32.判断两个浮点型变量x和y是否相等一般用if(fabsx–y1e-6)…
33.已知赋值语句zhang.year=1985;可判断zhang是结构体类型的变量
三、程序分析题下面程序的运行结果为5650#includestdio.hvoidmain{intabcd;a=4;b=6;c=++a;d=cacb;printf%d%d%d%dabcd;}下面程序的运行结果为c=1\d=
0.000000#includestdio.hvoidfunintxinty{intab;floatd;a=x+14;b=y-4;d=floatb/a;printfd=%f\nd;}voidmainvoid{intb=9a=6c;c=b/a;printfc=%d\nc;funab;}3.设从键盘上输入HelloWorld!下面程序的运行结果为helloworld!#includestdio.hvoidmainvoid{charss
[20];inti;getsss;fori=0;ss[i]!=\0;i++ifss[i]=Ass[i]=Zss[i]=ss[i]+32;putsss;}4.下面程序的运行结果为b=-10\i=33b=0\i=75b=33\#includestdio.hinti=1;voidothervoid;voidmainvoid{intb=-10;printfb=%d\nb;other;i=i+10;other;}voidother{staticintb;i=i+32;printfi=%db=%d\nib;b=i;}5.下面程序的运行结果为645\298\#includestdio.hvoidmainvoid{inta
[10]={78899866547645826295};intkakij;ka=ki=0;forj=1;j10;j++{ifa[ki]a[j]ki=j;ifa[ka]a[j]ka=j;}printf“%d%d\n%d%d\n”kia[ki]kaa[ka];}
6.运行时假定键盘输入数据为12345678910下面程序的运行结果为13579#includestdio.hvoidmainvoid{intia
[10];int*p;p=a;fori=0;i10;i++scanf“%d”p++;forp=a;pa+10;p++if*p%2printf“%3d”*p;}7.下面程序的运行结果为1010\101\11要求注明输出格式!#includestdio.hvoidmainvoid{inta=10b=11;intc=0d=0;printf%5d%5d\na++--b;printf%5dab;printf%5d!a;printf%d\n!c;printf%5dd+=a;}8.下面程序的运行结果为1+1=21+2=31+3=4\2+2=42+3=5\3+3=6#includestdio.hvoidmainvoid{intij;fori=1;i4;i++{forj=i;j4;j++printf“%d+%d=%d”iji+j;printf“\n”;}}9.下面程序的运行结果为a=1b=-5c=0\a=2b=2c=10\a=3b=-5c=2#includestdio.hinta=1b;voidfunvoid;voidmainvoid{staticintc;intb=-5;printfa=%db=%dc=%d\nabc;fun;a+=1;c+=2;printfa=%db=%dc=%d\nabc;}voidfun{intc=10;a+=1;b+=2;printfa=%db=%dc=%d\nabc;}
10.下面程序的运行结果为ABCD\BCD\CD\D#includestdio.hmain{charstr
[5]*p;inti;fori=0;i4;i++str[i]=’A’+i;str[i]=\0;p=str;whilepstr+4{printf%s\np;p++;}}11.下面程序的运行结果为Inputscore:**\No:1001\Name:Wangyong\Score:**.0#includestdio.hvoidmainvoid{structstud{intno;char*name;floatscore;}stu1stu2;stu
1.no=1001;stu
1.name=Wangyong;printfInputscore:;scanf%fstu
1.score;stu2=stu1;printfNo:%d\nName:%s\nScore:%
5.1f\nstu
2.nostu
2.namestu
2.score;}
12.下面程序的运行结果为38\28#includestdio.hintfunint*aintn{intik=0;printf“%d%d\n”*an;fori=0;in;i++a++if*a%2continue;elsek+=*a;returnk;}voidmain{intaa
[10]={12345678910}s;s=funaa+28;printf%d\ns;
四、程序设计题
1.有一分段函数2x+5(x=2)y=3x-4(2x=5)7(x5)编程序,输入变量x的值,计算并输出y的值#includestdio.hintmainvoid{intxy;scanf%dx;ifx=2{y=2*x+5;}elseifx5{y=7;}elsey=3*x-4;printf%dy;}2.由键盘任意输入9个整数,组成3行3列的二维数组,统计主对角线上元素的和#includestdio.hintmainvoid{inta
[3]
[3]ijsum=0;fori=0;i3;i++forj=0;j3;j++scanf“%d”a[i][j];fori=0;i=2;i++forj=i;j=i;j++sum+=a[i][j];printf“sum=%d”sum;}3.编写程序,通过级数求的值,要求精度为10-6(即某项的绝对值小于10-6),输出结果的值#includestdio.h#includemath.hintmainvoid{floatpi=0t=1it=1;ints=1;whilefabst1e-6{pi+=t;it+=2;s=-s;t=s/it;}printfPI=%f4*pi;}4.编写一程序任意输入一串字符,统计其中大写字母的个数,并输出结果#includestdio.h#includestring.hintmainvoid{chara
[1000];inticount=0;scanf%sa;fori=0;istrlena;i++{ifa[i]=Aa[i]=Z{count++;}}printf%dcount;}5求符号函数1x0y=0x=0-1x0输入x的值,输出结果#includestdio.h#includemath.hintmainvoid{intxy;scanf%dx;ifx==0{y=0;}elseifx0{y=1;}elsey=-1;printf%dy;}6.输入6个整数,组成2行3列的二维数组,统计数组中的正数之和、正数个数以及负数之和、负数个数#includestdio.h#includemath.hintmainvoid{inta
[6];intij=0j_number=0k=0k_number=0;fori=0;i6;i++{scanf%da[i];ifa[i]0{j+=a[i];j_number++;}elseifa[i]0{k+=a[i];k_number++;}}printf正数个数是%d,和为%d\n负数个数是%d和为%djj_numberkk_number;}7.编写子函数exps,求ex≈1+x+x2/2!+x3/3!......,要求精度为10-6在主函数中输入x,利用子函数exps求(ex+e-x)/2的值,并在主函数中输出结果#includestdio.h#includemath.hdoubleexpsdoublex{doubleik=1sum=1;doublee=0;fori=0;;i++k++{sum*=k;e=powxi/sum;ifpowxi/sumpow
0.16break;}returne;}intmainvoid{floatx;scanf%fx;printf%lfexpsx+exp-x/2;}8.一个班有45人,用a数组存放一门课的成绩,编程输入a的成绩,统计不及格60分的人数,并将成绩按降序排序,输出结果(10分)#includestdio.h#includemath.hintmainvoid{inta
[45]ijtempnumber=0;fori=0;i45;i++{scanf%da[i];ifa[i]60number++;}fori=0;i44;i++{forj=i+1;j45;j++{ifa[i]a[j]{temp=a[i];a[i]=a[j];a[j]=temp;}}}fori=0;i45;i++{printf%da[i];}}填空题1.C源程序的基本单位是函数2.一个C源程序中至少应包括一个主函数3.在一个C源程序中,注释部分两侧的分界符分别为//和/**/4.一个函数是由两部分组成的,它们分别是函数首部和函数体5.在C语言中,一个函数的函数体一般包括声明部分和执行部分6.在每个C语句和数据定义的最后必须有一个分号7.C语言本身没有输入输出语句其输入输出是由库函数语句来完成8.程序是指可连续执行,并能够完成一定任务的一条条指令的集合,是人与机器之间进行交流的语言9.源程序是指未编译的按照一定的程序设计语言规范书写的文本文件C源程序文件的扩展名为.c10.目标程序是指把源文件翻译成一种中间代码目标程序文件的扩展名为.obj11.可执行程序是指已经编译过和连接转化成为二进制代码可执行程序文件的扩展名为.exe12.上机运行一个C源程序的步骤一般为
①编译,检查是否出错;
②连接;
③寻找提示改正;
④运行13.若x和a均是int型变量,则计算表达式1后的x值为12,计算表达式2后的x值为41x=a=46*22x=a=46*214.若a是int型变量,则表达式a=4*5a*2a+6的值为2615.若b是int型变量,则表达式b=25/3%3的值为216.若s是int型变量,且s=6则下面表达式s%2+s+1%2的值为117.若ab和c均是int型变量,则计算表达式a=b=4+c=2后,a值为6,b值为4,c值为218.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为10,n的值为619.若有定义intb=7;floata=
2.5c=
4.7;则表达式a+intb/3*inta+c/2%4的值为
5.50000020.若有定义inta=2b=3;floatx=
3.5y=
2.5;则表达式floata+b/2+intx%inty的值为
3.50000021.若有定义intx=3y=2;floata=
2.5b=
3.5;则表达式x+y%2+inta/intb的值为122.若x和n均是整型变量,且x的初值为12,n的初值为5,则计算表达式x%=n%=2后x的值为023.以下程序的输出结果是0\main{unsignedshorta=65536;intb;printf“%d\n”b=a;}24.请写出数学式a/bc的C语言表达式a/b*c25.设a、b、c为整型数,且a=
2、b=
3、c=4,则执行完语句a*=16+b++-++c后,a的值是2826.下面程序的运行结果是i:dec=-4oct=177774hex=fffcunsigned=65532main{shorti;i=-4;printf“\ni:dec=%doct=%ohex=%xunsigned=%u\n”iiii;}27.若想通过以下输入语句使a=
5.0,b=4,c=3,则输入数据的形式应该是
5.04c=3\intb,c;floata;scanf%f,%d,c=%d,a,b,c;28.下列程序的输出结果是
16.00,请填空main{inta=9b=2;floatx=
6.6y=
1.1z;z=a/2+b*x/y+1/2;printf%
5.2f\nz; }29.在printf格式字符中,只能输出一个字符的格式字符是%c;用于输出字符串的格式字符是%s;以小数形式输出实数的格式字符是%f;以标准指数形式输出实数的格式字符是%e30.若从键盘输入58则以下程序输出的结果是585858main{inta;scanf“%d”a;ifa50printf“%d”a;ifa40printf“%d”a;ifa30printf“%d”a;}31.下面程序的运行结果是-1\main{inta=2b=3c;c=a;ifabc=1;elseifa==bc=0;elsec=-1;printf“%d\n”c;}32.以下程序实现输入三个整数,按从大到小的顺序进行输出请填空main{intxyzc;scanf“%d%d%d”xyz;ifxy{c=x;x=y;y=c;}ifxz{c=x;x=z;z=c;}ifyz{c=y;y=z;z=c;}printf“%d%d%d”xyz;}33.如果运行时输入字符Q,则下面程序的运行结果是Qmain{charch;scanf“%c”ch;ch=ch=‘A’ch=‘Z’ch+32:ch;ch=ch=‘a’ch=‘z’ch-32:ch;printf“%c”ch;}34.若x为int类型请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式x==035.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是absx)536.下列程序段的输出结果是passwarnintn=c;switchn++{default:printferror;break;casea:caseA:caseb:caseB:printfgood;break;casec:caseC:printfpass;cased:caseD:printfwarn;}37.以下程序将两个数从小到大输出main{floatabt;scanf“%f%f”ab;ifab{t=a;a=b;b=t;}printf“%
5.2f%
5.2f\n”ab;}38.若输入8642,以下程序的输出结果为place=4每位数字为8,6,4,2main{longintnum;intgwswbwqwwwplace;printf“请输入一个0~99999之间的整数”;scanf“%ld”num;ifnum9999place=5;elseifnum999place=4;elseifnum99place=3;elseifnum9place=2;elseplace=1;printf“place=%d”place;printf“每位数字为:”;ww=num/10000;qw=num-ww*10000/1000;bw=num-ww*10000-qw*1000/100;sw=num-ww*10000-qw*1000-bw*100/10;gw=num-ww*10000-qw*1000-bw*100-sw*10;switchplace{case5:printf“%d%d%d%d%d”wwqwbwswgw;break;case4:printf“%d%d%d%d”qwbwswgw;break;case3:printf“%d%d%d”bwswgw;break;case2:printf“%d%d”swgw;break;case1:printf“%d”gw;break;}}39.若输入1988,程序运行的结果为1988年是闰年\;若输入1989,则结果为1989年不是闰年\main{intyearleap;scanf“%d”year;ifyear%4leap=0;elseifyear%100leap=1;elseifyear%400leap=0;elseleap=1;ifleapprintf“%d年是闰年\n”year;elseprintf“%d年不是闰年\n”year;}40.用以下程序把大写字母A~Z转换成对应的小写字母a~z,其他字符不转换main{charch;scanf“%c”ch;ch=ch=’A’ch=’Z’ch+32:ch;printf“char=%c\n”ch;}41.条件“20x30或x-100”的C语言表达式是x20x30||x-10042.若已知a=10b=20则表达式!ab的值为143.若已定义inta=25b=14c=19;以下三目运算符(:)所构成的语句的执行结果是###a=26b=13c=19\a++=25b--=2c++printf“***a=%db=%dc=%d\n”abc:printf“###a=%db=%dc=%d\n”abc;44.以下两条if语句可合并成一条if语句为ifa=b{x=1;printf“####x=%d\n”x;}else{y=2;printf“****y=%d\n”y;}ifa=bx=1;elsey=2;ifabprintf“****y=%d\n”y;elseprintf“####x=%d\n”x;45.以下程序运行后的输出结果是52main{inti=10j=0;do{j=j+i;i--;}whilei2;printf%d\nj;}
46..设有以下程序:main{intn1n2;scanf%dn2;whilen2!=0{n1=n2%10;n2=n2/10;printf%dn1;}}程序运行后,如果从键盘上输入1298,则输出结果为
892147..若输入字母b,程序输出结果为bB\;若输入字符*,程序将怎样继续等待下次输入#includestdio.hmain{charc1c2;c1=getchar;whilec197||c1122c1=getchar;c2=c1-32;printf%c%c\nc1c2;}48.用以下程序计算1到100的整数的累加和main{inti=1sum=0;fori=1;i=100;i++{sum+=i;i++;}printfsum=%d\nsum;}49.以下程序的功能是从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束请填空main{floatxamaxamin;scanf“%f”x;amax=x;amin=x;whilex=0{ifxamaxamax=x;ifxaminamin=x;scanf“%f”x;}printfamax=%f\namin=%f\namaxamin;}50.设i、j、k均为int型变量,则执行完下面的for循环后,k的值为10fori=0j=10;i=j;i++j--k=i+j;51.下面程序的功能是计算1到10之间的奇数之和及偶数之和,请填空main{intabci;a=c=0;fori=0;i=10;i+=2{a+=i;b=i+1;c+=b;}printf偶数之和=%d\na;printf奇数之和=%d\nc-11;}52.下面程序的功能是输出100以内能被3整除且个位数为6的所有整数,请填空main{intij;fori=0;i10;i++{j=i*10+6;ifj%3!=0continue;printf“%d”j;}}53.要使以下程序段输出10个整数,请填入一个整数fori=0;i=19或18;printf“%d\n”i+=2;54.若输入字符串abcde回车,则以下while循环体将执行0次whilech=getchar==‘e’printf“*”;55.下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列其它元素不变请填空#includestdio.h#includestring.hmain{chara[]=clanguaget;intijk;k=strlena;fori=0;i=k-2;i+=2forj=i+2;jk;j++ifa[i]a[j]{t=a[i];a[i]=a[j];a[j]=t;}putsa;printf\n;}56.若有定义语句chars
[100]d
[100];intj=0i=0;,且s中已赋字符串,请填空以实现字符串拷贝(注不得使用逗号表达式)whiles[i]{d[j]=s[i++];j++;}d[j]=0;57.下列程序段的输出结果是Hello0you\main{charb[]=Helloyou;b
[5]=0;printf%s\nb;}58.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是a=1234b=5\chara
[10]b;scanf“a=%sb=%c”ab;59.以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制数的形式输出,请填空main{intb
[16]={‘0’‘1’‘2’‘3’‘4’‘5’‘6’‘7’‘8’‘9’‘A’‘B’‘C’‘D’‘E’‘F’};intc
[64]di=0base;longn;printf“Enteranumber:\n”;scanf“%ld”n;printf“Enternewbase:\n”;scanf“%d”base;do{c[i]=n%base;i++;n=n/base;}whilen!=0;printf“Transmitenewbase:\n”;for--i;i=0;--i{d=c[i];printf%cb[d];}}60.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中的第一个不相同字符的ASCII码之差例如输入的两个字符串分别为abcdefg和abceef,则输出为-1请填空main{charstr1
[100]str2
[100]c;intis;printf“\nInputstring1:\n”;getsstr1;printf“\nInputstring2:\n”;getsstr2;i=0;whilestr1[i]==str2[i]str1[i]!=’\0’i++;s=str1[i]-str2[i];printf%d\ns;}61.以下语句的输出结果是5printf“%d\n”strlen“\t\”\085\xff\n”;62.对数组中的元素值进行排序main{inta[]={24153175823971113}ijk;fork=0;k12;k++fori=k;i12;i++ifa[i]a[k]{j=a[i];a[i]=a[k];a[k]=j;}fori=0;i12;i++printf“%4d”a[i];}63.由25人围坐成圆圈,先从任意一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(
1、
2、
3、……),凡报5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号Voidmain{inta
[26]jncount;forj=1;j=25;j++a[j]=j;j=1;count=0;n=0;do{ifa[j]!=0{n++;ifn%5==0{a[j]=0;ifcount==24printf“%d\n”j;count++;}}j++;ifj25j=1;}whilecount25;}64.阅读下列程序main{intijrowcolumnm;intarray
[3]
[3]={{100200300}{2872-30}{-85026}};m=array
[0]
[0];fori=0;i3;i++forj=0;j3;j++ifarray[i][j]m{m=array[i][j];row=i;column=j;}printf%d%d%d\nmrowcolumn;}上述程序的输出结果是-85020\65.以下程序的功能是从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入请填空main{floatx
[1000]sum=
0.0avea;intin=0;printf“Entermark:\n”;scanf“%f”a;whilea=
0.0n1000{sum+=a;x[n]=a;n++;scanf“%f”a;}ave=sum/n;printf“Output:\n”;printf“ave=%f\n”ave;fori=0;in;i++ifx[i]aveprintf“%f\n”x[i];}66.下列程序的输出结果是56\inttintxintyintcpintdp{cp=x*x+y*y;dp=x*x-y*y;}main{inta=4b=3c=5d=6;tabcd;printf%d%d\ncd;}67.以下程序的运行结果是817\#includestdio.hmain{intk=4m=1p;p=funckm;printf%dp;p=funckm;printf%d\np;}funcintaintb{staticintm=0i=2;i+=m+1;m=i+a+b;returnm;}68.以下程序输出的最后一个值是120intffintn{staticintf=l;f=f*n;returnf;}main{inti;fori=1;i=5;i++printf%d\nffi;}69.以下函数的功能是求x的y次方,请填空doublefundoublexinty{inti;doublez;fori=1z=x;iy;i++z=z*x;returnz;}70.若变量n中的值为24,则print函数共输出5行,最后一行有4个数voidprntintnintaa[]{inti;fori=1;i=n;i++{printf%6daa[i];if!i%5printf\n;}printf\n;}71.以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值请填空#defineN3#defineM4voidLineMaxintx[N][M]{intijp;fori=0;iN;i++{p=0;forj=1;jM;j++ifx[i][p]x[i][j]x[i][p]=x[i][j];printfThemaxvalueinline%dis%d\nix[i][p];}}main{intx[N][M]={157426438231};LineMaxx;}72.函数pi的功能是根据以下近似公式求π值π*π/6=1+1/2*2+1/3*3+…+1/n*n请在下面的函数中填空,完成求π的功能#include“math.h”doublepilongn{doubles=
0.0;longi;fori=1;i=n;i++s=s+
1.0/i*i;returnsqrt6*s;}73.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部voidfundoubleb[]
[22]要求形参名为bmain{doubles
[10]
[22];intn;…funs;…}74.输入12时,程序输出结果为12isnotprimenumber;若输入17,输出结果为17isprimenumbermain{intnumber;scanf“%d”number;ifprimenumberprintf“\n%disprimenumber.”number;elseprintf“\n%disnotprimenumber.”number;}intprimeintnumber{intflag=1n;forn=2;nnumber/2flag==1;n++ifnumber%n==0flag=0;returnflag;}75.理解下面的程序,填空完善程序main{intabc;scanf“%d%d”ab;c=maxab;printf“a=%db=%dmax=%d\n”abc;}intmaxxy\;{intz;ifxyz=x;elsez=y;returnz;}76.下面程序的输出结果是2,5,1,2,3,-2main{inta=3b=2c=1;c-=++b;b*=a+c;{intb=5c=12;c/=b*2;a-=c;printf“%d%d%d”abc;a+=--c;}printf“%d%d%d”abc;}77.下面的findmax函数返回数组s中值为最大的元素的下标,数组中元素的个数由t传人,请填空findmaxints[]intt{intkp;forp=0k=p;pt;p++ifs[p]s[k]k=p;returnk;}78.下面程序的输出结果是7\funintx{intp;ifx==0||x==1return3;p=x-funx-2;returnp;}main{printf“%d\n”fun9;}79.函数fun的功能是使一个字符串按逆序存放,请填空voidfuncharstr[]{charm;intij;fori=0j=strlenstr;istrlenstr/2;i++j--{m=str[i];str[i]=str[j-1];str[j-1]=m;}printf“%s\n”str;}80.以下程序的输出结果是7\#defineMAXxyxyx:ymain{inta=5b=2c=3d=3t;t=MAXa+bc+d*10;printf“%d\n”t;}81.以下程序的输出结果为
10.000000\#includestdio.h#includemath.h#definePOWERxypowxy*y#defineONE1#defineSELEVE_ADDx++xmain{intx=2;printf“%f\n”POWERSELEVE_ADDxONE+1;}82.填空补充以下程序#definePRICE30main{intnumtotal;num=0;total=num*PRICE;printf“total=%dnum=%d\n”totalnum;}83.下面程序的输出结果是5\#defineCIRrr*rmain{inta=1b=2t;t=CIRa+b;printf“%d\n”t;}84.下列程序的输出结果是GDABC\#includestring.hmain{charb
[30],*chp;strcpyb
[0],GH;strcpyb
[1],DEF;strcpyb
[2],ABC;printf%s\n,b;}85.下列程序的字符串中各单词之间有一个空格,则程序的输出结果是Howdoesshe\#includestring.hmain{charstrl[]=Howdoyoudo,*p1=strl;strcpystrl+strlenstrl/2,esshe;printf%s\n,pl;}86.若有如下图所示五个连续的int类型的存储单元并赋值如下图,a
[0]的地址小于a
[4]的地址p和s是基类型为int的指针变量请对以下问题进行填空a
[0]a
[1]a
[2]a
[3]a
[4]1)若p已指向存储单元a
[1]通过指针p给s赋值,使s指向最后一个存储单元a
[4]的语句是s=p+3
(2)若指针s指向存储单元a
[2],p指向存储单元a
[0],表达式s-p的值是287.以下程序的功能是将无符号八进制数字构成的字符串转换为十进制整数例如,输入的字符串为556,则输出十进制整数366请填空#includestdio.hmain{char*ps
[6];intn;p=s;getsp;n=*p-0;while*++p!=\0n=n*8+*p-0;printf%d\nn;}88.设有以下程序main{intabk=4m=6*p1=k*p2=m;a=p1==m;b=*p1/*p2+7;printfa=%d\na;printfb=%d\nb;}执行该程序后,a的值为0,b的值为789.下列程序的输出结果是0voidfunint*n{while*n--;printf%d++*n;}main{inta=100;funa;}90.以下程序的输出结果是10\main{intarr[]={30252015105}*p=arr;p++;printf%d\n*p+3;}91.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是*p+5intw
[10]={235410334798728061}*p=w;92.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度请填空strlenchara[]charb[]{intnum=0n=0;while*a+num!=‘\0’num++;whileb[n]{*a+num=b[n];num++;n++;}returnnum;}93.函数voidfunfloat*snintn的功能是根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0请填空voidfunfloat*snintn{floats=
0.0wf=-
1.0;inti=0;fori=0;i=n;i++{f=-1*f;w=f/2*i+1;s+=w;}*sn=s;}94.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空intaddintxintyintz{returnz=x+y;}95.以下fun函数的功能是累加数组元素中的值n为数组中元素的个数累加的和值放入x所指的存储单元中请填空funintb[]intnint*x{intkr=0;fork=0;kn;k++r=r+b[k];*x=r;}96.以下函数的功能是把两个整型指针变量所指的存储单元中的内容进行交换请填空exchangeint*xint*y{intt;t=*y;*y=*x;*x=t;}97.以下程序的输出是49\main{inta
[10]={1923441737284936}*p;p=a;printf“%d\n”p+=3
[3];}98.下面程序的输出结果是024\#defineMAX3inta[MAX];main{fun1;fun2a;printf“\n”;}fun1{intkt=0;fork=0;kMAX;k++t++a[k]=t+t;}fun2intb[]{intk;fork=0;kMAX;k++printf“%d”*b+k;}99.下面程序的输出结果是ABCDCDcharb[]=“ABCD”;main{char*chp;forchp=b;*chp;chp+=2printf“%s”chp;printf“\n”;}100.以下程序的功能是从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空#includestdio.hmain{charstr
[81]*sptr;inti;fori=0;i80;i++{str[i]=getchar;ifstr[i]==‘\n’break;}str[i]=‘\0’;sptr=str;while*sptrputchar*sptr++;}101.fun1函数的调用语句为fun1abc;它将三个整数按由大到小的顺序调整后依次放入a、b、c三个变量中,a中放最大数请填空voidfun2int*xint*y{intt;t=*x;*x=*y;*y=t;}voidfun1int*paint*pbint*pc{if*pc*pbfun2pcpb;if*pa*pcfun2pcpa;if*pa*pbfun2pbpa;}102.以下函数用来在w数组中插入数x,w数组中的数已按由小到大的顺序存放,n所指存储单元中存放数组中数据的个数,x插入后数组中的数仍有序请填空voidfunchar*wcharxint*n{intip;p=0;w[*n]=x;whilexw[p]p++;fori=*n;ip;i--w[i]=w[i-1];w[p]=x;++*n;}103.阅读程序main{charstr1[]=“howdoyoudo”str2
[10];char*p1=str1*p2=str2;scanf“%s”p2;printf“%s”p2;printf“%s\n”p1;}运行上面的程序,输入字符串HOWDOYOUDO则程序的输出结果是HOWhowdoyoudo\104.下面程序的输出结果是SOmain{char*p[]={“BOOL”“OPK”“H”“SP”};inti;fori=3;i=0;i--i--printf“%c”*p[i];printf“\n”;}105.下面程序的输出结果是17funaintaintb{returna+b;}funbintaintb{returna-b;}subint*tintxinty{return*txy;}main{intx*p;p=funa;x=subp93;x+=subfunb83;printf“%d\n”x;}
106.下面程序的输出结果是XYZA#includestdio.hvoidfunchar*a1char*a2intn{intk;fork=0;kn;k++a2[k]=a1[k]-‘A’-3+26%26+‘A’;a2[n]=‘\0’;}main{chars1
[5]=“ABCD”s2
[5];funs1s24;putss2;}107.下面程序的输出结果是71\voidasintxintyint*cpint*dp{*cp=x+y;*dp=x-y;}main{inta=4b=3cd;asabcd;printf“%d%d\n”cd;}108.下面程序的输出结果是eybdooG\#includestdio.hmain{staticcharb[]=“Goodbye”;char*chp=b
[7];while--chp=b
[0]putchar*chp;putchar‘\n’;}109.若输入thistestterminal,以下程序的输出结果为terminaltestthis填空补充以下程序#includestring.h#defineMAXLINE20voidmain{inti;char*pstr
[3]str
[3][MAXLINE];fori=0;i3;i++pstr[i]=str[i];fori=0;i3;i++scanf“%s”pstr[i];sortpstr;fori=0;i3;i++printf“%s\n”pstr[i];}sortchar*pstr
[3]{intij;char*p;fori=0;i3;i++{forj=i+1;j3;j++{ifstrcmp*pstr+i*pstr+j0{p=*pstr+i;*pstr+i=*pstr+j;*pstr+j=p;}}}}110.以下程序利用指针法将两个数按从小到大的顺序输出来main{intab*p1*p2p;printf“inputab:”;scanf“%d%d”ab;p1=a;p2=b;ifab{p=p1;p1=p2;p2=p;}printf“a=%db=%d\n”ab;printf“max=%dmin=%d\n”*p1*p2;}111.以下程序的输出结果是8funintnint*s{intf1f2;ifn==1||n==2*s=1;else{funn-1f1;funn-2f2;*s=f1+f2;}}main{intx;fun6x;printf“%d\n”x;}112.下面的程序通过函数average计算数组中各元素的平均值,请填空floataverageint*paintn{inti;floatavg=
0.0;fori=0;in;i++avg=avg+*pa+i;avg=avg/n;returnavg;}main{intia
[5]={246810};floatmean;mean=averagea5;printf“mean=%f\n”mean;}113.以下程序将字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后的新串存于字符数组s2中#includestdio.hvoidreplacechar*s1char*s2char*str1char*str2{char*t0*t1*t2;whilestr1str2{fort0=s1t1=str1;*t1!=‘\0’t0==*t1;t0++t1++;if*t1!=‘\0’*s2++=*t1;else{fort1=str2;*t1!=‘\0’;*s2++=*t0;t0++;}}*s2=‘\0’;}main{staticchars1[]=“abcefababcdabab.”s2
[25];replaces1s2“abc”“XYZ”;printf“%s\n”s2;}114.以下语句的输出结果是hEELLO!chars
[80]*sp=“HELLO!”;sp=strcpyssp;s
[0]=‘h’;putss;115.设有以下结构体类型说明和变量定义,则变量a在内存中所占的字节数是22,变量p在内存中所占的字节数是2structstud{charnum
[6];ints
[4];doubleave;}a*p;116.若有如下结构体说明structSTRU{intab;charc;doubled:structSTRUp1p2;};请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型structSTRUt
[20];117.以下程序段用于构成一个简单的单向链表,请填空structSTRU{intxy;floatrate;structSTRU*p;}ab;a.x=0;a.y=0;a.rate=0;a.p=b;b.x=0;b.y=0;b.rate=0;b.p=NULL;118.建立并输出100个同学的通讯录,每个通讯录包括同学的姓名、地址、邮政编码#includestdio.h#defineN100structcommunication{charname
[20];charaddress
[80];longintpost_code;}commun[N];main{inti;fori=0;i100;i++{set_recordcommun+i;print_recordcommun+i;}}set_recordstructcommunication*p{printf“Setacommunicationrecord\n”;scanf“%s%s%ld”p-namep-addressp-post-code;}print_recordstructcommunication*p{printf“Printacommunicationrecord\n”;printf“Name:%s\n”p-name;printf“Address:%s\n”p-address;printf“Post_code:%ld\n”p-post-code;}119.以下函数creatlist用来建立一个带头节点的单链表,新的结点总是插入在链表的末尾链表的头指针作为函数值返回,链表最后一个节点的next成员中放入NULL,作为链表结束标志读入时字符以#表示输入结束#不存入链表请填空structnode{chardata;structnode*next;};structnode*creatlist{structnode*h,*s,*r;charch;h=structnode*mallocsizeofstructnode;r=h;ch=getchar;whilech!=‘#’{s=structnode*mallocsizeofstructnode;s-data=ch;r-next=s;r=s;ch=getchar;}r-next=NULL;returnh;}120.有以下定义和语句,则sizeofa的值是10,而sizeofa.share的值是4structdate{intday;intmonth;intyear;union{intshare1;floatshare2;}share;}a;121.下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中请填空#includestdio.hFILE*fp;{intij;iffp=fopenfopen“b
1.date””wb”,“wb”==NULLexit0;fori=0;i10;i++{scanf“%d”j;fwritejsizeofint1fp;}fclosefp;}122.以下程序的功能是从键盘上输入一个字符串,把该字符串中的小写字母转换成大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来请填空#includestdio.hmain{FILE*fp;charstr
[100];inti=0;iffp=fopen“test.txt”“wt”==NULL{printf“Can’topenthisfile.\n”;exit0;}printf“Inputastring:\n”;getsstr;whilestr[i]{ifstr[i]=‘a’str[i]=‘z’str[i]=str[i]-32;fputcstr[i]fp;i++;}fclosefp;fp=fopen“test.txt”“rt”;fgetsstr100fp;printf“%s\n”str;fclosefp;}123.用以下程序把从键盘输入的字符存放到一个文件中,用字符#作为结束符,请按题意要求填空完善程序#includestdio.hmain{FILE*fp;charchfname
[10];printf“Inputthenameoffile:\n”;getsfname;iffp=fopenfname”w”==NULL{printf“can’topenfile\n”;exit0;}whilech=getchar!=‘#’fputcch;fclosefp;}124.下面程序用来统计文件中字符的个数,请填空#includestdio.hmain{FILE*fp;longnum=0;iffp=fopen“fname.dat”“r”==NULL{printf“can’topenfile\n”;exit0;}while(!feoffp){fgetcfp;num++;}printf“num=%d\n”num;fclosefp;}125.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中,形成文本文件,并将字符的个数写到文件尾部请填空#includestdio.hmain{FILE*fp;charch,fname
[32];intcount=0;printfInputthefilename;scanf%s,fname;iffp=fopenfname,w+==NULL{printfCantopenfile%s\n,fname;exit0;}printfEnterdata\n;whilech=getchar!=#{fputcch,fp;count++;}fprintffp,\n%d\n,count;fclosefp;}2233445566。