文档库 最新最全的文档下载
当前位置:文档库 › C语言第1-2章练习题

C语言第1-2章练习题

C语言第1-2章练习题
C语言第1-2章练习题

C语言第1、2章练习题

一、选择题

1.下列运算符中,(C)结合性从左到右。

A. 三目

B. 赋值

C. 比较

D. 单目

2.下列for循环的次数为(B):for ( i=0,x=0;! x && i<=5;i++)

A. 5

B. 6

C. 1

D. 无限

3.下述关于循环体的描述中,(C )是错误的。

A.循环体中可以出现break语句和continue语句;B.循环体中还可以出现循环语句;

C.循环体中不能出现goto语句; D.循环体中可以出现开关语句。4.下列变量名中,(A)是合法的。

A.CHINA;B.student-num;C.double D.A+b

5.有以下程序段:int n=0,p;do {scanf(”%d”, &p);n++;} while(p!=12345&&n<3);

此处do-while循环的结束条件是(D)。

A.p的值不等于12345并且n的值小于3 B.p的值等于12345并且n的值大于等于3 C.p的值不等于12345或者n的值小于3 D.p的值等于12345或者n的值大于等于3 6.若有定义:int a=8,b=5,C;,执行语句C=a/b+;后,c的值为(B)

A.B.1 C.D.2

7.以下程序中,while循环的循环次数是(D)

main( )

{ int i=0;

while(i<10)

{ if(i<1) continue;

if(i==5) break;

i++; } .....

A.1 B.10 C.6 D.死循环,不能确定次数8.下列while循环的执行次数是(A)while(i=0) i- -;

A.0 B.1 C.5 D.死循环

9.以下说法中正确的是:C

语言程序总是从第一个的函数开始执行;

B.在C语言程序中,要调用的函数必须在main()函数中定义;

语言程序总是从main()函数开始执行;

语言程序中的main()函数必须放在程序的开始部分。

10.以下程序的输出结果是:D

main()

{ int x=10,y=10;

printf("%d %d\n",x - -, - - y);

}

A. 10 10 9 C. 9 10 D. 10 9

11.int a=1,b=3;,则下列表达式的结果为“真”的是:D

A. a>=2||!b&&b<4

B. b-a&&!a||a-b&&a/b

C. a-!a%b&&!b-!b%b+b&&a-b&&b-3&&a||b

12.请选出合法的C语言赋值语句C

=b=58 ++; =58,b=58 =int(a+b);

13.若有以下定义和语句:B

char c1='b',c2='e';

printf("%d,%c\n",c2-c1,c2-'a'+'A');

则输出结果是:

A. 2,M

B. 3,E

C. 2,E

D. 输出项与对应的格式控制不一致,输出结果不确定。14.运行以下程序段后变量a的值是:D

int a=0, b=3;

switch(a+b&&a++&&b-a&&a)

{

case 0:a++;

case 1:b++;

case 2:a+=b; break;

case 3:a-=b;

default:a;

}

(A)-3 (B)1 (C)5 (D)6

15.在以下一组运算符中,优先级最高的运算符是:C

(A)<= (B)= (C)% (D)&&

16.设int a=12,则执行完语句a+=a-=a*a后,a的值是D

(A)552 (B)264 (C)144 (D)-264

语言中基本数据类型包括B

(A)整型、实型、逻辑型(B)整型、实型、字符型

(C)整型、字符型、逻辑型 (D)整型、实型、逻辑型、字符型

18.执行下面程序片段的结果是B

int x=23;

do{

printf("%2d",x - -);

}while(!x);

(A)打印出321 (B)打印出23 (C)不打印任何内容(D) 陷入死循环

19.若k是int型变量,且有下面的程序片段:D

k = -3;

if(k<=0) printf("####")

else printf("&&&&");

上面程序片段的输出结果是

(A)#### (B)&&&& (C)####&&&& (D)有语法错误,无输出结果。

20.为表示关系x≥y≥z,应使用C语言表达式A

(A)(x>=y)&&(y>=z) (B)(x>=y)AND(y>=z) (C)(x>=y>=z) (D)(x>=y)&(y>=z)

21. 若c为char类型变量,能正确判断出c为小写字母的表达式是D

A) 'a'<=c<='z' B) (c>='a') || (c<='z') C) c>='a' || c<='z' D) c<='z' && c>='a'

