程序设计基础习题及答案_第1页
程序设计基础习题及答案_第2页
程序设计基础习题及答案_第3页
程序设计基础习题及答案_第4页
程序设计基础习题及答案_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础习题参考答案【习题1 基本概念】一、简答题(在课本中寻找答案,略)1.1 C程序的基本结构包括哪些内容?1.2 如何定义标识符?1.3 输入格式、输出格式的组成包括哪些内容?1.4 C语言函数分为哪两类?1.5 计算表达式的值应该考虑哪些方面?1.6 上机调试程序的步骤如何?1.7 常量与变量的区别?1.8 C语言中的标识符的定义规则?1.9 变量为什么要“先定义,后使用”?1.10 字符常量'a'与字符串常量"a"有何区别?1.11 大小写字母转换的规则是什么?1.12 变量的具有哪三种属性?二、单项选择题1.13C语言中,int型数据在内存中

2、的存储形式是(D)。A)ASCII码 B)原码 C)反码 D)补码1.14下面四个选项中,均是不合法的用户标识符的选项是(C)。)BA 、x_0、do)float、1a0、_Y)x-y、goto、123)_123、tmp、CHAR1.15下列选项中不正确的常数的选项是(D)。)0x12F )-1.23E-2 )12.0 )03881.16下面正确的字符常量是(B)。)"a" )'' )"n" )"376"1.17下面正确的字符串常量是(C)。)'a' )'376' )"n&qu

3、ot; )3761.18表达式'A'+4*25.0-'b'的正确结果是(B)。)67 )67.0 )不确定 )67L1.19执行printf("%x",100);后的输出结果是(C)。)100 )0x100 )0X64 )641.20int型的-1在内存中的存储形式是(A)。)1111 1111 1111 1111)0000 0000 0000 0001)1111 1111 1111 1110)1000 0000 0000 00011.21存储字符串"'abc376"需要的字节数是(D)。)11 )13 )6 )7

4、三、判断并改错1.22 C程序执行的入口是main()函数,所以main函数必须放在程序的开头。错误:main函数可以放在程序的任何位置。并不限定在程序的开头。1.23 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。错误:不可以交叉出现,数据说明部分在执行语句部分的前面。1.24 编辑与编译不是一回事。错误:不是一回事。编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。1.25 scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。正确1.26 注释内容太多会影响程序的执行

5、效率。 错误:不会影响程序的执行效率。因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。1.27 所有的数学公式可以直接出现在源程序中。错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。四、编程题1.28 在屏幕上输出自己名字的拼音。提示:中文名字叫“张三”,对应的拼音为“Zhang San”,输出用printf()函数。1.29 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f26【习题2 运算符与表达式】一、计算题2.1 2.8+7%3*11%2/

6、4 (答案:2.8)2.2 5/2+5.0/2+7%6 (答案:5.5)2.3 a=12,a*=2+3 (答案:a=60)2.4 a=3,b=4,c=5,a+b>c&&b= =c (答案:0)2.5 3>5?3:5<8?25:40 (答案:25)2.6 设a=1,b=2,c=3,d=4,m=n=1,有表达式(m=a>b)&&(n=c>d),计算表达式后m,n的值?(答案:m=0,n=1)2.7设int b=7;float a=2.5,c=4.7;求下面表达式的值。 a+(int)(b/2*(int)(a+c)/2)%4 (答案:4.

7、5)二、单项选择题2.8若有代数式,则不正确的C语言表达式是(C)。A)x/b/c*y*8 B)8*x*y/b/c C)8*x*y/b*c D)x*y/c/b*82.9有如下类型说明:int k,a,b;unsigned long w=8;double x=2.9则以下不符合C语言语法的表达式是(A)。)x%(-3) )w*=-2)k=(a=6,b=4,a-b) )a*=a+=a-=(b=4)*(a=3)2.10有如下类型说明: float n; int m; 则以下能实现将n中的数值保留小数点后两位,第三位四舍五入的表达式是(B)。)n=(n*100+0.5)/100.0 )m=n*100+

