C语言题库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、判断题(每题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. 函数若无返回值,则它一定无形参。

(× )
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函数开始,到本程序文件的最后一个函数结束
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。

成员中占内存量最大者所需容量
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.4B.1C.2。

0D.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;
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)。

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)。

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\tWorld\n”;
A.13 B.12 C.14 D.1 0
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
{ 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];
54. 下列程序段的输出结果为( C )。

int a=7,b=9,t;
t=a*=a>b?a:b;
printf("%d",t);
A。

7B。

9C。

63D。

49
55。

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

A.scanf("%d”,p);
B.scanf("%d",&p);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;
A。

scanf(”%s", stu[0].name); B。

scanf(”%d”, p—〉age);
C。

scanf(”%c”, &(p—>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
64.下列各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 )。

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.0B.1C.2D.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;
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 ] (4)fun(a,10)3. 输入a,b,c三个值,输出其中最大者。

#include 〈stdio。

h〉
int main()
{int a,b,c,max;
printf(”please input a,b,c:\n”);
scanf(”%d,%d,%d”,(1));
(2)
if (max<b)
max=b;
if ((3))
max=c;
printf(”The largest number is %d\n",(4) );
return 0;
}
答案:(1)&a,&b,&c (2)max=a;(3)max<c (4)max 4。

以下程序的功能是用选择法对10个整数进行由小到大的排序。

#include <stdio。

h〉
int main()
{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",a[i]);
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”);
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”应译为”G lmre”。

#include <stdio。

h>
int main()
{char c1=(1) ,c2=’h’,c3='i',c4='n',c5='a’;
c1=(2) ;
c2=(3) ;
c3=(4) ;
c4=(5) ;
c5=(6) ;
printf(”passwor d 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~89为B,70~79为C60~69为D,60分以下为E.
#include 〈stdio。

h>
int main()
{ float score;
char grade;
printf("请输入学生成绩:”);
scanf(”%f",&score);
while ((1))
{printf(”\n 输入有误,请重输”);
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);
return 0;

答案:(1)score〉100||score〈0 (2)(int)(score/10) (3)case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade='E’;
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",c1,c2,c3,c4,c5);
return 0;

答案:(1)c1+22(2)c3-4 (3) c4-4 (4)c5+22
8。

输入4个整数,要求按由小到大顺序输出。

#include <stdio。

h>
int main()
{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++)
{
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”,&a);
}
ave= (3) ;
print(”Output:\n”);
printf(”ave=%f\n”,ave);
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);
return 0;
}
五处错误,改正:#include 〈stdio。

h> int main()
{int a,b,sum;
a=123; b=456;
sum=a+b;
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 <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);

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年后我国国民生产总值与现在相比增长多少百分比.计算公式为:p=(1+r)n,r为年增长率,n为年数,p为与现在相比的倍数。

#include 〈stdio。

h>
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

五处错误,改正:#include <stdio.h>
#include 〈math.h〉
int main()
{float p,r,n;
printf(”inpu t r:\n”);
scanf(”r=%f",&r);
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",l);
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
}
五处错误,改正:#include 〈stdio.h>
int main ()
{float 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",l);
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 <stdio.h>
int main()
{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",p3); // 输出按第3方案得到的本息和
printf(”p4=10。

2f\n”,p4); // 输出按第4方案得到的本息和
printf("p5=%10.2f\n",p5); // 输出按第5方案得到的本息和
return 0;

五处错误,改正:#include 〈stdio。

h〉
#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”,p5);// 输出按第5方案得到的本息和
return 0;
五、阅读程序题(每题5分)
写出以下程序运行的结果:
1.#include〈stdio.h〉
int main ( )

int 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↙,以下程序运行后的输出结果是。

(↙表示回车)#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”);
cas e ‘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
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 <stdio.h>
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”, m); }
}
若键入-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;
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",&n);
if (prime(n))
printf("%d is a prime。

\n",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函数中输入字符串,并输出其长度。

(要求:函数形参用指针变量)。

#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 <stdio。

h>
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;
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);
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++;
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 <stdio。

h>
#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;
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<stdio.h〉
void main()
{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];
average=sum/4;
printf("%。

2f,%.2f\n”,sum,average);
}

8. 用一个函数来实现将一行字符串中最长的单词输出。

此行字符串从主函数传递给该函数。

#include <stdio。

h〉
#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;
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;
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);
}。

相关文档
最新文档