22.下面程序执行后输出sum的值是D

A)15 B) 14 C) 0 D) 不确定

main()

{ int i,sum;

for(i=0;i<6;i++) sum+=i;

printf("%d\n",sum);

}

23.以下叙述正确的是:D

A) 可以把include和if定义为用户标识符

B) 可以把include定义为用户标识符,但不能把if定义为用户标识符

C) 可以把if定义为用户标识符,但不能把include定义为用户标识符

D) include和if都不能定义为用户标识符

二、判断下列描述的正确性,对者划√,错者划╳。

1.switch语句中必须有break语句,否则无法退出switch语句。0

2.C中标识符内的大小写字母是没有区别的。0

3.隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。0

4.运算符的优先级和结合性可以确定表达式的计算顺序。1

5.while循环语句的循环体至少执行一次。0

6.开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句。0

7.C语言在编译时不检查语法;0

8.在C语言中,”A”是错误的char类型的常数;1

9.字符(char)型数据在微机内存中的存储形式是ASCII码;1

10.C语言的源程序不必通过编译就可以直接运行;0 11.“I nt”是合法的C语言关键字;0

三、写出下列程序的运行结果。

四、完成程序。

5. 打印图案。(选做) void main() {int i,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"); } } 6. 输入两个正整数m 和n, 用辗转相除法求最大公约数和最小公倍数。(选做) void main() {int a,b,m,n,temp;

printf("Please input the two number:\n"); scanf("%d,%d",&m,&n); if(m

{temp=m; m=n; n=temp;} a=m;b=n; while(b!=0) /*a 中放的是最大公约数*/

{temp=a%b; a=b; b=temp; } printf("最大公约数是:%d\n",a); printf("最小公倍数是:%d\n",m*n/a); }

7. 设计具有以下功能的程序:从键盘上输入若干个非负整数,统计并输出最大数和最小数,当输入负数时结束输入。(自己完成,并上机验证)

#include<>

void main()

{

int i,j,max=0,min=0;

do {

scanf("%d",&i);

if(max

if(min>i)

min=i;

}while(i>=0);

printf("%d %d\n",max,min);

}

c语言第二版第七章答案

7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 参考程序如下: #include int aa(int m,int n) //求最大公约数 { int k; if(m int aa(int n) { int i; int flag; // flag标志 for(i=2;i<=sqrt(n);i++) { if(n%i==0) break; } if(i>sqrt(n)) flag=1; else flag=0;

return(flag); } main() { int n,flag; // flag标志 printf("\nInput n:"); scanf("%d",&n); flag=aa(n); if(flag==1) printf("%d is a prime number.\n",n); else printf("%d is not a prime number.\n",n); } 7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。 参考程序如下: #include main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int b[3][3],i,j; printf("array a:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf("\n"); } printf("After switch:\n"); aa(a,b); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",b[i][j]); printf("\n"); } } void aa(int a[3][3],int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[j][i]=a[i][j]; } 说明:当数组名作函数参数时,形参也必须是同类型的数组名,形参数组名的实质是一个指针变量,存放的第0行第0列的元素的地址;这样,子函数中a[i][j]就是主函数中的a[i][j]; 7.11写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列 参考程序如下: main()

《C语言程序设计》课后习题答案

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.1什么是算法16 2.2简单的算法举例17 2.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法28 2.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法32 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67

C语言第七章习题答案

7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 hcf(u,v) int u,v; { int a,b,t,r; if(u>v) { t=u;u=v;v=t; } a=u;b=v; while((r=b%a)!=0) { b=a;a=r; } return(a); } lcd(u,v,h) int u,v,h; { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.d=%dn",l); return(u*v/h); } #include

void main() { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.D=%dn",l); } 7.2 求方程根 float x1,x2,disc,p,q; greater_than_zero(a,b) float a,b; { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); } equal_to_zero(a,b) float a,b; { x1=x2=(-b)/(2*a);} smaller_than_zero(a,b) float a,b; { p=-b/(2*a);

q=sqrt(disc)/(2*a); } main() { float a,b,c; printf("n输入方程的系数a,b,c:n"); scanf("%f,%f,%f",&a,&b,&c); printf("n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c); disc=b*b-4*a*c; printf("方程的解是:n"); if(disc>0) { great_than_zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else if(disc==0) { zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else { small_than_zero(a,b,c); printf("X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin",p,q,p,q);

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

C语言程序设计第四版第七章答案 谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

C语言课后习题答案(完整版)-第四版-_谭浩强

C语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } #include #include int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

C语言第七章复习题(不含答案)

1.下列对C语言字符数组的描述中错误的是( )。 (A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行比较 2.不能把字符串:Hello!赋给数组b的语句是( )。 (A)char b[10]={'H','e','l','l','o','!'}; (B)char b[10];b="Hello!"; (C)char b[10];strcpy(b,"Hello!"); (D)char b[10]="Hello!"; 3.若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是( )。 (A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c] 4.以下程序的输出结果是( ) (A) 20 (B) 21 (C) 22 (D)23 main() { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; printf("%d\n",k); 5.以下程序的输出结果是( )。 (A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9 main() { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); 6.下面程序运行的结果是( )。 (A) 2ba56 (B) 6521 (C) 6 (D) 62 main() { char ch[7]={“65ab21“}; int i,s=0 for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } 7.合法的数组定义是( )。 (A)int a[]="string"; (B)int a[5]={0,1,2,3,4,5}; (C)char s[6]="string"; (D)char a[]={0,1,2,3,4,5}; 8.函数调用:strcat(strcpy(str1,str2),str3)的功能是( )。 (A)将串str1复制到串str2中后再连接到串str3之后 (B)将串str1连接到串str2之后再复制到串str3之后 (C)将串str2复制到串str1中后再将串str3连接到串str1之后

最新c语言课后习题答案汇总

c语言课后习题答案

第二章习题 2.什么叫做结构化算法?为什么要提倡结构化算法? 答:结构化算法是由一些基本结构顺序组成的。在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本的结构范围内。一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变。 跟结构化算法比较起来,非结构化算法有以下缺点: 流程不受限制的随意转来转去,使流程图豪无规律使人在阅读的时候难以理解算法的逻辑.难以阅读,也难以修改,从而使算法的可靠性和可维护性难以保证。 4. 第三章习题 1.#include #include void main() { unsigned int n;

float p,p1,r=0.09; scanf("%u",&n); p=pow(1+r,n); p1=(p-1)*100; printf("%5.2f%%\n",p1); } 运行结果:输入,回车,见结果: 2.#include #include int main() { int bj=1000; float r1,r2,r3,r5,r0,lx1,lx2,lx3,lx4,lx5; r1=0.0414; r2=0.0468; r3=0.0540; r5=0.0585; r0=0.0072; lx1=bj*r5; lx2=bj*(1+r2)*r3; lx3=bj*(1+r3)*r2; lx4=bj*pow(1+r1,5); lx5=bj*r0*5; printf("lx1=%f lx2=%f lx3=%f lx4=%f lx=5%f\n",lx1,lx2,lx3,lx4,lx5); return 0; } 运行结果: 3.#include #include int main() { long d,p; d=300000; p=6000; double m,r=0.01; m=log(p/(p-d*r))/log(1+r); printf("%4.2f",m); return 0;

C语言课后习题

习题 第三章 #include #include int main() { int d,p; double r,a,m; scanf("%d %d %lf",&d,&p,&r); a=(p/(p-d*r)); m=log(a)/log(1+r); if(p>0&&d>0) { if(d<=m*p) printf("%.1f",m); else printf("God"); } else printf("0.0"); return 0; } 勾股数 #include int main() { int a,b,c,n; scanf("%d",&n); for(a=1;a<=n;a++) { for(b=1;b<=n;b++) { for(c=1;c<=n;c++) { if(c*c==a*a+b*b) { if(a<=b) { printf("%d %d %d\n",a,b,c); } }

} } } return 0; } 第四章 计算分段函数值 #include int main() { float x,y; scanf("%f",&x); if(x<1) y=x; else if(x>=1&&x<10) y=2*x-1; else if(x>=10) y=3*x-11; printf("%.2f",y); return 0; } 找出三个数中最大的数 #include int main() { int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; if(c>max) max=c; printf("%d",max); return 0; } 10844成绩等级评分 #include int main() { int x; scanf("%d",&x); if(x>=0&&x<=100) { switch(x/10) { case 10:

C语言程序设计(何钦铭)课后习题作业

第一章习题 1、对C语言来说,下列标示符中哪些是合法的,哪些是不合法的 Total, _debug, Large&Tall, Counter1, begin_ 答:合法的:_debug、Counter1、begin_。 不合法的:Total、Large&Tall。 2、改写节中的流程图,求1—100中能被6整除的所有整数的和。 3、改写节中的程序,求1—100中能被6整除的所有整数的和,并在编程环境中验证该程序

的运行结果。 答:程序为: #include<> int main(void) { int i,sum=0; for(i=1;i<=100;i++) if(i%6==0)sum=sum+i; printf("sum=%d\n",sum); return 0; } 4、对于给定的整数n(n>1),请设计一个流程图判别n是否为一个素数(只能被1和自己整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构和循环结构。

第二章作业 1.编写程序,输入两个整数num和num2,计算并输出她们的和、差、积、商。 答:程序: #include<> void main() { int num1,num2,y1,y2,y3,y5; double y4; printf("请输入两个数:num1,num2\n"); scanf("%d%d",&num1,&num2); y1=num1+num2; y2=num1-num2; y3=num1*num2; y4=num1*num2; y5=num1%num2; printf("num1,num2和y1=%d\nnum1,num2差y2=%d\nnum1,num2积y3=%d\nnum1,num2商y4=%lf\nnum1,num2余y5=%d\n",y1,y2,y3,y4,y5); } 2.为了倡导居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时以内的,电价为元/千瓦时;超出50千瓦时的用电量,电价上调元/千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。 答:程序: #include<> void main()

C语言课后习题答案

第1章C语言概述 一、选择题 答案: 1.A 2.B 3.C 4.C 5.D 6.B 7.D 8.B 二、填空题 答案: 1.函数2.目标3.编译程序4.分号 第2章数据类型、运算符和表达式 一、选择题 答案: 1.B 2.D 3.D 4.B 5.D 6.C 7.C 8.B 9.A 10.D 11.B 12.B 13.D 14.D 15.A 16.C 17.B 18.D 19.A 20.C 二、填空题 答案: 1.2 2.6,4,2 3.18 4.5 5.double或双精度 6.30 7.4,2 8.4 第3章顺序结构 一、选择题 答案: 1.C 2.C 3.C 4.A 5.A 6.A 7.D 8.D 9.C 10.D 二、填空题 答案: 1.scanf printf 2.顺序、选择、循环3.1 4.3 5.9,10 6.10,20 7.213 8.空格、Tab键、回车键 第4章选择结构 一、选择题 答案: 1.B 2.D 3.D 4.B 5.B 6.C 7.C 8.B 9.B 二、程序改错题 1.输入两个实数,在fun()函数中按数值由小到大输出它们。(保留2位小数)

答案: =======(答案1)======= float t; =======(答案2)======= if(a>b) =======(答案3)======= printf("%5.2f, %5.2f\n",a,b); 2.编写一个程序计算某年某月有几天。(注意要区分闰年) 答案: =======(答案1)======= switch(mm) =======(答案2)======= break; =======(答案3)======= default : 三、程序填空题 1.功能:输出a、b、c三个变量中的最小值。 答案: =======(答案1)======= &c =======(答案2)======= c:t1 四、程序设计题 1.功能:对任意输入的x,用下式计算并输出y 的值。说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。 答案: int m; if(n<10) m=5; else if(n==10) m=0; else m=-5; return m; 或 int m; if(n>=10) if(n>10) m=-5; else m=0; else m=5; return m; 第5章循环结构 一、选择题

C语言课后习题标准答案

C语言课后习题标准答案 第1章C语言概述 一、简答题 1.(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。 2.顺序结构,分支结构,循环结构 3.所谓算法就是为解决一个问题而采取的方法和步骤。 算法的特性:有穷性、确定性、输入、输出、可行性。 表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示; (4)用伪代码表示;(5)用计算机语言表示。 二、算法 1.瓶子A里盛有醋 瓶子B里盛有酱油 那一个空瓶C 将A中的醋倒入C 将B中的酱油倒入A

将C中的醋倒入B 2.输入一个数放在a中max=a 以下步骤重复9次: 输入一个数放在a中 如果a>max,max=b 打印max的值 3.如果??a<b temp=a ?a=b ??b=temp 如果c>a ?temp1=a ??temp2=b a=c ?b=temp1 ?c=temp2 否则 ?如果?c>b ?temp=b ?b=c ?c=temp

打印a,b,c的值 4.i=1 sum=0 以下程序循环100遍: sum=sum+i ?i=i+1 打印sum的值 5.如果(n除以3的余数为0并且n除以5的余数为0)n能够同时被3和5整除 否则 ?n不能够同时被3和5整除 6.i=101 以下语句循环50遍: ?j=2 ?flag=1 ?当j<(i除以2的整数部分)时循环以下语句: ??如果i除以j的余数为零 ???flag=0 ???退出该循环 如果flag=1 ???打印i的值 ?i=i+1

C语言复习题及答案 第七章 数组

第七章数组 (8学时) 学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第1讲 知识归纳: 1、一维数组的定义:类型说明符数组名[ 常量表达式] ; (1) (1)数组名后必须用方括弧[ ] ,用其他括弧均错误; (2) 方括弧中的常量表达式表示数组的元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用: 数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围; 如int a[10] ; //可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素; 3、一维数组的初始化: (1) (1)可以在定义数组后,立刻赋值;如int a [3] = { 1,3, 5} ; 但下面这样是错误的: int a[3] ; a = { 1,3, 5} ; (2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, …?, float 0.0 ; 如int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a[10] ; for ( i=0 ; i <10 ;i ++ ) a [ i ] = i ; 基础训练(A) 一、选择题 1、在c语言中,引用数组元素时,其数组下标的数据类型允许是()。 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 2、要说明一个有10个int元素的数组,应当选择语句()。 A) int a[10]; B) int a(10); C) int a[9] D) int a[11] 3、以下对数组的正确定义是:()。 A) float b[5.0] B) float b[5] C) float b(5) D) float b[] 4、对以下说明语句的正确理解是()。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5]

C语言程序设计第二版第四章第七章课后答案

1、输入函数scanf的参数错误,应该为:scanf("%f",&k); 2、|1234 1234 | 3、ff10 4、1,3,1 5、原字符串左边加空格再加字符串本省,字符个数总和为5个 6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2); 7、 printf("a+b=%d\n",a+b); printf("a-b=%d\n",a-b); printf("a*b=%d\n",a*b); printf("a/b=%d\n",a/b); printf("(float)a/b=%f\n",(float)a/b); printf("a%b=%d\n",a%b); 8、 void main() { float r; float s,c; printf("please input the number:"); scanf("%f",&r); if(r>=0) { s = 3.14*r*r; c = 2*3.14*r; printf("s = %f, c = %f\n",s,c); } else printf("you input number is error!"); } 9 void main() {int n; printf("please input the number:"); scanf("%d",&n); if(n>=100 && n <= 999) printf("%d%d%d",n%10,(n/10)%10,n/100); else printf("you input number is error!"); } 10、 void main() { int i,j,k; scanf("%d,%d,%d",&i,&j,&k); ((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); } 11、 void main()

《C语言程序设计》课后习题参考答案

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案 ――武汉大学出版社 习题1参考答案 一、选择题 1. A 2. D 二、填空题 1. BASIC、FORTRAN、AL_GOL60和COBOL 2. 8 3. 关键字 4. 编辑、编译、链接和运行 三、简答题 1.答: (1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。 (2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。(3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。 (4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。 (5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。 (6)C语言与汇编语言相比,可移植性好。 (7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。 2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。 3.答: (1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。

c语言第七章习题

第七章结构体 一、选择题 1、若有语句:char s1[]="string",s2[8],*s3,*s4="string2";则对库函数strcpy的错误调用是()A)strcpy(s1,"string2"); B)strcpy(s4,"string1"); C)strcpy(s3,"string1"); D)strcpy(s1,s2); 2、下面程序的运行结果是() fun(int **a,int p[2][3]) {**a=p[1][1];} main() {int x[2][3]={2,4,6,8,10,12},*p;p=(int *)malloc(sizeof(int));fun(&p,x);printf("%d\n",*p);} A)10 B)12 C)6 D)8 3、以下scanf函数调用语句中对结构体变量成员的不正确引用是()。 struct pupil { char name[20]; int age; int sex;} pup[5],*p; p=pup; A)scanf("%s",pup[0].name); B)scanf("%d",&pup[0].age); C)scanf("%d",&(p->sex)); D)scanf("%d",p->age); 4、以下对结构体变量stul中成员age的非法引用是()。 struc student { int age; int num; }stul,*P; p=&stul; A)stul.age B)student.age C)p->age D)(*p).age 5、设有以下说明和定义语句,则下面表达式中值为3的是()。 struct s { int i1; struct s *i2;}; struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr; ptr=&a[1]; A)ptr->i1++ B)ptr++->i1 C)*ptr->i1 D)++ptr->i1 6、若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则《1》中应填入的内容是: int *p; p=《1》malloc(sizeof(int)); A)int B)int * C)(*int) D)(int *) 7、以下对C语言中共用体类型数据的叙述正确的是()。 A)可以对共有体变量名直接赋值B)一个共用体变量中可以同时存放其所有成员 C)一个共有体变量中不能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员 8、当说明一个共用体变量时系统分配给它的内存是()。

