c语言期末复习方纲要

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

第一部分:单项选择
1.按照标识符的要求,(A )符号不能组成标识符。

A) 连接符B) 下划线
C) 大小写字母D) 数字字符
2.下列符号中,(C)不可作为分隔符。

A) ,B) :
C) ?D) ;
3.在16位计算机中,int定义的整形数的宽度为(A)字节。

A) 2 B) 4
C) 6 D) 8
4.类型修饰符unsigned修饰(D)类型是错误的。

A) char B) int
C) long int D) float
5.在下列十六进制整数常数中,(B)是错误的。

A) 0xaf B) 1af
C) 0X23 D) 0XAD
6.下列double常量中,(A)是错误的。

A) E5 B) .35
C) 3E5 D) 3E-5
7.下列变量中,(A)是合法的。

A) CHINA B) byte-size
C) double D) A+a
8.在int a[5]={1,3,5},数组元素a[1]的值是(C)。

A) 1 B) 0
C) 3 D) 2
9.在int a=3,*p=&a,*p的值是(D)。

A) 变量A的地址B) 无意义
C) 变量p的地址值D) 3
10.下列各运算符中,(C)结合性从左到右。

A) 三目B) 赋值
C) 比较D单目
11.下列各运算符中,(D )优先级最高。

A) ?:B) |
C) || D) !=
12.下列各运算符中,( D )不能作用于浮点数
A) / B) &&
C) !D) ~
13.以下说法中正确的是(C)。

A) C语言程序总是从第一个函数开始执行。

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

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

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

14.结构化程序设计中,程序的三种基本控制结构是(D)。

A)过程) 函数) 子程序B)递归) 递推) 循环
C)调用) 返回) 转移D)顺序) 选择) 循环
15.C语言是一种面向(D)的程序设计语言。

A)对象B)窗口
C)用户D)过程
16.算术运算符) 赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为(C)。

A)算术运算) 赋值运算) 关系运算B)关系运算) 赋值运算) 算术运算
C)算术运算) 关系运算) 赋值运算D)关系运算) 算术运算) 赋值运算17.将关系a≥b≥c,使用C语言表达式表示是(B)。

A)(a≥b≥c)B)(a≥b)&&(b≥c)
C)(a≥b)AND(b≥c)D)(a≥b)&(b≥c)
18.以下选项中,不是C语句的是(C)。

A){int i; i++; printf(“%d\n”, i);} B);
C)a=5, c=10 D){;}
19.表达式!x 等价于(A)。

A)x==0 B)x==1
C)x != 0 D)x != 1
20.设有定义语句:char b=’\123’;则变量b(D)。

A)包含4个字符B)包含3个字符
C)包含2个字符D)包含1个字符
21.以下选项中,不是C语言合法字符串常量的是(B)。

A)“\121”B)‘y=’
C)“\n\n”D)“ABCD\x6d”
22.以下程序的输出结果是(A)。

main()
{
int x=0,y=1,z=2;
if(x>y)
{ if(y>z) z=0;}
else z-=1;
printf(“%d\n”,z);
}
A)1 B)2
C)0 D)-1
23.若有以下说明语句:
int s[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是(D)。

A)*p+6 B)*(p+6)
C)p+5 D)*p+=5
24.数组名作为函数参数传递时,传递的是(C)。

A)数组的首元素B)数组的所有元素
C)数组的首地址D)语法错误
25.以下对二维数组b正确进行初始化的语句是(B)。