8、0.5,n=m/100.0)n=n*100+0.5/100.0 )n=(n/100+0.5)*100.02.11设k=7,x=12;则下列表达式值为3的是(D)。)x%=(k%=5) )x%=(k-k%5))x%=k-k%5 )(x%=k)-(k%=5)2.12已知m=48,ch='a',n=0;则表达式(m>=n&&ch<'b'&&!n)的值是(B)。)0 )1 )真 )非02.13下面哪个式子在b为奇数时结果为假(C)。)a%2=1 )!(a%2=0) )!(a%2) )a%22.13执行printf("

9、%f",(x=3,y=5,x>y?1:1.5);后的输出结果是(D)。)语法错误 )1 )1.5 )1.5000002.14能表示条件0x100的表达式是(D)。)0<=x<=100 )x>=0,x<=100)0x100 )x>=0&&x<=1002.15判断char型变量ch为数字的正确表达式是(B)。)ch>="0"&&ch<="9" )ch>='0'&&ch<='9')'0'ch

10、'9' )ch>='0'|ch<='9'三、编程题(应用条件运算)2.16 输入一个整型成绩x,如果大于等于60分,输出“pass”,否则输出“fail”。提示:printf("%s",x>60?"pass":"fail");2.17输入一个年份y,如果是闰年,输出“y is a leap year”,否则输出“y is not a leap year.”提示:printf("%d is %s",y%4=0&&y%100!=0|y%4

11、00=0?"a leap year.":"not a leap year.");2.18输入三条边a,b,c,如果它们能构成一个三角形,输出“Yes”,否则输出“No”。提示:printf("%s",a+b>c&&a+c>b&&b+c>a?"Yes":"No");2.19输入三个数x,y,z,按从小到大的输出结果。提示:分别用max0,min0代表最大、最小值,mid0表示中间值。max0=(x>y?x:y)>z?(x>y?x:

12、y):z;max0=(x<y?x:y)<z?(x<y?x:y):z;mid0=x+y+z-max0-min0;2.20输入一个平面上的点坐标,判断它是否落在圆心(0,0),半径为1的圆内,如果在圆内,输出“Yes”,否则输出“No”。提示:分别用x,y代表平面上一个点。printf("%s",x*x+y*y<=0?"Yes":"No");2.21 自增、自减运算符的用法与运算规则示例。2.22 计算下列表达式。 (1) (2)提示:模仿例2.272.23 字母的大小写转换。2.24 计算圆柱体的体积V=r2h,

13、其中=3.14159。提示:模仿2.272.25 输入两个整数,输出其中最大者。提示:模仿P292.26 输入三个整数,输出其中最小者。提示: min(min(a,b),c); 2.27 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 参考源程序: main() float r,h,C1,Sa,Sb,Va,Vb; scanf("%f,%f",&r,&h); C1=2*3.14*r; Sa=3.14*r*r; Sb=4*Sa; Va=4*

14、3.14*r*r*r/3; Vb=Sa*h; printf("C1=%.2fn",C1); printf("Sa=%.2fnSb=%.2fnVa=%.2fnVb=%.2fn",Sa,Sb,Va,Vb); 【习题3 控制流】3.1编程实现,输入一个整数,判断它是否为偶数,并显示相应的信息。提示:x代表输入的整数,if(x%2=0) printf("neven");else printf("nodd");3.2 编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。提示:x,y代表平面坐标,if(x*

15、x+y*y=1) printf("nYes");else printf("nNo");3.3 编程实现,输入一个成绩等级(A-E),显示相应的百分制成绩段。 A: 90-100 B: 80-89 C: 70-79 D: 60-69 E: <60提示:char grade; if(grade='A') printf("n90-100"); else if(grade='B') printf("n80-89"); .3.4 写出下面程序的运行结果: #include<stdi

16、o.h> main() int a=-1,b=1,c=5; switch(a>0) case 1:switch(b-2<0) case 1:printf("&");break; case 2:printf("*");break; case 0:switch(c= =5) case 0:printf("!");break; case 1:printf("#");break; default:printf("%"); default:printf("")

17、;运行结果:&#3.5 将以下语句改写成switch语句。 if(t>0)&&(t<=10) if(t>=3)&&(t<=6) x=2; else if(t>1)|(t>8) x=3; else x=1; else x=0;提示:int t; if(t<=0|t>10) c=0; else c=t;switch(t) case 0: x=0;break; case 1: case 2: x=3; case 3:case 4:case 5: case 6: x=2; case 7:case 8: case 9

18、: x=3; case 10: x=2; 3.7 编程实现一个具有简单四则运算功能的计算器。提示:参照例4.18,随机产生3个数,其中一个数用来判断是哪种运算。3.8 编程实现,输入一行字符,将其中的数字字符对应的整数值加起来并输出结果。如: a45b8&*3 则是4+5+8+3,结果为20。提示:char c; int sum=0;while(c=getchar()!='n') if(c>='0'&&c<='9') sum=sum+c-'0'3.9 编程实现,求的值。提示:先计算n!,再在计算

