admin 管理员组文章数量: 887021
2024年1月25日发(作者:mdb数据库合并工具)
C语言程序设计(第二版)习题参考题答案
-CAL-FENGHAI.-(YICAI)-Company One1
C语言程序设计习题参考答案
习 题 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. 122
3.关于ASCII码,在计算机中的表示方法准确地描述是 。
A. 使用8位二进制数,最右边一位为1
B. 使用8位二进制数,最左边一位为1
C. 使用8位二进制数,最右边一位为0
D. 使用8位二进制数,最左边一位为0
4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。
A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ¯ =1000 Y5.下列叙述中正确的是( )。
A.高级语言就是机器语言
B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序
C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种
D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果
6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将( )。
A.生成可执行文件 B.生成目标文件
C.输出运行结果 D.自动保存源文件
7.下列叙述中不正确的是( )。
A.main函数在C程序中必须有且只有一个
B. C程序的执行从main函数开始,所以main函数必须放在程序最前面
C. 函数可以带参数,也可以不带参数。
D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句
解:1.C 2.C 3.D 4.B 5.B 6.B 7.B
三、填空题
1.()10=( )2=( )8=( )16
2.(.10111)2=( )8=( )16=( )10
3.输入三个数,计算并输出三个数的和与三个数的乘积。
程序如下:
#include <>
void main()
{
int a,b,c,s,z;
printf("Please input a b c:n");
s=a+b+c;
printf("%dn",s);
}
*4. 输入三角形三条边的边长,计算并输出三角形的面积。
根据三条边的边长,计算三角形面积的公式如下:
xyz面积s(sx)(sy)(sz)
其中s
2程序如下:
#include <>
#include <>
void main()
{
double x,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.仿照例,编程序在屏幕上显示:
*****************************
Merry Christmas!
Happy New Year!
*****************************
解:#include <>
void main()
{ printf("*****************************n");
printf(" Merry Christmas!n");
printf(" Happy New Year!n");
printf("*****************************n");
}
2.仿照例编程,输入一个整数,计算这个数的平方。
解:#include<>
void main()
{ int a,z;
printf("请输入一个整数:n");
scanf("%d",&a);
z=a*a;
printf("%d*%d=%dn",a,a,z);
}
*3.仿照例编程,输入两个数后,输出其中较小值。
解:#include<>
float min(float x, float y)
{ float m;
if (x else m=y; return m; } void main() { float a,b,c,mindata; printf("请输入二个数:n"); scanf("%f %f",&a,&b); mindata=min(a,b); printf("较小数:%fn",mindata); } *4.仿照例编程,输入a、b后,输出一元一次方程ax+b=0的解。 解:#include<> void main() { float a,b,x; printf("请输入a、b:n"); scanf("%f %f",&a,&b); x=-a/b; printf("x=%fn",x); } *5.仿照例编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。 解:#include <> void main() { float r,h,s,v; printf("Please input r and h:n"); scanf("%f %f",&r,&h); v=*r*r*h; printf("V=%fn",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,150 007 –0x3d π 1e0 e1 o7o8 ‘x’ ‘xo’ sin(3) 0xf16 ‘a’ ‘009’ +2 ‘’ ‘a’+2 0x100h 0128 10L 解:合法的C常量有: 整型常量: 007 –0x3d 0xf16 10L 实型常量: 1e0 +2 字符型常量:‘x’ ‘a’ ‘’ 三、指出下列各项中哪些是C语言中的用户标识符 x_1 X_2 High printf β 3DS i/j e2 -e2 count Int number $23 next_ sizeof IF sum_12 _123# NO1: double for 解:C的用户标识符有:x_1 X_2 High e2 count Int number next_ IF sum_12 四、单项选择题 1.C语言中,char型数据在内存中的存储形式是( )。 A.原码 B.反码 C.补码 D.ASCII码 2.若有定义语句“char c='72';”则变量c( )。 A.包含1个字符 B.包含2个字符 C.包含3个字符 D.定义不合法 3.C语言中的基本数据类型包括( )。 A.整型、实型、逻辑型 B.整型、实型、字符型 C.整型、逻辑型、字符型 D.整型、实型、逻辑型、字符型 4.设c1、c2为字符型变量,执行语句“c1=getchar( );c2=getchar( );”时,从键盘输入A↙,c1和c2的值分别为( )。 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.1 2 B.1,2 C.a=1,b=2 D.a=1 b=2 6.设c为字符型变量值为‘A’,a为整型变量值为97,执行语句“putchar(c);putchar(a);”后,输出结果为( )。 A.Aa B.A97 C.A9 D.aA 7.已知字母A的ASCII码值为65,以下语句段的输出结果是( )。 char c1='A',c2='Y'; printf("%d,%dn",c1,c2); A.输出格式非法,输出错误信息 B.65,90 C.A,Y D.65,89 8.若要使用输入语句“scanf("%4d%4d%10f",&i,&j,&x);”,为i输入-10,为j输入12,为x输入,则正确的输入形式是( )。 A.–↙ B.–10 12 ↙ C.–.67↙ D.–10,12,↙ 9.能正确地定义符号常量的是( )。 A.#define n=10 B.#define n 10 C.#define n 10; D.#DEFINE N 10 10.在C语言中,int、char、short三种类型数据在内存中所占的字节数( )。 A.由用户自己定义 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.char ch='$';float x=; 语句“printf("%c%–n",ch,x);”的输出结果是 。 解:$ n 2.int i=123;float x= – ; 语句“printf("i=%5d x=%n",i,x);”的输出结果是 。 解:i= 123 x= 3.char c='a';int a=65; 语句“putchar(c+1);putchar(a);”的输出结果是 。 解:bA 4.int a=98; 语句“printf(“%d,%c,%o,%x”,a,a+1,a+2,a+3);”的输出结果是 。 解:98,c,144,65 5.int k; float f; 语句“scanf(“%3d%*4d%6f”,&k,&f);”执行时输入 .43↙ 则 k= ,f= 。 解:k=123 f= 6.使用pow()函数时,程序的开头必须写一条预处理命令: 。 解:#include <> 5.填空题。 (1)int i=123,j=45; 函数printf("%d,%dn",i,j);的输出结果是 。 解:123,45 (2)int i=123; float x=; 语句printf("i=%5d x=%7.4fn",i,x); 的输出结果是 。 解:i= 123 x= (3)float alfa=60,pi=3 习 题 3 一、根据下列数学式,写出C的算术表达式。 1abcd2cda2bcd(a2b3)y4210tan1x2|sin(x)|3.5x6e5 解:-(a2+b2)×y4 的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) 1abcd2 的C表达式:2*a*b+c+d)/(a+2*b-(c+d)/c/d) cda2bcd二、按照要求,写出下列C的表达式。 1.写出int类型变量x为“奇数”的表达式。 解:x%2==1 2.Int类型变量x、y、z,写出描述“x或y中有且仅有一个小于z”的表达式。 解:x 3.将double类型变量y保留四位小数的表达式。 解:(int)(y*10000+/ 4.为变量s赋值:取变量x 的符号,取变量y的绝对值。 解:s=(x>=01:-1)*(y>=0y:-y) 5.条件“-5≤x≤3”所对应的C逻辑表达式。 解:-5<=x&&x<=3 6.a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母(不区分大小写)的逻辑表达式 解:a+32==b 或 b-a==321:0 7.int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、且b的个位数等于a的十位数的逻辑表达式。 解:a%10==b/10&&a/10==b%10 8.写出判断某个人是否是成年人(年龄大于21),且不是老年人(年龄大于65)的逻辑表达式。 解:y>21&&y<=65 9.写出取变量a、b、c中最大值的条件表达式。 解:(a>ba:b)>c(a>ba:b):c 10.若字符变量ch为小写字母,则将其转换为对应的大写字母。 解:ch=ch>='a'&&ch<='z'ch-32:ch 三、单项选择题 1.设int x=3,y=4,z=5;,下列表达式中值为0的是( )。 A.'x'&&'y' B. x<=y C.x||y+z&&y–z D. !((x 2.已知x=10,ch='A',y=0;,则表达式“x>=y&&ch<'B'&&!y”的值是( )。 A.0 B. 1 C.“假” D.“真” 3.判断char型变量c为数字字符的正确表达式为( )。 A.'0'<=c<='9' B.'0'<=c&&c<='9' C.c>='0'||c<='9' D.c>=0&&c<=9 4.下列运算符中,优先级最低的是( )。 A.: B.&& C.= = D.*= 5.若有条件表达式“xa++:b--”,则以下表达式中( )等价于表达式x。 A.x==0 B.x!=0 C.x==1 D.x!=1 6.有定义int k=4,a=3,b=2,c=1;,表达式“k A.4 B.3 C.2 D.1 7.执行下列程序段后,变量a,b,c的值分别是( )。 int x=10,y=9,a,b,c; a=(--x= =y++)--x:++y;b=x++;c=y; A.a=9,b=9,c=9 B.a=8,b=8,c=10 C.a=9,b=10,c=9 D.a=1,b=11,c=10 8.有定义int a=9;,语句“a+=a– =a+a;”执行后,变量的值是( )。 A.18 B.9 C.–18 D.–9 9.设x和y均为int型变量,则语句“x+=y;y=x–y;x– =y;”的功能是( )。 A.把x和y按从小到大排列 B.把x和y按从大到小排列 C.无确定结果 D.交换x和y中的值 10.有定义double x=1,y;,表达式“y=x+3/2”的值是( )。 A.1 B.2 C. D. 11.设有定义int x;double y;,则下列表达式中结果为整型的是( )。 A.(int)y+x B.(int)x+y C.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.设float x=,y=; int a=7;,表达式 x+a%3*(int)(x+y)%2/4 值为 。 解: 2.设int x=2,y=3;,执行语句“x*=x+y”后x的值为 。 解:10 3.设int x=17,y=5;,执行语句“x%=x–y”后x的值为 。 解:5 4.设 int a=6,b=4,c=2;,表达式 !(a-b)+c-1&&b-c/2 的值为 。 解:1 5.设 int a=2,b=4,x,y;,表达式!(x=a)||(y=b)&&! 的值为 。 解:0 6.判断变量a、b是否绝对值相等而符号相反的逻辑表达式为 。 解:a==-b 7.判断变量a、b中必有且只有一个为0的逻辑表达式为 。 解:a*b==0&&a+b!=0 8.设int m=2,n=2,a=1,b=2,c=3;执行语句d=(m=a==b)&&(n=b>c);后,m和n的值分别为 。 解:m为0,n为2 9.设int a=2;,表达式“a%2!=0”的值为 。 解:0 10.设char c='y';,表达式“c>='a'&&c<='z'|| c>='A'&&c<='Z'”的值为 。 解:1 11.写出与代数式 (x+2)ex+2 对应的C表达式 。 解:(x+2)*exp(x+2) 12.设int a=2;执行语句a=3*5,a*4;后a的值为 。 解:15 五、写出下列程序的输出结果。 1. #include <> void main() { unsigned k,n; scanf("%u",&n); 3 c.3f输入矩形的边长,求矩形面积。 解:#include <> void main() { double a,b,s; printf(“请输入矩形的长,宽n”); scanf(“%lf,%lf”,&a,&b); s=a*b; printf(“ 矩形面积=%fn”,s); } 8. 已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入。 解:#include <> void main() { int a,d,n,sum; printf(“请输入等差数列的首项 公差 项数n”); scanf(“%d%d%d”,&a,&d,&n); sum=a*n+n*(n-1)*d/2; printf(“ sum=%dn”,sum); } 9. 编写程序,将d天h小时m分钟换算成分钟,输入d、h、m,输出换算结果。 解:#include <> void main() { int d,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 <> #define PI void main() { double r,s1,s2; int n; printf(“Input r nn”); scanf(“%lf%d”,&r,&n); s1=PI*r*r; s2=n/*r*r*sin(2*PI/n); printf(“圆面积=%f,正内接%d边形面积=%fn”,s1,s2); } 习 题 4 一、单项选择题 1.下列语句将小写字母转换为大写字母,其中正确的是( )。 A.if(ch>='a'&ch<='z')ch=ch-32; B.if(ch>='a'&&ch<='z')ch=ch-32; C.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;else t=u D.t=u;if(u>s)t=s; 3.假设变量x、k都已定义,下列语句片段中,无语法错误的是( )。 A. switch(x){ case x>=90: putchar('A'); case x<60: putchar('E'); } B. switch(x) { case 1+2: k='A'; defualt: k='E'; case 2*4: k='B'; } C. switch(x){ case 2+x: k=x-2; case 3*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==0 B.s!=0 C.s==1 D.s=0 5.下列语句中,哪一个可以输出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次 D.无数次 解:(1) B (2) B (3) B (4) A (5) C (6) D 二、写出下列程序的输出结果 C.2次 1.#include <> void main() * { * * * * char x; * * * * * * * * int n=0,k=0; * * * * * * * * * * * * while((x=getchar())!='#'){ 0 * * * * * xyzcs * * * * * n * * 面积s(sx)(sy)(sz) n 1 * 1111* * 2.3f1n前40°22 11114xxy23560y0x0* F3s1.....-3-n-1-2224!2!3!10101010x0 1In2In3In4Inf(x)0年信息查询 2.x0y0元xyf(x,y)旦是星期几信息查 3. 程序结束n”); x01x0y0printf(“请输入年份:n”); xyscanf(“%d”,&year); x0y0xyprintf(“请选择功能:n”); scanf(“%d”,&number); if(number==1) { year=legal(year); leapyear(year); } if(number==2) { week=judgeweeknumber(year); judgeweekchinese(week); } if(number==3) return; } int legal(int y) { if(y<0) do { printf(“请重新输入一个年份:”); scanf(“%d”,&y); } while(y<0); return y; } void leapyear(int y) { if(y%4==0&&y%100!=0||y%400==0) printf(“%d是闰年n”,y); else printf(“%d不是闰年n”,y); } int judgeweeknumber(int y) { int week; week=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7; return week; } void judgeweekchinese(int week) { switch(week) { case 0: printf(“星期天”); break; case 1: printf(“星期一”); break; case 2: printf(“星期二”); break; case 3: printf(“星期三”); break; case 4: printf(“星期四”); break; case 5: printf(“星期五”); break; case 6: printf(“星期六”); break; } } *14.输入n、x,计算xn 输出。要求定义一个递归函数计算xn 。 解:#include<> double mypow(double x,int n) { double y=1; if (n>0) return(x*mypow(x,n-1)); else if (n<0) return(1/x*mypow(x,n+1)); else return 1; } void main() { double x; int n; printf(“请输入x n:n”); scanf("%lf%d",&x,&n); printf("%fn",mypow(x,n)); } *15.数列的第1、2项为1,此后各项为前两项之和。编制求数列中任何一项值的递归函数。 解:此数列为1、1、2、3、5、8、13 ……。 #include<> int f(int n) { if (n==1||n==2) return (1); else return (f(n-1)+f(n-2)); } void main() { int n; while(scanf("%d",&n),n<0); printf("数列第%d项为:%d",n,f(n)); } 习 题 5 一、单项选择题 1.下列能正确定义一维数组a的语句是( )。 A.int a(10); B.int n=10,a[n]; C.int n;scanf("%d",&n); D.#define n 10 int a[n]; int a[n]; 2.若有定义语句“int a[10];”则下列对a中数组元素正确引用的是( )。 A.a[10/2–5] B.a[10] C.a[] D.a(1) 3.能对一维数组正确初始化的语句是( )。 A.int a[6]={6*1}; B.int a[6]={1,,,3}; C.int a[6]={}; D.int a[6]=(0,0,0); 4.以下能正确定义二维数组的语句为( )。 A.int a[][]; B.int a[][4]; C.int a[3][]; D.int a[3][4]; 5.若有数组定义语句“int a[4][5];”,则对a中数组元素的正确引用是( )。 A.a[4][1] B.a[2,1] C.a[4][5] D.a[4–1][5–5] 6.以下能对二维数组a进行正确初始化的语句为( )。 A.int a[2][]={{1},{4,5}}; B.int a[2][3]={1,2,3,4,5,6,7}; C.int a[][]={1,2,3,4,5,6}; D.int a[][3]={1,2,3,4,5}; 7.下列对字符数组s的初始化不正确的是( )。 A.char s[5]="abc"; B.char s[5]={'a','b','c','d','e'}; C.char s[5]="abcde"; D.char s[]="abcde"; 8. 下列程序段的运行结果为( )。 char s[]="ab0cd"; printf("%s",s); A.ab0 B.ab D.ab cd 9.下列数组s中所存放字符串的长度为( )。 char s[]="a128btcdxdgn"; C.Abcd A.9 B.10 C.11 D.18 10.有数组定义语句“char a[20];”,则正确的输入语句为( )。 A.scanf("%s",&a); B.scanf("%s",a[]); C.gets(a[20]); D.gets(a); 11.下面程序执行后的正确输出项是( )。 #include<> void swap1(int a[ ]) { int t; t=a[0]; a[0]=a[1]; a[1]=t; } void swap2(int a,int b) { int t; t=a; a=b; b=t; } void main() { int x[2]={1,5}; int y[2]={1,5}; swap1(x); swap2(y[0],y[1]); printf("x: %d %dn", x[0],x[1]); printf("y: %d %dn", y[0],y[1]); } A. x:5 1 B. x:1 5 5 1 y:1 5 y:5 1 y:5 1 12.执行下列程序后的输出结果是( )。#include <> char f(char s[],int n) { return (s[n]); } main() { char a[]="ABCD"; printf("%c",f(a,2)+1); } A.D B.C D.A 13.执行下列程序后的输出结果是( )。#include <> int f(int a[],int n) { if(n==0) return a[0]; else return f(a,n-1)+a[n]; } main() { int x[]={1,3,5,7,9}; printf("%dn",f(x,3)); } A.1 B.4 D.16 解: x:1 5 D. y:1 5 C.B C.9 x: C. 二、填空题 1.构成数组的各个元素必须具有相同的 。 解:数据类型 2.若有定义“int a[10]={1,2};”,则数组元素a[2]的值为 。 解:0 3.若有定义“int a[3][4];”,则数组a行下标的上限为 ,列下标的下限为 。 解:2 0 4.C语言程序在执行过程中,不检查数组下标是否 。 解:越界 5.C语言中,二维数组元素在内存中的存放顺序是 。 解:按行存放 6.若有定义“int a[3][4];”,则在数组元素a[2][2]前有 个元素。 解:10 7.若用数组名作为函数调用的实参,传递给形参的是 。 解:数组第一个元素的地址 8.若有定义语句“char s1[ ]="abc",s2[ ]={'a','b','c'};”,则数组s1有 个元素,数组s2有 个元素。 解:4 3 三、写出下列程序的输出结果 1.#include <> void main() { int a[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'); } } 解:6 2 3 7 1 9 9 6 2 3 7 1 1 9 6 2 3 7 7 1 9 6 2 3 3 7 1 9 6 2 2 3 7 1 9 6 2.#include <> void main() { int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=3; for(i=0;i for(j=0;j n[j]+=n[i]+1; for(i=0;i<3;i++) printf("%5d",n[i]); } 解: 13 14 17 3.#include <> void main() { int a[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"); } } 解:1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 4.#include <> void main() { int x[10]; int i,m=1; void sort(int a[],int n); 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]); } void sort(int a[],int n) { int i,j,t; for(i=1;i<10;i++){ t=a[i]; for(j=i-1; j>=0; j--) if(t>a[j]) break; else a[j+1]=a[j]; a[j+1]=t; } } 解: -8 -6 -4 -2 0 1 3 5 7 9 5.#include <> void main() { char s1[]="aex",s2[]="dpsy",s[10]; int i1,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] s[i++]=s1[i1++]; else s[i++]=s2[i2++]; } if(flag==1) while(s2[i2]!='0') s[i++]=s2[i2++]; else while(s1[i1]!='0') s[i++]=s1[i1++]; s[i]='0'; puts(s); } 解:adepsxy 6. #include <> void main() { char h[11]; int d[10]; int i,n=0,x=1; gets(h); 统计在一个字符串中各元音字母(a、e、i、o、u)出现的次数。 #include <> void main() { char s[80]; int i, ; printf("input a string:n"); gets(s); for(i=0; ;i++) if( ) a[0]++; else if(s[i]=='e'||s[i]=='E') a[1]++; else if(s[i]=='i'||s[i]=='I') a[2]++; else if(s[i]=='o'||s[i]=='O') a[3]++; else if(s[i]=='u'||s[i]=='U') a[4]++; printf(" A E I O Un"); 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 <> void main() { double x[10],v,d; int i; 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.2fn",v,d); } 2.输入n(n≤20)个数放在一维数组中,找出其中最小的数,将它与数组最前面的元素交换后输出这些数。 解:#include <> void main() { int i,k,temp,n,a[20]; printf("Input n:n"); scanf("%d",&n);
版权声明:本文标题:C语言程序设计(第二版)习题参考题答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1706162064h502461.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论