A)int b[2][3] ={{1,1},{2,3},{3,3}}; B)int b[ ][3] ={{1,1,1},{2,2},{3}};
C )int b[ ][ ] ={1,2,3,4,5,6};
D )int b[3][ ] ={{1},{2},{3}};
26.能正确表示数学公式)sin(0x 的C 语言表达式是(D )。

A ))))180/*(sin(( x abs sqrt
B ))))180/14.3*(sin((x abs sqrt
C )))(sin(x sqrt
D ))))180/14.3*(sin((x fabs sqrt
27.函数strcmp(“CHINA ”,“JAPAN ”)的返回值是(C )。

A )小于0
B )等于0
C )大于0
D )不确定
28.设x 为int 型变量, 则执行以下程序段后,x 的值为(B )。

x=6;
x+=x-=x-x;
A )6
B )12
C )18
D )24
29.运行下列程序后的输出结果是(A )。

main()
{ int a[2]={0},i,j,k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
a[j]=a[i]+1;
printf(“%d\n ”,a[k]);
}
A ) 不确定的值
B )3
C ) 2
D )1
30.下列函数的功能是(A )。

int fun(char *x)
{ char *y=x;
while (*y++);
return (y-x-1);
}
A )求字符串的长度
B )比较两个字符串的大小
C )将字符串x 复制到字符串y
D )将字符串x 连接到字符串y 后面
31.设x 和y 均为int 型变量执行以下循环后,y 值为(C )。

for(y=1,x=1;y<=50;y++)
{ if(x>=10) break;
if(x%2==1)
{ x+=5; continue; }
x-=3;
}
A )2
B )4
C )6
D )8
32.以下对结构体变量stu 中成员sex 的引用,非法的一项是(C )。

struct people
{ char name[10];
int age;
char sex;
}stu,*s;
s=&stu;
A)(*s).sex B)stu.sex
C)sex D)s->sex
33.算法具有五个特性,以下选项中不属于算法特性的是(B)。

A)有穷性B)简洁性
C)可行性D)确定性
34.C语言中最简单的数据类型包括(B)。

A) 整型) 实型) 逻辑型 B) 整型) 实型) 字符型
C) 整型) 字符型) 逻辑型 D) 整型) 实型) 逻辑型) 字符型
35.以下不能定义为用户标识符是(D)。

A)Main B)_0
C)_int D)sizeof
36.以下选项中,不能作为合法常量的是(B)。

A)1.234e04 B)1.234e0.4
C)1.234e+4 D)1.234e0
37.下列选项中,不能用作标识符的是(D)。

A)_1234_ B)_1_2_
C)int_2_ D)2_int_
38.C语言中,运算对象必须是整型的运算符是(A)。

A) % B) /
C) %和/ D) *
39.不合法的八进制数是(B)。

A) 0 B) 028
C) 077 D)01
40.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为(D)。

A) a<>0 B) !a
C) a=0 D) a
41.在以下运算符中,优先级最高的运算符是(B)
A) ? : B) ++
C) && D) +=
42.在C语言中,逻辑值“真”用(D)表示。

A) true B) 大于0的数
C) 非0的整数 D) 非0的数
43.在C语言的if语句中,用作判断的表达式为(D)
A)关系表达式 B)逻辑表达式
C)算术表达式 D)任意表达式
44.要给int型变量a,b,c输入数据,以下语句正确的是(D)。

A) read(a,b,c); B) scanf(“%d%d%d”,a,b,c);
C) scanf(“%D%D%D”,&a,%b,%c); D) scanf(“%d%d%d”,&a,&b,&c);
45.有以下语句:int b;char c[10];,则正确的输入语句是(B)。

A) scanf("%d%s",&b,&c); B)scanf("%d%s",&b,c);
C) scanf("%d%s",b,c); D)scanf("%d%s",b,&c);
46.为表示关系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)
47.表达式(D)时满足:当c的值为1) 3) 5三个数时值为“真”,否则值为“假”的表达式
A) (c=1)||(c=3)||(c=5) B) (c!=1)&&(c!=3)&&(c!=5)
C) (c==1)&&(c==3)&&(c==5) D) (c==1)||(c==3)||(c==5)
48.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是(C)。

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
49.若变量已定义,要求完成求5!的计算,不能完成此操作的程序段是(B)。

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); 50.在C语言中,while语句中的条件为(A)时,结束该循环。

A) 0 B) 1
C) true D) 非0
51.若k为整型,以下while循环(C)次。

int k=10;
while (k=0) k=k-1;
A) 10次 B) 无限循环
C) 一次不执行 D) 执行一次
52.以下能正确定义一维数组的选项是(B)。

A)int a[5]={0,1,2,3,4,5}; B)char a[]={0,1,2,3,4,5};
C)char a={'A','B','C'}; D)int a[5]="0123";
53.若a=2,则a+=a*=a+2的值为(C) 。

A) 4 B) 8
C) 16 D) 32
54.表达式:10!=9的值是(A) 。

A) true B) 非零值
C) 0 D) 1
55.在c语言中,运算对象必须是整型数的运算符是(A) 。

A) % B) /
C) %和/\ D) *
56.一个C程序的执行是从(A) 。

A) 本程序的main函数开始,到main函数的结束
B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数的结束
C) 本程序文件的main开始,到本程序文件的最后一个函数的结束
D) 本程序文件的第一个函数开始,到本程序文件的main函数的结束
57.下叙述正确的是(C) 。

A) 在C程序中main函数必须位于程序的最前面
B) C程序的每行中只能写一条语句
C) C语言本身没有输入输出语句
D) 在对一个C程序进行编译的过程中,可发现注释中的错误
58.下叙述不正确的是(D) 。

A) 一个C源程序可由一个或多个函数组成
B) 一个C源程序必须包含一个main函数
C) C程序的基本组成单位是函数
D) 在C程序中,注释说明只能位于一条语句的后面
59.C语言规定,在一个源程序中,main函数的位置(C) 。

A) 必须在最开始 B) 必须在系统调用的库函数的后面
C) 可以任意 D) 必须在最后
60.一个C语言程序是由(B) 。

A) 一个主程序和若干子程序组成 B) 函数组成
C) 若干过程组成 D) 若干子程序组成
61.下列运算符中,哪一个优先级最低?(B)
A) ?: B) =
C) >= D) ==
62.请选出可用作c语言用户标识符的一组标识符(B)。

A) void,define,word
B) a3_b3,_123,sum
C) for,——abc,case
D) 2a,do,sizeof
63.C语言中最简单的数字类型包括(B)
A) 整型) 实型) 逻辑型
B) 整型) 实型) 字符型
C) 整型) 字符型) 逻辑型
D) 整型) 实型) 逻辑型) 字符型
64.c语言中合法的字符常量是(B)
A) ’\084’ B) ’\x43’
C) ’ab’ D) “\0”
65.当把以下四个表达式用做IF语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是(D)
A)K%2 B)K%2==1
C)K%2)!=0 D)!K%2==1
66.以下能正确定义且赋初值的语句是(B)
A)int n1=n2=10; B)char c=32;
C)float f=f+1.1; D)double x=12.3e2.5;
67.有以下程序
#include
main()
{char c1=’1’,c2=’2’;
c1=getchar(); c2=getchar(); putchar(c1); putchar(c2);}
当运行时输入:a<回车>后,以下叙述中正确的是(A)
A)变量c1将被赋字符a,c2被赋回车符
B)程序将等待用户输入第二个字符
C)变量c1被赋字符a,c2中仍是原有字符2
D)变量c1被赋字符a,c2中将无确定值
68.有以下程序 ( D)
main( )
{
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2;
printf(“%d\n”,*p+*q);
}
程序运行后的输出结果是
A)16 B)10
C)8 D)6
69. 若a=1) b=15) c=0,则表达式a>b>c的值为(B )
A) 1 B)0
C)非0 D)真
70. 以下叙述中不正确的是(C )
A)函数名属于用户标识符,其起名规则与变量相同
B)形参只能是变量
C)为保证程序的正确运行,函数中定义的变量不能与其他函数中定义的变量同名
D)函数中定义的变量可以与其他函数中定义的变量同名
71. C语言中,double型数据所占字节数是(D )
A)2 B)4
C)6 D) 8
72. 若变量都已经正确定义,以下表达式中非法的是(B )
A)a/=b+c B)a % 4.0
C)a=1/2*(x=y=10 , x*3) D)a=b=c
73.预处理命令在程序中都是以(B)开头的。

A) * B) #
C) : D) /
74.下列for循环的次数为(B)。

for(int i(0),x=0;!x&&i<=5;i++)
A) 5 B) 6
C) 1 D) 无限
75.下列while的循环次数是(A)。

while( int i=0)i--;
A) 0 B) 1
C) 5 D) 无限
76.下列for循环的循环体执行次数是(A)。

for(int i(0),j(10);i=j=10;i++,j--)
A) 0 B) 1
C) 10 D) 无限
77.当一个函数无返回值时,定义它的函数类型应是(A)。

A) void B) 任意
C) int D) 无
78.在函数返回值类型与返回表达式的类型的描述中,(C)是错误的。

A) 函数返回值的类型是在定义函数时确定,在函数调用时是不能被改变的。

B) 函数返回值的类型就是返回值表达式的类型。

C) 函数返回值表达式的类型与函数返回值类型不同时。

表达式类型应转换成函数的类型。

D) 函数返回值类型决定了返回表达式的类型。

79.下列标识中,( B )不是局部变量。

A) register B) 外部static类
C) auto类 D) 函数形参
80.有一个int变量,在程序中使用频率很高,最好把它定义为(A)。

A) register B) auto
C) extern D) static
81.下列标识中,(C)是文件级作用域的。

A) 函数形参 B) 语句标号
C) 外部静态标识符 D) 自动类标示符
82.下面这段程序中哪个不是常量(B)
#define PI 3.14
void main()
{int sum;
sum = 10 + 15;
printf("sum=%d\n",sum);
printf("result is 25\n");
}
A.10
B.25
C.pi
D.15
82.下面哪个是错误的表达式(D)
A. a+b=5
B. i=i++
C. a=5,b=6,c=7
D. 5.6+6.2%3.1
83.下面说明语句哪个是非法的(C)
A. int abcd[0x80];
B. int aaa[5]={3,4,5};
C. char 9ab[10];
D.
E. float key[]={3.0,4.0,1,0};
84.已知a为整型变量,那么与表达式a!=0 真假值情况不相同的表达式是哪个(D)
A. a>0||a<0
B.a
C. !a==0
D. !a
85.有一个函数原型这样表示:abc(float x,float y); 则该函数的返回类型为(C)
A. void
B. double
C. int
D. float
86.下面哪一项是不正确的字符串赋值或赋初值的方式(C)
A. char *str; str="string";
B. char str[7]={'s','t','r','i','n','g'};
C. char str1[10];str1="string";
D. char str1[]="string",str2[]="12345678"; 87.下面的程序中哪一行有错误(D)
#include <stdio.h>
main()
{
float array[5]={0.0}; /*第A行*/
int i;
for(i=0;i<5;i++)
scanf("%f",&array[i]);
for(i=1;i<5;i++)
array[0]=array[0]+array[i]; /*第B行*/
printf("%f\n",array[0]); /*第C行*/
}
A)第A行B)第B行
B)第C行D)没有
88.下面代码中哪个是结构体变量名(D)
struct student
{
int num;
char name;
int score;
};
struct student st[3];
A)struct B) num、name和score C)student D)st[3]
89.下面哪个是正确的引用下面的结构体数组变量成员(B)
struct book
{
int num;
char name;
int price;
};
struct book b[3];
A)book.price B)b[2].num
C).price D)
90.下面代码中哪个是结构体变量名(D)
struct student
{
int num;
char name;
int score;
};
struct student st[3];
A)struct B) num、name和score C)student D)st[3]
91.下面哪个是正确的引用下面的结构体数组变量成员(B)
struct book
{
int num;
char name;
int price;
};
struct book b[3];
A)book.price B)b[2].num C).price D)
第二部分:判断题
1.(对)任何字符常量与一个任意大小的整数进行加减都是有意义的。