19、阶乘的外面套上一层循环。注意:20!是一个很大的值,float s=1;int i;例如:计算6!:for(i=1;i<=6;i+) s=s*i;3.10 编程实现,找出1000之内的所有完数,并按下面格式输出其因子: 6 its factors are 1,2,3, 所谓“完数”是指一个数如果恰好等于它的因子之和,因子是指能够整除该数的数。提示:先判断数是否为完数,如果是再考虑输出因子。以6为例输出因子: for(i=1;i<6;i+) if(6%i=0) printf("%d,",i);3.11 编程实现,计算序列的前20项之和, ,.提示:这是一个累加式,

20、每项是一个分式,用a、b分别表示分子、分母。注意:如果a、b都是整数,则是整除。float sum=0,a=2,b=1; int i;for(i-1;i<=20;i+)sum=sum+a/b;a=a+b;b=a-b; 3.12 编程实现,求Sn=a+aa+aaa+.+aa.a之值,其中a是一个数字。如:2+22+222+2222+22222(此时n=5),n,a由键盘输入。提示:这是一个累加式,后1项可以由前一项表示,譬如:第2项可以由第1项表示: 第1项 t=a; 第2项:t=t*10+a;3.13 编程实现,把从键盘输入的金额数(以圆为单位)按人民币面额划分,然后显示支付该金额的各种

21、面额人民币的数量。提示:譬如:123.58元可以表示100元:1张;20元:1张;2元:1张;1元:1张;5角:1张;5分:1枚;2分:1枚;1分:1枚。为了简单可以只完成整数部分转换,即输入的金额数为整数。3.14 编程实现,使用循环结构打印以下图案。 * * * * * * * * * * * * * * * * * * * * * * * * *提示:输出时,本图案要按向上三角形和向下三角形进行输出。每行输出中包括空格输出,*号输出。输出空格和*号个数要与行循环控制变量关联起来。3.15 编程实现,以菜单方式实现猜数游戏系统。(功能自己设定)提示:模仿例4.14和例4.18完成。功能可以

22、包括猜数范围,人数等设置。3.16 编程实现,以菜单方式实现四则运算辅助教学系统。提示:随机产生两个操作数和运算符+、-、*、/,由使用者输入一个数,判断计算结果与输入的数是否相等,如果相等,表示正确,否则是错误的。3.17 输入四个整数,要求按大小顺序输出。 参考源程序:main() int a,b,c,d,t;scanf("%d,%d,%d,%d",&a,&b,&c,&d); if(a<b) t=a,a=b,b=t; if(a<c) t=a,a=c,c=t; if(a<d) t=a,a=d,d=t; if(b<c)

23、 t=b,b=c,c=t; if(b<d) t=b,b=d,d=t; if(c<d) t=c,c=d,d=t; printf("%d,%d,%d,%dn",a,b,c,d); 3.18 求n!(n=1->20),(即求1!+2!+3!+4!+5!+20!)参考源程序: main() int n,i=1;long sum=0,s=1; scanf("%d",&n); while(i<=n) s=s*i;sum=sum+s;i+; printf("sum=%ldn",sum); 3.19 输入两个正整数m和

24、n,求其最大公约数和最小公倍数。 main() long m,n,i=1,j,s; scanf("%ld,%ld",&m,&n); for(;i<=m&&i<=n;i+) if(m%i=0&&n%i=0) s=i; if(m>=n) j=m; else j=n; for(;!(j%m=0&&j%n=0);j+); printf("s=%ld,j=%ldn",s,j); 3.20 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。参考源程序: #include

25、"stdio.h" main() char c;int i=0,j=0,k=0,l=0; while(c=getchar()!='n') if(c>=65&&c<=90|c>=97&&c<=122) i+; else if(c>=48&&c<=57) j+; else if(c=32) k+; else l+; printf("i=%d,j=%d,k=%d,l=%dn",i,j,k,l); 3.21 打印出所有"水仙花数",所谓&quo

26、t;水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=13+53+33。参考源程序: #include"math.h" main() int x=100,a,b,c; while(x>=100&&x<1000) a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b; if(x=(pow(a,3)+pow(b,3)+pow(c,3) printf("%5d",x);x+; 3.22 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多

