c语言程序设计第五版习题'答案解析.doc
''习题解析与答案习题解析与答案第第 1 1 章章 C C 语言概述语言概述一一 简答题简答题 1概述 C 语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C 语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如 ifelse 语句、while 语句、do while 语句、 switch 语句、for 语句。 (5)允许直接访问物理地址。C 语言中含有的位和指针运算,能够直接对内存地址进 行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2构成 C 语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成 C 语言程序的基本单位。一个完整的 C 程序一般由文件包含、宏 定义、函数说明、变量和一个或若干个函数组成。 3语言程序的运行一般要经过哪几个步骤? 【解答】 (1)编辑;(2)编译;(3)连接,生成 EXE 文件;(4)执行。 二运行程序写结果二运行程序写结果 1输入下面程序并运行。 main() int a1,a2,x; a1=100; a2=50; x=a1-a2;printf(x=%dn,x); 【解答】运行结果为:x=50 2输入下面程序并运行。 main() int a1,a2,x;a1=10; a2=20; x=a1*a2;printf(a1=%d,a2=%dn,a1,a2); printf(x=%dn,x); 【解答】运行结果为:a1=10,a2=20x=200 3输入下面程序并运行。''#include main()printf(“*n“);printf(“ *n“);printf(“ *n“);printf(“ *n“);printf(“ *n“);printf(“ *n“); 【解答】运行结果为:* 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三编程题三编程题 1参照本章例题,编写一个程序,用于显示如下信息: * I love C programs! * 【分析与提示】 要有文件包含语句#include 。C 语言中没有数据的输入、输出等功能, 数据的输入、输出都是通过调用系统提供的库函数 scanf 和 printf 等来实现的。这 些函数的说明都包括在 stdio.h 文件中。 main 是主函数的名称。用括起来的内容是函数体,函数体由若干条语句组成, 这是计算机要执行的部分,每条语句以分号“;”结束。 注意显示的信息有三行,所以要用到换行符“n” 。 参考代码:#include main()printf(“*n“);printf(“ I love C programs! n“);printf(“*n“);''第第 2 2 章章 数据类型及其运算数据类型及其运算一简答题一简答题 1C 语言中的数据类型主要有哪几类? 【解答】 短整型(short int )整型 整 型 (int) 长整型(long int ) 基本类型 字符型 (char) 单精度(float) 实型(浮点型) 双精度(double)枚举类型(enum) 数组类型构造类型 结构体类型 (struct)共用体类型(union)指针类型空类型(void)2 字符常量与字符串常量有什么区别? 【解答】字符常量用单括号括起,字符串常量用双括号括起;字符常量存储时占 1 个 字节,字符串常量存储时除了 n 个字符外,还有系统加上的字符串终止符0,所以字符串 常量存储时占 n+1 个字节。 3 C 语言中的常量包括哪几类?各自是如何构成的? 【解答】C 语言中的常量是一些其值预先定的量,并且在程序执行过程中其值不再发 生变化。常量的分类遵循基本数据类型分类原则,C 语言编译系统自动将其存放在于类型 相应的内存单元中。其类别包含整形常量、浮点常量、字符常量、字符串常量和枚举常量。 整形常量又分为十进制整形常量、八进制整形常量、十六进制整形常量。浮点常量分成十 进制形式和指数形式。C 语言中的,字符常量是用单括号括起来的一个字符或是字符序列, 而字符串常量是用一对双括号括起来的零个或者多个字符组成的序列。 4 简述指针、变量的指针、变量的值、指针变量与指针变量的值的含义是什么? 【解答】C 语言中将地址又称为“指针” 。一个变量所分配的内存空间首字节地址,称 为该变量的指针(地址),变量的值就被放入所分配的地址单元中。地址一旦被分配,就不会 再改变,所以,指针是一个常量。既然是常量就可以把它赋给一个变量。用来存放指针的 变量,被称为指针变量。一个指针变量的值是变量的地址,一个指针变量可以被赋予不同 的指针值。 5 下面哪些是不合法的常量?说明不合法的理由。 123,3.1415926,0892, M , n ,0xabc,0.618E-6, ”Morning” ,3.8e-3.14 【解答】非法常量有: 0892含有非八进制数字 8 和 9 3.8e-3.14非法指数形式浮点常量:规定 e 后面的指数必须为整数。 6下面对变量定义的语句哪些不正确?为什么?请改正。 (1) char c1,int a2; (2) INT a,b; FLOAT x,y;(3) a,b:char; (4) char if; (5) int a,b (6) Int a:b:c; (7) int a,x; float x,y; 【解答】 (1) char c1,int a2;''错误。定义不同类型的变量时,应用分号彼此分开。 改正为:char c1; int a2; (2) INT a,b; FLOAT x,y; 错误。C 语言中表示类型名的关键字必须小写。 改正为:int a,b; float x,y; (3) a,b:char; 错误。C 语言中变量定义格式为:类型名 变量名; 改正为: char a,b; (4) char if; 错误。变量名不能与 C 语言的关键字重名。 改正为:char f1; (5) int a,b 错误。变量定义以语句形式出现,应以分号结尾。 改正为:int a,b; (6) Int a:b:c; 错误。类型名不能有大写字母,相同类型名之间用逗号分隔。 改正为:int a,b,c; (7) int a,x; float x,y; 错误。在同一程序位置上,同一变量名不能重复定义充当两个不同的变量。 改正为:int a,x; float x1,y; 7 下述字符串常量的长度是多少?在内存中存储时各自占用的单元数又是多少? (1) “Hello!” (2) “ABCnTH064?” (3) “xAB*765+123=?” 【解答】 (1) “Hello!” 字符串长度为 6,占用内存字节数为 7。 (2) “ABCnTH064?” 字符串长度为 9,占用内存字节数为 10。因为其中n 064?各自只占一个字符的位置。 (3) “xAB*765+123=?” 该字符串不是合法的,因为765 表示的值太大,超出合 法的 ASCII 字符集的范围。 二运行程序写结果二运行程序写结果 1以下程序的执行结果是。main() int i,j; i=15; printf(“%d,%d”, i+,i-); 【解答】14,15 2以下程序的执行结果是 。main() int a=20,b=10,c,*p1,*p2;p1=p2=c=(-*p1)/(*p2)+6;''printf(“a=%d,b=%dn“,a,b);printf(“*p1=%d,*p2=%dn“,*p1,*p2);printf(“c=%dn“,c); 【分析与提示】p1 a P2 b【解答】a=20,b=10*p1=20,*p2=10c=4 3以下程序的执行结果是 。#include main()char a=G,b=o,c=o,d=d;a=a+32;b=b-6;c=c+3;d=d+8;printf(“%c%c%c%cn“,a,b,c,d); 【分析与提示】从 ASCII 代码表可以看出,字符“G” 、 “o” 、 “o” 、 “d”的 ASCII 代码 值为 71、111、101,因此, G+32、 o-6、 o+3、 d+8 的值分别是 103、105、114、108,它们所对应的字符分别是“g” 、 “i” 、 “r” 、 “l” 。 常用结论: (1)在 C 语言中,字符数据可以按其 ASCII 代码值参加整数运算。由于英文字母在 ASCII 代码表中是按顺序排列的,所以在计算o+3代表的字母时,可从字符o其顺 序向后取 3 个字母,该字母是“r” 。 (2)从 ASCII 代码表可以看出“小写字母”-“对应大写字母”的结果是 32,因此可 推算出如下等式:大写字母的 ASCII 值+32=对应小写字母的 ASCII 值;小写字母的 ASCII 值-32=对应大写字母的 ASCII 值。 【解答】girl 4以下程序的执行结果是 。#include main()int x;x=-3+4*5-6;printf(“x1=%dn“,x);x=3+4%5-6;a20b10''printf(“x2=%dn“,x);x=-3*4%-6;printf(“x3=%dn“,x); 【分析与提示】x1=11(4*5 是 20,-3+20 是 17,17-6 等于 11)x2=1(4%5 等于 4,3+4 等于 7,7-6 等于 1)x3=0(-3*4 等于-12,-12%-6 等于 0) 【解答】x1=11x2=1x3=0 5以下程序的执行结果是 。#include main() printf(“%dn“,NULL);printf(“%d,%cn“,49,49);printf(“%d,%c,%on“,48+10,48+10,48+10); 【分析与提示】 0(NULL 的 ASCII 码值是 0) 49,1(数字 1 的 ASCII 码值是 49) 58,:,72(48+10 等于 58,正好是“:”的 ASCII 码值,八进制表示是 72) 【解答】049,158,:,72 三、改错题三、改错题 1 请修改下列程序,使其能够通过编译。#include Void Main() int a=6;b=8; int c; c=a*b; printf(%d,c); 【答案】错误的地方有 3 处:(1)第 2 行关键字应该小写;(2)定义 b 时前面 应该用逗号;(3)打印语句的格式应该用双引号括起来。 正确的程序如下:#include void main() int a=6,b=8; int c; c=a*b;''printf(“%d“,c); 2 请修改下列程序,使其能够正确运行。#include void main(); float f=7.12; char c=”c”; printf(“%dn”,int(f%3); printf(“%c”,c); 【答案】错误的地方有 3 处:(1)第 2 行 main();不应该有分号;(2)定义char c=”c”; 时,字符常量应该用单引号;(3)打印语句 printf(“%dn”,int(f%3);的格式 有错,应该在 f 前的 int 用括号括起来,因为实型数据不能执行取余运算。 正确的程序如下:#include void main() float f=7.12; char c='c' printf(“%dn“,(int)f %3); printf(“%c“,c); 第第 3 3 章章 顺序结构程序设计顺序结构程序设计一一 简答题简答题1程序有哪三种基本结构?【解答】程序的三种基本结构为:顺序结构、选择结构和循环结构。2C 语言的语句有哪几类?表达式语句与表达式有什么不同?【解答】C 语句可分为以下五类:表达式语句、函数调用语句、控制语句、复合语句 和空语句。其中表达式语句与表达式的区别在于表达式语句是表达式加上“;”组成。 二、填二、填空题空题1符号执行 x+=x- =x+x;后 x 的值是。 6int a=10,b=20;a+=b;b=a-b;a- =b; 的功能是。 答案:1地址、变量 a 的内存地址。2一个分号。 3变量地址,变量名。''4 连续 2 个%号。 5 -14 6交换 变量 a,b 的值,打印出 a=20,b=10。 三运行程序写结果三运行程序写结果 1.以下程序的执行结果是 。#include main()double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf(“%dn“,d*y); 【解答】0 2以下程序的执行结果是 。main()double d;float f;long l;int i;i=f=l=d=20/3;printf(“%d %ld %f %fn“,i,l,f,d); 【解答】6 6 6.000000 6.000000 3以下程序的执行结果是 。main()int k=17;printf(“%d,%o,%xn“,k,k,k); 【解答】17,21,11 4以下程序的执行结果是 。#include main()char a,b,c,d;a='A',b='B',c='C',d='D'printf(“%1cn“,a); printf(“%2cn“,b); printf(“%3cn“,c); printf(“%4cn“,d); 【分析与提示】可以用%c 格式输出的,也可以用%d 格式输出,所以与md 近似,m 指 出了要输出数据的宽度。若数据位数小于 m,则左端补空格,若数据位数大于 m,则按实际 位数输出。 【解答】AB''CD 5以下程序的执行结果是 。#include main()char c1,c2;scanf(“%c%c“,printf(“c1=%c,c2=%c,c3=%d,c4=%d“,c1+,-c2,c1,c2); 【解答】运行输入:AB 运行结果为:c1=A,c2=A,c3=65,c4=66 6以下程序的执行结果是 。#include main()char c1,c2;scanf(“%c,%c“, +c1;-c2;printf(“c1=%c,c2=%cn“,c1,c2); 【分析与提示】例如当输入 B,C,B,C 的 ASCII 码值为 66,67,执行+c1; -c2;后,c1 为 66+1 变成 67 即 C,c2 为 67-1 变成 66 即 B。 【解答】运行输入:B,C,运行结果为:c1=C,c2=B 7以下程序的执行结果是 。main()char ch='a'int a=98;unsigned b=1000;long c=123456789;float x=3.14;double y=1.2345678;printf(“(1)a=%d,a=%c,ch=%d,ch=%cn“,a,a,ch,ch);printf(“(2)b=%un“,b);printf(“(3)c=%ldn“,c);printf(“(4)x=%f,y=%fn“,x,y);printf(“(5)x=%e,y=%en“,x,y);printf(“(6)y=%-10.2fn“,y); 【解答】(1)a=98,a=b,ch=97,ch=a(2)b=1000 (3)c=123456789 (4)x=3.140000, y=1.234568 (5)x=3.14000e+00,y=1.23457e+00 (6)y=1.23''8以下程序的执行结果是 。#includemain()int a,b;float x;scanf(“%d,%d“,x=a/b;printf(“nx=%fn“,x); 【解答】运行输入:2,2,运行结果为:1.000000 9当输入 12345,a 时,给出程序的运行结果,执行结果是 。#includemain()int a;char c;scanf(“%3d,%c“,printf(“n%d,%dn“,a,c); 【分析与提示】md,m 指出了要输出数据的宽度。若数据位数小于 m,则左端补空格, 若数据位数大于 m,则按实际位数输出。a 的 ASCII 码值是 97。 【解答】12345,97 10分析下面程序,在键盘上输入数据 才能使得变量 a=10,b=20,c1=A , c2=a ,x=1.5,y=-3.75,z=67.8。 程序如下:#includemain()int a,b;float x,y,z;char c1,c2;scanf(“%5d%5d%c%c%f%f%*f,%f“,printf(“a=%d,b=%d,c1=%c,c2=%c,x=%f,y=%f,z=%f“,a,b,c1,c2,x,y,z); 【分析与提示】按%5 d 格式输入 a 与 b 的值时,要先键入三个空格,然后再键入 10 与 20。%*f 是用来禁止赋值的。在输入时,对应%*f 位置可以随意输入一个数(我们输入 1.5,该数不会赋值给任何变量的) 。 【解答】运行输入:1020Aa1.5-3.751.5,67.8 11一个程序中,使用了多个 scanf 函数输入数据,用 a=3,b=7,x=8.5,y=71.82,c1=A,c2=a 输入到每个变量,应该如何输入数据? main()int a,b;''float x,y;char c1,c2;scanf(“a=%d,b=%d“,scanf(“ x= %f,y=%e“,scanf(“ c1= %cc2=%c“,printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn“,a,b, x,y,c1,c2); 【分析与提示】在使用多个 scanf 函数输入数据时,第一个输入行末尾输入的回车被 第二个 scanf 函数吸收,因此在第二、三个 scanf 函数的双引号后放置一个空格以抵消上 行输入的回车键。若没有一个空格,则按上面输入的数据会出错。 【解答】运行输入:a=3, b=4X=8, y=71.82 C1=AC2=a 运行结果:a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a四编程题四编程题 1由键盘输入 1 个字母,输出其 ASCII 码值。 【分析与提示】将一个字符常数赋给一个字符变量,并不是把该字符本身放到内存单 元中去,而是将该字符的 ASCII 代码放到内存单元中,因此,字符型数据也可以像整型数 据那样使用,可以用来表示一些特定范围内的整数。所以 int 型与 char 型变量的值可以互 换,分别用%c 和%d 不同格式输出就行了。 但是注意这种转换是有条件的。因为,char 变量在内存占一个字节,而 int 整型变 量占 2 个字节。当 int 型高位字节是 0 时,char 与 int 可以互换;若不是 0,则不可以互 换。例如,用%c 格式输出时,取低位字节,高位字节被舍弃。 参考代码:#include “stdio.h“main()char ch;ch=getchar();printf(“%c,%d“,ch,ch); 【解答】运行输入:B 运行结果:B,66 2从键盘上输入一个大写字母,把它转换成小写字母,然后显示出来。 【分析与提示】大写字母转换小写时 ASCII 码值+32,相反的,小写字母转换成大写字 母时 ASCII 码值-32。 参考代码:#include main() char x1,x2;printf(“x1=?n“); scanf(“%c“,''x2=x1+32;printf(“%c,%cn“,x1,x2); 【解答】运行输入:A 运行结果:A,a3从键盘上输入两个实型数,求两数的和、差、积,输出结果时要求小数部分占两位。【提示】结果要求保留 2 位小数,所以输出的结果格式为%.2f。main()float x,y,a,b,c;printf(“please input x,y:“);scanf(“%f,%f“, a=x+y;b=x-y;c=x*y;printf(“x=%f,y=%fn“,x,y);printf(“x+y=%.2fnx-y=%.2fnx*y=%.2fn“,a,b,c); 【解答】 运行输入:please input x,y:10,20 运行结果:x=10.000000,y=20.000000x+y=30.00x-y=-10.00x*y=200.00 4编写一个程序,求出给定半径 r 的圆以及内正 n 边形的面积,并且输出计算结果。 r 和 n 的值由用户输入。【分析与提示】由数学知识得到: 半径为 r 圆的面积,半径为 r 圆的内接正 n2rs边形的面积,其中2/sin2nrA n/2处理步骤:提示信息,接收参数值;计算圆的面积; 计算正 n 边形的面积;输出结果。参考代码:#include #include #define PI 3.14main()int n;float r,s,area;printf(“Please input the radius and the N.:n“);scanf(“%f%d“,s=PI*r*r;''area=(n*r*r*sin(2*PI/n)/2.0;printf(“S=%.2ftA=%.2fn“,s,area);return(0); 运行结果如下:Please inout the radius and the N.; 15 S=3.14 A=2.385已知华氏温度与摄氏温度之间的转换公式是:, 编写一个程序,)32(9/5Fc将用户输入的华氏温度转换成摄氏温度,并予以输出。 【分析与提示】首先要定义输入输出温度为浮点型,且 5/9 两数相除结果为整数,5/9 的值为 0,故不能写成 5/9,而应写成(5.0/9.0)*(f-32)。结果要求保留 2 位小数,所以输 出的结果格式为%5.2f。 参考代码:#include main()int f;float c;printf(“nplease input the F:“);scanf(“%d“,c=5.0/9*(f-32); /*不能写成 5/9,两数相除结果为整数,5/9 的值为 0*/printf(“the C.temperature is: %.2f“,c);return(0); 【解答】运行结果如下:please input the F: 75the C.te,erature is: 23.89 6由键盘输入 5 个学生的计算机成绩,计算他们的平均分并保留 2 位小数。 【分析与提示】方法与上题类似,同样是保留两位有效数字%6.2f。 参考代码:main()int a,b,c,d,e;float total,aver;printf(“Plese input 5 students scores:n“);scanf(“%d,%d,%d,%d,%d“,total=a+b+c+d+e;aver=total/5.0;printf(“Average:%6.2fn“,aver); 【解答】运行输入:80,93,75,68,87 运行结果:Average:80.60''7编写将输入的英里转换为公里,每英里等于 5380 英尺,每英尺等于 12 英寸, 每英寸等于 2. 54 厘米,每公里等于 100 000 厘米。main()double mile,k;printf(“enter mile:”);scanf(“%lf”,k=mile*5380*12*2.54/100000;printf(“ %lf mile is %lf kilometern”,mile,k); 【解答】运行:enter mile:22.000000 mile is 3.279648 kilometer第第 4 4 章章 选择结构程序设计选择结构程序设计4.14.1 习题习题一填空题一填空题 1.已知 a=3,b=4,c=5。则逻辑表达式 a+b>cint min;min=(a,下列程序运行的运行结果为 ;若输入 4,3,下列 程序运行的运行结果为 。#include main()''int a,b,c;printf(“Input a,b: “);scanf(“%d,%d“,if(a>=b)c=a*b; printf(“%d*%d=%dn“,a,b,c); elsec=a/b; printf(“%d/%d=%dn“,a,b,c); 【分析与提示】本题程序的功能为:从键盘输入变量 a,b,计算 c 的值(若 a>=b,则 c=a*b,若 a main() int x=1,y=0,a=0,b=0;switch(x) case 1:switch(y)case 0: a+; break;case 1: b+; break;case 2: a+; b+; break;printf(“a=%d,b=%dn“,a,b); 【分析与提示】本题中 case 1:后面是一个 switch 语句,执行完该语句后,直接执行 case 2:后面的语句。 【解答】a=2,b=1 三编程题三编程题 1输入一个字母,若为小写,则把它变成大写输出。 【分析与提示】小写字母的 ASCII 码值与其对应的大写字母的 ASCII 码值相差 32。 参考代码:main( ) char c; printf(“请输入一个字母n“) ;scanf(“%c“, if(c>=a max=max>c?max:c; min=a=10) y=3*x-11;else y=2*x-1;printf(“x=%6.2f,y=%6.2f“,x,y) ;5从键盘上输入星期号,并显示该日期的英文名字。 【分析与提示】本实例知识点:switch语句。 switch 语句的控制流程是:首先计算表达式的值,然后依次与每一个 case 中的常量 值进行比较,一旦发现了某个能够匹配的值,就执行该 case 后面的语句组,直到遇到 break 语句为止。如果表达式的值与所有 case 中的常量都不匹配,则执行 default 后面的 语句组。 参考代码:main( )int xqh;char ywm; printf(“请输入星期号(17):n“);scanf(“%d“,switch(xqh) case 1: printf(“Monday“); break;case 2: printf(“Tuesday“); break;case 3: printf(“Wednesday“); break;case 4: printf(“Thursday“); break;case 5: printf(“Friday“); break;case 6: printf(“Saturday“); break;case 7: printf(“Sunday“); break;default:printf(“error“);'' 6某市不同车牌的出租车 3 公里的起步价和计费分别为:夏利 7 元/公里,3 公里以 外 2.1 元/公里;富康 8 元/公里,3 公里以外 2.4 元/公里;桑塔纳 9 元,3 公里以外 2.7 元/公里。编程:从键盘输入乘车的车型及行车公里数,输出应付车资。 【分析与提示】可设三个变量,分别表示乘车的车型、行车公里数和应付车资,根据 乘车的车型和行车公里数,计算出应付的车资。 参考代码:main( )int cx; /*定义乘车的车型变量 cx */float gl, cf; /*定义行车公里数变量 gl、应付车资变量 cf */printf(“t1-夏利n t2-富康n t3-桑塔纳n“);printf(“t 请输入车型(1-3): “);scanf(“%d“,printf(“nt 请输入行车公里数: “);scanf(“%f“,switch(cx) case 1: if(glmain()int r,m,n;scanf(“%d%d“,if(m main()int y=10; do y-;while(-y);printf(“%d“,y-);'' 【分析与提示】注意 y- 与 y-的运算顺序。 【解答】 0 2下列程序运行的运行结果为 。main() int x=3,y=6,z=2;while(x+!=(y-=1) z+=1; if(y=a x2=x1; day-; printf(“桃子总数=%dn“,x1); 11.求出 500 以内所有素数。 【提示】判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则 表 明此数不是素数,反之是素数。 参考代码:#include “math.h“ main( )int m,k,i,n=0;for(m=2;m=k+1) printf(“%-5d“,m); n=n+1;if(n%10=0)printf(“n“); printf(“n“); 12.输入一个整数(099999) ,判断它的位数,并重新组合成同样位数的最大值。如, 输入 1345,输出 5431。 【提示】先求出该整数的位数;其次分解出每一位数(个位、十位、百位、千位、万 位) ;接着将 5 个位数进行排序;最后根据整数的位数重新组合成同样位数的最大值。 参考代码:main( )long int num, t,d1,d2,d3,d4,d5,n;/*分别代表个位,十位,百位,千位,万位和位数*/printf(“请输入一个整数(099999):“) ;scanf(“%ld“, if(num>9999) n=5;else if(num>999) n=4;else if(num>99) n=3;else if(num>9) n=2;else n=1;printf(“n=%ldn“,n) ;d5=num/10000;d4=(num-d5*10000)/1000;d3=(num-d5*10000-d4*1000)/100;d2=(num-d5*10000-d4*1000-d3*100)/10;d1=num-d5*10000-d4*1000-d3*100-d2*10;if(d5#include main( )int j,n,p,q,flagp,flagq;printf(“please input n :n“);scanf(“%d“,if (n%2)!=0)|(n0;-k)if(ak%2=0)printf(“%d “,ak); 【提示】从后向前把能被 2 整除的数组元素输出。 【解答】6 4 2 2.以下程序的执行结果是 。#include main() char str=“SSSWLIA“,c;''int k;for(k=2;(c=strk)!='0'k+) switch(c) case 'I':+k;break;case 'L':continue;default:putchar(c);continue; putchar('*'); 【提示】从字符串中第 3 个字符开始,把符合要求的字符运用输出字符函数 putchar()输 出;最后在其后输出一个“*“。 【解答】SW* 3.以下程序的执行结果是 。main() char ss10=“12345“;strcat(ss,“6789“);gets(ss); printf(“%s“,ss); 假设输入“ABC“ 【分析与提示】运用字符串连接函数 strcat(),把两个串“12345“和“6789“连接,对 其重新赋值后,原有数值被刷新输出新值。 【解答】“ABC“ 4.以下程序的执行结果是 。# include main() char a=“Monday“,b=“day“;strcpy(a,b); printf(“%st%sn“,a,b); printf(“%ct%cn“,a4,a5); 【分析与提示】把 b 字符串的内容拷贝到 a 字符串中,分别显示 a 和 b 串内容;再显 示数组元素 a4和 a5的内容。 【解答】day daya y 5.以下程序的执行结果是 。main() int x8=8,7,6,5,0,0,*s;s=x+3;''printf(“%d“,s2); 【分析与提示】运用指针显示数组元素值。需要注意的是把数组 x 第 3 个元素的地址, 赋给了指针变量 s,所以 s2里面存储的是 x5,即 0。 【解答】0 6.以下程序的执行结果是 。main() int a=7,b=8,*p,*q,*r;p=q=r=p;p=q;q=r;printf(“%d,%d,%d,%d“,*p,*q,a,b); 【分析与提示】指针变量存储地址,而不是数值。 【解答】8,7,7,8 7.以下程序的执行结果是 。main() char a=“language“,b=“programe“; char *p,*q; p=a;q=b; while(*pp+;q+; 【分析与提示】程序功能是,输出两个字符串中相同的字符。 【解答】gae 8.以下程序的执行结果是 。# include # include main() char a80=“AB“,b80=“LMNP“;int i=0; strcat(a,b); while(ai+!='0') bi=ai; puts(b); 【分析与提示】把 b 串内容连接到 a 串上,再通过循环对 b 串重新赋值。 【解答】LBLMNP三编程题三编程题''1已有 10 个数,求它们当中的最大值。 【分析与提示】运用一维数组保存 10 个数,依次比较保存最大值。 参考代码:main() int i,a; int