2.(对)运算符的优先级和结合性可以确定表达式的计算顺序。

3.(错)某个变量的类型高是指该变量被存放在内存中的高地址处。

4.(对)移位运算符在移位操作中,无论左移还是右移,所移出的空位一律补0。

5.(错)C语言是一种面向机器的语言。

6.(对)在C语言中无论什么语句后面都必须加上“;”号。

7.(错)Y=X2+1是C语言合法的表达式。

8.(对)在编写C语言的子函数中允许使用多条return语句。

9.(对)C语言允许局部变量与全局变量同名。

10.(对)IF是C语言的保留字,又称关键字。

11.(对)do-while语句是先执行循环体,再判断条件,当条件满足时继续执行循环体。

12.(错)C语言的数组元素下标允许是任何类型的表达式。

13.(对)C语言中不能将一个结构变量作为一个整体进行输入/输出。

14.(对)C语言中一个指针变量只能指向相同类型的变量的地址。

15.(对)内部静态变量和自动类变量作用域相同,但是生存期不同。

16.(对)程序中,语句之间必须要用分号“;”分隔。

17.(对)程序中所用的变量必须先定义后使用。

18.(对)程序中,A和a是两个不同的变量。

19.(错)b是同类型变量,执行语句a=b后b中的值将放入a中,b中的值将丢失。