27、吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。参考源程序: main() int i=1,sum=0; for(;i<=10; i+) sum=2*sum+1; printf("sum=%dn",sum); 3.23 打印以下图案 * * * * * * *参考源程序: #include"math.h" main() int i=1,k,l,m; for(;i<=49;i+) k=i%7;l=3-fabs(i-1)/7-3);

28、m=fabs(i-4-7*(i-1)/7); if(k=1)printf("n"); if(m<=l) printf("*"); else printf(" "); printf("n"); 3.24 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.2.程序源代码:main()long f1,f2;int i;f1=f2=1;for(i=1;i<

29、=20;i+) printf("%12ld %12ld",f1,f2);if(i%2=0) printf("n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/【习题4 函数与程序结构】一、 填空题4.1 C语言程序执行的开始处是 main函数 。4.2 C程序中的一个函数由两部分组成,即 声明部分 和 执行部分 。4.3为了保证被调用函数不返回任何值,其函数定义的类型应为 void 。4.4若一个局部变量的存储类型是static,则该变量的值在 程序执行完成

30、时被释放。4.5预处理命令#include的作用是 文件包含 。4.6定义一个宏,功能是判断两个数是否相等,相等为1,不等为0。 #define EQU(a,b) (a)=(b)?1:0 4.7 变量的存储类别有 自动型 、 静态型 、 寄存器型 、和 外部类型 共4种,它们分别用 auto 、 static 、 register 、 extern 标识。二、 选择题4.8下述函数定义形式正确的是(C)。A. int f(int x; int y)B. int f(int x,y)C. int f(int x, int y)D. int f(x,y: int)4.9 关于函数参数,说法正确的是

31、(A)。A. 实参与其对应的形参各自占用独立的内存单元B. 实参与其对应的形参共同占用一个内存单元C. 只有当实参和形参同名时才占用同一个内存单元D. 形参是虚拟的,不占用内存单元4.10 用数组名作为函数的实参时,传递给形参的是(A)。A. 数组的首地址B. 数组的第1个元素C. 数组中的全部元素D. 数组的元素个数4.11复合语句中定义的变量的作用范围是(D)。A. 整个源文件B. 整个函数C. 整个程序D. 所定义的复合语句4.12一个函数的返回值由( D)确定。 A. return语句中的表达式B. 调用函数的类型C. 系统默认的类型D. 被调用函数的类型4.13在一个C源文件中,若要

32、定义一个只允许本源文件所有函数使用的全局变量,其他文件中不允许使用,则该变量需要使用的存储类别是(D)。A. autoB. registerC. externD. static三、 判断题4.14若定义的函数没有参数,则函数名后的圆括号可以省略。(´)4.15函数的函数体可以是空语句(Ö)。4.16只有main函数才能调用其他函数。(Ö)4.17return语句中表达式的类型必须与函数定义的类型一致。(´)4.18函数的实参和形参可以是相同的名字。(Ö)4.19函数调用中,形参与实参的类型和个数必须保持一致。(Ö)4.20外部类型的变

33、量只能定义一次,但可在不同地方声明多次。(Ö)4.21外部类型的变量作用范围大,编程中应多用外部变量。(´)4.22预处理命令行必须以开头,且最后要用分号结尾。(´)4.23宏命令的处理占用编译时间,而不占用运行时间。(Ö)四、 看程序写结果 4.24int fun(int n)int f=1; f = f*n*2; return(f);main() int i,j; for(i=1; i<=5; i+) printf("%dt", fun(i);程序运行结果:2 4 6 8 104.25int x1=30, x2=40;mai

34、n()int x3=10,x4=20; sub(x3,x4); sub(x2,x1); printf("x1=%d,x2=%d,x3=%d,x4=%d", x1,x2,x3,x4);sub(int x,int y)int x1=x; x=y; y=x1;程序运行结果:x1=30,x2=40,x3=10,x4=204.26#define A 4#define B(x) A*x/2main()float c, a = 4.5; c=B(a); printf("c=%5.1f", c);程序运行结果:c= 9.0五、 编程题4.25写两个函数,分别求两个整数的

35、最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。提示:最大公约数可以采用“辗转相除法”,最小公倍数将两数乘积除于最大公约数。“辗转相除法”:设两个数分别用m,n表示且m>n,临时变量t,t=m%n;m=n;n=t;直到n等于0。4.26有3´3的矩阵A和3´2的矩阵B,编制一个函数,求C=AX´B。提示:参照习题5.17,A,B,C三个数组作为函数参数。 4.27编写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。提示:一维字符数组用来存放字符串,并且将它传递到函数,在函数中通过元素值交换来完成反序存放。 4.

36、28编制一个函数,由参数传入一个字符串,统计此字串中字母、数字、和其他字符的个数,在主函数中输入字符串并显示统计结果。提示:参照例题6.10。 4.29 定义一个宏,实现将两个数互换,并写出程序,输入两个数作为使用参数,并显示结果。提示:带参数宏,swap(a,b,t).4.30编写以下函数:输入职工的姓名和职工号;按职工号由小到大排序,姓名顺序也随之调整;输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。提示:定义一个二维数组来存放职工信息;用数组名作函数的参数传递;通过“起泡算法”或“选择算法”;折半查找法先决条件是数据已经有序。4.31用函数实现牛顿迭

37、代法求一元三次方程的根。解:牛顿迭代法的公式是:x=x0-f(x)/f(x),设迭代误差小于10-5时结束。参考源程序:#include <math.h>float solut(float a,float b,float c,float d) float x=1,x0,f,f1; do x0=x; f=(a*x0+b)*x0+c)*x0+d; f1=(3*a*x0+2*b)*x0+c; x=x0-f/f1;while(fabs(x-x0)>=1e-5); return(x); main() float a,b,c,d; printf(“请输入一元三次方程的系数a,b,c,c:

38、n”); scanf(“%f,%f,%f,%f”,&a,&b,&c,&d); printf(“一元三次方程为:%5.2fx3+%5.2fx2+%5.2fx+%5.2f=0n”,a,b,c,d); printf(“该方程的根为:x=%7.2fn”,solut(a,b,c,d); 4.32 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。解:参考源程序:/*是素数返回1,否则返回0*/ int sushuis(int m) int m; int i=2,t; for(;i<=m;i+) if(m%i=0&&i<m) br

39、eak; if(m-i=0) t=1; else t=0; return t; main() int a,s; printf("enter number is: n"); scanf("%d",&a); s=sushuis(a); if(s=1) printf("a 是素数!n"); else printf("a 不是素数!n"); printf("%5d",yi); printf("n"); 4.33 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。1

40、.程序分析:2.程序源代码:#include "stdio.h"main()int i=5;void palin(int n);printf("40:");palin(i);printf("n");void palin(int n)char next;if(n<=1) next=getchar();printf("n0:");putchar(next); else next=getchar();palin(n-1);putchar(next); 4.34 在5*5格的棋盘上从点出发, 按日字跳马, 要求不重复

41、地跳经所有方格。 求出所有跳马方案。参考程序:#include"stdio.h"int map1212, status1212,kp;int c82=2,1,2,-1,1,2,1,-2, -2,1,-2,-1,-1,2,-1,-2;void prt(int a12) /* 打印棋盘状态 */int i,j,i2,j2; printf("n"); for (i=2;i<=9;i+) for (j=2;j<=9;j+) printf("%4d",aij); printf("n"); void status2

42、(void) /* 计算棋盘各点条件数 */ int i,j,k,i2,j2,kz; for(i=0;i<12;i+) for(j=0;j<12;j+) statusij=100; for(i=2;i<=9;i+) for(j=2;j<=9;j+) kz=0; for (k=0;k<=7;k+) i2=i+ck0;j2=j+ck1; if (mapi2j2<50) kz+; statusij=kz; prt(status); void sort1(int b1,int b2) /* 对8个可能的方向按条件数排序 */int i,j,mini,t; /*b1记

43、录状态值(升序),b2记录排序后的下标 */ for (i=0;i<7;i+) mini=i; for (j=i+1;j<=7;j+) if (b1j<b1mini) mini=j; t=b1i;b1i=b1mini;b1mini=t; t=b2i;b2i=b2mini;b2mini=t; void init1(void) /* 初始化 */int i,j,k; for(i=0;i<12;i+) for(j=0;j<12;j+) mapij=100; for(i=2;i<=9;i+) for(j=2;j<=9;j+) mapij=0; status2(

44、);void search(int i2,int j2) /* 利用递归回溯进行搜索 */ int b18,b28,i,i3,j3; kp+; if(kp=65) prt(map); exit(0); for(i=0;i<=7;i+) b2i=i; b1i=statusi2+ci0j2+ci1; sort1(b1,b2); for(i=0;i<=7;i+) i3=i2+cb2i0; j3=j2+cb2i1; if (mapi3j3=0) mapi3j3=kp; search(i3,j3); mapi3j3=0; kp-; main()init1();map52=1; kp=1;se

45、arch(5,2);【习题5 指针与数组】一、 填空题5.1 若有定义int a35;则排列在数组中的第9个元素是( a13 )。5.2 strlen("How are youn")的值是( 12 )。5.3 C语言中字符串结束的标志是( '0' )。5.4 写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是(float s6=0; )。5.5 strcmp("how","How")的值是(32 或>0 )。5.6语句int a,*p=&a;的含义是(定义整型变量a,和整型

46、指针变量p,并且p指向变量a。) 5.7定义语句int *f(); 和int (*f)();的含义分别是(int *f();表示函数返回一个整型指针;int (*f)( );表示f是函数指针,指向整型函数)二、 选择题5.8 若有int s4=1,2,3,4;,则ss0+2*s2-s3的值是( D ) A.1B.2C.3D.45.9 对数组的描述正确的是( B )。 A数组一旦定义其大小是固定的,但数组元素的类型可以不同。 B数组一旦定义其大小是固定的,但数组元素的类型必须相同。 C数组一旦定义其大小是可变的,但数组元素的类型可以不同。 D数组一旦定义其大小是可变的,但数组元素的类型必须相同。

47、5.10 对字符串"Boy"进行完整赋值的操作是( B )。 Achar s3 = 'B','o','y' B. char s = "Boy" Cchar s3 = "Boy"D.char s3; s="Boy"5.11 在c语言中引用数组元素时,其数组下标的数据类型允许是( C)。 A整型常量 B.整型表达式 C整型常量或整型表达式D.任何类型的表达式5.12 对以下说明语句的正确理解是( B )。 int a10=6,7,8,9,10; A将5个初值依次赋给a1至

48、a5 B将5个初值依次赋给a0至a4 C将5个初值依次赋给a6至a10 D因为数组长度与初值的个数不相同,所以此语句不正确三、看程序写结果5.13main() int a5=1,2,3,4,5; int *p=&a1; printf("%d",p2); 输出结果:45.14 main() char a="I love China!" char *p=a; p=p+2; printf("%s",p); 输出结果:love China!5.15 main() int a34=1,2,3,4,5,6,7,8,9,10,11,12;

49、int (*pa)4=a; pa+; printf("%d",*(*(pa+1)+2);输出结果:115.16 main() char *str="zhao","qian","sun","li" int i; for (i=0;i<4;i+) printf("%c",stri0); 输出结果:zqsl5.17 void sub(int x,int y,int *z) *z=y-x; main() int a,b,c;sub(10,5,&a); sub(7,a,&

50、amp;b); sub(a,b,&c); printf("%4d,%4d,%4dn",a,b,c); 输出结果: -5, -12, -75.18 #include <stdio.h> fun(char *s) char *p=s; while (*p) p+; return(p-s);main() char *str="abcd" int i; i=fun(str); printf("%d",i);输出结果:45.19main()int a33 = 1,0,2, 2,2,0,2, c33,i,j; for(i=0;

51、 i<3; i+) for(j=0; j<3; j+) cij = aaijaji; printf("%5d",cij);printf("n");运行结果为: 2 2 0 0 0 2 2 0 1 5.20 当运行以下程序时,从键盘输入:Ah2MA A3ha,请写出输出结果。main() char s80, c='a' int i=0; scanf("%s",s); while(si+!='0') if(si = c) si=si-32; else if(si=c-32) si=si+32;

52、puts(s); 运行结果为:aH2Ma a3hA四、编程题5.21 用数组方法定义一个矩阵,求其转置矩阵。提示:已知a32,转置后的结果存放在b23; 则bji=aij;5.22 从键盘输入9个不同的整数,组成三行三列的二元数组,找出每一列中的最大元素,并输出其行、列下标。提示:已知a33,max,row,col分别用来存放一列的最大值,行下标和列下标。5.23 利用一个二维数组,打印出以下杨辉三角形,要求打印出10行。11112113311464115101051 提示:定义一个10行10列的二维数组,并且通过两重循环对第1列所有元素赋值1,主对角线也赋值。根据aij=ai-1j+ai-1j-1求出其它元素的值。5.16 从键盘上输入一串字符(长度小于50个字符),找出其中最前面的一个X和最后面的一个X之间的子串,并输出子串的长度。提示:定义一个长度为81的字符数组,从左边查找第一字符'X'的下标,从右边查找第一个字符'X'的下标。5.24 矩阵A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论