您好,欢迎来到九壹网。
搜索
您的当前位置:首页大学C语言复习题 附答案

大学C语言复习题 附答案

来源:九壹网
判断题 1. 2. 3. 4.

运算器是完成算术和逻辑操作的处理部件,通常称为CPU。× 通常硬盘安装在主机箱内,因此它属于主存储器。× 指令与数据在计算机内是以ASCII码进行存储的。× 操作系统是合理地组织计算机工作流程、有效地管理系统资源、方便用户使用的程序集

合。√

5. 用计算机机器语言编写的程序可以由计算机直接执行,用高级语言编写的程序必须经过编译才能执行。√

6. 计算机的所有计算都是在内存中进行的。×

7. 字长是指计算机能直接处理的二进制信息的位数。√

8. 计算机区别于其他计算工具的本质特点是能存储数据和程序。√ 9. 系统软件就是市场上买来的软件,应用软件就是自己编写的软件。×

10. 常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、小写英文字母、

大写英文字母。× 11. 多台计算机相连,就形成了一个网络系统。×

12. 在Internet网上,IP地址、E-mail地址都是唯一的。√ 13. 不同类型的变量在内存中占用存储空间的大小都是一样的。× 14. 表示数学式315. 设某字符的ASCII码十进制值为72,则其十六进制值为48。√ 16. 结构化程序语言的三种基本结构是顺序、选择和循环。√ 17. ‘\\n’不是一个字符常量。× 18. 19. 20. 21.

与float型数据相比,double型数据的精度高,取值范围大。√ 在C语言中,表达式(010+2)的值是10。√

do-while语句先执行循环体,后判断循环条件,所以循环体至少会执行一次。√ 在C 语言中,常量和变量都有数据类型。√

22. C 语言的运算符只有单目运算符和双目运算符两种。× 23. 若变量已正确定义,表达式 x + y = z符合C语言语法。× 24. C编译器可以找出C源程序中所有的语法错误和逻辑错误。× 25. 表达式3 * 5 / 2 和表达式3 / 2 * 5等价。×

26. 表达式m = n++ 的求解顺序是先计算m = n,再计算n = n + 1。√ 27. 变量名fahr和Fahr代表两个不同的变量。√

28. 对整型变量可进行自加或自减运算,而对常量或表达式不可以。√ 29. while语句先判断循环条件,所以循环体有可能一次也不执行。√ 30. C程序中无法比较二个字符的大小。×

31. continue语句和break语句都只能用在循环体中。× 32. 表达式 3.14%2 是合法的C语言表达式。×

33. C语言编写的源程序必须经过编译连接,生成扩展名为.exe的可执行文件才能运行。√ 34. 格式符“%o”是按16进制输出整数。× 35. for循环只能用于循环次数已确定的场合。× 36. 算术运算符和赋值运算符的结合方向均由左自右。× 37. break语句只能用在switch语句中。×

38. C的任何类型数据在计算机内部都是以二进制形式存储的。√

39. 按格式符“%d”输出float类型变量时,截断小数位后取整输出。× 40. 表达式0195是一个八进制整数。×

