为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言习题全集+答案

2022-02-20 4页 doc 474KB 11阅读

用户头像 个人认证

pl64xlyx

长期工作中积累了很多经验

举报
C语言习题全集+答案-PAGE.z.目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc210048767"第一单元程序设计和C语言PAGEREF_Toc210048767\h1HYPERLINK\l"_Toc210048768"第二单元顺序程序设计PAGEREF_Toc210048768\h3HYPERLINK\l"_Toc210048769"第三单元分支程序设计PAGEREF_Toc210048769\h7HYPERLINK\l"_Toc210048770"第四单元循环程序设计...
C语言习题全集+答案
-PAGE.z.TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc210048767"第一单元程序和C语言PAGEREF_Toc210048767\h1HYPERLINK\l"_Toc210048768"第二单元顺序程序设计PAGEREF_Toc210048768\h3HYPERLINK\l"_Toc210048769"第三单元分支程序设计PAGEREF_Toc210048769\h7HYPERLINK\l"_Toc210048770"第四单元循环程序设计PAGEREF_Toc210048770\h14HYPERLINK\l"_Toc210048771"第五单元数组PAGEREF_Toc210048771\h23HYPERLINK\l"_Toc210048772"第六单元函数PAGEREF_Toc210048772\h34HYPERLINK\l"_Toc210048773"第七单元指针PAGEREF_Toc210048773\h42HYPERLINK\l"_Toc210048774"第八单元构造体和共用体PAGEREF_Toc210048774\h61HYPERLINK\l"_Toc210048775"第九单元文件PAGEREF_Toc210048775\h78HYPERLINK\l"_Toc210048776"附加PAGEREF_Toc210048776\h82HYPERLINK\l"_Toc210048777"模拟试卷一PAGEREF_Toc210048777\h102HYPERLINK\l"_Toc210048778"模拟试卷二PAGEREF_Toc210048778\h108HYPERLINK\l"_Toc210048779"模拟试卷三PAGEREF_Toc210048779\h114-.z.第一单元程序设计和C语言选择题C语言的根本构成单位是:A。A.函数B.函数和过程C.超文本过程D.子程序一个C语言程序总是从B开场执行。A.主过程B.主函数C.子程序D.主程序C语言的程序一行写不下时,可以C。A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行以下达不正确的选项是:C。A.在C程序中,语句之间必须要用分号";"分隔B.假设a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数C.在C程序中,无论是整数还是实数都能正确无误地表示D.在C程序中,%是只能用于整数运算的运算符以下不正确的C语言标识符是D.A.ABCB.abcC.a_bcD.ab.c以下字符串是标识符的是:A。A._HJB.9_studentC.longD.LINE1以下说法中正确的选项是:C。A.C语言程序总是从第一个定义的函数开场执行B.在C语言程序中,要调用的函数必须放在main()函数中定义C.C语言程序总是从main()函数开场执行D.C语言程序中的main()函数必须放在程序的开场局部不合法的常量是:D。A.‘\2’B.""C.‘3’D.‘\483’各变量的类型说明如下,则以下不符合C语言语法的表达式是:A。intk,a,b;unsignedlongw=5;double*=1.422;A.*%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a=+(b=4)*(a=3)在C语言中,字符型数据在存中以D形式存放。A.原码B.BCD码C.反码D.ASCII码假设有定义:inta=7;float*=2.5;y=4.7;则表达式*+a%3*(int)(*+y)%2/4的值是:A。A.2.500000B.2.750000C.3.500000D.0.000000设有说明:charw;int*;floaty;doublez;则表达式w**+z-y值的数据类型为:D。A.floatB.charC.intD.double以下BC是不正确的转义字符。A.'\\'B.'\'C.'081'D.'\0'假设*为int型变量,则执行以下语句后,*的值为B。*=6;*+=*-=***;A.36B.-60C.60D.-24字符串"\\\"ABC\"\\"的长度是B。A.11B.7C.5D.3二、填空题一个函数由两局部组成,它们是函数首部和函数体。一个C源程序至少包含一个主函数,即main函数。设inta=12;则表达式a/=a+a的值是0。表达式*=(a=3,6*a)和表达式*=a=3,6*a分别是赋值表达式和逗号表达式,两个表达式执行完的结果分别是18和18,*值分别是18和3。在C语言中,实数有两种表示形式,即浮点型和指数型。在C语言中,运算符的优先级最小的是逗号运算符。第二单元顺序程序设计选择题假设m为float型变量,则执行以下语句后的输出为C。m=1234.123;printf("%-8.3f\n",m);printf("%10.3f\n",m);A.1234.123B.1234.123C.1234.123D.-1234.1231234.1231234.1231234.123001234.123假设*,y,z均为int型变量,则执行以下语句后的输出为A。*=(y=(z=10)+5)-5;printf("*=%d,y=%d,z=%d\n",*,y,z);y=(z=*=0,*+10);printf("*=%d,y=%d,z=%d\n",*,y,z);A.*=10,Y=15,Z=10B.*=10,Y=10,Z=10*=0,Y=10,Z=0*=0,Y=10,Z=10C.*=10,Y=15,Z=10D.*=10,Y=10,Z=10*=10,Y=10,Z=0*=0,Y=10,Z=0假设*是int型变量,y是float型变量,所用的scanf调用语句格式为:scanf("*=%d,y=%f",&*,&y);则为了将数据10和66.6分别赋给*和y,正确的输入应是:A。A.*=10,y=66.6<回车>B.1066.6<回车>C.10<回车>66.6<回车>D.*=10<回车>y=66.6<回车>有变量定义:inta;charc;用scanf("%d%c〞,&a,&c);语句给a和c输入数据,使30存入a,字符‘b’存入c,则正确的输入是:D。A.30’b’<回车>B.30b<回车>C.30<回车>b<回车>D.30b<回车>有变量定义:double*;longa;要给a和*输入数据,正确的输入语句是C。假设要输出a和*的值,正确的输出语句C。A.scanf("%d%f〞,&a,&*);B.scanf("%ld%f〞,&a,&*);printf("%d,%f〞,a,*);printf("%ld,%f〞,a,*);C.scanf("%ld%lf〞,&a,&*);D.scanf("%ld%lf〞,&a,&*);printf("%ld,%lf〞,a,*);printf("%ld,%f〞,a,*);假设有定义double*=1,y;则以下的语句执行的结果是C。y=*+3/2;printf("%f〞,y);A.2.500000B.2.5C.2.000000D.2假设a为整型变量,则以下语句C。a=-2L;printf("%d\n",a);A.赋值不合法B.输出为不确定的值C.输出值为-2D.输出值为2读程序写结果main(){int*,y;scanf("%2d%*2d%ld",&*,&y);printf("%d\n",*+y);}执行时输入:123456717main(){int*=4,y=0,z;**=3+2;printf("%d",*);**=y=z=4;printf("%d",*);}2080main(){float*;inti;*=3.6;i=(int)*;printf("*=%f,i=%d",*,i);}*=3.600000,i=3main(){inta=2;a%=4-1;printf("%d,",a);a+=a*=a-=a*=3;printf("%d",a);}2,0main(){int*=02,y=3;printf("*=%d,y=%%d",*,y);}*=2,y=%dmain(){charc1=’6’,c2=’0’;printf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2);}6,0,6,102main(){int*,y,z;*=y=1;z=++*-1;printf("%d,%d\n",*,z);z+=y++;printf("%d,%d\n",y,z);}2,12,2填空题在C语言中,字符型数据和整型数据之间可以通用,一个字符数据既能以字符输出,也能以整数输出。"%-ms"表示如果串长小于m,则在m列围,字符串向左靠,右补空格。printf函数的"格式控制〞包括两局部,它们是格式说明和普通字符。编写程序求矩形的面积和周长,矩形的长和宽由键盘输入,请填空。#includevoidmain(){floatl,w;floatarea,girth;printf("pleaseinputlengthandwidthoftherectangle\n〞);scanf("%f%f〞,&l,&w);area=l*w;girth=2*(l+w);printf("area=%f,girth=%f\n〞,area,girth);}编写程序,输入一个数字字符〔‘0’~‘9’〕存入变量c,把c转换成它所对应的整数存入n,如:字符‘0’所对应的整数就是0。请填空。#include"stdio.h〞voidmain(){charc;intn;printf("pleaseinputachar:\n〞);c=getchar();n=c-‘0’或者c-48;printf("%c,%d\n〞,c,n);}编程将华氏温度转换为摄氏温度和绝对温度的公式分别为:c=(f-32)(摄氏温度)k=273.16+c(绝对温度)请编程序:当给出f时,求其相应摄氏温度和绝对温度。测试数据:①f=34②f=100写一个程序把极坐标(r,θ)(θ之单位为度)转换为直角坐标(*,Y)。转换公式是:*=r.cosθy=r.sinθ测试数据:①r=10θ=45°②r=20θ=90°写一个程序,按如下格式输出数据。namenumbermathenglishputerzhanghua990180.5087.080lina990270.0080.090wanggang990387.0076.078输入3个双精度实数,分别求出它们的和、平均值、平方和以及平方和的开方,并输出所求出各个值。输入一个3位整数,求出该数每个位上的数字之和。如123,每个位上的数字和就是1+2+3=6。第三单元分支程序设计选择题假设*=0,y=3,z=3,以下表达式值为0的是CA.!*B.*10"*+100:*-10);printf("%d\n",w++||z++);printf("%d\n",!w>z);printf("%d\n",w&&z);A.0B.1C.0D.0111111001110分析以下程序,以下说确的是D。main(){int*=5,a=0,b=0;if(*=a+b)printf("****\n");elseprintf("####\n");}A.有语法错,不能通过编译B.通过编译,但不能连接C.输出****D.输出####分析以下程序,以下说确的是C。main(){int*=5,a=0,b=3;if(*=a+b)printf("****\n");elseprintf("####\n");}A.有语法错,不能通过编译B.通过编译,但不能连接C.输出****D.输出####分析以下程序,以下说确的是D。main(){int*=0,a=0,b=0;if(*=a+b)printf("****\n");elseprintf("####\n");}A.有语法错,不能通过编译B.通过编译,但不能连接C.输出****D.输出####分析以下程序,以下说确的是C。main(){int*=0,a=0,b=0;if(*==a+b)printf("****\n");elseprintf("####\n");}A.有语法错,不能通过编译B.通过编译,但不能连接C.输出****D.输出####读程序写结果includemain(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d,%d,%d\n",k,a,b);}1,0,3main(){int*=4,y=0,z;**=3+2;printf("%d",*);**=(y==(z=4));printf("%d",*);}200main(){int*,y,z;*=3;y=z=4;printf("%d",(*>=z>=*)"1:0);printf("%d",z>=y&&y>=*);}01main(){int*=1,y=1,z=10;if(z<0)if(y>0)*=3;else*=5;printf("%d\t",*);if(z=y<0)*=3;elseif(y==0)*=5;else*=7;printf("%d\t",*);printf("%d\t",z);}170main(){char*=‘B’;switch(*){case‘A’:printf("ItisA.〞);case‘B’:printf("ItisB.〞);case‘C’:printf("ItisC.〞);default:printf("other.〞);}}ItisB.ItisC.other.main(){int*=1,y=0,a=0,b=0;switch(*){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}a=2,b=1填空题假设a=5,b=6,c=7,d=8,则表达式d=a/2&&b==c||!a的值为0定义int*=10,y,z;执行y=z=*;*=y==z后,变量*的值为1。分段函数:输入*,计算y值,输出y,其中:*<0y=2*+3*=0,y=0*>0,y=(*+7)/3#includemain(){int*,y;scanf("%d",&*);if(*<0)y=2**+3;elseif(*==0)y=0;elsey=(*+7)/3;printf("%d〞,y);}由键盘输入三个数,计算以这三个数为边长的三角形面积。#include"math.h〞main(){floata,b,c,s,s1;printf("Pleaseenter3reals:\n");scanf("%f%f%f",&a,&b,&c);if((a+b>c)&&(b+c>a)&&(c+a>b)){s=(a+b+c)*0.5;s1=s*(s-a)*(s-b)*(s-c);s=sqrt(s1);printf("\nAreaofthetriangleis%f\n",s);}elseprintf("Itisnottriangle!\n");}有一方程a+b*+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的解。(1)a=0,b≠0(2)a=0,b=0,c=0(3)a=0,b=0,c≠0(4)a≠0,-4ac≥0(5)a≠0,-4ac≤0#include"math.h"main(){floata,b,c,d,pr,pi,*1,*2;scanf("%f%f%f",&a,&b,&c);printf("a=%f,b=%f,c=%f\n",a,b,c);if(a==0){if(b!=0)printf("onlyonesolution*=%f\n",-c/b);elseif(c!=0)printf("nosolution\n");elseprintf("*isanyvalue\n");}else{d=b*b-4*a*c;if(d>=0){*1=(-b+sqrt(d))/(2*a);*2=(-b-sqrt(d))/(2*a);printf("*1=%6.2f,*2=%6.2f\n",*1,*2);}else{pr=-b/(2*a);pi=sqrt(-d)/(2*a);printf("*1=%6.2f+%6.2fi\n",pr,pi);printf("*2=%6.2f-%6.2fi\n",pr,pi);}}}投票表决器:输入Y、y,打印agree输入N、n,打印disagree输入其他,打印losemain(){charc;scanf("%c",&c);switch(c){case‘Y’:case‘y’:printf("agree〞);break;case‘N’:case‘n’:printf("disagree〞);break;default:printf("lose〞);}编程写一程序求y值(*值由键盘输入)。输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其对应小写字母;如果是数字输出数字本身;如果是空格,输出"space〞;如果不是上述情况,输出"other〞。有三个数a、b、c,由键盘输入,输出其中最大的数。输入一个数,判断它能否被3或者被5整除,如至少能被这两个数中的一个整除则将此数打印出来,否则不打印,编出程序。读入1到7之间的*个数,输出表示一星期中相应的*一天的单词:Monday、Tuesday等等,用switch语句做。给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’,90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。有一函数请编程序计算y的值(*的值由键盘输入)。第四单元循环程序设计选择题程序段如下:则以下说法中正确的选项是:A。intk=5;do{k--;}while(k<=0);A.循环执行5次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次设i和*都是int类型,则for循环语句B。for(i=0,*=0;i<=9&&*!=876;i++)scanf("%d",&*);A.最多执行10次B.最多执行9次C.是无限循环D.循环体一次也不执行下述for循环语句B。inti,k;for(i=0,k=-1;k=1;i++,k++)printf("****");A.判断循环完毕的条件非法B.是无限循环C.只循环一次D.一次也不循环程序段如下:则以下说法中正确的选项是:C。intk=-20;while(k=0)k=k+1;A.while循环执行20次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次以下程序段执行后k值为A。intk=0,i,j;for(i=0;i<5;i++)for(j=0;j<3;j++)k=k+1;A.15B.3C.5D.8程序段如下:则以下说法中不正确的选项是:D。#includemain(){intk=2,;while(k<7){if(k%2){k=k+3;printf("k=%d\n〞,k);continue;}k=k+1;printf("k=%d\n〞,k);}}A.k=k+3;执行一次B.k=k+1;执行2次C.执行后k值为7D.循环体只执行一次读程序写结果main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}113main(){inti=0,s=0;do{s+=i*2+1;printf("i=%d,s=%d\n",i,s);i++;}while(s<10);}i=0,s=1i=1,s=4i=2,s=9i=3,s=16#includemain(){inti,m=1;for(i=5;i>=1;i--){m=(m+1)*2;printf("m=%d\n",m);}}m=4m=10m=22m=46m=94指出下面三个程序的功能,当输入为:"quert""时,它们的执行结果是什么?⑴#includemain(){charc;c=getchar();while(c!='"'){putchar(c);c=getchar();}}quert⑵#includemain(){charc;while((c=getchar())!='"')putchar(++c);}rvsfu⑶#includemain(){while(putchar(getchar())!='"');}quert"#includemain(){inti;for(i=1;i<=5;i++){if(i%2)putchar(‘<’);elsecontinue;putchar(‘>’);}putchar(‘#’);}<><><>#main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>10)break;if(b%3==1){b+=3;continue;}}printf("a=%d\n",a);}a=5main(){inti=1;while(i<=15)if(++i%3!=2)continue;elseprintf("%d",i);printf("\n");}258114#includevoidmain(){inti,j;for(i=0;i<=3;i++){for(j=0;j<=i;j++)printf("(%d,%d),",i,j);printf("\n");}}(0,0),(1,0),(1,1),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2),(3,3),main(){inti,j,k;charspace='';for(i=0;i<=5;i++){for(j=1;j<=i;j++)printf("%c",space);for(k=0;k<=5;k++)printf("%c",'*');printf("\n");}}************************************#includemain(){inti,j,k=0;for(j=11;j<=30;j++){if(k%10==0)printf("\n");for(i=2;i=j-1){printf("%d\t",j);k++;}}}}111317192329填空题switch、循环(1)s=0(2)i=i+2(1)*<=9(2)y<=9(3)z=0(4)z<=9(5)**100+y*10+z(1)n(2)Tn+a(3)Sn+Tn(4)count++(1)10(2)Sn+hn*2(3)hn/2(1)3(2)2*i(3)printf("\n〞);(4)i(5)4-2*i(1)station(2)i+1(3)total+2break语句只能用于switch语句和循环语句中。计算2+4+6+8+...+98+100main(){inti,s=0;for(i=2;i<=100;i=i+2)s+=i;}求满足下式的*,y,z*YZ+YZZ─*<=9─532main(){int*,y,z,i,result=532;for(*=1;y<=9;*++)for(y=1;z=0;y++)for(z=0;z<=9;z++){i=**100+y*10+z+(100*y+10*z+z);if(i==result)printf("*=%d,y=%d,z=%d\n",*,y,z);}}求Sn=a+aa+aaa+...+aa...a之值,其中a是一个数字。例如2+22+222+2222〔此时n=4〕,n由键盘输入。main(){inta,n,count=1,Sn=0,Tn=0;printf("请输入a和n的值:\n");scanf("%d,%d",&a,&n);while(count<=n){Tn=Tn+a;Sn=Sn+Tn;a=a*10;count++;}printf("a+aa+aaa+...=%d\n",Sn);}一球从100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?main(){floatSn=100.0,hn=Sn/2;intn;for(n=2;n<=10;n++){Sn=Sn+hn*2;hn=hn/2;}printf("第10次落地时共经过%f米\n",Sn);printf("第10次反弹%f米\n",hn);}打印出以以下图形*************************main(){inti,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf("");for(k=0;k<=2*i;k++)printf("*");printf("\n〞);}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf("");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}}准备客票。*铁路线上共10个车站,问需要准备几种车票?main(){inti,j,station,total=0;printf("输入车站数:");scanf("%d",&station);for(i=1;in〕得余数R,再用余数R去除原来的除数,得新的余数,重复此过程直到余数为0时停顿,此时的除数就是m和n的最大公约数。求m和n的最小公倍数:m和n的积除以m和n的最大公约数。测试数据:m=12,n=24m=100,n=300打印出所有的"水仙花数〞,所谓"水仙花数〞是指一个三位数,其各位数字立方和等于该数本身。例如153是一个水仙花数,因为153=〔要求分别用一重循环和三重循环实现〕。一个数恰好等于它的平方数的右端,这个数称为同构数。如5的平方是25,5是25中的右端的数,5就是同构数。找出1~1000之间的全部同构数。3025这个数具有一种独特的性质:将它平分为两段,即30和25,使之相加后求平方,即〔30+25〕,恰好等于3025本身。请求出具有这样性质的全部四位数。两位数13和62具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变,即13*62=31*26。编程序求共有多少对这种性质的两位数〔个位与十位一样的不在此列,如11、22,重复出现的不在此列,如13*62与62*13〕。一个数如果恰好等于它的因子之和,这个数就称为"完数〞。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数〞。编程序找出1000之的所有完数,并按下面格式输出其因子:6itsfactorsare1,2,3有一个四位正整数,组成这个四位数的四个数字各不一样,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。给出一个不多于4位的正整数,要求:①求出它是几位数②分别打印出每一位数字③按逆序打印出各位数字。在一个程序中计算出给定误差小于0.1,0.01,0.001,0.0001,0.00001时,下式的值:提示:此题中误差指前n+1项之积与前n项积之差。用泰勒展开式求sin*的近似值sin*=测试数据:①*=0.3,n=8②*=0.5,n=20验证歌德巴赫猜测。一个充分大的偶数〔大于或等于6〕可以分解为两个素数之和。试编程序,将6至50之间全部偶数表示为两个素数之和。用牛顿迭代法求方程在1.5附近的根〔精度为〕。两个乒乓球队进展比赛,各出三人,甲队为A、B、C三人,乙队为*、Y、Z三人,抽签决定比赛。有人向队员打听比赛的,A说他不和*比,C说他不和*、Z比,请编程序找出三对赛手的。第五单元数组选择题以下关于数组的描述正确的选项是。A.数组的大小是固定的,但可以有不同的类型的数组元素。B.数组的大小是可变的,但所有数组元素的类型必须一样。C.数组的大小是固定的,但所有数组元素的类型必须一样。D.数组的大小是可变的,但可以有不同的类型的数组元素。在定义inta[10];之后,对a的引用正确的选项是。A.a[10]B.a[6.3]C.a(6)D.a[10-10]以下能正确定义数组并正确赋初值的语句是。A.intn=5,b[n][n];B.inta[1][2]={{1},{3}};C.intc[2][]={{1,2},{3,4}}D.inta[3][2]={{1,2},{3,4}}以下不能正确赋值的是。A.chars1[10];s1="test";B.chars2[]={’t’,’e’,’s’,’t’}C.chars3[20]="test";D.chars4[4]={’t’,’e’,’s’,’t’}下面程序段运行时输出结果是。chars[18]="abook!";printf("%.4s",s);A.abook!B.abook!C.aboD.格式描述不正确,没有确定输出下面程序段运行时输出结果是。chars[12]="Abook";printf("%d\n",strlen(s));A.12B.8C.7D.6在执行inta[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是。A.4B.1C.2D.5读程序写结果#includevoidmain(){inta[8]={1,0,1,0,1,0,1,0},i;for(i=2;i<8;i++)a[i]+=a[i-1]+a[i-2];for(i=0;i<8;i++)printf("%5d〞,a[i]);}#includevoidmain(){floatb[6]={1.1,2.2,3.3,4.4,5.5,6.6},t;inti;t=b[0];for(i=0;i<5;i++)b[i]=b[i+1];b[5]=t;for(i=0;i<6;i++)printf("%6.2f〞,b[i]);}#includevoidmain(){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("k=%d\n",k);}voidmain(){inta[3][3]={1,3,5,7,9,11,13,15,17};intsum=0,i,j;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];}printf("sum=%d",sum);}voidmain(){inta[4][4],i,j,k;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=i-j;for(i=0;i<4;i++){for(j=0;j<=i;j++)printf("%4d",a[i][j]);printf("\n");}}#includemain(){inti,s;chars1[100],s2[100];printf("inputstring1:\n");gets(s1);printf("inputstring2:\n");gets(s2);i=0;while((s1[i]==s2[i])&&(s1[i]!='\0'))i++;if((s1[i]=='\0')&&(s2[i]=='\0'))s=0;elses=s1[i]-s2[i];printf("%d\n",s);}输入数据aidandvoidmain(){charch[3][5]={"AAAA","BBB","CC"};printf("\"%s\"\n",ch[1]);}#inlcude#includevoidmain(){charstr[10][80],c[80];inti;for(i=0;i<10;i++)gets(str[i]);strcpy(c,str[0]);for(i=1;i<10;i++)if(strlen(c)s[p]);}输入20个数,输出他们的平均值,输出与平均值之差的绝对值最小的数组元素。#includevoidmain(){floata[20],pjz=0,s,t;inti,k;for(i=0;i<20;i++){scanf("%f〞,&a[i]);pjz+=;}s=fabs(a[0]-pjz);t=a[0];for(i=1;i<20;i++)if(fabs(a[i]-pjz)voidmain(){/*str1表示原来的一行文字,str2表示删除指定字符后的文字*/charstr1[100],str2[100];charch;inti=0,k=0;printf("pleaseinputansentence:\n〞);gets(str1);scanf("%c",&ch);for(i=0;(2);i++)if(str1[i]!=ch){str2[(3)]=str1[i];k++;}str2[(4)]='\0';printf("\n%s\n",str2);}找出10个字符串中的最大者。#include#include#defineN10voidmain(){charstr[20],s[N][20];inti;for(i=0;i0)strcpy(str,s[i]);printf("Thelongeststringis:\n%s\n",str);}*人有四3分的邮票和三5分的邮票,用这些邮票中的一或假设干可以得到多少种不同的邮资?main(){staticinta[27];inti,j,k,s,n=0;for(i=0;i<=4;i++)for(j=0;j<=3;j++){s=(1);for(k=0;a[k];k++)if(s==a[k])(2);if((3)){a[k]=s;n++;}}printf("%dkind:",n);for(k=0;(4);k++)printf("%3d",a[k]);}求矩阵的马鞍点。马鞍点即它的值在行中最大,在它所在的列中最小。#defineN10#defineM10main(){inti,j,k,m,n,flag1,flag2;inta[N][M],ma*;printf("\n输入行数n:");scanf("%d",&n);printf("\n输入列数m:");scanf("%d",&m);for(i=0;ima*)ma*=a[i][j];for(j=0;j方法
如下:首先2是素数,凡2的倍数都不是素数,于是把这些数从数表中筛去,2以后没有被筛去的第一个数是3,然后把3的倍数都从数表中筛去,3以后没被筛去的第一个数是5,然后把5的倍数都从数表中筛去。如此下去,直到遇到*数K〔≤N〕,其后没有数可筛选为止,这时保存下的未被筛去的数就是2到N的素数。求一个3×3矩阵两条对角线上元素之和〔每个元素只加一次〕。打印如下形式的辉三角形11112113311464115101051输出前10行,从0行开场,分别用一维数组和二维数组实现。有一个二维数组整型数组中,每一行都有一个最大值,编程求出这些最大值以及它们的和。把一个二维实型数组a按照第0列的元素进展排序〔由小到大排序,用起泡法〕。例如:如果a[i][0]大于a[i+1][0],则i行与i+1行中所有元素都要进展对换。编程序将一个字符串的前N个子字符送到一个字符型数组中去,然后再加上一个'\0'〔不允许使用strcpy(str1,str2,n)函数〕。将字符数组A中下标为双号〔0,2,4,6,8...)的元素值传给另一个字符数组B,然后将B数组的元素按逆序输出。有一行字符,统计其中的单词个数〔单词之间以空格分隔〕,并将每一个单词的第一个字母改为大写。有N个国家名,要求按字母先后顺序排列〔用起泡排序法〕后输出。有17个人围成一圈〔编号为0~16〕,从第0号的人开场从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。问此人原来的位置是多少号?编程产生如下形式的方阵。1222221312221433121443331444331514431555141555551要求:不允许使用键盘输入语句和静态赋值语句,尽量少用循环。打印所有不超过n〔n<256〕的其平方具有对称性的数〔也称回文数〕。求N个数中的最大值,最大值出现的次数,然后求出次大值〔次大值一定存在〕。找出M×N数组中所有不相邻元素,并求出它们的和〔相邻的数:前一个是偶数,后一个是素数〕。圆盘上有如以下图所示的二十个数,请找出哪四个相邻数之和为最大,并指出它们的起始位置及最大和的值。100个自然数1~100,我们取1,2,3,4时,我们可将其排成一圈使每两个数之和都是素数,即→1→2→3→4→,问1~100连续取n个数,即1~n〔≤100〕能满足上述要求的最大的n是多少?打印魔方阵。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如:三阶魔方阵为816357492要求打印由1到的自然数构成的魔方阵。提示:魔方阵中各数的排列规律如下:⑴将"1”放在第一行中间一列;⑵从"2”开场直到n×n为止各数依次按以下规则存放:每一个数存放的行比前一个数的行数减1,列数加1;⑶如果上一个数的行数为1,则下一个数的行数为n〔指最下一行〕;⑷当一个数的列数为n,下一个数的列数应为1,行数减1;⑸如果按上面规则确定的位置已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。统计一个单位职工的年龄,要求把一样年龄最多的那个年龄找出来〔可能有几个这样的年龄〕,并统计出现的次数。n×n的拉丁方阵的每行、每列均为自然数的一个全排列,每行〔列〕上均无重复数。如n=5时,5×5的一种拉丁方阵可以为:1524323451415325231434125该数组的第一行1,5,2,4,3用程序自动生成,但产生的第一行不一定非得是1,5,2,4,3,第一行填写完毕后,即以第一行作为全方阵索引,即假设第一行中的第i列的元素值为j,则j在各行中的列号即为从第一行中元素值为i的那一列开场读出的n个自然数〔到行末则从行头接着读〕,例如第一行第2列的元素值为5,则从元素值为2的那一列〔第3列〕开场读出2,4,3,1,5,这就是元素5在各行中的列标号。测试数据:①n=5②n=8第六单元函数选择题在C语言中,当函数调用时。A.实参和形参各占一个独立的存储单元B.实参和形参共用存储单元C.可以由用户指定实参和形参是否共用存储单元D.由系统自动确定实参和形参是否共用存储单元以下函数调用语句中实参的个数为。e*ce((v1,v2),(v3,v4,v5),v6);A.3B.4C.5D.6如果在一个函数的复合语句中定义了一个变量,则该变量。A.只在该符合语句中有效,在该符合语句外无效B.在该函数中任何位置都有效C.在本程序的原文件围均有效D.此定义方法错误,其变量为非法变量C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。A.float型B.int型C.long型D.double型C语言规定,函数返回值的类型是由。A.return语句中的表达式类型所决定B.调用该函数时的主调函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型决定在C语言程序中,以下描述正确的选项是。A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的调用均不可以嵌套D.函数的定义和函数的调用均可以嵌套以下表达中正确的选项是。A.全局变量的作用域一定比局部变量的作用域围大B.静态(static)类别变量的生存期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值8.以下程序的运行结果是:#includevoidsub(ints[],inty){staticintt=3;y=s[t];t--;}main(){inta[]={1,2,3,4},i,*=0;for(i=0;i<4;i++){sub(a,*);printf("%d",*);}printf("\n");}A)1234B)432lC)0000D)44449.以下程序的运行结果是:main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>O)fun(k-1);printf("%d",k);}A)5432lB)012345C)12345D)54321010.以下所列的各函数首部中,正确的选项是_______。A)voidplay(vata:Integer,varb:Integer)B)voidplay(inta,b)C)voidplay(inta,intb)D)Subplay(aasinteger,basinteger)11.当调用函数时,实参是一个数组名,则向函数传送的是_______。A)数组的长度B)数组的首地址C)数组每一个元素的地址D)数组每个元素中的值12.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。A)地址传递B)单向值传递C)由实参传给形,再由形参传回实参D)传递方式由用户指定13.以下函数值的类型是_______。fun(float*){floaty;y=3**-4;returny;}A)intB)不确定C)voidD)float读程序写结果fun1(inta,intb){intc;a+=a;b+=b;c=fun2(a,b);returnc*c;}fun2(inta,intb){intc;c=a*b%3;returnc;}main(){int*=11,y=19;printf("Thefinalresultis:%d\n",fun1(*,y));}int*;main(){*=5;cude();printf("%d\n",*);}cude(){*=*****;}#includelongfun(intn){longs;if(n==1||n==2)s=2;elses=n+fun(n-1);returns;}main(){printf("%ld\n",fun(4));}main(){inti;for(i=0;i<2;i++)add();}add(){int*=0;staticinty=0;printf("%d,%d\n",*,y);*++;y=y+2;}main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;returnm;}6.intt(int*,inty,intcp,intdp){cp=***+y*y;dp=***-y*y;}main(){inta=4,b=3,c=5,d=6;t(a,b,c,d);printf("%d%d\n",c,d);}7.fun(int*,inty,intz){z=***+y*y;}main(){inta=31;fun(5,2,a);printf("%d",a);}8.inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun
/
本文档为【C语言习题全集+答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索