20.(对)中的局部变量与全局变量同名时,局部变量优先,全局变量暂时不起作用。

21.(对)的执行总是从主函数开始,主函数执行完时,则程序执行结束。

22.(对)-while语句的循环体至少执行一次。

23.(对)说明:int a[3][4]; 则a[1+1][0]是对a数组元素的正确引用。

24.(错)ar a[]={0,1,2,3,4,5,6}不是正确的数组说明语句。

25.(对)说明:int a[3][4]={0},则只有元素a[0][0]可得到初值0。

26.(对)序是由函数构成的,每一个函数完成相对独立的功能。

27.(错)语言中,字母的大小写不被区分。

28.(错)型数据和整数之间是不可以通用的。

29.(错)表达式c=b=a=3是错误的。

30.(错)ntinuc语句用在循环体中,可使整个循环不结束。

31.(对)turn后面括号里的表达式的值即是此函数的值。

32.(对)就是地址,因此一个变量的指针就是该变量的地址。

33.(对)ets函数可以接收一个含有空格的字符串。

34.(对)行逻辑运算时,非0整型值表示“真”。

35.(对)运算符“?:”的优先级高于赋值运算符。

36.(对)预处理命令是在进行编译时首先执行的,然后再进行正常编译。

37.(错)宏定义命令是以分号结束的。

38.(错)条件语句不能作为多分支语句。

39.(错)开关语句中的default关键字,只能放在该语句的末尾。

不能放在开头和中间。

40.(错)while语句的循环体至少执行一次。

41.(对)do-while循环可以写成while循环。

42.(对)当循环体为空语句时,说明该循环不做任何工作只起到延时作用。

43.(对)break可以出现在各种循环体内。

44.(错)continue只能出现在循环体中。

45.(错)只有for循环体内可以使用空语句。

其他循环体内部可以使用。

46.(对)计算函数参数顺序引起的二义性,完全是由不同编译系统确定。

47.(错)for循环中,循环变量的作用域是该循环的循环体。

48.(错)在C语言中,函数可以嵌套定义。

49.(对)程序中的注释部分可有可无,通常可以省略。