C语言 第七章课后答案

//7.1用筛选法求100之内的素数。#if 0 #include void main() { int i,k; for(i=0;i<100;i++) { k=i-1; while(k>0) { if(i%k==0) {break;} else {k--;} } if(k==1) { printf("%5d是素数\n",i); } } } #endif #if 0 //7.2 用选择法对10 个整数排序 #include void main() { int i,j,t,min; //int a[10]; // for(i=0;i<10;i++) // { // printf("a[%d]=",i); // scanf("%d",&a[i]); // } /// printf("\n");

int a[10] = {5,3,7,6,4,9,10,8,2,1}; for(i=0;i<=9;i++) { min=i; { for(j=i+1;j<=10;j++) if(a[min]>a[j]) { min=j; t=a[i]; a[i]=a[min]; a[min]=t; } } } printf("10个数由小到大排序"); for(i=0;i<10;i++) { printf("%5d",a[i]); } printf("\n"); } #endif #if 0 //7.3 求一个3x3的整型矩阵对角线元素之和#include void main() { int i,j,sum=0,sum1=0; int a[3][3]={{1,2,5},{45,56,3},{12,45,67} }; printf("输出矩阵:\n");

最新C语言课后习题答案汇总

C语言课后习题答案

C语言课后习题答案-第四版- 第一章 5、请参照本章例题,编写一个C语言程序,输出以下信息:**************************** V e r y G o o d ! **************************** #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 6、编写一个C语言程序,输入a,b,c三个值,输出其中最大值。 #include int main() { int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d%d%d",&a,&b,&c);

