




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
语言程序设计习题参照答案习题1一、判断题1.在计算机中,小数点和正负号都有专用零件来保存和表示。2.二进制是由0和1两个数字构成的进制方式。3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。4.在整数的二进制表示方法中,0的原码、反码都有两种形式。5.有符号数有三种表示法:原码、反码和补码。6.常用字符的ASCII码值从小到大的摆列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。解:1.F
2.T
3.T
4.T
5.T
6.T二、单项选择题1.在计算机中,最合适进行数值加减运算的数值编码是。A.原码B.反码C.补码D.移码2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的进制数。
ASCII码为十A.112
B.120
C.121
D.1223.对于ASCII码,在计算机中的表示方法正确地描绘是A.使用8位二进制数,最右侧一位为1B.使用8位二进制数,最左侧一位为1C.使用8位二进制数,最右侧一位为0D.使用8位二进制数,最左侧一位为04.设在机器字长4位,X=0111B,Y=1011B,则以下逻辑运算中,A.X∧Y=1000B.X∨Y=1111C.X⊕Y=00115.以下表达中正确的选项是()。A.高级语言就是机器语言
。正确的选项是___________。D.Yˉ=1000B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接鉴识并履行的程序C.C语言由于拥有汇编语言的一些特色,因此是汇编语言的一种D.C源程序经过编译、连结,若正确,履行后就能获得正确的运转结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将(A.生成可履行文件B.生成目标文件C.输出运转结果D.自动保存源文件
)。7.以下表达中不正确的选项是()。C程序的履行从main函数开始,因此main函数必然放在程序最前面函数可以带参数,也可以不带参数。每个函数履行时,按函数体中语句的先后序次,挨次履行每条语句解:1.C2.C3.D4.B5.B6.B7.B三、填空题1.()10=()=()=()16282.(.10111)2=()8=()16=()103.输入三个数,计算并输出三个数的和与三个数的乘积。程序以下:#include<>voidmain(){inta,b,c,s,z;printf("Pleaseinputabc:\n");s=a+b+c;printf("%d\n",s);}*4.输入三角形三条边的边长,计算并输出三角形的面积。依据三条边的边长,计算三角形面积的公式以下:面积s(sx)(sy)(sz)xyz此中s2程序以下:#include<>#include<>voidmain(){doublex,y,z,s,dime;scanf("%lf%lf%lf",&x,&y,&z);dime=sqrt(s*(s-x)*(s-y)*(s-z));}解:1.2.3.scanf("%f%f%f",&a,&b,&c);
z=a*b*c;
printf("%f",z);4.s=(x+y+2)/2;
printf("%f",dim);四、编程题1.模拟例,编程序在屏幕上显示:*MerryChristmas!HappyNewYear!*解:#include<>voidmain(){printf("*\n");printf("
MerryChristmas!\n");printf("
HappyNewYear!\n");printf("*\n");}2.模拟例编程,输入一个整数,计算这个数的平方。解:#include<>voidmain(){inta,z;printf("请输入一个整数:\n");scanf("%d",&a);z=a*a;printf("%d*%d=%d\n",a,a,z);}*3.模拟例编程,输入两个数后,输出此中较小值。解:#include<>floatmin(floatx,floaty){floatm;if(x<y)m=x;elsem=y;returnm;}voidmain(){floata,b,c,mindata;printf("请输入二个数:\n");scanf("%f%f",&a,&b);mindata=min(a,b);printf("较小数:%f\n",mindata);}*4.模拟例编程,输入a、b后,输出一元一次方程ax+b=0的解。解:#include<>voidmain(){floata,b,x;printf("请输入a、b:\n");scanf("%f%f",&a,&b);x=-a/b;printf("x=%f\n",x);}*5.模拟例编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。解:#include<>voidmain(){floatr,h,s,v;printf("Pleaseinputrandh:\n");scanf("%f%f",&r,&h);v=*r*r*h;printf("V=%f\n",v);}习题2一、判断题1.任何变量都必然要定义其种类。2.C语言的double种类数据在其数值范围内可以表示任何实数。3.C语言的任何种类数据在计算机内都是以二进制形式储蓄的。4.isdigit(‘5’)的结果为0。5.printf函数中格式符“%c”对应的参数只好是字符种类。6.按格式符“%d”输出float种类变量时,截断小数位取整后输出。7.在C语言程序中,ABC与abc是两个同样的变量。8.scanf函数中的格式符“%d”不可以用于输入实型数据。9.格式符“%f”不可以用于输入double种类数据。10.当格式符中指定宽度时,输出的信息完满取决于所指定的宽度。解:(1)T(2)F(3)T(4)F(5)F(6)F(7)F(8)T(9)T(10)F二、指出以下各项中哪些是C语言中的常量,并指出其种类10,150007–0x3dπ1e0e1o7o8‘x’‘xo’sin(3)0xf16‘\a’‘\009’+2‘’‘a’+20x100h012810L解:合法的C常量有:整型常量:007–0x3d0xf1610L实型常量:1e0+2字符型常量:‘x’‘\a’‘’三、指出以下各项中哪些是C语言中的用户表记符x_1X_2e2-e2sizeofIF解:C的用户表记符有:next_IF
Highcountsum_12x_1X_2sum_12
printfInt_123#High
βnumberNO1:e2count
3DS$23doubleInt
i/jnext_fornumber四、单项选择题1.C语言中,char型数据在内存中的储蓄形式是(A.原码B.反码C.补码2.如有定义语句“charc='\72';”则变量c()。A.包含1个字符B.包含2个字符C.包含
)。3个字符
D.ASCII码D.定义不合法3.C语言中的基本数据种类包含()。A.整型、实型、逻辑型C.整型、逻辑型、字符型4.设c1、c2为字符型变量,履行语句“A↙,c1和c2的值分别为()。
B.整型、实型、字符型D.整型、实型、逻辑型、字符型c1=getchar();c2=getchar();”时,从键盘输入A.都是‘A’B.c1是‘A’,c2未输入C.c1未输入,c2是‘A’D.c1是‘A’,c2是‘\n’5.a、b是整型变量,履行语句“scanf("a=%d,b=%d",&a,&b);”,使a和b的值分别为1和2,正确的输入是()。A.12B.1,2C.a=1,b=2D.a=1b=26.设c为字符型变量值为‘A’,a为整型变量值为97,履行语句“putchar(c);putchar(a);”后,输出结果为()。A.Aa
B.A97
C.A9
D.aA7.已知字母
A的
ASCII码值为
65,以下语句段的输出结果是(
)。charc1='A',c2='Y';printf("%d,%d\n",c1,c2);A.输出格式非法,输犯错误信息B.65,90C.A,YD.65,898.若要使用输入语句“scanf("%4d%4d%10f",&i,&j,&x);”,为12,为x输入,则正确的输入形式是()。A.–↙B.–1012↙C.–.67↙D.–10,12,↙
i输入-
10,为
j输入9.能正确地定义符号常量的是()。A.#definen=10B.#definen10
C.#definen10;
D.#DEFINEN1010.在C语言中,int、char、shortA.由用户自己定义B.均为
三各样类数据在内存中所占的字节数()。2个字节C.是随意的D.由机器字长决定解:(1)D
(2)A
(3)B
(4)D
(5)C
(6)A
(7)D
(8)B
(9)B
(10)D五、填空题1.charch='$';floatx=;语句“printf("%c%–\\n",ch,x);”的输出结果是解:$\n2.inti=123;floatx=–;语句“printf("i=%5dx=%\n",i,x);”的输出结果是解:i=123x=3.charc='a';inta=65;语句“putchar(c+1);putchar(a);”的输出结果是解:bA4.inta=98;语句“printf(“%d,%c,%o,%x”,a,a+1,a+2,a+3);”的输出结果是解:98,c,144,655.intk;floatf;语句“scanf(“%3d%*4d%6f”,&k,&f);”履行时输入.43↙则k=,f=。解:k=123f=6.使用pow()函数时,程序的开头必然写一条预办理命令:解:#include<>5.填空题。
。。
。
。。(1)inti=123,j=45;函数
printf("%d,%d\n",i,j);
的输出结果是
。解:123,45(2)inti=123;floatx=;语句printf("i=%5dx=%7.4f\n",i,x);的输出结果是。解:i=123x=(3)floatalfa=60,pi=3习题3一、依据以下数学式,写出C的算术表达式。21021abcd(a2b3)y43.5x6e52tan|sin(x)|cd1xa2bcd224解:-(a+b)×y的C表达式:-(a*a+b*b)*pow(y,4)2102的C表达式:(sqrt(2)+10*10)/(pow(tan(x),-1)+tan1x|sin(x)|3.5的C表达式:sqrt(pow(fabs(sin(x)),)x6e5的C表达式:pow(x,6)-exp(5)abcd
的C表达式:2*a*b+c+d)/(a+2*b-(c+d)/c/d)a2b
cdcd二、依据要求,写出以下C的表达式。1.写出int种类变量x为“奇数”的表达式。解:x%2==12.Int种类变量x、y、z,写出描绘“x或y中有且仅有一个小于z”的表达式。解:x<z&&y>=z||x>=z&&y<z3.将double种类变量y保存四位小数的表达式。解:(int)(y*10000+/4.为变量s赋值:取变量x的符号,取变量y的绝对值。解:s=(x>=01:-1)*(y>=0y:-y)5.条件“-5≤x≤3”所对应的C逻辑表达式。解:-5<=x&&x<=36.a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b能否为同一字母(不划分大小写)的逻辑表达式解:a+32==b或b-a==321:07.int种类变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。解:a%10==b/10&&a/10==b%108.写出判断某个人是不是成年人(年纪大于21),且不是老年人(年纪大于65)的逻辑表达式。解:y>21&&y<=659.写出取变量a、b、c中最大值的条件表达式。解:(a>ba:b)>c(a>ba:b):c10.若字符变量ch为小写字母,则将其变换为对应的大写字母。解:ch=ch>='a'&&ch<='z'ch-32:ch三、单项选择题1.设intx=3,y=4,z=5;,以下表达式中值为A.'x'&&'y'B.x<=yC.x||y+z&&y
0的是()。–zD.!((x<y)&&!z||1)2.已知A.0
x=10,ch='A',y=0;,则表达式“x>=y&&ch<'B'&&!y”的值是(B.1C.“假”D.“真”
)。3.判断char型变量A.'0'<=c<='9'
c为数字字符的正确表达式为(B.'0'<=c&&c<='9'C.c>='0'||c<='9'
)。
D.c>=0&&c<=94.以下运算符中,优先级最低的是()。A.:B.&&C.==D.*=5.如有条件表达式“xa++:b--”,则以下表达式中()等价于表达式A.x==0B.x!=0C.x==1D.x!=16.有定义intk=4,a=3,b=2,c=1;,表达式“k<ak:c<bc:a”的值是(A.4B.3C.2D.1
x。)。7.履行以下程序段后,变量a,b,c的值分别是()。intx=10,y=9,a,b,c;a=(--x==y++)--x:++y;b=x++;c=y;A.a=9,b=9,c=9B.a=8,b=8,c=10C.a=9,b=10,c=9D.a=1,b=11,c=108.有定义inta=9;,语句“a+=a–=a+a;”履行后,变量的值是()。A.18B.9C.–18D.–99.设x和y均为int型变量,则语句“x+=y;y=x–y;x–=y;”的功能是(A.把x和y按从小到大摆列B.把x和y按从大到小摆列
)。C.无确立结果
D.互换
x和
y中的值10.有定义doublex=1,y;,表达式“y=x+3/2”的值是()。A.1B.2C.D.11.设有定义intx;doubley;,则以下表达式中结果为整型的是(A.(int)y+xB.(int)x+yC.int(y+x)D.(double)x+y
)。12.设有整型变量x,以下说法中,错误的选项是()。A.“5.0”不是表达式B.“x”是表达式C.“!x”是表达式D.“sqrt(x)”是表达式解:(1)D(2)B(3)B(4)D(5)B(6)D(7)B(8)C(9)D(10)C
(11)A
(12)A四、填空题。1.设floatx=,y=;inta=7;,表达式解:2.设intx=2,y=3;,履行语句“解:103.设intx=17,y=5;,履行语句“
x+a%3*(int)(x+y)%2/4x*=x+y”后x的值为x%=x–y”后x的值为
值为
。
。
。为
解:54.设inta=6,b=4,c=2;,表达式!(a-b)+c-1&&b-c/2的值为。解:15.设inta=2,b=4,x,y;,表达式!(x=a)||(y=b)&&!的值为。解:06.判断变量a、b能否绝对值相等而符号相反的逻辑表达式为解:a==-b7.判断变量a、b中必有且只有一个为0的逻辑表达式为。解:a*b==0&&a+b!=08.设intm=2,n=2,a=1,b=2,c=3;履行语句d=(m=a==b)&&(n=b>c);后,m和。解:m为0,n为29.设inta=2;,表达式“a%2!=0”的值为。解:010.设charc='y';,表达式“c>='a'&&c<='z'||c>='A'&&c<='Z'”的值为解:111.写出与代数式(x+2)ex+2对应的C表达式。解:(x+2)*exp(x+2)12.设inta=2;履行语句a=3*5,a*4;后a的值为。解:15
。n的值分别。五、写出以下程序的输出结果。1.#include<>voidmain(){unsignedk,n;scanf("%u",&n);3c.3f输入矩形的边长,求矩形面积。解:#include<>voidmain(){doublea,b,s;printf(“请输入矩形的长,宽\n”);scanf(“%lf,%lf”,&a,&b);s=a*b;printf(“矩形面积=%f\n”,s);}已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入。:#include<>voidmain(){inta,d,n,sum;printf(“请输入等差数列的首项公差项数\n”);scanf(“%d%d%d”,&a,&d,&n);sum=a*n+n*(n-1)*d/2;printf(
“sum=%d\n”,sum);}9.编写程序,将d天h小时解:#include<>
m分钟换算成分钟,输入
d、h、m,输出换算结果。voidmain(){intd,h,m,t;printf(“请输入天
小时分钟\n”);scanf(“%d%d%d”,&d,&h,&m);t=d*24*60+h*60+m;printf(“%d天%d小时%d分钟=%d分钟\n”,d,h,m,t);}10.编写程序,求出给定半径r的圆以及内接正n边形的面积,输出计算结果。r和n的值由键盘输入。解:#include<>#include<>#definePIvoidmain(){doubler,s1,s2;intn;printf(“Inputrn\n”);scanf(“%lf%d”,&r,&n);s1=PI*r*r;s2=n/*r*r*sin(2*PI/n);printf(“圆面积=%f,正内接%d边形面积=%f\n”,s1,s2);}习题4一、单项选择题1.以下语句将小写字母变换为大写字母,此中正确的选项是()。A.if(ch>='a'&ch<='z')ch=ch-32;B.if(ch>='a'&&ch<='z')ch=ch-32C.ch=(ch>='a'&&ch<='z')ch-32:'';D.ch=(ch>'a'&&ch<'z')ch-32:ch
;;2.以下各语句中,可以将变量u、s中最大值赋给变量t的是()。A.if(u>s)t=u;t=s;B.t=s;if(u>s)t=u;C.if(u>s)t=s;elset=uD.t=u;if(u>s)t=s;3.假定变量x、k都已定义,以下语句片段中,无语法错误的选项是()。A.switch(x){casex>=90:
putchar('A');casex<60:
putchar('E');}B.switch(x){case1+2:k='A';defualt:k='E';case2*4:k='B';}C.switch(x){case2+x:k=x-2;case3*x:k=x+3;default:k=0;}D.switch(x){case:k=*x;case:k=8*x;default:k=0;}*4.与语句while(!s)中的条件等价的是()。A.s==0B.s!=0C.s==1D.s=05.以下语句中,哪一个可以输出26个大写英文字母()。A.for(a='A';a<='Z';printf("%c",++a));B.for(a='A';a<'Z';a++)printf("%c",a);C.for(a='A';a<='Z';printf("%c",a++));D.for(a='A';a<'Z';printf("%c",++a));6.判断下边的while循环体的履行次数()。i=0;k=10;while(i=8)i=k––;A.8次B.10次C.2次D.无数次解:(1)B(2)B(3)B(4)A(5)C(6)D二、写出以下程序的输出结果1.#include<>voidmain()*{*charx;***intn=0,k=0;*****0xyzwhile((x=getchar())!='#'){c*******x)(ss2s(snF1x01In2In3In4Inf(x)0\n”);x010-110-210-3是礼拜几信息查3.程序结束x01printf(“请输入年份:\n”);scanf(“%d”,&year);printf(“请选择功能:\n”);scanf(“%d”,&number);if(number==1){year=legal(year);leapyear(year);}
***************y)(s*****z).3f*2*12*1111n前40°1x11y1x0046y-ns13102!*4!.....2xy2年信息查问y2.元旦f(x,y)x00xyx0y0xyx0y0if(number==2){week=judgeweeknumber(year);judgeweekchinese(week);}if(number==3)return;}intlegal(inty){if(y<0)do{printf(“请从头输入一个年份:”);scanf(“%d”,&y);}while(y<0);returny;}voidleapyear(inty){if(y%4==0&&y%100!=0||y%400==0)printf(“%d是闰年\n”,y);elseprintf(“%d不是闰年\n”,y);}intjudgeweeknumber(inty){intweek;week=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;returnweek;}voidjudgeweekchinese(intweek){switch(week){case0:printf(“礼拜天”);break;case1:printf(“礼拜一”);break;case2:printf(“礼拜二”);break;case3:printf(“礼拜三”);break;case4:printf(“礼拜四”);break;case5:printf(“礼拜五”);break;case6:printf(“礼拜六”);break;}}*14.输入n、x,计算xn输出。要求定义一个递归函数计算xn。解:#include<>doublemypow(doublex,intn){doubley=1;if(n>0)return(x*mypow(x,n-1));elseif(n<0)return(1/x*mypow(x,n+1));elsereturn1;}voidmain(){doublex;intn;printf(“请输入xn:\n”);scanf("%lf%d",&x,&n);printf("%f\n",mypow(x,n));}*15.数列的第
1、2项为
1,今后各项为前两项之和。编制求数列中任何一项值的递归函数。解:此数列为
1、1、2、3、5、8、13
。#include<>int
f(intn){if(n==1||n==2)return(1);elsereturn(f(n-1)+f(n-2));}voidmain(){intn;while(scanf("%d",&n),n<0);printf("数列第%d项为:%d",n,f(n));}习题5一、单项选择题1.以下能正确立义一维数组
a的语句是(
)。A.inta(10);
B.intn=10,a[n];C.intn;scanf("%d",&n);
D.#definen10inta[n];2.如有定义语句“inta[10]A.a[10/2–5]
;”则以下对B.a[10]
inta[n];a中数组元素正确引用的是(C.a[]
)。D.a(1)3.能对一维数组正确初始化的语句是(A.inta[6]={6*1};C.inta[6]={};
)。B.inta[6]={1,,,3};D.inta[6]=(0,0,0);4.以下能正确立义二维数组的语句为(A.inta[][];B.inta[][4]
;
)。
C.inta[3][]
;
D.inta[3][4]
;5.如有数组定义语句“A.a[4][1]
inta[4][5];”,则对B.a[2,1]
a中数组元素的正确引用是()。C.a[4][5]D.a[4–1][5–5]6.以下能对二维数组a进行正确初始化的语句为()。A.inta[2][]={{1},{4,5}};B.inta[2][3]={1,2,3,4,5,6,7};C.inta[][]={1,2,3,4,5,6};D.inta[][3]={1,2,3,4,5};7.以下对字符数组s的初始化不正确的选项是()。A.chars[5]="abc";B.chars[5]={'a','b','c','d','e'};C.chars[5]="abcde";D.chars[]="abcde";8.以下程序段的运转结果为(
)。chars[]="ab\0cd";printf("%s",s);A.ab0
B.ab
C.Abcd
D.abcd9.以下数组
s中所寄存字符串的长度为(
)。chars[]="a\128b\\\tcd\xdg\n";A.9
B.10
C.11
D.1810.有数组定义语句“
chara[20];”,则正确的输入语句为(
)。A.scanf("%s",&a);C.gets(a[20]);
B.scanf("%s",a[]);D.gets(a);11.下边程序履行后的正确输出项是(
)。#include<>voidswap1(inta[]){intt;t=a[0];a[0]=a[1];
a[1]=t;}voidswap2(inta,intb){intt;t=a;a=b;
b=t;}voidmain(){intx[2]={1,5};inty[2]={1,5};swap1(x);swap2(y[0],y[1]);printf("x:%d%d\n",x[0],x[1]);printf("y:%d%d\n",y[0],y[1]);}A.x:51B.x:15C.x:15D.x:51y:15y:51y:15y:5112.履行以下程序后的输出结果是()。#include<>charf(chars[],intn){return(s[n]);}main(){chara[]="ABCD";printf("%c",f(a,2)+1);}A.DB.CC.BD.A13.履行以下程序后的输出结果是()。#include<>intf(inta[],intn){if(n==0)returna[0];elsereturnf(a,n-1)+a[n];}main(){intx[]={1,3,5,7,9};printf("%d\n",f(x,3));}A.1B.4C.9D.16解:二、填空题1.构成数组的各个元素必然拥有同样的。解:数据种类2.如有定义“inta[10]={1,2};”,则数组元素a[2]的值为。解:03.如有定义“inta[3][4];”,则数组a行下标的上限为,列下标的下限为。解:204.C语言程序在履行过程中,不检查数组下标能否。解:越界5.C语言中,二维数组元素在内存中的寄存序次是。解:按行寄存6.如有定义“inta[3][4];”,则在数组元素a[2][2]前有个元素。解:107.若用数组名作为函数调用的实参,传达给形参的是。解:数组第一个元素的地点8.如有定义语句“chars1[]="abc",s2[]={'a','b','c'};”,则数组s1有个元素,数组s2有个元素。解:43三、写出以下程序的输出结果1.#include<>voidmain(){inta[6]={2,3,7,1,9,6},i,j,k,m;for(i=5;i>=0;i--){k=a[5];for(j=4;j>=0;j--)a[j+1]=a[j];a[0]=k;for(m=0;m<6;m++)printf("%2d",a[m]);putchar('\n');}}解:6237199623711962377196233719622371962.#include<>voidmain(){intn[3],i,j,k;for(i=0;i<3;i++)n[i]=0;k=3;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]+=n[i]+1;for(i=0;i<3;i++)printf("%5d",n[i]);}解:1314173.#include<>voidmain(){inta[6][6],i,j;for(i=1;i<6;i++)for(j=1;j<6;j++)a[i][j]=(i/j)*(j/i);for(i=1;i<6;i++){for(j=1;j<6;j++)printf("%3d",a[i][j]);printf("\n");}}解:10000010000010000010000014.#include<>voidmain(){intx[10];inti,m=1;voidsort(inta[],intn);for(i=0;i<10;i++){m=-m;x[i]=m*i;}sort(x,10);for(i=0;i<10;i++)printf("%3d",x[i]);}voidsort(inta[],intn){inti,j,t;for(i=1;i<10;i++){t=a[i];for(j=i-1;j>=0;j--)if(t>a[j])break;elsea[j+1]=a[j];a[j+1]=t;}}解:-8-6-4-20135795.#include<>voidmain(){chars1[]="aex",s2[]="dpsy",s[10];inti1,i2,i,flag;i1=i2=i=flag=0;while(1){if(s1[i1]=='\0'){flag=1;break;}if(s2[i2]=='\0'){flag=2;break;}if(s1[i1]<s2[i2])s[i++]=s1[i1++];elses[i++]=s2[i2++];}if(flag==1)while(s2[i2]!='\0')s[i++]=s2[i2++];elsewhile(s1[i1]!='\0')s[i++]=s1[i1++];s[i]='\0';puts(s);}解:adepsxy6.#include<>voidmain(){charh[11];intd[10];inti,n=0,x=1;gets(h);统计在一个字符串中各元音字母(a、e、i、o、u)出现的次数。#include<>voidmain(){chars[80];inti,
;printf("inputastring:\n");gets(s);for(i=0;if(
;i++))a[0]++;elseif(s[i]=='e'||s[i]=='E')a[1]++;elseif(s[i]=='i'||s[i]=='I')a[2]++;elseif(s[i]=='o'||s[i]=='O')a[3]++;elseif(s[i]=='u'||s[i]=='U')a[4]++;printf("AEIOU\n");for(i=0;i<5;i++)}解:①a[5]②s[i]!='\0'③s[i]=='a'||s[i]=='A'④printf(“%5d”,i)五、编程题1.在数组x的10个数中求均匀值v,找出与v相差最小的数组元素。解:#include<>#include<>voidmain(){doublex[10],v,d;inti;for(i=0,v=0;i<10;i++){scanf("%lf",&x[i]);v+=x[i];}v=v/10;d=x[0];for(i=1;i<10;i++)if(fabs(d-v)>fabs(x[i]-v))d=x[i];printf("均匀值:%-8.2f,与均匀值近来元素:%-8.2f\n",v,d);}2.输入n(n≤20)个数放在一维数组中,找出此中最小的数,将它与数组最前面的元故旧换后输出这些数。解:#include<>voidmain(){inti,k,temp,n,a[20];printf("Inputn:\n");scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(k=0,i=1;i<n;i++)if(a[i]<a[k])k=i;temp=a[0];a[0]=a[k];a[k]=temp;for(i=0;i<n;i++)printf("%d",a[i]);}3.输入一个字符串,统计此中数字字符出现的次数。解:#include<>voidmain(){chars[80];inti,n=0;gets(s);for(i=0;s[i]!='\0';i++)if(s[i]>='0'&&s[i]<='9')n++;printf("%s中包含%d个字符\n",s,n);}4.设有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。问在第
20年时,共有多少头牛分别输出从第
1年至第
20年每年的母牛数。解:#include<>#defineN20voidmain(){intx[N+1]={1},i;0’0’00’0’0’0’0’.02f’4.1f12deldeldel++.2f.2f8.2f-8.2f-8.2f0’0’deldel8.2f.0f,"Feb.","Mar.","Apr.","May.","Jun.","July.","Aug.","Sept.","Oct.","Nov.","Dec."};puts(p[m-1]);}voidmain(){intno;printf("请输入月份(1--12)\n");scanf("%d",&no);if(no>=1&&no<=12)findmonth(no);elseprintf("数据输入错误!\n");}15.输入5个字符串,输出此中最长的字符串。解:#include""#include""voidmain(){
charstr[5][100],*p[5];inti,k;
ame);
B.printf("%s",&stu[1].name);C.printf("%s"
,stu[1].name[0]);
D.printf("%s",&stu[1].name[0]);*5.以下程序的输出结果是()。#include<>voidmain(){intx=1,y=2,z=3;structaa{inta;int*p;}s[]={4,&x,5,&y,6,&z};structaa*q=s+1;printf("%d\n",*(q–>p)++);}A.1B.2C.3D.46.有以下定义语句:structnode{intn;structnode*next;}x,y,*p=&x,*q=&y;则能将
y节点链接到
x节点以前的语句是(
)。A.=p
B.=q
C.=p
D.=q*7.以下程序的输出结果为()。#include<>voidmain(){structnode{intn;structnode*next;}a[4];inti;for(i=0;i<3;i++){(a+i)–>n=i+1;(a+i)->next=a+i+1;}(a+i)->next=a;printf("%d,%d\n",(a[1].next)->n,a[3].next->n);}A.1,2B.2,1C.1,3D.3,18.已成立一单向链表,指针变量p1指向链表中某一节点,p2指向下一节点,将p2所指节点从链表中删除并开释的语句为()。A.p1=p2;free(p2);B.p1–>next=p2–>next;free(p2);C.*=*;free(p2);D.p1=p2–>next;free(p2);9.已成立一单向链表,指针变量p1指向链表中某一节点,p2指向下一节点;指针变量p指向新申请节点,将p所指节点插入到链表中p1与p2之间的语句为()。A.p–>next=p2;p1–>next=p;B.p1–>next=p;p–>next=p2;C.p=p2;p1–>next=p;D.p1=p;p–>next=p2;10.若要利用下边的程序片段使指针变量p指向一个整型变量的储蓄单元则括号中需填入的内容是()。int*p;p=()malloc(sizeof(int));A.intB.*intC.&intD.int*解:(1)B(2)C(3)A(4)D(5)B(6)C(7)D(8)B(9)A(10)D二、写出以下程序的输出结果1.#include<>structst{intnum;charname[10];intage;}x[3]={{1,"zhang",19},{2,"li",20},{3,"wang",21}},*p=x;voidmain(){printf("%s,%d\n",(p+2)->name,(*p).age);}:wang,19*2.#include<>#include<>structs{inta[4];char*pa[4];}x,*p=&x;voidmain(){inti;chary[4][8]={"A","AB","ABC","ABCD"};for(i=1;i<4;i++)[i]=y[i];for(i=1;i<4;i++)[i]=strlen[i]);printf("%d,%d,%s\n",[1],++p->a[2],++p->pa[2]);}解:2,4,BC*3.#include<>structks{inta;int*b;}s[4],*p;voidmain(){intn=1,i;for(i=1;i<4;i++){s[i].a=n;s[i].b=&s[i].a;n+=2;}p=&s[0];p++;printf("%d,%d\n",(++p)->a,p->a);}解:3,14.#include<>structs{inta;floatb;char*c;};voidmain(){structsx={19,,"zhang"};structs*px=&x;printf("%d,%.1f,%s\n",,,;printf("%d,%.1f,%s\n",px->a,(*px).b,px->c);printf("%c,%s\n",*px->c-1,&px->c[1]);}解:19,,zhang19,,zhangy,hang三、程序填空题1.已知head指向一个单向链表,链表中每个节点包含整型数据域(data)和指针域(next)。以下函数
max求出链表中数据域值最大节点的地点,由指针s传回主调函数。#include<>structlink{intdata;structlink*next;};voidmain(){structlink*head,*q;structlink*max(structlink*);um=i+1;scanf("%lf",&a[i].x);}for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j].x<a[j+1].x){t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i<10;i++)printf("%d,%.3f\n",a[i].num,a[i].x);}5.有10个学生,每个学生的数据包含学号、姓名、三门课的成绩。数据从键盘输入,要求打印出每个学生的总分、三门课的总均匀成绩,以及总分最高的学生数据。解:#include""structstudent{charnum[6];um);scanf("%s",stu[i].name);for(j=0;j<3;j++)scanf("%d",&stu[i].score[j]);}printf(“姓名总分\n”);for(i=0;i<10;i++){sum=0;for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].avr=sum/;aver+=stu[i].avr;if(sum>max){max=sum;maxi=i;}printf(“%-8s%-7d\n”,stu[i].name,sum);}aver=aver/10;for(i=0;i<10;i++){printf("%8s%10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%7d",stu[i].score[j]);printf("%6.2f\n",stu[i].avr);}printf("均匀成绩是%5.2f\n",aver);printf("最好成绩的学生是%s,总分是%d\n",stu[maxi].name,max);}6.成立一个链表,每个结点包含:学号、姓名、性别、年纪。输入一个年纪,假如链表中的结点所包含的年纪等于此年纪,将此结点删除。解:#include""#define
NULL0#define
LENsizeof(structstudent)structstudent{charnum[6];
um,stu[i].name);scanf(“%c%d”,&stu[i].sex,&stu[i].age);sum=0;for(j=0;j<5;j++){scanf(“%f”,&stu[i].score[j]);sum+=stu[i].score[j];}stu[i].aver=sum/5;}for(i=0,j=0;i<n;i++)if(stu[i].sex==’w’)girl[j++]=stu[i];m=j;for(i=0;i<m-1;i++){k=i;for(j=i;j<m;j++)if(girl[j].aver>girl[k].aver)k=j;temp=girl[i];girl[i]=girl[k];girl[k]=temp;}for(i=0;i<m;i++){printf(“%10s%10s”,girl[i].num,girl[i].name);printf(“%2c%3d”,girl[i].sex,girl[i].age);for(j=0;j<5;j++)printf(
“%3.0f
”,girl[i].score[j]);printf(
“%3n.”0f,girl[i].aver);}}*8.输入不超出100个通信录数据(姓名、电话号码,电话号码为7位数字),要求输入通信录个数。将原7位的电话号码改为8位,规则是本来以2、4开头的号码的在前面加一位6,本来以1、5开头的号码的在前面加一位9,其余在原号码前面加一位8。输出办理后的通信录数据。解:#include<>#defineN100voidmain(){struct{charname[10],tel[9];}addr[N];inti,j,n;printf(请“输入通信录数:”);while(scanf(“%d”,&n),n>100);for(i=0;i<n;i++){scanf(“%s%s”,addr[i].name,addr[i].tel);addr[i].tel[8]='\0';if(*addr[i].tel==’2’||*addr[i].tel==’4’){for(j=6;j>=0;j--)addr[i].tel[j+1]=addr[i].tel[j];addr[i].tel[0]=’6’;}elseif(*addr[i].tel==’1’||*addr[i].tel=={for(j=6;j>=0;j--)addr[i].tel[j+1]=addr[i].tel[j];addr[i].tel[0]=’9’;
’5’)}else{for(j=6;j>=0;j--)addr[i].tel[j+1]=addr[i].tel[j];addr[i].tel[0]=’8’;}}printf(新“的通信录:n”);for(i=0;i<n;i++)printf(“%10s%10sn”,addr[i].name,addr[i].tel);}9.在一有序(设为升序)链表中查找某数(由键盘输入),假如存在则将它删除,假如不存在则将它按其大小序次插入到链表中。解:#include<>#include<>structlink{intdata;structlink*next;};structling*find(structlink*head,intx){structlink*p,*q,*s;if(head->data==x)head=head->next;elseif(x<head->data){s=(structlink*)malloc(sizeof(structlink));s->data=x;s->next=head;head=s;}else{q=head;p=head->next;while(p!=NULL){if(p->data==x){q->next=p->next;break;}elseif(x<p->data){s=(structlink*)malloc(sizeof(structlink));s->data=x;s->next=p;q->next=s;break;}p=p->next;}if(p==NULL){s=(structlink*)malloc(sizeof(structlink));s->data=x;s->next=NULL;q->next=s;}}returnhead;}*10.输入一英词句子(以“.”结束),输出此中所包含的英文字母,要求用链表达成,每一节点的数据成员寄存一个所出现的字母。解:#include<>#include<>structnode{charc;structnode*next;};voidmain(){structnode*head,*p,*q;charstr[81];inti=0;head=NULL;while((str[i]=getchar())!=’.’){if(str[i]>=A’&&’str[i]<=’Z’||str[i]>=’a’&&str[i]<=’z’){p=head;while(p!=NULL)if(p->c==str[i])break;else{q=p;p=p->next;}if(p==NULL){p=(structnode*)malloc(sizeof(structnode));p->c=str[i];p->next=NULL;if(head==NULL)head=p;elseq->next=p;}}i++;}p=head;while(p!=NULL){printf(“%2c->c);”,pp=p->next;}}*11.将一个链表按逆序摆列,马上本来链头看作新链表的链尾,而原链尾看作链头。解:#include<>structlink{intdata;structlink*n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件开发项目管理与质量控制流程手册
- 三农工作综合实施方案
- 农业产业化发展专项工作方案
- 应急救援项目可行性研究报告
- 垃圾焚烧发电发展模式
- 智能仓库物流
- 房地产项目投资可行性研究报告
- 高新技术企业研发团队建设与管理
- 软件工程流程与开发方法
- rdpac肿瘤复习测试卷含答案
- 新会计法下加强企业财会监督策略研究
- 人力资源社会保障宣传工作计划及打算
- 2024年秋儿童发展问题的咨询与辅导终考期末大作业案例分析1-5答案
- 广东省广州市2021年中考道德与法治试卷(含答案)
- 2024年贵州省公务员录用考试《行测》真题及答案解析
- 2024-2030年中国滑板车行业竞争策略及发展前景预测报告
- 学校军事化管理培训
- 丧葬费家庭协议书范文范本
- 中小学生德育工作指南2022版
- 通信工程建设标准强制性条文汇编(2023版)-定额质监中心
- JJF(浙) 1171-2019 原子荧光形态分析仪校准规范
评论
0/150
提交评论