50.(错)在函数中,只能有一条return语句。

51.(错)C程序中,会检查数组下标是否越界。

52.(对)在C程序中,ABC和abc是两个不同的变量。

53.(错)在C语言中,函数中的变量可以赋初值,每调用一次该函数,就赋一次初值。

54.(对)C语言中不能对数组名进行加减和赋值运算。

55.(对) C语言中结构体可以嵌套定义。

56. (对) C语言中结构体可以嵌套定义。

第三部分:程序填空
1.若已定义a和b是double型的数据,则表达式a=2,b=5,c=a*b-2执行后c的值是____8.0_____。

2.若有定义char a[8];则a数组元素下标的上限是__7__,下限是___0___。

3.C语言的数组名是一个____地址___常量,不能对它进行加、减和赋值运算。

4.设有条件float x1=13.24,x2=-78.32,则执行语句printf(“x(%d)=%.2fx(%f)=%.2f\n”,1,x1,2,x2)后,x1的值为_____ x1=13.24______,x2的值为___ x2=-78.32_______。

5.下列语句的输出结果是____31 37 1F 31____。

char a=31;
printf(“%d,%o,%x,%u\n”, a,a,a,a);
6.以下程序将M*N的二维数组x转秩后存入N*M的二维数组y中,请填空:
#define M 2
#define N 3
main( )
{ int i,j,x[M][N]={1,2,3,4,5,6},y[N][M];
for(i=0;i<M;i++)
{ for(j=0;j<N;j++)
printf(“%3d”,x[i][j]);
printf(“\n”);
}
for(i=0;i<M;i++)
for(j=0;j<=__ N __;j++)
y__[j][i] __=x__[i][j]__;
for(i=0;i<N;i++)
{ for(j=0;j<__ M __;j++)
printf(“%3d”,y[i][j]);
printf(“\n”);
}
}
7.以下程序的功能是:从读入的整数数据中,统计大于0的整数个数和小于0的整数个数。

用输入0来结束输入,程序中用变量i统计大于0的整数个数,用变量j统计小于0的整数个数。

请填空:
main( )
{_ int _ n,i,j;
i=j=0;
scanf(“%d”,&n);
while(_n!=0_)
{ if(n>0) i=_ i+1_;
if(n<0) j=_ j+1_;
___ scanf(“%d ”,&n)___;
}
printf(“i=%4d j=%4d \n”, i,j); }
8.下面函数的功能是根据近似公式:222213121116n
++++≈ π
,求π值。

请填空: #include <stdio.h>
double pi(long n)
{ double s=0.0;
long i;
for(i=1;i<=n;i++)
s=s+___1.0/(i*i ) ___;
return (___s ____);
}
9.下面函数完成对数组按从小到大的排序。

请填空。

void sort(int data[],int n)
{ int i,j,k,temp;
for(i=0;i<n-1;i++)
{ ______ k=i __________;
for(j=i+1;j<n;j++)
if(_____data[k]>data[j]_______)
k=j;
if(______i!=k _________)
{ temp=data[i]; data[i]=data[k]; data[k]=temp; }
}
}
10.下面程序读入20个整数,统计非负数的个数以及非负数的和,请填空。

main()
{ int i,a[20],sum=0,count=0;
for(i=0;i<20;i++)
scanf(“%d ”,_______ a[i]________)
for(i=0;i<20;i++)
{ if(a[i]<0) _____ continue ________
sum+=a[i];
count++;
}
printf(“sum=%3d count=%3d\n ”,sum,count);
}
11.以下程序可判断输入的一个整数是否能被3或7整除,若能整除,输出“yes”并换行,否则输出“no”。

请填空。

#include <stdio.h>
main()
{ int k;
printf(“Enter a int number:”);
scanf (“%d”,&k );
if_______(k%3==0&&k%7==0)_________
printf(“yes\n”);
else
printf(“no”);
}
12.以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。

用输入零来结束输入,程序中用i统计大于零的个数,用变量j统计小于零的整数。

请填空。

Main()
{ int n,i,j;
print f(“Enter INT numbers,with 0 to end\n”);
i=j=0;
scanf(“%d”,&n);
while ____(n!=0)______
{ if (n>0) ____ i++______;
if (n<0) ____ j++______;
scanf(“%d”,&n);
}
printf(“i=%4d j=%4d\n”,i,j);
}
13.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,
函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即
正向与反向的拼写都一样,例如:adgda.请填空.
#include <stdio.h>
char *huiwen(char *str)
{char *p1,*p2;int i,t=0;
p1=str;p2=___ str+(strlen(str)-1)___;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;break;}
if(__!t(或t==0)__)return("yes!");
else return("no!");
}
main()
{char str[50];
printf("Input:");scanf("%s",___str___);
printf("%s\n",__ huiwen(str) ____);
}
14.在内存中存储“A”要占__2__ 个字节,存储‘A’要占__1__ 个字节。