max=a; if (max int main() { int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; max=max>c?max:c; printf("The largest number is %d\n",max); return 0; }

数据结构(c语言版)课后习题答案完整版

第1章绪论 5.选择题:CCBDCA 6.试分析下面各程序段的时间复杂度。 (1)O(1) (2)O(m*n) (3)O(n2) (4)O(log3n) (5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2) (6)O(n) 第2章线性表 1.选择题 babadbcabdcddac 2.算法设计题 (6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。 ElemType Max (LinkList L ){ if(L->next==NULL) return NULL; pmax=L->next; //假定第一个结点中数据具有最大值 p=L->next->next; while(p != NULL ){//如果下一个结点存在 if(p->data > pmax->data) pmax=p; p=p->next; } return pmax->data; (7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。 void inverse(LinkList &L) { // 逆置带头结点的单链表 L p=L->next; L->next=NULL; while ( p) { q=p->next; // q指向*p的后继 p->next=L->next; L->next=p; // *p插入在头结点之后 p = q; }

} (10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。 [题目分析] 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。 void Delete(ElemType A[ ],int n) ∥A是有n个元素的一维数组,本算法删除A中所有值为item的元素。 {i=1;j=n;∥设置数组低、高端指针(下标)。 while(i

相关文档
相关文档 最新文档