• 361.50 KB
  • 2022-04-22 11:52:38 发布

《上机指导与测试》习题1-习题7及参考答案.doc

  • 56页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话: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="0"&&ch[j]<="9";j+=2)s=10*s+ch[j]-"0";printf("%dn",s);}A.12ba56B.66521C.6D.6226.设已定义chars[]=""Name\Address"n";则字符串s所占的字节数是。A.19B.18C.15D.1427.设已定义charc[8]="Tianjin"和intj则下面的输出函数调用中错误的是。A.printf("%s",c);B.for(j=0;j<8;j++)printf("%c",c[j]);C.puts(c);D.for(j=0;j<8;j++)puts(c[j]); 28.设已定义chara[10]和intj,则下面输入函数调用中错误的是。A.scanf("%s",a);B.for(j=0;j<9;j++)scanf("%c",a[j]);C.gets(a);D.for(j=0;j<9;j++)scanf("%c",&a[j]);29.设已定义charx[8]和intj,为了给该数组赋值,下面语句中正确的是。A.x[8]="TurboC";B.x="TurboC";C.x[]="TurboC";D.for(j=0;j<7;j++)x[i]=getchar();30.有如下程序:main(){intn[5]={0,0,0},j,k=2;for(j=0;j=0;i--)a[i]=10-i;printf("%d%d%d",a[2],a[5],a[8]);}7.以下程序的输出结果是。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%dn",a[0][3],a[1][2],a[2][1],a[3][0];)8.以下程序的输出结果是。main(){charst[20]="hellot\";printf(%d%dn",strlen(st),sizeof(st));}9.若有定义语句:chars[100],d[100];intj=0,i=0;,且s中已赋字符串,请填空以实现字符串拷贝(注:不得使用逗号表达式)。while([i]){d[j]=;j++;}d[j]=0;10.以下程序的输出结果是。f(intb[],intm,intn){inti,s=0;for(i=m;i<=n;i++)s=s+b[i];returns;)main(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%dn",x);}11.以下程序的输出结果是。main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%sn",w[k]);} 12.下列程序的输出结果是。#includemain(){chararr[2][4];strcpy(arr,"you");strcpy(arr[1],"me");arr[0][3]="&";printf("%sn",arr);}13.若想通过以下输入语句使a中存放字符串“1234”,b中存放字符“5”,则输入数据的形式应该是。chara[10],b;scanf("a=%sb=%c",a,&b);14.下列程序段的输出结果是。main(){charb[]="Hello,you";b[5]=0;printf("%sn",b);}15.以下程序的输出结果是。main(){intj,k,a[10],p[3];k=5;for(j=0;j<10;j++)a[j]=j;for(j=0;j<3;j++)p[j]=a[j*(j+1)];for(j=0;j<3;j++)k+=p[j]*2;printf("%dn",k);}16.以下程序运行后,输出结果是。main(){inty=18,t=0,j,a[8];do{a[t]=y%2;t++;y=y/2;}while(y>=1);for(j=t-1;j>=0;j--)printf("%d",a[j]);printf("n");}三、编程题1.求出某数组a[5][5]每行元素的平均值。main(){inta[5][5],j,t;floats=0.0,adv[5];for(j=0;j<5;j++)for(t=0;t<5;t++)scanf("%d",&a[j][t]);for(j=0;j<5;j++){for(t=0;t<5;t++)s=s+a[j][t];adv[j]=s/4.0;}for(j=0;j<5;j++)printf("%dn",adv[j]);}2.将二维数组c[3][4]转换成以为数组[12]。main(){intc[3][4],b[12],j,t,k=0;for(j=0;j<3;j++)for(t=0;t<4;t++) scanf("%d",&a[j][t]);for(j=0;j<3;j++)for(t=0;t<4;t++)b[k++]=c[j][t];for(j=0;j<12;j++)printf("%d",b[j]);}3.计算一个3×3矩阵的主对角线的元素之和sum。main(){inti,sum=0;inta[3][3]={{-1,2,3},{6,7,-8},{9,11,20}};for(i=0;i<=2;i++)sum=sum+a[i][i];printf("%dn",sum);}4.将两个字符串连接起来(不用strcat)。main(){chars1[20],s2[20];inti=0,j;gets(s1);gets(s2);while(s1[i]!="")i++;for(j=0;str[j]!="";j++){s1[i]=s2[j];i++;}s1[i]="";puts(s1);puts(s2);}习题7指针一、选择题1.有以下程序:voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1="A",c2="a",*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf("%c%cn",c1,c2);}程序运行后的输出结果是。A.AbB.aaC.AaD.Bb2.有以下程序:#includemain(){printf("%dn",NULL);}程序运行后的输出结果是。A.0B.1C.-1D.NULL没定义,出错3.已定义以下函数:fun(int*p){return*p;}该函数的返回值是。A.不确定的值B.形参p中存放的值 C.形参p所指存储单元中的值D.形参p的地址值4.若有定义:int*p[3];,则以下叙述中正确的是。A.定义了一个基类型为int的指针变量p,该变量具有3个指针B.定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针C.定义了一个名为*p的整型数组,该数组含有3个int类型元素D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素5.以下程序中函数scmp的功能是:返回形参指针s1和s2所指字符串中较小字符串的首地址。#include#includechar*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/strcpy(string,scmp(string,str[2]));printf("%sn",string);}若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为。A.abcdB.abbaC.abcD.abca6.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;…}程序在执行了c=&b;b=&a;语句后,表达式**c的值是。A.变量a的地址B.变量b中的值C.变量a中的值D.变量b的地址7.有以下程序:#includemain(){charstr[][20]={"Hello","Beijing"},*p=str[0];printf("%dn",strlen(p+20));}程序运行后的输出结果是。A.0B.5C.7D.208.已定义以下函数:fun(char*p2,char*p1){while((*p2=*p1)!=""){p1++;p2++;}}函数的功能是。A.将p1所指字符串复制到p2所指内存空间B.将p1所指字符串的地址赋给指针p2C.对p1和p2两个指针所指字符串进行比较D.检查p1和p2两个指针所指字符串中是否有"" 9.有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf("%dn",a[1][2]);}程序运行后的输出结果是。A.3B.6C.9D.210.有以下程序:main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&*(p+i)%2){k=k+*(p+i);i++;}printf("%dn",k);}执行后的输出结果是。A.58B.56C.45D.2411.有以下程序:main(){chara,b,c,*d;a="";b="xbc";c="xab";d="127";printf("%c%c%c%cn",a,b,c,*d);}编译时会出现的错误是。A.程序中只有a="";语句不正确B.b="xbc";语句不正确C.d="127";语句不正确D.a="";和c="xab";语句都不正确12.若有以下定义,则对a数组元素的正确引用是。A.*&a[5]B.a+2C.*(p+5)D.*(a+2)13.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%dn",*p,*q,*r);}执行后的输出结果是。A.7,8,8B.7,8,7C.8,7,7D.8,7,814.有以下程序:main(){char*s[]={"one","two","three"},*p;p=s[1];printf("%c,%sn",*(p+1),s[0]);}执行后的输出结果是。A.n,twoB.t,one C.w,oneD.o,two15.有以下程序:main(){intx[8]={8,7,6,5,0,0},*s;s=x+3;printf("%dn",s[2]);}执行后的输出结果是。A.随机值B.0C.5D.616.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#defineN10voidarrin(intx[N]){inti=0;while(i=0;ps--)puts(ps);}执行后的输出结果是。A.yz<回车>xyzB.z<回车>yzC.z<回车>yz<回车>xyzD.x<回车>xy<回车>xyz20.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1; elsepa[1][i]=1;printf("%dn",a[0][1]+a[1][1]+a[1][2]);}执行后的输出结果是。A.7B.6C.8D.无确定值21.有以下程序:voidfun(int*a,inti,intj){intt;if(i="A"&&ch<="Z")ch=ch-"A"+"a";returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%sn",s);}A.abc+ABC=DEFdefB.abc+abc=defdefC.abcaABCDEFdefD.abcabcdefdef31.以下程序的输出结果是。chars[]="\141141abct";printf("%dn",strlen(s));A.9B.12C.13D.1432.以下程序调用findmax函数返回数组中的最大值。findmax(int*a,intn){int*p,*s;for(p=a,s=a;p-asB.*p>*sC.a[p]>a[s]D.p-a>p-s33.以下程序的输出结果是。main(){charcf[3][5]={"AAAA","BBB","CC"};printf(""%s"n",cf[1]);}A."AAAA"B."BBB"C."BBBCC"D."CC"34.以下不能正确进行字符串赋初值的语句是。A.charstr[5]="good!";B.charstr[]="good!";C.char*str="good!";D.charstr[5]={"g","o","o","d"};35.以下程序的输出结果是。f(int*b,intm,intn){inti,s=0;for(i=m;i#includemain(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pb);printf("%dn",strlen(b2));}A.8B.3C.1D.738.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是。A.p=q;B.*p=*q;C.n=*q;D.p=n;39.有以下程序:voidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){chara="A",b="a";fun(&b,a);printf("%c,%cn",a,b); }程序运行后的输出结果是。A.B,a,B,aB.a,B,a,BC.A,b,A,bD.b,B,A,b40.有以下程序:main(){chara[]={"a","b","c","d","e","f","g","h",""};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%dn",i,j);}程序运行后的输出结果是。A.9,9B.8,9C.1,8D.9,841.以下程序中的reverse函数的功能是将a所指数组中的内容进行逆置。voidreverse(inta[],intn){inti,t;for(i=0;imain(){char*p="abcdefghjik";printf("%dn",strlen(p));}程序运行后的输出结果是。A.12B.15C.6D.544.有以下程序:#includemain(intargc,char*argv[]){inti,len=0;for(i=1;i则运行的结果是。 A.22B.17C.12D.945.有以下程序:intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);printf("%dn",i);}程序运行后的输出结果是。A.-4B.1C.4D.846.有以下程序:voidss(char*s,chart){while(*s){if(*s==t)*s=t-"a"+"A";s++;}}main(){charstr1[100]="abcddfefdbd",c="d";ss(str1,c);printf("%sn",str1);}程序运行后的输出结果是。A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd47.有以下程序:#includemain(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);printf("%s%sn",p,q);}若从键盘输入:abcdef<回车>,则输出结果是。A.defdefB.abcdefC.abcdD.dd48.以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。#includevoidf(char(*p)[10],intn){chart[20];inti,j;for(i=0;i,则输出结果是。#includemove(char*str,intn){chartemp;inti;temp=str[n-1];for(i=n-1;i>0;i--)str[i]=str[i-1];str[0]=temp;}main(){chars[50];intn,i,z;scanf("%d,%s",&n,s);z=strlen(s);for(i=1;i<=n;i++)move(s,z);printf("%sn",s);}3.有以下程序,若输入的字符串是:abc123edf456gh,则执行程序后输出。#include#includemain(){chars[80],d[80];inti,j;gets(s);for(i=j=0;*(s+i)!="";i++)if(*(s+i)>="0"&&*(s+i)<="9"){*(d+j)=*(s+i);j++;}*(d+j)="";puts(d);}4.若有以下程序:main(){inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=0;for(i=0;i<4;i++){for(j=0;j<4;j++){if(*(*(a+i)+j)<0)continue;if(*(*(a+i)+j==0)break;s+=*(*(a+i)+j;printf("%dn",s);}}}执行后的输出结果是。5.以下函数的功能是删除字符串s中的所有数字字符,请填空。vioddele(char*s){intn=0,i;for(i=0;s[i];i++)if()s[n++]=s[i];s[n]=;} 6.设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数,请填空。main(){intfindbig(int,int,int);int(*f)(),x,y,z,big;f=;scanf("%d%d%d",&x,&y,&z);big=(*f)(x,y,z);printf("big=%dn",big);}7.以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句。voidfun(int*x,inty){…}main(){inta=10,b=20;;/定义变p*/p=fun;p(&a,&b);…}8.下列程序的输出结果是。voidfun(int*n){while((*n)--);printf("%d",++(*n));}main(){inta=100;fun(&a);}9.以下程序的输出结果是。main(){intarr[]={30,25,20,15,10,5},*p=arr;p++;printf("%dn",*(p+3));}10.以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值,请填空。#defineN3#defineM4voidLineMax(int(*x)[M]){inti,j,p;for(i=0;ia[row][colum]){row=i;colum=j;}*n=;return;}main(){inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;max=select(a,&n);printf("max=%d,line=%dn",max,n);}19.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空。intmystrlen(char*str){inti;for(i=0;*(str+i)!=;i++);return();}20.下面程序的运行结果是。voidswap(int*a,int*B){int*t;t=a;a=b;b=t;}main(){intx=3,y=5,*p=&x,*q=&y;swap(p,q);printf("%d%dn",*p,*q);}21.设有定义intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。scanf("%d",);printf("%dn",);22.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回,请填空。#include#defineN100intfun(int(*a)[N]){introw,col,max,min;for(row=0;rowintsstrcmp(char*s,char*t){while(*s&&*t&&*s==){s++;t++;} return;}24.下面程序的运行结果是。chara[]=”123456789”,*p;inti=0;p=a;while(*p){if(i%2==0)*p="#";p++;i++;}}puts(a);25.下面程序的运行结果是。chara[]="12345",*p;ints=0;for(p=a;*p!="";p++)s=10*s+*p-"0";printf("%dn",s);26.若有定义inta[3][5],i,j;(且0<=i<3,0<=j<5),则a[i][j]的地址可用以下几种形式表示:(1)&a[i][j](2)a[i]+j(3)+j(4)&a[0][0]+(5)a[0]+27.若有定义char*language[]={"FORTRAN","BASIC","JAVA","C"};则language[2]的值是。28.若有定义int(*p)[4],则p是一个指向的指针。29.若有定义char*string="abcdef",则*(string+2)的值为。30.下面程序段中,for循环的执行次数为。char*s="ta16bc";for(;*s!="";s++)printf("*");31.下面程序段的运行结果是。charstr[]="abcdefghi",*p=str;printf("%s",p+5);32.若有语句:inta[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是。33.若有定义inta[2][3]={2,4,6,8,10,12};则*(a[1]+2)的值是,*(&a[0][0]+5)的值是。34.下面程序的运行结果是。#include"stdio.h"fun(char*s){char*p=s;while(*p)p++;return(p-s);}main(){char*a="abcdefg";inti;i=fun(a);printf("%d",i);}35.下面程序的功能是比较两个字符串是否相等,若相等则返回1,否则返回0,请填空。#include"stdio.h"fun(char*s,char*t){inti=0;while(&&)i++;if(s[i]==""&&t[i]=="")return1;elsereturn0; }main(){chara[20],b[20];inti;gets(a);gets(b);i=fun(a,b);printf("%d",i)}三、编程题(用指针实现)1.编写程序,输入3个字符串,按从小到大的顺序排列并输出。2.编写程序,输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符的个数。3.编写程序,将任意一个字符串从第一个字符开始间隔地输出该串。例如,字符串是abcdef,那么输出ace。4.编写一个函数,求一个字符串的长度(不能调用strlen函数)。5.编写程序,将一个长度不超过4个的数字字符串转换成一个整数。如字符串是“3248”,则转换的整数是3248。 上机指导测试篇参考答案习题1一.选择题1.A2.D3.C4.ABCD5.D6.B7.A8.C9.A10.A11.B12.B13.D14.C15.无正确答案16.B17.AD18.C19.A20.D二.填空题1.816102.-327683.K=11,K=13,K=B4.55.206.207.1.08.19.110.111.###B=212.113.re’hi’you14.015.316.1.017.x+=118.abx(x)>519.y%2==120.###a=26,b=13,c=2021.double22.323.124.025.6.626.10,227.0,0,428.0.029.666.06.030.2,1习题2一.选择题1.D2.D3.C4.D5.A6.B7.C8.C9.B10.D11.C12.B13.B14.A15.D16.D17.A18.B20.B二.填空题 1.逻辑上的一条语句;2.<左边右边3.%%4.普通字符格式字符5.取地址、按位与a的地址6.输出一个字符7.{}8.无条件转移条件转移9.输入一个字符10.表达式1;While(表达式2){表达式3;}11._字母数字习题3一.选择题1.A2.C3.B4.A5.C6.D7.A8.A9.B10.B11.D12.D13.B14.A15.A16.C17.D18.A19.D20.A21.D22.C23.C24.B25.B26.C27.D28.B29.D30.B二.填空题1.12.5,0,33.yes4.1325.66.587.08.59.5210.892111.passwarn12.a=2,b=113.3,2,-114.815.-416.3 17.218.k=4,s=619.2#18#20.1#3#21#1173#21.i<10j%3!=022.j=029.a+=i;if(i!=0)b=i-1;elseb=0;30.m%nr!=0m%n习题4一.选择题1.D2.B3.A4.D5.B6.C7.D8.B9.A10.A二.填空题1.high=mid–1low=mid+12.02468101211618024681012116183.5,254.7895.-125=5*5*56.1117.(int)(value+0.5)val=ponse8.10109.j=1;y>0;y--10.y>x&&y>zj%x1==0&&j%x2==0&&j%x3==011.x=2y=3z=0x=4y=9z=5x=2y=3z=012.s=0,t=1,n=1s13.1314.510915.616.s[i]=ksum=017.p++a[i]=a[i+1]18.12形式参数是普通变量时,实参和形参之间是单向传值 19.first:14,4,12second:26,4,12third:26,3,620.15621.10,20,40,4022.A+B=923.824.MAIN:x=5y=1n=1FUNC:x=6y=21n=1125.12326.x=1y=1x=1y=2x=1y=327.2*i+1a(j)a(j)习题6一.选择题1.D2.D3.D4.C5.C6.D7.D8.D9.C10.B11.D12.D13.C14.B15.D16.C17.A18.B19.A20.B21.D22.B23.A24.C25.C26.1627.D28.B29.D30.D二.填空题1.582.137153.1230560094.j’9’或者!(s[i]>=’0’&&|s[i]<=’9’)‘’6.findbig7.void(*p)()8.09.1010.p=jLineMax(x)11.0712.i*(a+9-i)13.987687614.415.efgh16.abc17.718.rowa[row][colum]19.‘’i 20.5321.k*k22.maxmax23.*t*s-*t24#2#4#6#825.1234526.*(a+i)+j5*i+j5*i+j27.”BASIC”的首地址28.具有4个元素的整型一维数组29.030.531.ef32.233.121234.435.s[i]=t[i]s[i]'