结构化程序设计规定的三
种基本结构是__顺序__ 、__选择__和___循环___ 结构。

15.以下程序用辗转相除法求m和n的最大公约数,请将程序补充完整。

main( )
{ int m,n,r;
scanf("%d, %d",&m,&n);
if (m<n)
{ r=m; m=n;n=r; }
do
{ ___r=m%n;
m=n;
n=r;
}while(__r!=0_ );
printf("%d\n",m);
}
16.以下程序的功能是输入年份,判别该年是否为闰年,请将程序补充完整。

main( )
{ int year, leap ;
scanf("%d", &year);
if ( _ year%4==0_ && year%100!=0)
leap=1;
else if (year%400==0)
____ leap=1;
else leap=0;
if (leap == 1)
printf("%d is a leap year \n", year);
else
printf("%d is not a leap year \n", year);
}
17.从键盘上输入某人姓名、性别和年龄,然后再输出。

#include "stdio.h"
main()
{
struct human
{
char name[20];
char sex;
int age;
};
struct human ____man____;
printf("Please input name sex age:");
scanf("%s %c %d",_____,&man.sex,&man.age);
printf("%s\n%c\n%d\n",,man.sex,man.age);
}
18.输入3个学生的学号、数学和计算机成绩;计算出每个学生的总成绩并输出。

#include "stdio.h"
main()
{
int i;
struct student
{
int num;
int math;
int computer;
int sum;
};
struct student ___st[3]___,*p;
printf("Please input num,math,compute:\n");
for(i=0,p=st;i<=2;i++,p++)
{
printf("%d:",i+1);
scanf("%d,%d,%d",&p->num,&p->math,&p->computer);
p->sum=___p->math+p->computer或(*p).math+(*p).computer____;
}
for(p=st;p<=st+2;p++)
{printf("%4d%4d%4d",(*p).num,(*p).math,(*p).computer);
printf("%4d\n",(*p).sum);}
}
19.计算学生的总成绩
#include "stdio.h"
main()
{
struct human
{
int num;
char *name;
char sex;
int score;
};
___struct___ human stu[3]={{101,"michal",'m',45},{102,"peter",'m',70},{103,"jack",'f',90}}; int i,sum=0;
for(i=0;i<3;i++)
{
sum+=___stu[i].score____;
}
printf("sum=%d\n",sum);
}
20. 从键盘上输入某人姓名、性别和年龄,然后再输出。

#include "stdio.h"
main()
{
struct human
{
char name[20];
char sex;
int age;
};
struct human ____man____;
printf("Please input name sex age:");
scanf("%s %c %d",_____,&man.sex,&man.age);
printf("%s\n%c\n%d\n",,man.sex,man.age);
}
21.输入3个学生的学号、数学和计算机成绩;计算出每个学生的总成绩并输出。

#include "stdio.h"
main()
{
int i;
struct student
{
int num;
int math;
int computer;
int sum;
};
struct student ___st[3]___,*p;
printf("Please input num,math,compute:\n");
for(i=0,p=st;i<=2;i++,p++)
{
printf("%d:",i+1);
scanf("%d,%d,%d",&p->num,&p->math,&p->computer);
p->sum=___p->math+p->computer或(*p).math+(*p).computer____;
}
for(p=st;p<=st+2;p++)
{printf("%4d%4d%4d",(*p).num,(*p).math,(*p).computer);
printf("%4d\n",(*p).sum);}
}
第四部分:读程序写结果
1.#include<stdio.h>
main()
{ int x=1,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf(“a=%d b=%d\n”,a,b);
}
程序的运行结果是______ a=2 b=1_____________。

2.#include<stdio.h>
main()
{ int a[8]={10,25,15,45,50,60,75,80};
int b[8]={15,20,35,45,10,65,75,85};
int i,n;
scanf("%d",&n);
for(i=0;i<8;i++)
if(a[i]==n) n=b[i];
printf("%5d\n",n);
}
当输入10时,程序的运行结果是__________15_________。

当输入15时,程序的运行结果是___________35________。

3.main()
{
int *p1,*p2;
static int a[6]={16,21,37,48,54,65};
p1=&a[0];
p2=p1+5;
printf("%5d%5d\n",*p1,*p2);
printf("p2-p1=%x\n",p2-p1);
}
16 65
程序的运行结果是________ p2-p1=5___________。

4.fun2(int a,int b)
{ return a%b;
}
fun1(int a,int b)
{ int c1,c2;
c1=fun2(a,b);
c2=fun2(b,a);
return c1+c2;
}
main( )
{ int x=18,y=30;
printf(“%d\n”,fun1(x,y));
}
程序的运行结果是________30___________。

