- 361.50 KB
- 2022-04-22 11:52:38 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'习题1C语言基础知识一、选择题1.一个C程序由若干个C函数组成,各个函数在文件中的位置为。A.任意B.第一个函数必须是主函数,其他函数任意C.必须完全按照顺序排列D.其他函数必须在前,主函数必须在最后2.下列4个叙述中,正确的是。A.C程序中的所有字母都必须小写B.C程序中的关键字必须小写,其他标识符不区分大小写C.C程序中的所有字母都不区分大小写D.C语言中的所有关键字必须小写3.下列4个叙述中,错误的是。A.一个C源程序必须有且只有一个主函数B.一个C源程序可以含零个或多个子函数C.在C源程序中注释说明必须位于语句之后D.C源程序的基本结构是函数4.下面属于C语言关键字的是。A.intB.typedefC.enumD.union5.以下叙述不正确的是。A.分号是C语句的必要组成部分B.C程序的注释可以写在语句的后面C.函数是C程序的基本单位D.主函数的名字不一定用main表示6.C语言中允许的基本数据类型包括。A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型7.C语言中能用八进制表示的数据类型为。A.字符型、整型B.整型、实型C.字符型、实型、双精度型D.字符型、整型、实型、双精度型8.下列属于C语言合法字符常数的是。A."97"B."A"C."t"D." "9.在C语言中,5种基本数据类型的存储空间长度的排列顺序为A.char10&&a<15D.!(a≤10)&&!(a≥15)18.已知x=43,ch="A",y=0;则表达式(x≥y&&ch<"B"&&!y)的值是。A.0B.语法错C.1D.假19.表达式17%4/8的值为。A.0B.1C.2D.320.语句printf("%d",(a=2)&&(b=-2));的输出结果是。A.无输出B.结果不确定C.-1D.1二、填空题1.若有以下定义语句:intu=010,v=0x10,w=10;printf("%d,%d,%dn",u,v,w);则输出结果是。2.下面程序的输出结果是。main(){unsigneda=32768;printf("a=%dn",a)}3.下面程序的输出结果是。main(){intk=11;printf("k=%d,k=%o,k=%xn",k,k,k);}4.若有以下定义语句:inta=5;printf("%dn",a++);则输出结果是。5.设x为int型变量,执行以下语句:x=10;x+=x-=x-x;,则x的值为。6.若定义x和y为double型变量,则表达式x=1,y=x+3/2的值是。7.若t为double型变量,表达式t=1,t+5,t++的值是。8.表达式10!=9的值是。9.设x,y,z和t均为int型变量,执行以下语句:x=y=z=1;t=++x||++y&&++z;后t的值为。10.若a=1,b=2,c=3,d=4,则表达式ab?"***a=%d":"###b=%d",a,b);12.假定w,x,y,z和m均为int型变量,下面程序执行后m的值为。w=1;x=2;y=3;z=4;m=(wmain(){inti=010,j=10;printf("%d,%dn",++i,j--);}A.11,10B.9,10C.010,9D.10,913.以下程序的输出结果是。inti=65536printf("%dn",i);A.65535B.0C.有语法错误,无输出结果D.114.已知字符A的ASCII码为十进制的65,下面程序的输出结果是。main(){charch1,ch2;ch1="A"+"5"-"3";ch2="A"+"6"-"3";printf("%d,%cn",ch1,ch2);}A.67,DB.B,CC.C,DD.不确定的值15.若有以下语句:chars[10];s="abcd";printf("%dn",s);则输出结果是。A.abcdB.aC.adcbD.编译不能通过16.若有定义:intx,y;chara,b,c;并输入以下数据(此处代表换行)。12ABC则能给X赋整数值1,给Y赋数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是。A.scanf("x=%dy=%d",&x,&y);a=getchar();c=getchar();B.scanf("%d%d",&x,&y);a=getchar();b=getchar();c=getchar();C.scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);D.scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);17.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是。main(){
intx;scanf("%d",&x);if(x++>5)printf("%d",x)elseprintf("%dn",x--);}A.7和5B.6和3C.7和4D.6和418.若执行下面的程序,从键盘输入3和4,则输出结果是。main(){inta,b,s;scanf("%d%d",&a,&b);s=a;if(a765.12<回车>B.i=100,f=765.12<回车>C.100<回车>765.12<回车>D.x=100<回车>,y=765.12<回车>20.以下程序的输出结果是。#includemain(){printf("%dn",NULL);}A.不确定B.0C.–1D.1二、填空题1.复合语句在语法上被认为是,空语句的形式是。2."%-ms"表示如果串长m,则在m列范围内,字符串向靠,补空格。3.如果想输出字符“%”,则应该在“格式控制”字符串中用表示。4.printf函数的“格式控制”包括两部分,分别是和。5.符号“&”是运算符,&a是指。6.putchar函数的作用是。7.复合语句是由一对括起来的若干语句组成的。8.goto语句的主要用途是和。9.getchar函数的作用是。10.将for(表达式1;表达式2;表达式3);改写为等价的while语句为。11.语句标号由标识符表示,由、和组成。第一个字符必须是字母或下划线。12.函数中的“格式控制”后面应当是,而不是。13.while语句的特点是,do…while语句的特点是。14.分析下面的程序:main(){intx,y;x=16;y=(x++)+x;printf("%dn",y);x=15;printf("%d,%dn",++x,x);x=20;y=x--+x;printf("%dn",y);x=13;printf("%d,%d",x++,x);}
程序的输出结果是。15.下列程序的输出结果是。#include"stdio.h"main(){charb[]="ABCDEFG";char*chp=&b[7];while(--chp>&b[0])putchar(*chp);putchar("n");}三、编程题1.编写程序,输入两个整数:1500和350,输出它们的商和余数。2.编写程序,读入3个整数赋给a、b、c,然后交换它们中的数,将a中原来的值赋给b,b中原来的值赋给c,c中原来的值赋给a,且输出改变的a、b、c的值。3.输入两个整型变量a、b的值,输出a+b、a-b、a*b、a/b、(float)a/b、a%b的结果,要求连同算式一起输出,每个算式占一行。例如,a等于10,b等于5,则a+b的结果输出为:10+5=154.输入一个非负数,计算以这个数为半径的圆周长和面积。5.输入任意一个3位数,将其各位数字反序输出(例如,输入123,输出321)。6.输入任意大小的3个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是,则输出“NOT”(要求用条件表达式进行判断,不使用if语句)7.求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,从大到小的顺序输出这3个字符及其对应的ASCII码值。习题3选择结构和循环结构一、选择题1.有以下程序:main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}执行后输出的结果是。A.011122B.012C.012020D.1202.有以下程序:main(){inti=1,j=1,k=2;if((j++||k++)&&i++)printf("%d,%d,%dn",i,j,k);}执行后输出的结果是。
A.1,1,2B.2,2,1C.2,2,2D.2,2,33.有以下程序:main(){inta=5,b=4,c=3,d=2;if(a>b>c)printf("%dn",d);elseif((c-1>=d)==1)printf("%dn",d+1);elseprintf("%dn",d+2);}执行后,输出结果是。A.2B.3C.4D.编译时有错,无结果4.有以下程序:main(){inti=0,s=0;do{if(i%2){i++;continue;}i++;s+=i;}while(i<7);printf("%dn",s);}执行后的输出结果是。A.16B.12C.28D.215.以下程序的输出结果是。main(){inta=5,b=4,c=6,d;printf("%dn",d=a>b?(a>c?a:c):(b));}A.5B.4C.6D.不确定6.以下程序中,while循环的循环次数是。main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}A.1B.10C.6D.死循环,不能确定次数7.以下程序的输出结果是。main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;
}}printf("%dn",a);}A.31B.13C.10D.208.以下程序的输出结果是。main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf("%dn",d);}A.1B.0C.非0的数D.-19.以下程序的输出结果是。#includemain(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printh("%dn",a);}A.21B.32C.33D.1110.阅读以下程序:。main(){intx;scanf("%d",&x);if(x--<5)printf("%d"x);elseprintf("%d"x++);}程序运行后,如果从键盘上输入5,则输出结果是。A.3B.4C.5D.611.假定w、x、y、z、m均为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(w=10)break;if(b%3==1){b+=3;continue;}}printf("%dn",a);}A.101B.6C.5D.413.若执行以下程序时,从键盘上输入9,则输出的结果是。main(){intn;
scanf("%d",&n);if(n++<10)printf("%dn",n);elseprintf("%dn",n--);}A.11B.10C.9D.814.有以下程序段:intk=0while(k=1)k++;while循环执行的次数是。A.无限次B.有语法错误,不能执行C.一次也不执行D.执行1次15.以下程序执行后,sum的值是。main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%dn",sum);}A.15B.14C.不确定D.016.有以下程序段:intx=3do{printf("%d",x-=2);}while(!(--x));其输出结果是。A.1B.30C.1-2D.死循环17.若变量c为char类型,能正确判断出c为小写字母的表达式是。A."a"<=c<="z"B.(c>="a")||(c<="z")C.("a"<=C)and("z">=c)D.(c>="a")&&(c<="z")18.以下程序的输出结果是。main(){intx=0.5;charz="a";printf("%dn",(x&1)&&(z<"z"));}A.0B.1C.2D.319.以下程序的输出结果是。main(){intx=10,y=10,i;for(i=0;x>8;y=i)printf("%d%d",x--,y);}A.10192B.9876C.10990D.10109020.以下程序的输出结果是。main(){inti;for(i=1;i<=6;i++){if(i%2){printf("#");continue;}printf("*");
}printf("n");}A.#*#*#*B.#####C.*****D.*#*#*21.以下程序的输出结果是。main(){inti;for(i="A";i<="I";i++)printf("%c",i+32);printf("n");}A.编译不通过,无输出B.acegC.acegiD.abcdefghi22.以下程序输出结果是。main(){intm=5;if(m>5print("%dn",m);elseprintf("%dn”,m--);}A.7B.6C.5D.423.运行以下程序后,如果从键盘上输入china#后回车,则输出结果为。#includemain(){intv1=0,v2=0;charch;while((ch=getchar())!="#")switch(ch){case"a":case"h":default:v1++;case"0":v2++;}printf("%d,%dn",v1,v2);}A.2,0B.5,0C.5,5D.2,524.设有如下定义:inta=1,b=2,c=3,d=4,m=2,n=2;则执行表达式(m=a>b)&&(n=c>d)后,n的值为。A.1B.2C.3D.025.以下程序的输出结果是。main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<3;j++){if(j%2)continue;x++;}x++;}printf("x=%dn",x);}A.x=4B.x=8C.x=6D.x=1226.设x和y均为int型变量,则执行下的循环后,y值为。for(y=1,x=1;y<=50;y++){if(x==10)}break;if(x%2==1){x+=5;continue;}
x-=3;}A.2B.4C.6D.827.假定a和b为int型变量,则执行以下语句后b的值为。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-1D.828.设j为int型变量,则下面for循环语句的执行结果是。For(j=10;j>3;j--){if(j%3)j--;--j;--j;printf("%d",j);}A.63B.74C.62D.7329.以下程序的输出结果是。main(){intx,i;for(i=1;i<=50;i++){x=i;if(x%2==0){x++;if(x%3==0){x++;if(x%7==0){x++;printf("%d",i);}}}}}A.28B.27C.42D.2630.假定所有变量均已正确说明,下列程序段运行后x的值是。a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;A.34B.4C.35D.3二、填空题1.若有以下程序:main(){intp,a=5;if(p=a!=0)printf("%dn",p);elseprintf("%dn",p+2);}执行后,输出结果是。2.若有以下程序:main(){inta=4,b=3,c=5,t=0;if(amain(){inti,j;for(i=1;i<5;i++)for(j=2;j<=i;j++)putchar("#");}6.若从键盘输入58,则以下程序输出的结果是。main(){inta;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}7.以下程序输出的结果是。main(){inta=5,b=4,c=3,d;d=(a>b>c);printf("%dn",d);}8.以下程序的输出结果是。main(){ints,i;for(s=0,i=1;i<3;i++,s+=i);printf("%dn",s);}9.以下程序运行后的输出结果是。main(){inti=10,j=0;do{j=j+i;i--;}while(i>2);printf("%dn",j);}10.设有以下程序:main(){intn1,n2;scanf("%d",&n2);
while(n2!=0){n1=n2%10;n2=n2/10;printf("%d",n1);}}程序运行后,如果从键盘上输入1298,则输出结果为。11.下列程序段的输出结果是。intn="c";switch(n++){default:printf("error");break;case"a":case"A":case"b":case"B":printf("good");break;case"c":case"C":printf("pass");case"d":case"D":printf("warn");}12.下面程序输出结果是。main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%dn",a,b);}13.程序执行后的输出结果是。main( ){ int x=0,y=5,z=3; while(z-->0&&++x<5)y=y-1; printf("%d,%d,%dn",x,y,z);}14.若有inti=5,j=10;则执行完以下语句后,j的值为。switch(i){case4:j++;case5:j--;case6:j++;case7:j-=2;default:;}15.有以下程序:main(){intn=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf("%dn",x);}执行后的输出结果是。16.执行以下程序后的输出结果是。main(){inta=5,b=4,c=3,d=2;
if(a>b>c)printf("%dn",d);elseif((c-1>=d)==1)printf("%dn",d+1);elseprintf("%dn",d+2);}17.当a=1,b=3,c=5,d=4时,执行完下面的一段程序后x的值是。if(ak)break;elses+=k;printf("k=%d,s=%d",k,s);19.输入c2470f?<回车>后,下列程序的输出结果是。#includemain(){charch;longnumber=0;while((ch=getchar())<"0"||ch>"6");while(ch!="?"&&ch>="0"&&ch<="6"){number=number*7+ch-"0";printf("%ld#",number);ch=getchar();}}20.输入4<回车>后,下列程序的输出结果是。#includemain(){intj,k,n;floatf,s;scanf("%d”,&n);s=0;f=1;for(k=1;k<=n;k++){for(j=1;jmain(){inti,j;for(i=0;;i++){j=i*10+6;if()continue;printf("%d",j);
}}22.下面程序的功能是求1!+2!+3!+4!+5!,请填空。main(){inti,j,f,sum=0;for(i=1;i<=5;i++){f=1;for(j=1;;j++);sum=sum+f;}printf("5!=%d",sum);}23.以下程序可判断输入的一个整数是否能被3或7整除,若能整除,输出“yes”,否则输出“no”,请填空。#includemain(){intk;printf("Enteraintnumber:");scanf("%d",&k);ifprintf("yesn");elseprintf("");}24.以下程序将从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用i统计大于零的个数,用变量j统计小于零的整数,请填空。main(){intn,i,j;printf("EnterINTnumbers,with0toendn");i=j=0;scanf("%d",&n);while{if(n>0)i++;if(n<0)j++;;}printf("i=%4dj=%4dn",i,j);}25.如果一个数各位数的立方和等于它本身,则这样的数称为水仙花数,求100~999中所有的水仙花数,请填空。main(){inti,a,b,c;for(i=100;i<=999;i++){a=i/100;b=;c=i%10;if()printf("%5d",i);}}26.输入一个正整数n,计算并输出s前n项的和,请填空。S=1-1/2+1/3-1/4+1/5-1/6+…#includemain()
{intk,flag,n;floats;flag=1;s=0;scanf("%d",&n);for(k=1;k<=n;k++){s=s+;;}printf("sum=%fn",s);}27.输出下列图形,请填空。123456789234567893456789456789567896789789899main()inti,j;for(i=1;i<=;i++){for(j=;j<=9;j++)printf("%2d",j);printf("n");}28.下面程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,最后当输入负数时结束输入,请填空。main(){floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(){if(x>amax)amax=x;if(x15最小的N值,并输出各项之和s的值。7.铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超过50公斤,超过部分每公斤加收0.10元。编写程序完成自动计费工作。8.相邻两个奇数都为素数的一对数叫双胞胎素数,输出100~200之间的所有双胞胎素数。9.输入一串字符以“#”结束,如果它是大写字母转换为小写字母输出,如果是小写字母转换为大写字母输出。如果不是字母,则照原样输出。10.输入一个4位数,要求将它的千位、百位、十位、个位上的数字按由小到大排列,输出一个新数。例如,输入4287则输出为2478。11.输入两门课的成绩,如果两门成绩都在60分以上。则输出“itispass.”,只要有一门低于60分就输出“itisnotpass.”如果输入的任何一门成绩不在0~100范围内则输出“itiserror.”(要求用switch语句来编程)。12.求任一数字所有因子的组合(仅限两个因子),且不可重复输出。例如,15=1*15,15=3*5,而15=5*3,15=15*1就不用输出。13.从键盘输入几个数,以0作为结束标志,判断其正负,并求其平方和。14.编写一个译码程序,将一个英语句子译成数字代码。译码规则是以数字1代替字母a,数字2代替字母b,……,26代替字母z,以数字27代替字母A,数字28代替字母B,……,42代替字母Z,如遇空格则打印一个星号“*”,英文句子以“.”结束。15.求所有个位、十位、百位数字能组成一个三角形3边的3位数(注意:三角形任意两边之和大于第三边)。
习题4函数一、选择题1.建立函数的目的之一是。A.提高程序的执行效率B.提高程序的可读性C.减少程序的篇幅D.减少程序文件所占内存2.以下正确的说法是。A.用户若需调用标准函数,调用前必须重新定义B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义C.系统根本不允许用户重新定义标准函数D.用户若需要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调用3.在C语言中,以下说法正确的是。A.普通实参和与其对应的形参各占用独立的存储单元B.实参和与其对应的形参共占用一个存储单元C.只有当实参和与其对应的形参同名时才共占用存储单元D.形参是虚拟的,不占用存储单元4.若调用一个函数,且此函数中没有return语句,则关于该函数正确的说法是。A.没有返回值B.返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不确定的值5.在C语言中以下不正确的说法是。A.实参可以是常量、变量、或表达式B.形参可以是常量、变量或表达式C.实参可以为任意类型D.形参应与其对应的实参类型一致6.以下程序有语法性错误,有关错误原因的正确说法是。main(){intG=5,k;voidprt_char();…k=prt_char(G);…}A.语句voidprt_char();有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线7.有关函数调用,以下错误的描述是。A.出现在执行语句中B.出现在一个表达式中C.作为一个函数的实参D.作为一个函数的形参8.以下正确的说法是。A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可嵌套
C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套9.若使用一维数组名作函数实参,则以下正确的说法是。A.必须在主调函数中说明此数组的大小B.实参数组类型与形参数组类型可以不匹配C.在被调用函数中,不需要考虑形参数组的大小D.实参数组名与形参数组名必须一致10.如果在一个函数中的复合语句中定义了一个变量,则有关该变量说法正确的是。A.只在该复合语句中有效B.在该函数中有效C.在本程序范围中均有效D.为非法变量二、填空题1.折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值,如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请填空。binary(inta[10],intm){intlow=0,high=9,mid;while(low<=high){mid=(low+high)/2;if(mmain(){intn;scanf("%d",&n);printf("%d=",n);if(n<0)printf("-");n=fabs(n);fun(n);}fun(intn){intk,r;for(k=2;k<=sqrt(n);k++){r=n%k;while(r==0){printf("%d",k);n=n/k;if(n>1)printf("*");r=n%k;}}if(n!=1)printf("%dn",n);}6.以下程序的运行结果是。main(){increment();increment();increment();}increment(){intx=0;x+=1;printf("%d",x);}
7.以下check函数功能是对value中的值进行四舍五入计算,若计算后的值与ponse值相等,则显示“welldone”,否则显示计算后的值。已有函数调用语句check(ponse,value);请填空。voidcheck(intponse,floatvalue){intval;val=;printf("计算后的值:%d",val);if()printf("nwelldone!n");elseprintf("nsorrythecorrectansweris%dn",val);}8.若输入一个整数10,以下程序的运行结果为。main(){inta,e[10],c,i=0;scanf("%d",&a);while(a!=0){c=sub(a);a=a/2;e[i]=c;i++;}for(;i>0;i--)printf("%d",e[i-1]);}sub(inta){intc;c=a%2;returnc;}9.已有函数pow,现要求取消变量i后pow函数的功能不变,请填空。修改前的pow函数:pow(intx,inty){inti,j=1;for(i=1;i<=y;++i)j=j*x;return(j);}修改后的pow函数:pow(intx,inty){intj;for(;;)j=j*x;return(j);}10.以下程序的功能是求3个数的最小公倍数,请填空。max(intx,inty,intz){if(x>y&&x.>z)return(x);elseif()return(y);elsereturn(z);}main(){intx1,x2,x3,i=1,j,x0;printf("input3numbers:");scanf("%d%d%d",&x1,&x2,&x3);x0=max(x1,x2,x3);while(1){j=x0*i;if()break;i=i+1;}printf("theis%d%d%dzuixiaogongbeiis%dn",x1,x2,x3);
}11.以下程序的运行结果是。main(){intx=2,y=3,z=0;printf("x=%d,y=%d,z=%dn",x,y,z);add(x,y,z);printf("x=%d,y=%d,z=%dn",x,y,z);}add(intx,inty,intz){z=x+y;x=x*x;y=y*y;printf("x=%d,y=%d,z=%dn",x,y,z);}12.下面函数pi的功能是:根据以下公式,返回满足精度(0.0005)要求的π值,请填空。π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+…doublepi(doubleeps){doubles,t;intn;for(;t>eps;n++){s+=t;t=n*t/(2*n+1);}return();}main(){doublex;scanf("%lf",&x);printf(neps=%lf,π=%lf",x,pi(x));}13.下面程序运行结果是。longfib(intg){switch(g){case0:return0;case1:case2:return1;}return(fib(g-1)+fib(g-2));}main(){longk;k=fib(7);printf("k=%dn",k);}14.以下程序的运行结果。f(inta[]){inti=0;while(a[i]<=10){printf("%d",a[i]);i++;}}main(){inta[]={1,5,10,9,11,7};f(a+1);}15.以下程序的运行结果为。main(){inta[3][3]={1,3,5,7,9,11,13,15,17},sum;sum=func(a);printf("nsum=%dn",sum);}
func(inta[][3]){inti,j,sum=0;for(i=0;i<3;i++)for(j=0;j<3;j++){a[i][j]=i+j;if(i==j)sum=sum+a[i][j];}return(sum);}16.已定义一个含有30个元素的数组,函数fav1的功能是按顺序分别赋予各元素从2开始的偶数,函数fav2按顺序每5个元素求一个平均值,并将该值存放在数组w中,请填空。#defineSIZE30fav1(floats[]){intk,i;for(k=2,i=0;i=a[p]&&pb?a:b;
return(c);} main(){inta=8;printf("%d",max(a,b));}24.以下程序的运行结果是。intn=1;main(){staticintx=5;inty;y=n;printf("MAIN:x=%2dy=%2dn=%2dn",x,y,n);func();printf("MAIN:x=%2dy=%2dn=%2dn",x,y,n);func();} func(){staticintx=4;inty=10;x=x+2;n=n+10;y=y+n;printf("FUNC:x=%2dy=%2dn=%2dn",x,y,n);}25.以下程序的运行结果是。main(){increment();increment();increment();} increment(){staticintx=0;x+=1;printf("%d",x);}26.以下程序的运行结果是。main(){incx();incy();incx();incy();incx();incy();}incx(){intx=0;printf("x=%dt",++x);}incy(){staticinty=0;printf("ny=%dn",++y);}27.编写程序输出下列图形:****
*********************请完成填空。voida(inti){intj,k;for(j=0;j<=7-i;j++)printf("");for(k=0;k<;k++)printf("*");printf("n");} main(){intj;for(j=0;j<3;j++);for(j=3;j>=0;j--);}三、编程题1.已有变量定义和函数调用语句:intx=57;isprime(x);函数isprime用来判断一个整型数是否为素数,若是素数,函数返回1,否则返回0。试编写isprime函数。2.编写程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调用函数中完成复制。3.从键盘输入一个字符串,然后按要求输出一个新字符串,新串是在原串中,每两个字符之间插入一个空格,如原串为abcd,则新串为abcd。要求在函数insert中完成新串的产生,并在函数中完成所有相应的输入和输出。4.设有一数列,包含10个数,已按升序排好。现要求编一程序,它能够把从指定位置开始的n个数按降序重新排列并输出新的完整数列。进行降序处理时要求使用函数。5.编写程序,统计从键盘输入的命令行中第二个函数所包含的英文字符个数。6.编写程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。7.有10个字符串,在每个字符串中,找出最大字符按一一对应的顺序放入一维数组a中,即第i个字符串中的最大字符放入a[i]中,输出每个字符串中的最大字符,要求用函数实现。8.把两个已按升序排列的数组合并成一个升序数组,要求用函数实现。9.下列程序功能是应用下面的近似公式计算e的n次方。函数f1用来计算每项分子的值,函数f2用来计算每项分母的值,试编写两个函数。ex=1+x+x2/2!+x3/3!+…(前两项的和)floatf2(intn){}floatf1(intx,intn){}main(){floatexp=1.0;intn,x;scanf("%d",&x);printf("%dn",x);exp=exp+x;for(n=2;n<=19;n++)exp=exp+f1(x,n)/f2(n);
printf("ntheisexp(%d)=%8.4fn",x,exp);}10.设计一个程序,在主函数中实现从键盘输入一个大写英文字母。在自定义函数中要求顺序打印出3个相邻的字母,指定的字母在中间。如指定的字母为Z,则打印YZA;若为A,则打印ZAB。11.有一数列,该数列的第1、2项分别为0和1,以后每个奇数编号的项是前两项和的绝对值,偶数编号的项是前两项的差的绝对值。生成的20个数存在一维数组x中,并按每行4项的形式输出。试编程。12.从键盘输入若干整数,其值在0~4的范围内,用-1作为输入结束的标志,统计整数的个数。通过函数实现。13.从键盘输入两个字符串a和b,要求不用strcat把b中的前5个字符连接到a中,如果b的长度小于5,则把b的所有元素都连接到a中。试编程。习题5编译预处理一、选择题1.宏定义#definePI31.14159中,宏名PI代替。A.单精度B.双精度C.常量D.字符串2.设有以下宏定义:#defineN3#defineY(n)((N+1)*n)执行语句z=2*(N+Y(5+1));后,z的值为。A.出错B.42C.48D.543.以下说法正确的是。A.#define和printf都是C语句B.#define是C语句,而printf不是C.printf是C语句,但#define不是D.#define和printf都不是C语句4.宏定义的宏展开是在阶段完成的。A.第一遍编译B.第二遍编译C.程序执行D.预编译5.编译预处理命令以结尾。A.;B..C.D.回车二、填空题1.程序中有定义:#defineS(r)r/rinta=4,b=3,area;则表达式area=S(a+b)的值为。2.若有以下宏定义:#defineSTR"%d,%c"#defineA97已知字符a的ASCII码值为97,则语句printf(STR,A,A+2);的输出结果为。3.以下程序的输出结果是。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;
printf("%dn",M(a+b,b+c,c+a));}4.下列程序执行后的输出结果是。#defineMA(x)x*(x-1)main(){inta=1,b=2;pirntf("%dn",MA(1+a+b));}5.C语言中,宏定义的有效范围从定义处开始,到本源程序结束处中止。但可以用来提前解除宏定义的作用。习题6数组一、选择题1.若有以下语句:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc="a",d,g;则数值为4的表达式是。A.a[g-c]B.a[4]C.a[‘d’-‘c’]D.a[‘d’-c]2.假设int型变量占两个字节的存储单元,若有定义:intx[10]={0,2,4};则数组x在内存中所占字节数为。A.3B.6C.10D.203.下列合法的数组定义是。A.inta[]="string";B.inta[5]={0,1,2,3,4,5};C.chara="string";D.chara[]={0,1,2,3,4,5};4.若给出以下语句:charx[]="abcdefg";chary[]={"a","b","c","d","e","f","g"};则正确的叙述为。A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组y的长度大于数组x的长度5.若定义如下变量和数组。intj;intx[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是。For(j=0;j<3;j++)printf("%d",x[j][2-j]);A.159B.147C.357D.3696.下列程序运行后的输出结果是。main(){intn[3],t,j,k;for(t=0;t<3;t++)n[t]=0;k=2;for(t=0;t2) i=3-j;s+=b[i][j];}return s;}main(){inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};printf("%dn",f(a));}执行后的输出结果是。A.12B.11C.18D.1616.有以下程序:voidsort(inta[],intn){inti,j,t;for(i=0;i