您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页C语言题库

C语言题库

来源:保捱科技网
一、判断题(每题1分)

1.函数即可以嵌套定义,又可以嵌套调用。( × ) 2。unsigned 和void 在C 中都是保留字。( √ ) 3。表达式 ++i 表示对变量i 自加1。 (√ ) 4。C 语言源程序的基本结构单位是main 函数。 ( × ) 5.字符常量的长度肯定为1。 (√ )

6。char a[]={’a',’b',’c'};char b[]={”abc”};数组a和数组b 占用的内存空间大小不一样. ( √ )

7。若有int i=10,,j=2; 则执行完i*=j+8;后i 的值为28。 (× ) 8。int i,*p=&i;是正确的C 说明。( √ ) 9。While 循环语句的循环体至少执行一次. ( × )

10。有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。 ( √ ) 11. 7&3+12的值是15。( × )

12. C 语言本身不提供输入输出语句,输入和输出操作是由函数来 实现的.( √ )

13。 若 a=3,b=2,c=1 则关系表达式\"(a〉b)==c\" 的值为”真”。 (√ ) 14. 在C 语言中,整型数据在内存中占2个字节。 ( × )

15. 对二维数组a 来说,由于a+1与*(a+1)的值相等,因此二者的含义是一样的。 (× ) 16. break 语句可用于循环体内,它将退出该重循环. ( √ )

17。 将一个字符串\"abc”赋给字符串变量str 的方法是str=\"abc”.。 (× ) 18. 参加位运算的数据可以是任何类型的数。( × )

19。 C 语言规定:在一个源程序中,main 函数的位置必须在最开始. ( × ) 20。 静态外部变量只在本文件内可用。 ( √ )

21. 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t 没定义,所以此宏定义是错误的.( × )

22. 字符串只能存放在字符型数组中。 ( √ )

23. 若 a=3,b=2,c=1 则关系表达式”(a>b)==c\" 的值为”真”. (√ ) 24. 在标准C 中,\"=\"是判断两个数是否相等。 ( × )

25。 函数调用可以出现在执行语句中,但不能出现在表达式中。 (× ) 26。 break 语句可用于循环体内,它将退出该重循环. ( √ ) 27. strcat(s1,s2)函数是将字符串s1复制到字符串s2中。 (× ) 28。 函数若无返回值,则它一定无形参。( × )

1

29. C 语言是一种结构化程序设计语言。 ( √ ) 30. 静态外部变量只在本文件内可用. ( √ ) 31。 关系运算符〈= 与 == 的优先级相同。( × ) 32。 C 语言中的整型常量有3种表示方法。 ( √ )

33。 C 语言中只能逐个引用数组元素而不能一次引用整个数组. (√ )

34. char *p=\"girl”;的含义是定义字符型指针变量p,p 的值是字符串”girl”. ( × ) 35. 静态变量和外部变量都是全局变量,它们的存储是静态的. (× ) 36。 共同体变量所占的内存长度等于最长的成员的长度。 ( √ ) 37. 由于主函数首部经常缩写成main(),所以它不可能有形式参数. (× ) 38. 通过return 语句,函数可以带回一个或一个以上的返回值。( × ) 39。 C 语言俗称\"低级语言的高级形式”,这说明C 语言的功能不强。 ( × ) 40. 程序进行编译时,不为形式参数分配存储空间。 ( √ ) 41。 C 语言的当型循环是先执行循环后判断条件.( × ) 42。 \"++\"运算符的优先级比”+\"运算符的优先低。( × )

43. 指针就是地址,因此一个变量的指针就是该变量的地址. (√ ) 44. 在if 语句中,else 前一个语句可不加\";” ( × )

45。 return 后面括号里的表达式的值即是此函数的值。 (√ )

46.char a[]={'a','b’,'c'};char b[]={\"abc\"};数组a和数组b 占用的内存空间大小不一样. ( √ )

47。 结构体类型只有一种. (× )

48。 在任何情况下,对二维数组的初始化都可以省略第一维的大小。( × ) 49. 结构化程序设计所规定的三种基本控制结构是顺序、选择、输出. ( × ) 50.有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。 ( √ ) 二、单项选择题(每题2分) 1

C

( A )

A. %

B。 / C。 !

D. *

2。C程序的执行是从( A )

A本程序的main函数开始,到main函数结束

B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C本程序的main函数开始,到本程序文件的最后一个函数结束

2

D本程序文件的第一个函数开始,到本程序main函数结束 3.以下选项中,( D )是不正确的 C 语言字符型常量。

A. 'a’ B. '\\x41' C。 '\\101’ D. ”a\" 4。 以下程序的输出结果是( C )

A.0 B. 1 C。 3 D. 不确定的值 #include〈stdio.h〉

main( )

{ int x=10, y=3;

printf(“%d\\n”,y=x/y); } 5.以下对二维数组a 的正确说明是( C ) A.int a[3][] B.float a(3,4) C。double a[1][4] D.float a(3)(4) 6。字符串\"ABC”在内存占用的字节数是( B )。 A. 3 B。 4 C. 6 D. 8

7.下列运算符中优先级最高的运算符是(A) A.!

B。%

C.—=

D。&&

8。以下程序的输出结果是( A ) A。 1

B。 2

C. 3

D。 4

#include〈stdio.h>

main( )

{ int w=4,x=3,y=2,z=1;

printf(“%d\\n”,(w〈x?w:z〈y?z:x)); } 9。以下叙述正确的是(D)

A。 do-while语句构成的循环不能用其他语句构成的循环代替. B。 do-while语句构成的循环只能用break语句退出

C. 用do—while语句构成循环时,只有在while后的表达式为非零时结束循环D。 用do-while语句构成循环时,只有在while后的表达式为零时结束循环 10。在定义一个结构体变量时,系统分配给它的内存是( D )。 A.结构体中第一个成员所需内存量 B。结构体中最后一个成员所需内存量 C.成员中占内存量最大者所需容量

3

D.各成员所需内存量的总和

11。若有下列定义,则对a 数组元素地址的正确引用是( C ). int a[5],*p=a;

A.*(p+5) B.*p+2 C.*(a+2) D.*&a[5] 12.下列定义不正确的是( C )。

A.#define PI 3.141592 B.#define S 345 C.int max(x,y); int x,y; { } D.static char c; 13。在C 语言中,形参的缺省存储类是( A )。 A.auto B.register C.static D.extern

14.以下函数调用语句中实参的个数是( A )。 exce((v1,v2),(v3,v4,v5),v6); A.3 B.4 C.5D.6

15。 以下描述中,正确的是( C )

A.预处理是指完成宏替换和文件包含中指定的文件的调用 B.预处理指令只能位于C 源文件的开始

C.C 源程序中凡是行首以#标识的控制行都是预处理指令

D.预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备 16.以下字符中不是转义字符的是( C )

A。\\a B.\\b C.\\c D.\\\\

17。 C 语言程序中必须有的函数是( B ) A.#include \"stdio。h\" B。main C. printf D.scanf

18.有定义:int a=8,b=5,c;, 执行语句c=a/b+0。4;后,c 的值为 ( B ) A.1.4 B.1 C.2.0 D.2 19. 以下程序的输出结果是( D )

A.i=2,,j=1,k=3 B。 i=1,,j=1,k=2 C. i=4,,j=2,k=4 D. i=1,j=1,k=3 #include〈stdio。h〉 main( )

{int i,j,k,a=3,b=2;

i=(——a==b++)?—-a:++b;

4

j=a++;k=b;

printf(”i=%d,j=%d,k=%d\\n\",i,j,k); }

20. 下列选项中正确的语句组是( D )。 A.char s[8]; s={”Beijing\ B.char *s; s={”Beijing\"}; C.char s[8]; s=”Beijing”; D.char *s; s=\"Beijing”;

21。 若已定义x 为int 类型变量,下列语句中说 明指针变量p 的正确语句是( C ).

A.int p=&x; B.int *p=x; C.int *p=&x; D.*p=*x; 22.sizeof(float)是( C )。

A.一种函数调用 B.一个不合法的表达式 C.一个整型表达式 D.一个浮点表达式

23. 已知year 为整型变量,不能使表达式(year%4==0&&year%100!=0)||year%400==0的值为\"真\"的数据是( A )。

A.1990 B.1992 C.1996 D.2000 24. 下面有关for 循环的正确描述是 ( D ) A.for 循环只能用于循环次数已经确定的情况 B。for 循环是先执行循环体语句,后判断表达式 C。在for 循环中,不能用break 语句跳出循环体

D.for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 25. 在位运算中,操作数每右移一位,其结果相当于( B )。 A.操作数乘以2 B.操作数除以2 C.操作数乘以16 D.操作数除以16 26. 以下能对二维数组a 进行正确初始化的语句是( B )。 A.int a[2][]={{1,0,1},{5,2,3}}; B.int a[][3]={{1,2,3},{4,5,6}}; C.int a[2][4]={{1,2,3},{4,5},{6}};

D.int a[][3]={{1,0,1}{},{1,1}};

27. C 语言中的文件的存储方式有( C )。

A.只能顺序存取 B.只能随机存取(或直接存取) C.可以顺序存取,也可随机存取 D.只能从文件的开头进行存取

28。 以下只有在使用时才为该类型变量分配内存的存储类说明是( B )。

5

A.auto 和 static B.auto 和 register C.register 和 static D。extern 和 register 29.关于return 语句,下列正确的说法是( C )。

A.在主函数和其他函数中均可出现 B.必须在每个函数中出现

C.可以在同一个函数中出现多次 D.只能在除主函数之外的函数中出现一次 30. 以下叙述中不正确的是( C ). A.预处理命令行都必须以#号开始

B.在程序中凡是以#号开始的语句行都是预处理命令行 C.C 程序在执行过程中对预处理命令行进行处理 D.以下是正确的宏定义 #define IBM_PC 31.一个C语言程序是由(C)组成的.

A.主程序 B.子程序 C.函数 D.过程 32.判断char型变量c1是否为小写字母的最简单且正确的表达式为(D)。

A。 ’a’〈=c1<=’z' B。 (c1〉=a)&&(c1〈=z)

C。 (’a’〈=c1)||('z'〉=c1) D. (c1>='a’)&&(c1<=’z')

33.为了判断两个字符串s1和s2是否相等,应当使用(D)。 A. if (s1==s2) B。 if (s1=s2)

C. if (strcpy(s1,s2)) D. if( strcmp(s1,s2) == 0 )

34. 设a,b都是int型变量,则表达式:(a=2,b=5,a〉b? a++ : b++ ,a+b)的值为(B). A. 7 B. 8 C。 9 D。 2

35. 设x、y和t均为int型变量,则以下语句:t=x; x=y; y=t;的功能是(D)。 A。 把x和y按从大到小排列 B。 把x和y按从小到大排列 C. 无确定结果 D. 交换x和y中的值 36. 下面标识符中,合法的用户标识符为(D)。 A. P#Ad B。

12a C.char D。_int 37. 循环语句while(!E);中的表达式!E等价于(C)。

6

A. E!=0 B。 E!=1 C。 E==0 D. E==1

38。 设有以下语句,则( A ) 不是对a数组元素的正确引用,其中0≤i〈10。 int a[10] = {0,1,2,3,4,5,6,7,8,9}; int *p = a; 供选择的答案是:

A。 a[p—5] B. *(&a[i])

C. p[i] D. *(a+i) 39. 若用数组名作为函数调用的实参,传递给形参的是 (A).

A。数组的首地址 B.数组第一个元素的值

C.数组中全部元素的值 D.数组元素的个数 40. 在一个文件中定义的全局变量的作用域为(D)。

A.本程序的全部范围; B。本文件的全部范围; C.函数内的全部范围; D。从定义该变量的位置开始到文件结束.

41. 以下语句中,指针s所指字符串的长度为(A)。 char *s=\"\\\\Hello\World\\n”;

A.13 B.12 C.14 D.10

42.若调用一个函数,且此函数中没有return语句,则正确的说法是:该函数(D). A.没有返回值 B.返回若干个系统默认值 C.能返回一个用户所希望的函数值 D.返回一个不确定的值 43。 以下只有在使用时才为该类型变量分配内存的存储类说明是( B ). A.auto 和 static B.auto 和 register C.register 和 static D.extern 和 register 44.关于return 语句,下列正确的说法是( C ).

A.在主函数和其他函数中均可出现 B.必须在每个函数中出现

C.可以在同一个函数中出现多次 D.只能在除主函数之外的函数中出现一次 45. 设有下列程序段,则scanf函数调用语句中对结构体变量成员的不正确引用为( B ). struct student

7

{ char name[20]; int age; char sex; }stu[5], *p; p=stu;

A. scanf(\"%s”, stu[0]。name); B。 scanf(\"%d\", p->age);

C. scanf(”%c\", &(p—>sex)); D。 scanf(\"%d\&stu[0]。age);

46.若x、y、j 和k 都是int 型变量,则计算表达式x=( k=32,j=6, i=4)后,x 的值为( C )。 A.4 B。16 C.32 D。52

47. C 语言中标识符只能由字母、数字和下划线组成,且第一个字符(B). A。必须为字母 B。必须为字母或下划线

C.必须为下划线 D。可以是字母、数字和下划线中任一种字符 48.在C 语言中,引用数组元素时,其数组下 标的数据类型允许是( C )。

A。整型常量 B。整型表达式

C.整型常量或整型表达式 D.任何类型的表达式 49. 执行下列语句后的输出为( A )。 int j=—1;

if(j<=1) printf(\"****\\n\"); else printf(\"%%%%\\n”);

A。**** B.%%%% C.%%%%c D。有错,执行不正确 50. 以下各选项企图说明一种新的类型名,其中正确的是( C )。 A.typedef v1 int; B.typedef v2=int; C.typedef int v3; D.typedef v4: int;

51。 先用语句定义字符型变量c,然后要将字符a 赋给c,则下列语句中正确的是( A ). A.c=’a’; B。c=”a\"; C.c=\"97”; D.C='97' 52。 用户定义的函数不可以调用的函数是( C )。 A。非整型返回值的 B。本文件外的 C。main 函数 D.本函数下面定义的

53. 与实际参数为实型数组名相对应的形式参数不可以定义为( C )。 A。float a[]; B.float *a; C。float a; D.float (*a)[3];

8

54. 下列程序段的输出结果为( C ). int a=7,b=9,t; t=a*=a>b?a:b; printf(”%d\",t);

A.7 B。9 C。63 D.49

55。 若有int *p=(int *)malloc(sizeof(int));则向内存申请到内存空间存入整数123的语句为( A )。

A.scanf(\"%d\); B。scanf(”%d\); C。scanf(\"%d\",*p); D。scanf(”%d”,**p);

56. 以下描述中正确的是( C ).

A。由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B。do—while 循环由do 开始,用while 结束,在 while(表达式)后面不能写分号 C。在 do-while 循环体中,一定要有能使while 后面表达式的值变为零(”假\")的操作 D。do-while 循环中,根据情况可以省略while

57.在位运算中,操作数每左移一位,其结果相当于( A )。 A.操作数乘以2 B.操作数除以2 C.操作数除以4 D.操作数乘以4

58。 以下只有在使用时才为该类型变量分配内存的存储类说明是( B )。 A.auto 和 static B.auto 和 register C.register 和 static D。extern 和 register

59.若char a[10];已正确定义,以下语句中不能从键盘上给a 数组的所有元素输入值的语句是(D)。

A.gets(a); B.scanf(\"%s\",a); C.for(i=0;i<10;i++)a[i]=getchar(); D.a=getchar();

60。 设有下列程序段,则scanf函数调用语句中对结构体变量成员的不正确引用为( B )。 struct student { char name[20]; int age; char sex; }stu[5], *p; p=stu;

9

A。 scanf(\"%s\", stu[0]。name); B。 scanf(\"%d\p-〉age);

C。 scanf(”%c\sex)); D. scanf(\"%d”, &stu[0].age);

61.以下标识符中,不能作为合法的C 用户定义标识符的是( C ). A.answer B.to C。signed D._if 62. 以下数组定义中不正确的是( D )。 A。int a[2][3]; B.int b[][3]={0,1,2,3};

C。int c[100][100]={0}; D。int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 63. 设有说明:char w;int x;float y;double z;则表达式w*x+z—y值的数据类型为( D )。 A.float B.char C.int D.double

。 下列各m 的值中, 能使m%3==2&&m%5==3&&m%7==2为真的是( B )。 A.8 B.23 C.17 D.6 65. 以下正确的说法是:在C 语言中( A )。 A:实参和与其对应的形参各占用的存储单元 B:实参和与其对应的形参共占用一个存储单元

C:只有当实参和与其对应的形参同名时才共占用存储单元 D:形参是虚拟的,不占用存储单元

66。 经过以下语句定义后, 表达式z+=x〉y?++x:++y 的值为( C ). int x=1,y=2,z=3;

A.2 B.3 C.6 D.5

67.若有说明: int a[][4]={0,0};则下面不正确的叙述是( D )。 A。数组a 的每个元素都可得到初值0 B.二维数组a 的第一维大小为1 C.因为二维数组a 中第二维大小的值除经初值个数的商为1,故数组a 的行数为1 D。有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 68. 以下对枚举类型名的定义中正确的是( B )。

A.enum a={sum,mon,tue}; B。enum a {sum=9,mon=—1,tue}; C。enum a={\"sum”,”mon\",”tue”}; D.enum a {\"sum\",”mon”,\"tue”}; 69。 putchar 函数可以向终端输出一个( D )。 A.整型变量表达式值 B.实型变量值

C。字符串 D。字符或字符型变量值 70。在定义一个结构体变量时,系统分配给它的内存是( D ).

10

A。结构体中第一个成员所需内存量 B。结构体中最后一个成员所需内存量 C。成员中占内存量最大者所需容量 D.各成员所需内存量的总和

71.若有下列定义,则对a 数组元素地址的正确引用是( C ). int a[5],*p=a; A.*(p+5) B.*p+2 C.*(a+2) D.*&a[5]

72. 若a=1,b=2则 a|b 的值是( D )。 A.0 B.1 C.2 D.3

73。 为了避免在嵌套的条件语句 if-else 中产生二义性,C 语言规定:else 子句总是与( B )配对。

A.缩排位置相同的if B.其之前最近的if C.其之后最近的if D.同一行上的if 74.下列说法不正确的是( A )

A.主函数main 中定义的变量在整个文件或程序中有效 B.不同函数中,可以使用相同名字的变量 C.形式参数是局部变量

D.在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效 75。 以下描述中,正确的是( C )

A.预处理是指完成宏替换和文件包含中指定的文件的调用 B.预处理指令只能位于C 源文件的开始

C.C 源程序中凡是行首以#标识的控制行都是预处理指令

D.预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备 三、程序填空题(每题8分)

1。 利用全局变量计算长方体的体积及三个面的面积. int s1,s2,s3; int vs(int a,int b,int c) { int v;

v= (1) ; s1=a*b;

s2=(2) ; s3=a*c;

11

return v; }

#include〈stdio。h〉 main() {int v,l,w,h; clrscr();

printf(\"\\ninput length,width and height: ”); scanf(\"%d%d%d”, (3) ,&w,&h); v= (4) ; printf(\"v=%d s1=%d s2=%d s3=%d\\n”,v,s1,s2,s3); getch(); }

答案:(1)a*b*c (2)b*c (3)&l (4)vs(l,w,h) 2. 以下程序的功能是用冒泡法对数组a 进行由小到大的排序。void fun(int a[],int n) { int i,j,t;

for (j=0; (1) ;j++) for (i=0; (2) ;i++) if( (3) )

{t=a[i];a[i]=a[i+1];a[i+1]=t;} }

#include〈stdio.h> main() {

int i,a[10]={3,7,5,1,2,8,6,4,10,9};

(4) ;

for(i=0;i〈10;i++) printf(”%3d”,a[i]); }

答案:(1) j<=n-1 (2) i〈n —1—j (3) a[i]〉a[ i + 1 ] 3. 输入a,b,c三个值,输出其中最大者。 #include 4) fun(a,10) (12

{int a,b,c,max;

printf(”please input a,b,c:\\n\"); scanf(\"%d,%d,%d”,(1) ); (2) if (maxprintf(\"The largest number is %d\\n\", (4) ); return 0; }

答案:(1)&a,&b,&c (2)max=a; (3)max〈c (4)max 4。 以下程序的功能是用选择法对10个整数进行由小到大的排序。#include {int i,j,min,temp,a[11]; printf(”enter data:\\n”); for (i=1;i<=10;i++) {printf(\"a[%d]=”,i); scanf(\"%d\(1) ); }

printf(”\\n”);

printf(\"The orginal numbers:\\n\"); for (i=1;i〈=10;i++) printf(\"%5d\; printf(”\\n\"); for (i=1;i<=9;i++) {(2) for ((3) ;j〈=10;j++)

if (a[min]>a[j]) min=j;

temp=a[i]; a[i]=a[min]; a[min]=temp; }

printf(\"\\nThe sorted numbers:\\n”);

13

for (i=1;i〈=10;i++) printf(”%5d\(4) ); printf(”\\n”); return 0;

答案:(1) &a[i] (2) min=i; (3) j=i+1 (4) a[i]

5。 要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E\"代替“A”。因此,“China”应译为”Glmre”。

#include int main()

{char c1=(1) ,c2=’h’,c3='i’,c4='n’,c5=’a’; c1=(2) ; c2=(3) ; c3=(4) ; c4=(5) ; c5=(6) ;

printf(”password is %c%c%c%c%c\\n\",c1,c2,c3,c4,c5);

putchar(c1);putchar(c2);(7) ;putchar(c4);(8) ;putchar('\\n'); return 0; }

答案:(1)'C'(2)c1+4 (3)c2+4 (4)c3+4 (5) c4+4 (6)c5+4 (7)putchar(c3) (8)putchar(c5)

6。 给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,80~为B,70~79为C60~69为D,60分以下为E。 #include printf(”请输入学生成绩:\"); scanf(”%f”,&score); while ((1) )

{printf(”\\n 输入有误,请重输\");

14

scanf(\"%f”,&score); }

switch((2) ) {case 10:

case 9: grade=’A';break; case 8: grade='B';break; case 7: grade=’C’;break; case 6: grade='D’;break; (3) }

printf(”成绩是 %5.1f,相应的等级是%c\\n ”,score,grade); }

答案:(1) score>100||score<0 (2) (int)(score/10) (3) case 5:

case 4: case 3:

case 2: case 1: case 0: grade='E’; return 0;

7. 要将“China”译成密码,密码规律是:用原来的字母前面第4个字母代替原来的字母.例如,字母’E’用’A’ 代替, ‘Z’ 用'U'代替, 字母’D'用’Z' 代替,字母’C’用’Y’ 代替, ‘B’ 用'X’代替,‘A' 用’W'代替。 #include 〈stdio。h〉 int main()

{char c1= ,c2=’h’,c3=’i',c4=’n',c5='a’; c1=(1) ; c2=c2-4 ; c3=(2) ; c4=(3) ; c5=(4) ;

printf(\"password is %c%c%c%c%c\\n\,c2,c3,c4,c5); return 0; }

15

答案:(1)c1+22 (2)c3-4 (3) c4-4 (4)c5+22 8. 输入4个整数,要求按由小到大顺序输出。 #include {int t,a,b,c,d; printf(\"请输入四个数:”);

scanf(\"%d,%d,%d,%d”,&a,&b,&c,&d); printf(”a=%d,b=%d,c=%d,d=%d\\n”,a,b,c,d); if (a>b) { (1) } if (a〉c) { t=a;a=c;c=t;} if (a>d)

{ (2) } if (b>c)

{ t=b;b=c;c=t;} if (b〉d) { (3) } if ((4) ) { t=c;c=d;d=t;}

printf(\"排序结果如下: \\n\");

printf(\"%d %d %d %d \\n\" ,a,b,c,d); return 0; }

答案:(1) t=a;a=b;b=t; (2) t=a;a=d;d=t; (3) t=b;b=d;d=t;

(4)c>d

9. 下面的程序用来求出所有的水仙花数。所谓水仙花数是指一个3位数,它的各位数字的立方和恰好等于它本身。 #include 〈stdio.h〉 int main() {

int i,j,k,n;

printf(”parcissus numbers are \"); for (n=100;(1) ;n++)

16

{

i=n/100; (2) ; k=(3) ; if ((4) ) printf(”%d \",n); } printf(\"\\n\"); return 0; }

答案:(1)n<1000 (2)j=n/10-i*10 (3)n%10 (4)n==i*i*i + j*j*j + k*k*k 10。 以下程序的功能是:从键盘上输入若干个学生的成绩(用输入负数结束输入),统计出平均成绩,并输出低于平均分的学生成绩.请填空。

#include ”stdio.h\" main()

{ int n=0,i; float x[1000],sum=0。0,ave,a; printf(”Enter mark:\\n\"); scanf(”%f\&a); while(a>=0.0 && n〈1000)

{ sum+= (1) ; x[n]= (2) ;

n++; scanf(”%f\; }

ave= (3) ; print(”Output:\\n”);

printf(”ave=%f\\n\);

for(i=0;i〈n;i++) if( (4) ) printf(”%f\\n”,x[i]); }

答案:(1) a (2)a (3) sum/n (4) x[i]〈ave 四、程序改错题(每题10分) 1.#include stdio.h int main {int a,b,sum a=123; b=456; sum=a+b

print (“sum is %d\\n”,sum);

17

return 0; }

五处错误,改正:#include printf(”sum is %d\\n”,sum); return 0; }

2.#include 〈stdio.h〉 int main()

{int max(int x,int y) int a,b,c;

printf(“input a&b:”); scanf(“%d,%d”,a, b); c=max(a,b); printf(“max=%d\\n”,c); return 0; }

int max(int x,int y); {int z;

if(x>y) z=x else z=y; return(z); }

五处错误,改正:#include int main()

{int max(int x,int y); int a,b,c;

printf(“input a&b:\"); scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%d\\n\return 0;

18

}

int max(int x,int y) {int z;

if(x〉y)z=x;else z=y; return(z); }

3. int main() {int c1,c2; c1=97 c2=98;

printf(”%c%c\\n”c1,c2); printf(\"%d%d\\n\"c1,c2); return 0 }

五处错误,改正:#include〈stdio。h〉 int main() {int c1,c2; c1=197; c2=198;

printf(\"%c%c\\n\",c1,c2); printf(\"%d%d\\n”,c1,c2); return 0;

} 4.假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长

n

多少百分比。计算公式为:p=(1+r),r为年增长率,n为年数,p为与现在相比的倍数。 #include int main() {float p,r,n;

printf(”input r:\\n”); scanf(”r=%f\", r); n=10;

p=pow(1+r,n); print (\"p=%f\\n,p); return 0 }

19

五处错误,改正:#include 〈stdio。h> #include printf(”input r:\\n\"); scanf(”r=%f\; n=10;

p=pow(1+r,n); printf(”p=%f\\n\",p); return 0;

5.#include 〈stdio。h> int main ()

{int h,r,l,s,sq,vq,vz; float pi=3.141526;

printf(”请输入圆半径r,圆柱高h∶”);

scanf(”%f,%f\",r, h); //要求输入圆半径r和圆柱高h l=2*pi*r; //计算圆周长l s=r*r*pi; //计算圆面积s sq=4*pi*r*r; //计算圆球表面积sq vq=3。0/4.0*pi*r*r*r; //计算圆球体积vq vz=pi*r*r*h; //计算圆柱体积vz printf(”圆周长为: l=%6.2f\\n\ printf(”圆面积为: s=%6。2f\\n\); printf(”圆球表面积为: sq=%6。2f\\n”,sq); printf(”圆球体积为: v=%6.2f\\n”,vq); printf(\"圆柱体积为: vz=%6.2f\\n,vz); return 0 }

五处错误,改正:#include 〈stdio.h> int main ()

{float h,r,l,s,sq,vq,vz; float pi=3.141526;

printf(\"请输入圆半径r,圆柱高h∶\");

scanf(\"%f,%f\,&h); //要求输入圆半径r和圆柱高h 20

l=2*pi*r; //计算圆周长l s=r*r*pi; //计算圆面积s sq=4*pi*r*r; //计算圆球表面积sq vq=3.0/4。0*pi*r*r*r; //计算圆球体积vq vz=pi*r*r*h; //计算圆柱体积vz printf(”圆周长为: l=%6。2f\\n\ printf(”圆面积为: s=%6。2f\\n”,s); printf(”圆球表面积为: sq=%6.2f\\n”,sq); printf(”圆球体积为: v=%6.2f\\n”,vq); printf(”圆柱体积为: vz=%6。2f\\n\",vz); return 0; }

6.#include {int 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=%10.2f\\n”,p1); // 输出按第1方案得到的本息和 printf(”p2=%10.2f\\n”p2); // 输出按第2方案得到的本息和 printf(”p3=%10.2f\\n\输出按第3方案得到的本息和 printf(\"p4=10。2f\\n”,p4); // 输出按第4方案得到的本息和 printf(\"p5=%10.2f\\n\",p5); // 输出按第5方案得到的本息和 return 0; }

五处错误,改正:#include

21

#include 〈math.h〉 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=%10.2f\\n”,p1); // 输出按第1方案得到的本息和 printf(”p2=%10.2f\\n\",p2); // 输出按第2方案得到的本息和 printf(\"p3=%10。2f\\n”,p3); // 输出按第3方案得到的本息和 printf(\"p4=%10。2f\\n”,p4); // 输出按第4方案得到的本息和 printf(\"p5=%10.2f\\n\ // 输出按第5方案得到的本息和 return 0;

五、阅读程序题(每题5分) 写出以下程序运行的结果: 1. #includeint i,j,m,n; i=8; j=10; m=++i; n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n); return 0; }

运行的结果:9,11,9,10

2.执行程序之后,输入2↙6↙3↙ ,以下程序运行后的输出结果是 。(↙表示回车)

22

#include 〈stdio.h〉 int main() { int a,b,c,d;

printf(\"请输入三个整数:\\n”); scanf(”%d%d%d”,&a,&b,&c); if(a〉b) d=a; //d=2 else d=b;

if(c>d) d=c;

printf(\"D=%d\\n\",d);

return 0;

运行的结果:D=6 3. #include 〈stdio.h> main( ) { int sum=10,n=1;

while(n〈3) {sum=sum-n; n++; } printf(“%d,%d”,n,sum); }

运行结果为:3,7 4.#include 〈stdio。h> main()_ { char grade=’C’; switch(grade) {

case ‘A’: printf(“90—100\\n\");

case ‘B’: printf(“80—90\\n”);

case ‘C': printf(“70—80\\n\");

case ‘D’: printf(“60—70\\n”); break; case ‘E': printf(“<60\\n”); default : printf(“error!\\n”);

} }

运行结果为:70-80

60-70 23

5. #include 〈stdio。h> main()

{ float a,b,c,t; a=3; b=7; c=1; if(a>b)

{t=a;a=b;b=t;} if(a〉c)

{t=a;a=c;c=t;} if(b〉c)

{t=b;b=c;c=t;}

printf(”%5。2f,%5.2f,%5.2f\",a,b,c); }

运行结果为:1.00, 3.00, 7.00 6.#include main() { int m; scanf(\"%d”, &m); if (m >= 0)

{ if (m%2 == 0) printf(\"%d is a positive even\\n”, m);

else

printf(”%d is a positive odd\\n”, m);

else

{ if (m % 2 == 0) printf(\"%d is a negative even\\n”, m);

else printf(”%d is a negative odd\\n\); }

若键入-9,则运行结果为: -9 is a negative odd 7.#include 〈stdio.h〉 #define N 4 main() { int i;

int x1=1,x2=2; printf(”\\n\"); for(i=1;i〈=N;i++)

{ printf(”%4d%4d”,x1,x2); if(i%2==0)

printf(\"\\n\"); x1=x1+x2;

24

x2=x2+x1; } }

运行结果为: 1 2 3 5 8 13 21 34 8.#include〈stdio。h> main()

{ int arr[ ]={30,25,20,15,10,5}, *p=arr; p++;

printf(“%d\\n”,*(p+3)); }

运行结果为: 10

六、编写程序题(每题12分)

1.写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。 #include 〈stdio。h> int main() {int prime(int); int n;

printf(\"input an integer:”); scanf(”%d\; if (prime(n))

printf(”%d is a prime.\\n\); else

printf(\"%d is not a prime.\\n”,n); return 0; }

int prime(int n) {int flag=1,i;

for (i=2;i〈n/2 && flag==1;i++) if (n%i==0) flag=0; return(flag); }

2。写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度.(要求:函

25

数形参用指针变量)。 #include 〈stdio.h〉 int main()

{int length(char *p); int len; char str[20];

printf(”input string: ”); scanf(”%s\",str); len=length(str);

printf(\"The length of string is %d.\\n”,len); return 0; }

int length(char *p) {int n; n=0;

while (*p!='\\0') {n++; p++; } return(n); }

3.已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 #include int main()

{ int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j; printf(”array a:\\n\"); for (i=0;i<10;i++) printf(”%5d\",a[i]); printf(”\\n”); printf(\"insert data:\"); scanf(”%d\",&number); end=a[9]; if (number>end) a[10]=number;

26

else

{for (i=0;i〈10;i++) {if (a[i]〉number) {temp1=a[i];

a[i]=number;

for (j=i+1;j〈11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break;

} } }

printf(\"Now array a:\\n”); for (i=0;i<11;i++) printf(”%5d”,a[i]); printf(\"\\n\"); return 0; }

4. 用指向指针的指针的方法对n个字符串排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入.最后在主函数中输出。

#define LINEMAX 20 /*定义字符串的最大长度*/ int main() {int i;

char **p,*pstr[5],str[5][LINEMAX]; for (i=0;i<5;i++)

pstr[i]=str[i]; /*将第i个字符串的首地址赋予指针数组 pstr 的第i个元素*/ printf(\"input 5 strings:\\n\"); for (i=0;i〈5;i++) scanf(\"%s”,pstr[i]); p=pstr; sort(p);

27

printf(”strings sorted:\\n\"); for (i=0;i<5;i++)

printf(\"%s\\n\",pstr[i]); }

sort(char **p) /*冒泡法对5个字符串排序函数*/ {int i,j; char *temp; for (i=0;i<5;i++) {for (j=i+1;j〈5;j++)

{if (strcmp(*(p+i),*(p+j))>0) /*比较后交换字符串地址*/ {temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } } return 0; }

5.输入一行字符,分别统计出其中的英文字母,空格,数字和其他字符的个数. #include 〈stdio。h> int main() { char c;

int letters=0,space=0,digit=0,other=0; printf(\"请输入一行字符:\\n\"); while((c=getchar())!='\\n’) {

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

letters++;

else if (c==' ’)

space++;

28

else if (c>='0’ && c<=’9’)

digit++;

else

other++;

printf(\"字母数:%d\\n空格数:%d\\n数字数:%d\\n其它字符数:%d\\n”,letters,space,digit,other); return 0; }

6. 用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数 #include {int alphabetic(char); int longest(char []); int i;

char line[100];

printf(\"input one line:\\n”); gets(line);

printf(\"The longest word is :”);

for (i=longest(line);alphabetic(line[i]);i++) printf(\"%c\",line[i]); printf(”\\n\"); return 0; }

int alphabetic(char c)

{if ((c〉='a’ && c〈='z’)||(c〉=’A’&&c〈='z')) return(1); else return(0); }

29

int longest(char string[])

{int len=0,i,length=0,flag=1,place=0,point; for (i=0;i<=strlen(string);i++) if (alphabetic(string[i])) if (flag) {point=i; flag=0; } else len++; else {flag=1; if (len〉=length)

{length=len; place=point; len=0; }

return(place); }

7.输入3个学生4门课的成绩{(60,70,65,75),(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果保留二位小数。 #include{ int a[3][4]={{60,70,65,75},{75,80,75,90},{95,75,90,65}};

int i,j;

float average,sum=0。0;

printf(\"三个学生的总分和平均成绩依次为:\\n\");

for(i=0;i〈3;i++) { sum=0。0;

for(j=0;j<4;j++) sum=sum+a[i][j];

30

}

}

average=sum/4;

printf(\"%.2f,%.2f\\n”,sum,average);

8. 用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。 #include #include 〈string.h> int main()

{int alphabetic(char); int longest(char []); int i;

char line[100];

printf(”input one line:\\n”); gets(line);

printf(”The longest word is :\");

for (i=longest(line);alphabetic(line[i]);i++) printf(”%c”,line[i]); printf(\"\\n”); return 0; }

int alphabetic(char c)

{if ((c〉=’a’ && c<=’z’)||(c>=’A’&&c〈='z’)) return(1); else

return(0); }

int longest(char string[])

{int len=0,i,length=0,flag=1,place=0,point; for (i=0;i〈=strlen(string);i++) if (alphabetic(string[i])) if (flag) {point=i;

31

flag=0; } else len++; else {flag=1;

if (len>=length)

{length=len; place=point; len=0; }

}

return(place); }

9.从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出. #include 〈stdio.h> void main( ) { int a, i,p=0,n=0,z=0;

printf(\"please input number”);

for(i=0;i〈10;i++){ scanf(\"%d,”,&a); if (a〉0) p++; else if (a<0) n++; else z++; }

printf(\"正数:%5d, 负数:%5d,零:%5d\\n\",p,n,z);

}

10。写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度.(要求:函数形参用指针变量). #include 〈stdio。h> int main() {int length(char *p); int len;

32

char str[20];

printf(\"input string: ”); scanf(\"%s”,str); len=length(str);

printf(\"The length of string is %d。\\n”,len); return 0; }

int length(char *p) {int n; n=0;

while (*p!='\\0') {n++; p++; }

return(n); }

33

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

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

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

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