5.main()
{ char s[]=”programming”,b[]=”Language”;
char *p,*q;
int i;
p=a;q=b;
for(i=0;i<7;i++)
if(*(p+i)==*(q+i))
printf(“%c”,*(p+i));
}
程序的运行结果是_________ ga __________。

6.以下程序运行时若从键盘输入:10 20 30<回车>.输出结果是__10 30 0 ____ #include <stdio.h>
main()
{
int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);printf("%d % d %d\n",i,j,k);
}
7.以下程序运行后的输出结果是__10 20 0 __
8.main()
9.{
10.int a,b,c;
11.a=10;b=20;c=(a%b<1)||(a/b>1);
12.printf("%d %d %d\n",a,b,c);
13.}
14.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>.则15.输出结果是__1 B ___
16.#include <stdio.h>
17.main()
18.{char a,b;
19.a=getchar();scanf("%d",&b);
20.a=a-'A'+'0';b=b*2;
21.printf("%c %c\n",a,b);
22.}
23.以下程序运行后的输出结果是___4 3 3 4 ___
24.void swap(int x,int y)
25.{ int t;
26.t=x;x=y;y=t;printf("%d %d ",x,y);
27.}
28.main()
29.{ int a=3,b=4;
30.swap(a,b);printf("%d %d\n",a,b);
31.}
10.以下程序运行后的输出结果是________3______.
int f(int n)
{ if (n==1) return 1;
else return f(n-1)+1;
}
main()
{ int i,j=0;
for(i=i;i<3;i++) j+=f(i);
printf(“%d\n”,j);
}
11.以下程序运行后的输出结果是________1______.
long fun( int n)
{ long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{ printf(“%ld\n”,fun(3)); } 12.以下程序运行后的输出结果是________ hlo ______.
void func1(int i);
void func2(int i);
char st[]="hello,friend!";
void func1(int i)
{ printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{ printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{ int i=0; func1(i); printf("\n");} 13.以下程序运行后的输出结果是_____2,1________.
#include <stdio.h>
void swap2(int x[ ])
{ int z;
z=x[0]; x[0]=x[1]; x[1]=z;
}
main()
{ int a[2]={1,2};
swap2(a);
printf("a[0]=%d,a[1]=%d\n",a[0],a[1]);
}
2,2
14.下面程序运行结果是______3,2_________ #include "stdio.h"
void main()
{
int a=2;
int *p=&a,*q=&a;
printf("%d,%d\n",*p++,*(q++));
p=&a,q=&a;
printf("%d,%d",*p,(*q)++);
}
15.void main()
{
char str[80];
int i=0;
gets(str);
while(str[i]!=0)
{
if(str[i]>='a'&&str<='z')
str[i]-=32;
i++;
}
puts(str);
}
程序运行时如果输入abdc, 屏幕显示___ABCD__
程序运行时如果输入A1b2c3, 屏幕显示__A1B2C3___
16.下面程序运行的结果是_______sum=205__________
#include "stdio.h"
main()
{
struct human
{
int num;
char *name;
char sex;
int score;
};
struct human stu[3]={{101,"michal",'m',45},{102,"peter",'m',70},{103,"jack",'f',90}}; int i,sum=0;
for(i=0;i<3;i++)
{
sum+=stu[i].score;
}
printf("sum=%d\n",sum);
}
17.下面程序的运行结果是____102,m,34___________
#include "stdio.h"
main()
{
struct list
{
int num;
char sex;
int age;
}men[3]={{101,'f',36},{102,'m',33},{103,'f',45}};
struct list *p;
p=men;
p++;
printf("%d,%c,%d\n",p->num,p->sex,++p->age);
}
18. 下面程序运行的结果是_______sum=205__________
#include "stdio.h"
main()
{
struct human
{
int num;
char *name;
char sex;
int score;
};
struct human stu[3]={{101,"michal",'m',45},{102,"peter",'m',70},{103,"jack",'f',90}};
int i,sum=0;
for(i=0;i<3;i++)
{
sum+=stu[i].score;
}
printf("sum=%d\n",sum);
}
19. 下面程序的运行结果是____102,m,34___________
#include "stdio.h"
main()
{
struct list
{
int num;
char sex;
int age;
}men[3]={{101,'f',36},{102,'m',33},{103,'f',45}};
struct list *p;
p=men;
p++;
printf("%d,%c,%d\n",p->num,p->sex,++p->age);
}
第五部分:程序设计题
1.编写程序完成从整数m到整数n的和(m<n)。

2.已知数组a[]={0,1,2,3,4,5,6,7,8,9},判断输入的x是否在该数组中。

3.输入10个100以内的数,统计大于等于50的个数,和小于50的个数。

4.用函数调用的方式,判断一个数是否是素数。

5.已知有如下定义:
int a=1,b=2,c=3,d=4;
int *p;
用指针的方式输出a,b,c,d。

6.编写猜数字程序,游戏规则:你和电脑各出四个数字(本题要求这4个数可以重复), 游戏开始时, 由您先猜电脑所出之题目为何数, 电脑会告知您所猜测之数字与电脑之题目是否相同, 若不相同, 电脑会以A,B标识来提示您, A代表数字正确同时位置也正确,B代表数字正确但位置不正确的个数。

例如: 电脑出的四个数字是8576,您猜的数字: 3587 结果电脑提示为:1A2B,1A代表5这个数存在于电脑给出的4个数中同时位置正确。

2B表示8和7这两个数存在,但位置不正确。

编写程序要求:程序开始运行后提示输入4个数字;输入后如果猜测不正确对应输出几A几B (如2A1B),然后提示继续输入新的4个数字;限制猜测的次数为10次;如果在这10次中输入的4个数正确,则输出You are right,great!如果输入10次还没猜测正确,则输出Time is up,what a pity! #include "stdio.h"
int guess(char p[4],char q[4])
{
int i,j,a=0,b=0,k; /*a代表A的个数,b代表B的个数*/
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(p[i]==q[j])
b++;
for(i=0;i<4;i++)
if(p[i]==q[i])
a++;
b=b-a;
if(a==4) /*4A0B时输出"You are right,great!!!",否则输出几A几B*/
printf("You are right,great!!!");
else
printf("%dA%dB\n",a,b);
return a;
}
void main()
{
char p[4]={'4','5','6','7'},q[4];
int i=0,j=0,k=0;
do
{
printf("Please input 4 different numbers:");
gets(q);
k=guess(p,q); /*k就是A的个数,如果为4,即为4A0B,猜中,这时退出*/
j++;
}
while(j<=8&&k!=4); /*限猜10次*/
if(k!=4)
printf("Time is up,what a pity!!!");
}
7.判断输入的某个数m是否为素数。

若是素数,输出“YES”,若不是,输出“NO”。

参考答案:
#include "math.h"
main( )
{ int j,m,k;
printf("Enter an integer number: ");
scanf("%d",&m);
for (j=2; j<=m-1; j++)
if (m%j==0) break;
printf("%d ",m);
if (j>=m)
printf("YES\n");
else
printf("NO\n");
}
8.编写统计候选人得票的程序,设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出每个候选人的得票结果。

#include<stdio.h>
#include <string.h>
main( )
{ int num[3]={0},i;
char s[20],name[3][20];
for(i=0;i<3;i++)
gets(name[i]);
printf("please input leader_name:");
gets(s);
while((*s)!=NULL)
{for(i=0;i<3;i++)
if(strcmp(s,name[i])==0) num[i]++;
for(i=0;i<3;i++)
printf("name[%d] %d\n",i,num[i]);
printf("please input leader_name:");
gets(s);}
}
#include<stdio.h>
#include <string.h>
void fun(char name[3][20],int num[],char s[])
{ int i;
for(i=0;i<3;i++)
if(strcmp(s,name[i])==0) num[i]++;
}
main( )
{ int num[3]={0},i;
char s[20],name[3][20];
for(i=0;i<3;i++)
gets(name[i]);
printf("please input leader_name:");
gets(s);
while((*s)!=NULL)
{ fun(name,num,s);
printf("please input leader_name:");
gets(s);
}
for(i=0;i<3;i++)
printf("\n%s:\t%d",name[i],num[i]);
}
#include<stdio.h>
#include <string.h>
main( )
{ int num[3]={0},i;
char s[20],name[3][20];
for(i=0;i<3;i++)
gets(name[i]);
gets(s);
while((*s)!=NULL)
{for(i=0;i<3;i++)
if(strcmp(s,name[i])==0) num[i]++;
gets(s);}
for(i=0;i<3;i++)
printf("name[%d] %d\n",i,num[i]);
}
#include<stdio.h>
#include <string.h>
main( )
{ int num[3]={0},i;
char s[20],name[3][20];
for(i=0;i<3;i++)
gets(name[i]);
gets(s);
while(!(strcmp(s,NULL)==0))
{for(i=0;i<3;i++)
if(strcmp(s,name[i])==0) num[i]++;
gets(s);}
for(i=0;i<3;i++)
printf("name[%d] %d\n",i,num[i]);
}
9.编写函数将字符串s中所有与变量c相等的字符删除。

#include<stdio.h>
#include <string.h>
void fun(char s[50],char c)
{ int i,j;
for(i=0,j=0;s[i]!='\0';i++)
if(s[i]!=c) s[j++]=s[i];
s[j]='\0';
}
main( )
{
char s[50],c;
printf("please input s: "); gets(s);
printf("please input c: "); c=getchar();
fun(s,c);
puts(s);
}。

相关文档
最新文档