41. 执行 printf (\"%d\,输出0。√ 42. 43. 44. 45.

表达式 !x 等价于x != 1。×

表达式 (z=0, (x=2)||(z=1),z) 的值是1。× 在 C 程序中,用整数0表示逻辑值“假”。√

若变量已正确定义,表达式 x=y=1符合C语言语法。√

46. 表达式 !(x>0||y>0) 等价于!(x>0)&&!(y>0)。√

47. 在C源程序中语句if(x==5) y++;与if(x=5) y++;等价。×

48. 在的关系运算符(>=、>、==、!=、<=、<)中,优先级最低的运算符是==、!=。√ 49. 若x的当前值为5, 执行语句“if(x=3) x=x+5;”后,x的值依然是5。× 50. 执行循环语句“for(i=1;i<10;i=i+2) s+=i;”后,i的当前值为11。√ 单选题

1. 学校的学生学籍管理程序属于______。C

(A)工具软件 (B)系统软件 (C)应用软件 (D)文字处理软件 2. 有些高级语言源程序在计算机中执行时,采用的是解释方式。在解释方式下,源程序由______边解释边执行。B

(A)编译程序 (B)解释程序 (C)操作系统 (D)汇编程序 3. 关于计算机软件的叙述,错误的是______。B

(A)软件是一种商品 (B)软件借来复制也不损害他人利益 (C)《计算机软件保护条例》对软件著作权进行保护

(D)未经软件著作权人的同意复制其软件是一种侵权行为 4. 在下列四条叙述中,正确的一条是______。C

(A)最先提出存储程序思想的人是英国科学家艾伦·图灵 (B)ENIAC计算机采用的电子器件是晶体管 (C)在第三代计算机期间出现了操作系统 (D)第二代计算机采用的电子器件是集成电路

5. 已知英文小写字母d的ASCII码为十进制数100,则英文小写字母h的ASCII码为十进

制数_______。B

(A)103 (B)104 (C)105 (D)106 6. 有一个数值152,它与十六进制数6A相等,那么该数值是______。D

(A)十进制数 (B)二进制数 (C)四进制数 (D)八进制数 7. Internet比较确切的一种含义是______。B

(A)一种计算机的品牌 (B)网络中的网络,即互连各个网络 (C)一个网络的顶级域名 (D)美方的非机密军事情报网络 8. 下列关于系统软件的四条叙述中,正确的是______。A

(A)系统软件与具体应用领域无关 (B)系统软件与具体的硬件无关 (C)系统软件是在应用软件基础上开发的 (D)系统软件就是指操作系统 9. 计算机内存的每个基本单位,被赋予一个唯一的______,称为地址。C

(A)容量 (B)字节 (C)序号 (D)功能 10. 十六进制数FF.1转换成十进制数是______。C

(A)255.625 (B)250.1625 (C)255.0625 (D)250.0625 11. 在计算机中存储数据的最小单位是______。B

(A)字节 (B)位 (C)字 (D)记录

12. 因特网中某主机的二级域名为“edu”,表示该主机属于______。C

(A)赢利性商业机构 (B)军事机构 (C)教育机构 (D)非军事性组织机构

13. 下列字符中,其ASCII码值最大的是______。D

(A)9 (B)D (C)a (D)y 14. 语句printf(―%%d%d‖, 123); 将输出:

A、%123%d B、%%d123 √C、%d123 D、上述语句语法有错 15. 对于int x, y; 语句 if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于:

A、 y=0; if (x>=0) if (x) y=1; else y= -1;

√B、 if (x!=0) if (x>0) y=1; else y= -1; else y=0;

C、 if (x<0) y= -1; if (x!=0) y=1; else y=0; D、 y= -1; if (x!=0) if (x>0) y=1; else y=0; 16. 语句if (a>b) k=0; else k=1;等价于:

A、k=(a>b)?1:0; B、k=a>b; √C、k=a<=b; D、以上均不是 17. 执行下列程序段: int i, j;

i = 3/2 + 7/2 == 5;

j = 45 % 11 + (((7>8) ? 14:21) == 14); 后变量i,j的值应为:

√A、i=0 j=1 B、i=1 j=1 C、i=0 j=2 D、i=1 j=2 18. 如果 int i=16, j=23 ; 执行 printf(\"%x--%o\后输出为:

A、10—23 √B、10--27 C、16--23 D、16—27 19. 若x是double型变量,n是int型变量,执行 ,并输入3 1.25后,x=1.25,

n=3。 √A、scanf(\"%d%lf\ B、scanf(\"%lf%d\C、scanf(\"%lf%d\ D、scanf(\"%d,%lf\20. 若变量已经被正确定义,为表示“变量x和y都能被3整除”,应使用的C表达式

是 。

A、(x%3 != 0) || (y%3 != 0) C、(x%3 == 0) || (y%3 == 0) 21. while( ) 等价于while(x)。

A、x == 0 C、x == 1 22. 下列程序段的输出结果是 。

int count = 0, x, y, z;

for(x = 1; x <= 2; x++) for(y = 1; y <= 3; y++) for(z = 1; z <= 4; z++) count++; printf(\"%d\

A、10 B、9 √C、24 D、0 23. 判断变量ch 是英文字母的表达式为 。

A、( 'a' <= ch <= 'z') || ( 'A' <= ch <= 'Z')

B、(ch >= 'a' && ch <= 'z') && ( ch >= 'A' && ch <= 'Z') √C、(ch >= 'a' && ch <= 'z') || ( ch >= 'A' && ch <= 'Z') D、( 'A' <= ch <= 'z') && ( 'A' <= ch <= 'z')

B、(x%3 != 0) && (y%3 != 0)

√D、(x%3 == 0) && (y%3 == 0) √B、x != 0 D、x != 1

24. while( ) 等价于while(!x)。

A、x == 1

√B、x == 0

C、x != 0 D、x != 1 25. 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是 。

A、for(i=1,p=1;i<=5;i++) p*=i; √B、for(i=1;i<=5;i++){ p=1; p*=i;} C、i=1;p=1;while(i<=5){p*=i; i++;} D、i=1;p=1;do{p*=i; i++; }while(i<=5); 26. 有以下程序 #include main()

{ int i=0,x=0;

for (;;)

{ if(i==3||i==5) continue;

if (i==6) break; i++; x+=i; }

printf(\"%d\\n\

}

程序运行后的输出结果是 。

A、10 B、13 C、21 √D、程序进入死循环 27. 下列条件语句中,功能与其他语句不同的是 。 A、if(a) printf(\"%d\\n\

B、 if(a==0) printf(\"%d\\n\

C、 if (a!=0) printf(\"%d\\n\ √D、 if(a==0) printf(\"%d\\n\

28. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是 。

A、abs(x-y)<10 B、x-y>-10&& x-y<10 √C、(x-y)<-10||!(y-x)>10 D、(x-y)*(x-y)<100 29. 有以下程序 #include main() { int i;

for(i=0;i<3;i++)

switch(i)

{ case 0:printf(\"%d\

case 2:printf(\"%d\default:printf(\"%d\}

}

程序运行后的输出结果是 。

A、022111 B、021021 √C、000122 D、012

30. 若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a√A、1 B、2 C、3 D、4 31. 若k为整型,以下while循环执行_ __次。

k=2;

while(k=0)

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

A、无限次 √B、0次 C、1次 D、2次 32. 数字字符0的ASCII值为48,以下程序的输出结果是 。

#include main()

{ char a='1',b='2';

printf(\"%c,\

printf(\"%d\\n\ }

A、3,2 B、50,2 √C、2,2 D、2,50 33. 有以下程序

#include main()

{ int a,b,d=25; a=d/10%9; b=a&&(-1);

printf(\"%d,%d\\n\

}

程序运行后的输出结果是 。

A、6,1 √B、2,1 C、6,0 D、2,0

34. 若有 int d=2,a=5,s=3; s*=d+a; 变量s的值是 。

A、3 B、11 √C、21 D、17 35. 设有整型变量a, b, c,其中a,b的值分别为15与19,计算表达式“c=(a%2==0)?a:b”

后,c的值是( )。

A、0 B、1 C、15 √D、19 36. 整型常量的书写格式决定了整数的类型和值,03322是 。

A、用16进制表示的int类型常量 √B、用8进制表示的int类型常量

C、用10进制表示的int类型常量 D、用16进制表示的long int 类型常量

37. 若有 int i , j , n = 8 ; 连续执行下述两条语句,则 i , j 和n的值应是 。

i = n++ ; j =++n ;

A、i = 8 j = 9 n = 10 B、i = 8 j = 8 n= 9 √C、i = 8 j = 10 n = 10 D、i = 9 j = 8 n = 9 38. 要为字符型变量a赋初值,下列语句中哪一个是正确的 。

A、char a=\"k\"; B、char a=*; C、char a=%; √D、char a='3'; 39. 若有定义:int k=2,x;则能使变量x的值为3的表达式是

A、x=5/k+0.5 √B、x=5/k+1; C、x=x+k D、x=2*k-- 40. .以下程序段的输出结果是 。 char s=‘b‘;

s=s-1;

printf(―%c\\n‖,s);

A、b √B、a C、s的地址 D、c 41. 以下程序段的输出结果是 。

int j=3,s;

s=j++;

printf(―%d %d\\n‖,s,j);

√A、3 4 B、4 4 C、4 3 D、3 3 42. 判断char 形变量c为数字字符的正确表达式为是 。

√A、‘0‘<=c&&c<=‘9‘ B、‘0‘<=c<=‘9‘ C、c>=0||C<=‘9‘ D、c>=0&&c<=9 43. 运算符 的优先级最高。

A、* B、= C、+ √D、++ 44. 计算变量x(x大于1)整数部分位数的表达式,可以写作 。 A、(int)log10(x) B、log10(x) C、log10(x)+1 √D、(int)log10(x)+1

45. 判断变量x、y中有且只有1个值为0的表达式为 。 √A、!(x*y)&&x+y

B、(x*y)&&x+y

C、x*y==0 D、x==0&&y!=0

46. 执行语句“for(s=0,k=1; s<20||k<10; k=k+2) s+=k;”后,s、k的值为 。 A、25、9 √B、25、11 47. 下列程序段执行后s值为 。

C、36、11

D、36、9

int i=1,s=0;

while(i++) if(!(i%3)) break; else s+=i;

√A、2 B、3 C、6 D、以上均不是 48. 执行下列程序段后的输出结果是 。 char x=’9’;

while(x>’7’) printf(“%c”,x--);

A、99 √B、98 C、987 D、87 49. 该程序段的输出结果是多少?

m=37;n=13; while(m!=n) { while(m>n)

m=m-n; while(n>m)

n-=m;

}

printf(\"m=%d\\n\

A、m=13 B、m=11 √C、m=1 D、m=2 50. 以下程序段的输出结果为? for(i=0;i<5;i++) { for(j=1;j<10;j++) if(j==5) break; if(i<2) continue; if(i>2) break; printf(\"%d,\ }

printf(\"%d\\n\

A、10,3 B、5,2 √C、5,3 D、10,2

51. 以下程序段的输出结果是______。

int x=3; do

{ printf(\"%3d\ }while(!(--x));

A、1 B、30 √C、1 –2 D、死循环

52. 若k、s的当前值分别为4、0,执行语句“while(--k) s+=k;”后k、s值分别为 。 A、10、0 B、0、10 C、6、0 √D、0、6 53. 执行语句“for(x=0,s=0; x!=60; x=x+0.3) s=s+x;”后,变量x的值为 。 A、不可能大于60

C、一定小于60

B、不可能大于60.3 √D、可以远大于60

54. 为表示“a和b都不等于0”,应使用的C语言表达式是 。

A、(a!=0) || (b!=0) B、a || b

C、!(a=0)&&(b!=0) √D、a && b

55. 已知字符 ‘c’ 的ASCII码为 99 ,语句printf (\"%d,%c\的输出为 。

A、99,c B、99,100 √C、99,d D、语句不合法 56. 下列程序段的输出结果是 。

int k, s;

for(k=0, s=0; k<10; k++,s--)

if (s>k) break; else s += k;

printf(\"(%d, %d)\

A、(4, 5) B、(4, 6) √C、(6, 9) D、不是A、B、C 57. 下列程序的输出结果是 (30) 。 #include void main( ) { int y;

double d=3.4, x; x=(y=d/2.0)/2;

printf(\" (%0.2f, %d) \", x, y); }

√ A、(0.00, 1) B、(0.85, 1.7) C、(0.50, 1) D、以上都不对 58. 下列程序段的输出结果是 。 int k=1; switch(k) {

case 1: putchar('P'); case 2:

case 3: putchar('Q'); break; case 4: putchar('R'); default: putchar('S'); }

A、P √B、PQ C、PQR D、PQRS 59. 下列程序的输出结果是 。 #include void main() { int k;

for(k=1; k<5; k++) {

if(k%2) printf(\"#\"); else continue; printf(\"*\"); } }

√A、#*#* B、*#*# C、## D、以上都不对 60. 语句float x=3.0, y=4.0 ;下列表达式中y的值为9.0的是 。 A、y/=x*27/4 √B、y+=x+2.0 C、y-=x+8.0 D、y*=x-3.0 61. 下列表示中正确的C程序常量是 。

4

A、2.5 B、e1 C、'ok' √D、1.414e+2 62. 表达式 x==0&&y!=0||x!=0&&y==0等效于 。

A、x==0||y==0 B、x*y==0&&(x+y==0) √C、x*y==0&&(x+y)!=0 D、x*y==0||x+y==0

63. 按C语言的实数书写规则,下列实数表示不正确的是 。 A、223. B、.456e22 √C、e22 D、345e12 . 表达式a!=0||b!=0等效于 。

√A、a||b B、!(a||b) C、a=0||b=0 D、a!=0&&b!=0 65. 下列语句与语句while (i<100) { s+=i;i++; } 功能相同的是 。 √A、for ( ; i<100;i++) s+=i; B、for ( ; i<100;i++, s=s+i); C、for ( ; i<100;i++){ s+=i; i++;} D、for ( ; i<=100;i++) s=s+i; 66. 下列宏定义命令中,哪一个格式是正确的 。

A、#define PI=3.14159; B、define PI 3.14159 C、#define PI=‖3.14159‖ √D、#define PI (3.14159) 67. 已知x=10,ch=‗a‘,y=-5;则表达式x>=y&&ch<‘B‘的值是 。 √A、0 B、1 C、“假” D、“真” 68. 语句printf(―%d %.1f‖,5/2,5.0/2)的输出结果是 。

A、2.5 2.5 B、2.5 2 √C、2 2.5 D、2 2

69. 若x、y都是整型变量,且x=2,y=3;经下列计算后,x的值等于6的是 。 √A、x*=6-y B、x=x+y>2?5:6 C、x=y*4.8/2 D、x=(5*y)/2 70. 程序中调用了库函数sqrt,必须包含头文件 。

A、string.h B、stdlib.h C、ctype.h √D、math.h 简答题

1. x=(-26)10,写出它的8位补码 。 11100110

2. 若int k=5, 循环语句while (k!=0) k=k-1; 则循环体执行几次? 5次

3. 假设整型变量a的值是一个三位整数,写出将a的百位数字赋给变量x的表达式。

x=a/100

4. 写出判断整型变量a大于0且a是偶数的逻辑表达式。a>0&&a%2==0 5. int i=-5; while(i<0) i++; 写出循环的执行次数。5次

6. a是一个整型变量,写出把a中十位数字赋值给变量x的表达式。 x=a%100/10 7. 程序段 int s=0,i=1;while(i<=5) {s*=i;i++;}是否总能计算1~5的乘积?如果能计算,写出

计算结果,如果不能计算写出原因。不能。变量s的初值为0,结果为0。

8. 将数学代数式(y6+6xy-8)/(7a)写成C程序的算术表达式。(pow(y,6)+6*x*y-8)/(7*a) 9. 写出|z|>5的关系表达式。fabs(z)>5

10. 写出“求整型x的个位数字”的表达式。x%10

11. 若实型变量x、y已有值,写出“求x、y两个变量中较大值”的表达式。x>y?x:y 12. 将数学代数式 x2+2sin(x)+3 写成C程序的算术表达式。x*x+2*sin(x)+3 13. 设有如下定义:int a=1,b=2,c=3,d=4,m=5,n=6;则执行表达式: (m=a>b)‖(n=c>d)

后,n的值是 ? 6

14. 若 int i=3; 写出下面程序段的输出结果。AB switch(i+1)

{ case 4: printf(\"A\"); case 2: printf(\"B\"); break; default: printf(\"%2d\\n\ }

15. 已知方程ax2+bx+c=0,a、b、c是方程的系数且存在两个实根,写出计算任意一个实根

的算术表达式。 (-b+sqrt(b*b-4*a*c))/(2*a)

16. 写出判断整型变量a的值是偶数的逻辑表达式。 a%2==0

17. 整型变量m的值为27,语句printf(―%x ―,m);的输出结果是。 1b

18. 若int i=10,s=0;执行语句while(i!=0) { s+=i;i--; }后s、i值分别为 。 55,0 19. 表达式 1<0<5 的值是______。 1

20. 下列程序段的输出是______。 7,9.000000 int k; float s;

for (k=0, s=0; k < 7; k ++) s += k/2;

printf(\"%d, %f\\n\

21. 写出执行下列语句后的输出结果。3

int x=5;

if(x=3) printf(\"%d\\n\else printf(\"%d\\n\22. 写出“仅当char类型变量ch是大写英文字母时改变ch为对应小写字母”的C表达式。 ch=ch>=‟A‟&&ch<=‟Z‟?ch-„A‟+‟a‟:ch

23. 在C语言中,逻辑值”真“用什么表示?非0的数 24. 用for语句循环打印0 1 2 0 1 2 0 1 2;

for(i=1;i<=9;i++) printf(“%2d”,_____); (i-1)%3 25. 语句:printf(“%d”,(a=2)&&(b=-2));的输出结果是? 1 阅读程序题

1. #include

void main( ) { char ch;

while((ch = getchar()) != '\\n'){

if ( ch>='A' && ch<='Z' ) ch = 'a' + 'Z' - ch; putchar(ch); }

}

程序运行时,输入ABC,输出 程序运行时,输入xyz,输出 程序运行时,输入a+Z,输出 (1) A、abc √B、zyx (2) A、XYZ

B、ABC

(3) √A、a+a 2. #include

void main( )

(1) 。 (2) 。 (3) 。 C、ZYX

C、cba

D、ABC √D、xyz

D、a+A

B、z+z C、Z+a

{ int choice, i;

float price;

for( i = 1; i <= 5; i++) {

scanf(\"%d\ if(choice == -1) break; switch (choice) { case 1: price=2.5; break; case 2: price=1.5; break; case 3: price=4.5; break; case 4: price=3.5; break; default: price=0.0; break; }

printf(\"%0.1f\\n\ }

printf(\"Thanks \\n\"); }

程序运行时,输入3 7 -1,第1行输出 (1) ,第2行输出 (2) ,第3行输出 (3) 。

(1) A、0.0 B、3.0 √C、4.5 D、Thanks (2) √ A、0.0 B、3.0 C、7.0 D、Thanks (3) A、-1.0 B、0.0

C、7.0 √D、Thanks

3. 该程序的运行结果是 。 void main() { int a,b,c;

a=2;b=7;c=5;

switch(a>0) { case 1:

switch(b<10)

{ case 1:printf(\"^\");break;

case 0:printf(\"!\");break; } case 0:

switch(c==5)

{ case 0: printf(\"*\");break;

case 1: printf(\"#\");break; default:printf(\"%%\");break;

} default:

printf(\"&\");

}

printf(\"\\n\");

}

√A、^#& B、^ C、& D、^!*#%& 说明:阅读下列程序,写出运行时的输出结果。 4. 写出程序的运行结果

#include

void main()

{ int x=3,y=3,z=1;

if(x==y+z) printf(“* * * *”); else printf(“# # # #”); }

解答:# # # #

5. 下述程序的输出结果为 。

#include main( )

{ int k=1,sum=0;

do{

k=k*(k+1)/2; sum+=k;

}while(sum%7);

printf(“%d”,sum);

} 解答:7

6. 下列程序的输出为 。

#include

main( ) { int i=1;

while(i<=-1)

printf(“###”); printf(“%d”,i);

} 解答:1

7. 输入4<回车>后,下列程序的输出结果是_______。 # include \"stdio.h\" int main( ) { int j,k,n; float f,s; scanf(\"%d\ s=0; f=1;

for(k=1;k<=n;k++){ for(j=1;jf=f*k; s=s+f;

printf(\"%.0f#\}

}

解答:1#3#21#1173#

8. 以下程序运行后,x和y的值分别代表什么? #include void main()

{ int a,b,c,x,y;

printf(“input three numbers:\\n”); scanf(“%d%d%d”,&a,&b,&c); if(a>b) {

x=a; y=b; }

else {

x=b; y=a;

}

if(xc) y=c;

printf(“x=%d y=%d\\n”,x,y); }

解答:三个数的最大、最小值

9. 下列程序的输出结果是_______。 #include void main( )

{ int x = 10023; do{

printf(\"%d#\ x = x / 10; }while (x != 0); }

解答:3#2#0#0#1#

10. 下列程序的输出结果是_______。 #include void main( ) { int i, x = 1, y = 1;

for (i = 1; i <= 5; i++){ x = x + y; y++;

printf(\"%d#\ } }

解答:2#4#7#11#16#

11. 下列程序的输出结果是_______。

#include void main() {

char x,y='A';

scanf(\"%c\// 输入字符m switch(x)

{ case 's': y+=1; printf(\"%c\ case 'm': y+=3; printf(\"%c\ case 't': y+=5; printf(\"%c\

default: y+=7; printf(\"%c\

} }

解答:DI

12. 下列程序的输出结果是_______。

#include void main( )

{ int x,i;

for( i = 1,x=1; i <= 3; i++) {

x=x+i;

switch (x) {

case 1: putchar('a'); break; case 2: putchar('b'); break; case 3: putchar('c'); break; case 4: putchar('d'); break; default: putchar('e'); break; } } }

解答:bde

13. 下列程序的输出结果是_______。

#include void main() { int x;

float k,s=0;

scanf(\"%d\ //输入7368 do{

k=x%10;

if (k!=0) s+=1/k; x/=10;

}while(x!=0);

printf(\"sum=%.3f\\n\ }

解答:0.768

14. 下列程序的输出结果是_______。 #include void main()

{ long a,b,r;

scanf(\"%ld\ b=0; do{

r=a%10; a=a/10; b=b*10+r; }while(a);

printf(\"%ld\

}

程序运行时如果输入 37 , 输出为_ __。 解答:73 程序运行时如果输入 -345 , 输出为_ __。 解答:-543 程序运行时如果输入 10239, 输出为 ___。 解答:93201 15. 下列程序的输出结果是_______。

#include void main() { char ch;

for(ch=’z’;ch>=’p’;ch-=2) { putchar(‘(‘);

printf(“%c,%c”,ch-32,ch); putchar(‘)’); } }

解答:(Z,z)(X,x)(V,v)(T,t)(R,r)(P,p) 16. 写出下面程序的功能

#include void main()

{ int x,d,count=0;

scanf(“%d”,&x); //输入一个正整数 do{

d=x%10;

if(d) count++; x/=10;

}while(x!=0);

printf(“count=%d”,count); }

解答:统计正整数中非0数字个数。 17.

#include void main()

{ int x,d,count=0;

scanf(\"%d\//306067 do{ d=x%10;

if ( d==6 ) count++; x/=10;

}while(x!=0);

printf(\"count=%d\ }

解答:count=2

18. 写出下面程序的输出结果。

#include void main() { char c,x; int i;

do{ x=getchar(); //运行时输入ab104dE0Ae if(x>=’A’&&x<=’Z’) i=0; else i=1;

}while(i>=1);

for(c=’A’;c<=x;c++)

{ for(i=1;i<5+c-‘A’;i++) putchar(‘ ‘);

for(i=1;i<=2*(x-c)+1;i++) putchar(c+32); putchar(‘\\n’); } }

解答:aaaaaaaaa bbbbbbb ccccc ddd

e

19. 写出下面程序的输出结果。

#include void main()

{ int i;

for( i=1;i<=4;i++)

{ if ((i%3)==0) { printf(\"$\"); continue;} else printf(\"*\"); printf(\"#\");

}

}

解答:*#*#$*#

20. #include void main()

{ int m=18,s=0; do {

switch(m%7) {

case 2 : m/=2;s+=2; break; case 3 : m/=3;s+=3; break; case 5 : m/=5;s+=5; break; default : m--; s--; }

printf(\"%d\\n\ } while(m); }

解答:-1 2

7 6

21. 写出下面程序的输出结果。

#include void main() { int i;

for(i=1;i<5;i++)

switch(i%5)

{ case 5: printf(\" 5\"); case 3: printf(\" 3\"); case 1: printf(\" 1\"); default: printf(\"%2d\

} }

解答:1 1 2 3 1 3 4 程序填空题

1. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】求 1 + 2/3 + 3/5 + 4/7 + 5/9 + … 的前20项之和。 运行示例:

sum = 11.239837 【程序】

#include void main( ) { int i, b = 1;

double s; (1) ;

for(i = 1; i <= 20; i++){ s = s + (2) ; (3) }

printf( (4) , s); }

【供选择的答案】 (1) A、√s = 0 (2) A、i/b

C、i/2*i-1

(3) A、;

B、s = 1 C、s = -1

D、s = 2

B、double(i)/double(b) √D、(double)i/(double)b B、b = 2 * i – 1;

C、b = 1.0 * b;

(4) A、\"sum = %d\\n\" √D、b = b + 2; B、\"s = %c\\n\"

√C、\"sum = %f\\n\" D、\"s = %s\\n\"

2. 【程序说明】求 2/1 + 3/2 + 5/3 + 8/5 + „ 的前10项之和。(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子) 【程序】

#include void main()

{ int i, a = 1, b = 1, t; (1) ; for(i = 1; i <= 10; i++){ t = a; (2) ; b = t; y = (3) ; }

printf(\"%f\\n\}

(1) A、int y = 0 B、int y √C、double y = 0 (2) A、a = b B、b = a + b √C、a = a + b

D、double y D、b = a

(3) √A、y + 1.0*a/b B、y + a/b C、a/b D、1.0*a/b 3. 输入的一个小写字母,将字母循环后移5个位置后输出,如‘a‘变成‘f‘, ‗w‘变成‘b‘。 #include void main() { char c;

c=getchar();

if(____________) 解答:c>=‟a‟&&c<‟v‟ c=c+5; else

if (c>='v' && c<='z')

____________ 解答:c=c+5-26;

putchar(c); }

4. 输入m、n(要求输入数均大于0),输出它们的最大公约数。 #include void main()

{ int m,n,k;

while(scanf(\"%d%d\ 解答:m<=0 || n<=0 for( ________; n%k!=0||m%k!=0; k--); 解答:k=m>n?n:m printf(\"%d\\n\

}

5. 输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数。 #include main()

{ _______ n,i,j; 解答:int

printf(\"输入非零的整数(输入零结束程序)\"); i=j=0;

scanf(\"%d\

while_______ 解答:(n!=0) { if(n>0)

i=______; 解答:i+1

if(n<0)

j=______; 解答:j+1

______; 解答:scanf(\"%d\ }

printf(\"i=%4d j=%4d\\n\

}

6. 斐波哪契数列中的头两个数是0和1,从第三个数开始,每个数等于前两个数的和,即:0,1,1,2,3,5,8,13,21,...等。下面这个程序就是求斐波哪契数列的前20个数。

#include

void main() { int f,f1,f2,i;

f1=0;f2=______; 解答:1 printf(\"%d\\n%d\\n\

for(i=3;i<=20;______) 解答:i++ {

f=______; 解答:f1+f2 printf(\"%d\\n\ f1=f2;

f2=______; 解答:f }

}

7. 【程序说明】根据下式计算s的值,要求精确到最后一项的绝对值小于10–6。

s1131517  #include

#include void main( )

{ int flag = 1, t = 1; (1) ; while( 2) ){ item = flag * 1.0 / t; s = s + item; (3) ; t = t + 2; }

printf ( \"s = %f\\n\}

(1) √A、double item = 2, s = 0; C、double item = 1, s = 1; (2) A、item < 1E-6 C、fabs (item) < 1E-6 (3) A、flag = -1

B、double item = 0, s = 0; D、double item = 3, s = 1; B、item >= 1E-6

√D、fabs (item) >= 1E-6 B、s = -s

√C、flag = -flag; D、t = -t

8. [程序功能] 输入 100个数,求它们的和并输出。 #include void main()

{ float x,sum; int i=0;

; 解答:sum=0

printf(\"please input data:\\n\"); while(i<100) { scanf(\"%f\

sum+=x; i++; }

; 解答:printf(“sum=%f\\n”,sum) }

9. 以下程序的功能是: 输出{ 2,3 | m>=1,n>=1}中由小到大排列的前32项数,并

且每行8个数。(如 2,3,4,8,9,16,27,32 )

#include\"stdio.h\" void main() {

long m2,n3; int k; m2=2;n3=3;k=0;

while(k<32)

{ if ( ) 解答:m2{

printf(\" %ld\m2*=2;

m

n

}

else

{ printf(\" %ld\

; 解答:n3*=3 } k++;

if ( ) printf(\"\\n\"); 解答:k%8==0 } }

10. 【程序说明】

输出1~1000之间所有满足各位数字的立方和等于它本身的数。 【程序】

#include void main( )

{ int digit, k, m, s;

for (k=1; k<=1000; k++){ (1) while(m!=0){

digit=m%10; s=s+digit*digit*digit; (2) ; }

if( (3) ) printf(\"%d \", s); } }

(1) A、s=0; √B、m=k; s=0; C、m=k; D、k=m; s=0; (2) √A、m=m/10 B、m=m%10 C、m=m D、m=k/10 (3) A、m!=s B、m==s C、k!=s √D、k==s 11. [程序功能]输入20个整数,输出其中最小数。 #include #define N 20 void main()

{ int i,x,min;

scanf(―%d‖,&x);

________; 解答:min=x for(i=2;i<=N;i++) { scanf(―%d‖,&x);

________; 解答: if(min>x) min=x }

printf(―%d\\n‖,min);

}

12. 输入1 个正整数 n, 计算并输出 s 的前n项的和。 s = 1/2 -2/3 + 3/4 - 4/5 + „„(-1)n-1

n/(n+1)

#include void main( )

{ int k, flag=1, n; float s=0;

scanf(\"%d\ for (k=1 ; k<=n; k++){ s=s+ (1) ; ( 2) ; }

printf(\"sum=%f\\n\

}

(1) A、1.0*k/(k+1)* flag √B、flag*n/(n+1) C、- k/(k+1) (2) A、flag= -1 B、s= -s C、flag= -flag 13.

[程序说明]输入x、n后输出下列算式的值。

234nxxxx...(1)n1x

2!3!4!n![程序]

#include void main()

{ float s,t,x; int i,n;

scanf(\"%f%d\ (1) for(i=1;i<=n;i++) { (2) s+=t; } (3) ; }

(1)A、 s=0; t=0;

√B、 s=0; t=-1; C、 s=x; t=1; D、 s=x; t=-1; (2)√A、 t=-t*x/i; B、 t=pow(-x,i)/i; C、 t=-pow(x,i)/i; D、 t=t*x/i;

(3)√A、 printf(\"%f\\n\ B、 printf(\"%f\\\\n\ C、 printf(\"%s\\n\ D、 printf(\"%c\\n\

D、1.0*k/(k+1) D、k= -k √

编程序

1. 编写程序,判断输入字符的种类,即区分空格、数字字符、英文字母和其他字符。 #include void main() { char c;

printf(\"Please input a character:\\n\"); c=getchar();

if(c==' ')

printf(\"This is a blank\"); else if(c>='0'&&c<='9')

printf(\"This is a digit\");

else if(c>='A'&&c<='Z'||c>='a'&&c<='z')

printf(\"This is a letter\");

else printf(\"This is an other character\"); }

2. 编写程序,输入一批正整数,遇0或负数则输入结束,要求统计并输出其中奇数和偶数个数。

#include void main()

{ int x,a=0,b=0;

printf(“Enter data:”); scanf(“%d”,&x); while(x>0)

{ if(x%2!=0) a++; else b++;

scanf(“%d”,&x); }

printf(“奇数:%d\\n偶数:%d\\n”,a,b); }

3. 输入入一个职工的月薪salary,计算并输出应交的个人所得税tax = rate * (salary-850)。

其中rate的计算方式如下:

当 salary ≤850 时,rate = 0;

当 850 < salary ≤ 1350 时,rate = 5%; 当 1350 < salary≤ 2850 时,rate = 10%; 当 2850 < salary ≤ 5850 时,rate = 15%; 当 5850 < salary 时,rate = 20%。 #include

void main()

{ double salary,rate,tax;

printf(“Please input salary:\\n”); scanf(“%lf”, &salary);

if(salary<=850) rate=0;

else if(salary>850&& salary<=1350) rate=5;

else if(salary>1350&& salary<=2850) rate=10;

else if(salary>2850&& salary<=5850) rate=15; else rate=20; tax=rate*(salary-850)/100; printf(“tax=%.2f\\n”,tax); }

4. 编程求数列1+(1+2)+(1+2+3)+…+(1+2+...+10)的和并输出。 #include main()

{ int a,b,sum=0; for(a=1;a<=10;a++) for(b=1;b<=a;b++) sum+=b;

printf(\"1+(1+2)+(1+2+3)+„+(1+2+...+10)=%d\\n\

} 或

#include main()

{ int a,b=0,sum=0; for(a=1;a<=10;a++) { b+=a; sum+=b;

}

printf(\"1+(1+2)+(1+2+3)+„+(1+2+...+10)=%d\\n\

}

5. 输出一张平方根表(如下表所示),x的取值范围是[5, 1000],请调用库函数sqrt()计算

平方根。

x

5 6 … 999 1000

#include #include void main()

{ float x,y;

printf(\" x sqrt(x)\\n\"); for(x=5;x<=1000;x++) { y=sqrt(x);

printf(\"%5.0f%10.2f\\n\ }

}

6. 输入一个实数a,判断是 “正数”、“负数”或“零”,并输出“正数”、“负数”或“零”

的判断结果。

#include void main()

sqrt(x) 2.24 2.45 … 31.61 31.62

{ float a;

scanf(\"%f\ if(a>0) printf(\"正数\\n\");

else if (a==0) printf(\"零\\n\");

else printf(\"负数\\n\");

}

7. 输入被除数和除数x,y,如果除数y不等于0,计算x除以y的商,如果除数y等于

0,输出“数据错误”。 #include void main() {

double x,y,s;

printf(“Input x y:\\n”);

scanf(\"%lf%lf\ if(y!=0){

s=x/y;

printf(\"%f\\n\}

else printf(\"数据错误\\n\");

}

8. 输入一个小时、分、秒的时间,将输入的时间加1秒后,输出新的时间。要求输入输出

时间格式为小时:分:秒(例如输入5:45:9,则输出5:45:10,若输入23:59:59,

则输出0:0:0)。 #include void main() { int h,m,s;

scanf(“%d:%d:%d”,&h,&m,&s); s++;

if(s==60) // 加1秒后为60,向分进位 { s=0; m++;

if(m==60) // 60分时向时进位 { m=0;

h++;

if(h==24) h=0; } }

printf(“%d:%d:%d\\n”,h,m,s);

}

9. 输入年份、月份,判定是否为闰年,并输出该年该月的天数。 #include main()

{ int y,m,days,leap=0;

printf(“输入年 月\\n”); scanf(“%d%d”,&y,&m);

if(m%2==1&&m<8||m>=8&&m%2==0) days=31; else if(m==4||m==6||m==9||m==11) days=30; else if(m==2)

if(y%4==0&&y%100!=0||y%400==0)

{ days=29;

leap=1; }

else days=28; if(leap==1)

printf(“%d年是闰年,”,y); else

printf(“%d年不是闰年,”,y);

printf(“%d月有%d天\\n”,m,days);

}

10. 计算表达式1+2!+3!+...+10!+11!+12!的值,并将计算结果以格式\"%d\"输出。 #include

void main( ) { int s=1,k=1,i; for(i=2;i<=12;i++)

{ k*=i;

s+=k;

}

printf(\"%d\\n\

} 或

#include

void main( ) { int s=0,k,i,j;

for(i=1;i<=12;i++)

{ k=1;

for(j=1;j<=i;j++)

k*=j;

s+=k;

}

printf(\"%d\\n\

}

11. 计算数列1,-1/3!,1/5!,-1/7!,1/9!,...的和至某项的绝对值小于1e-5时为止(该项不累加),将

求和的结果保留4位小数输出。 #include #include

void main( ) { float s=1,t=1,i=3; do { t= -t* (i-1)*i; s=s+1/t;

i+=2;

}while(fabs(1/t) >= 1e-5); printf(\"%.4f\\n\ }

12. 编写一个程序求出300~500之间满足如下条件的数:它们三个数字之积为42,三个数

字之和为12。

#include

#include

void main( ) { int x,a,b,c;

for(x=300;x<=500;x++){ a=x/100; b=x%100/10; c=x%10;

if(a*b*c==42&&a+b+c==12) printf(\"%d\\n\

} }

13. 输入一个实数x,一个整数n,输出xn的值(不使用pow函数)。

#include void main()

{ double x,t=1; int i,n;

printf(“Input x n:\\n”); scanf(\"%lf%d\

for(i=1;i<=n;i++) t*=x;

printf(\"%f\\n\

}

14. 编制程序,输入n个整数(n从键盘输入,n>0),输出它们中偶数的和。

#include void main()

{

int i,n,x,sum=0;

printf(“Input n:\\n”); scanf(\"%d\for(i=1;i<=n;i++){

scanf(“%d”,&x); if(x%2==0) sum+=x;

}

printf(\"sum=%d\\n\

}

15. 编制程序,输入n个整数(n从键盘输入,n>0),输出它们中偶数的平均值。

#include void main()

{ int i,n,x,sum=0,count=0;

double aver;

printf(“Input n:\\n”); scanf(\"%d\for(i=1;i<=n;i++){ scanf(“%d”,&x); if(x%2==0){ sum+=x; count++; } }

aver=(double)sum/count; // 或 aver=1.0*sum/count;

printf(\"average=%d\\n\ }

16. 统计某科成绩的总分,平均分,及格人数,输入-1时,结束。

#include void main()

{ int score,num=0,passnum=0;

float ave,sum=0; do {

scanf(“%d”,&score); if(score==-1) break;

sum=sum+score;

num++;

if(score>=60) passnum++;

} while(score!=-1); // 或 }while(1); ave=sum/num;

printf(“sum=%f,ave=%f,pass=%d”,sum,ave,passnum);

}

17. 将满足条件pow(1.05,n)<1e6#include #include

void main() // 运行结果:283, 992137 { float y=1.05; int n=1;

for(n=1;;n++)

if((pow(y,n)<1e6)&&(1e618. 编程,输入n后:输入n个数,根据下式计算并输出y值。

x2sinxxy2x2xx1x22x2x2#include

#include void main()

{ int i,n; double x,y;

scanf(“%d”,&n);

for(i=1;i<=n;i++)

{ scanf(“%lf”,&x);

if(x<-2) y=x*x-sin(x);

else if(x<2) y=pow(2,x)+x; else y=sqrt(x*x+x+1);

printf(“y=%f\\n\

}

}

19. 在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数。 #include

void main( ) // 运行结果:313 { int i,j; for(i=1; ; i++)

if(i%3==1&&i%5==3&&i%7==5&&i%9==7) break; printf(\"%d\\n\ }

20. z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x,y取值为区间[0,10]的整数,找出使z取最小值的

x1,y1。 #include #include void main()

{ int x,y,x1,y1;

float z,z1; x1=y1=0;

z1=10*cos(x1-4)+5*sin(y1-2); // 赋初值 for(x=0;x<=10;x++)

for(y=0;y<=10;y++)

{ z=10*cos(x-4)+5*sin(y-2); if(zy1=y; } }

printf(“%d,%d\\n”,x1,y1); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务