当前位置:文档之家› 《C语言程序设计》专题复习资料

《C语言程序设计》专题复习资料

《C语言程序设计》专题复习资料
《C语言程序设计》专题复习资料

第一部分《C语言程序设计》专题复习资料一.选择题

1、C语言中字符型(char)数据在内存中的存储形式是:( )

A)原码 B)补码 C)反码 D)ASCII码

2、C语言中长整型(long)数据在内存中的存储形式是:( )

A)原码 B)补码 C)反码 D)ASCII码

3、C语言的运算符按运算对象的数目可以分为:()

A)单目运算符 B)单目和双目运算符 C)单目、双目和三目运算符

D)单目、双目、三目和四目运算符

4、C语言中,int、char和short三种类型数据所占用的内存是()

A)均为2个字节 B)由用户自己定义

C)由机器的字长决定 D)任意的

5、C语言中的简单数据类型包括()

A)整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、逻辑型、字符型 D) 整型、实型、逻辑型、字符型

6、在C语言中,十进制的47可以等价的写成()

A)2f B)02f C)57 D)057

7、将字符g赋值字符变量c,正确的表达式是()

A)c=’g’ B)c=101

B)C)c=’\147’ D)c=’0147’

8、已知:char a; int b; float c; double d;执行语句c=a+b+c+d;后变量c的类型是()

A)int B)char C)float D)double

9、已知int j,i=1; 执行语句j=-i++后,j 的值是()

A)1 B)2 C)-1 D)-2

10、已知int i, a; i=(a=2*3,a*5),a+6”后,变量i 的值是()

A)6 B)12 C)30 D)36

11、已知 int i=5;执行语句i+=++i;后, i的值()

A)10 B)11 C)12 D)无答案

12、字符串“\\\22a,0\n”的长度是()

A)8 B)7 C)6 D)5

13、已知char a=’\70’;则变量a中包含的字符数为()个。

A)1 B)2 C)3 D)说明非法

14、已知:int x=1, y=-1;则执行语句“printf(“%d\n , (x--&++y)”);”的输出结果是:()

A) 1 B) 0 C) -1 D) 2

15、已知: int a=b=c=1 且均为int 型变量,则执行以下语句: ++a||++b&&++c后变量a的值为(),变量b的值为()

A) 不正确 B) 0 C) 2 D) 1

A) 1 B) 2 C) 不正确 D) 0

16、设a=2 ,b=3, 则执行表达式c=b*=a-1后,变量c的值是()

A) 5 B) 3 C) 2 D) 4

17、要判断char型变量m是否为数字,可以使用以下表达式()

A)0<=m&&m<=9 B) ‘0’<=m&&m<=’9’

C)“0”<=m&&m<=”9” D) 以上答案均错误

18、已知:#define N 3; 的宏定义,执行语句i=N*3后,i的值是()

A) 3 B)6 C) 9 D) 以上答案均错误

19、若有以下宏定义:

#define X 5

#define Y X+1

#define Z Y*X/2

则执行以下printf语句后,输出结果是()

int a =Y;

printf(“%d”,Z);

printf(“%d\n”,--a);

A) 7,6 B)12,6 C)12,5 D) 7,5

20、若有以下宏定义:

#define N 2

#define Y(n) ((N+1)*n)

则执行以下”z=2*(N+Y(5))”,语句后,输出结果是()

A)语句有错误 B)z=34 C) z= 70 D)z无定值

21、若int k; 且有下面的程序片段,则输出结果是()

k=3;

if(k<0) printf(“####”);

else printf(“&&&&”);

A) ####B) &&&&

C) ####&&&& D)有语法错误

22、设有说明语句:int a=1 ,b=0 ;则执行以下语句后的输出为()

switch(a)

{ case 1:

switch(b)

{ case 0: printf(“**0**”);break;

case1: printf(“**1**”);break;

}

case 2:printf(“**2**”);break;

}

A) **0** B) **0****2**

C) **0****1****2** D) 有语法错误

23、与语句“while(!x)”等价的是()

A) while(x==0) B) while(x!=0)

C) while(x!=1) D) while(~x)

24、与语句“while(x)”中的x等价的是()

A) x==0 B) x==1 C) x!=1 D) x!= 0

25、定义int I=1, 则执行语句“while(I++< 5) ; ”后,I的值是()

A)3B)4C)5D)6

26、若有int I ,x; 则:“for(I=x=0;I<9&&x!=5;I++.x++)””控制的循环体执行的次数是()

A)10B)9C)5D)6

27、若int a=5 ;则执行以下语句:

do

{ printf(“%2d”,a--);

}while(!a); 后的打印结果是()

A)5B)不打印任和内容C)4D)陷入死循环

28、若int x=3;且有以下程序片段,则输出结果是()

do

{ printf(“%d”,x-=2);

}while(!(--x));

A)1 B) 3 0 C) 1 -2 D)死循环

29、若int x;且有以下程序片段,则输出结果是()

for(x=3;x<6;x++)

printf((x%2)?”**%d” , ”##%d\n”,x);

A)**3B)##3C)##3D)**3##4

##4 **4 **4##5 **5

**5 ##5

30、C语言程序由函数组成,它的________。.

A)主函数必须在其它函数之前,函数内可以嵌套定义函数

B) 主函数必须在其它函数之后,函数内不可以嵌套定义函数

C) 主函数可以在其它函数之前,函数内不可以嵌套定义函数

D) 主函数必须在其它函数之后,函数内可以嵌套定义函数

31、一个c语言程序的基本组成单位是()

A)主程序B)子程序C)函数D)过程

32、一个c程序的总是从()开始执行

A主过程B) 主函数C)子程序D) 主程序33、c语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是()

A)地址传递B)值传递C)由实参传递形参,并形参传回实参D)由用户指定传递方式

34、错误的说明语句是()

A)Char word[ ]={‘T’,’u’,’r’,’b’,’b’,’\0’};

B)Char word[ ]={“Turbo\0”};

C)Char word[ ]= “Turbo\0”;

D)Char word[ ]=’ Turbo\0’;

35、已知:char s[5], c, int b ; 则调用函数scanf的正确语句是()

A)S canf(“%s%c”,s,c); B)Scanf(“%d%c”,&b,&c);

C) Scanf(“%d%c”,b,&c); D) Scanf(“%s%c”,s,&c);

36、要说明一个有10个int 元素的数组,应当选择语句()

A)int a[10]B)int a[2,5] C)int a[ ] D)int *a[10]

37、合法的数组的说明语句是()

A)int a[ ]=”string”B)int a[5]={0,1,2,,4,3,5}

C)char a=”string”D)char a[ ]={0,1,2,3,4,5}

38、调用strlen(“abcd\0ef\0g”)后的返回值是()

A) 4B) 5C) 8D) 9

39、已知:int I , x[3][3]={1,2,3,4,5,6,7,8,9,}

则以下输出的结果是()

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

printf(“%d”,x[i][2-i]);

A)15 9B)1 4 7C)3 5 7D)3 6 9

40、已知:char str[ ]=”ab\n\012\\\”; 则执行语句:printf(“%d”,strlen(str));后的结果是()

A)3B)4C)6D)12

41、以下对外部的一维数组a进行正确初始化的是()

A) int a[10]=(0,0,0,0) ; B) int a[10]={ };

C) int a[ ]={ 0 };D) int a[10]={10*1 };

42、以下对外部的二维数组a进行正确初始化的是()

A)int a[2][]={{1,0,1},{5,3,2}};

B)int a[ ][3]={{1,0,1},{5,3,2}};

C)int a[2][4]={{1,0,1},{5,3},{4}};

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

43、以下正确的语句是()

A)int a[1][4]={1,2,3,4,5}

B) float x[3][ ]={{1},{3},{2}}

C) long b[2][3]={{1},{1,2},{1,2,3}}

D) double y[ ][3]={0 }

44、下面的程序段的运行结果是()

char a[7]=”abcdef”, b[4]=”ABC”

strcpy(a,b); printf(“%c”,a[5]);

A)空格B) \0C) e D) f

45、下面的程序段的运行结果是()

char a[3],b[ ]=”china”;

a=b; printf(“%s”, a);

A)china B)ch C)chi D)程序出错

46、下面的程序段的运行结果是()

char c[ ]=”\t\v\\\0will\n”;

printf(“%d”, strlen(c) );

A)14B)3C)4D)不确定

47、已知:char s[20]=”programming”, *ps=s;则不能引用字母o的表达式是()

A) ps+=2B)s[2]C)ps[2]D) ps+=2, *ps

48、已知:int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a; 则不能表示数组a中的元素的表达式是()

A)*p B)a[10]C) *a D)a[p-a]

49、已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*ptr)[3]=a; *p=a[0] ;则以下能够正确表示数组元素a[1][2]的值表达式是()

A)*(ptr+1)[2]B)(*(*p+5) )

C) *(ptr+1)+2 D) (*(*a+1)+2 )

50、已知:char *p ,*q; 选择正确的语句是()

A)p*=3B)p/=q C)p+=3D)p+=q

51、已知:int a, *p=&a ,则为了得到变量a的值,下列错误的表达式是()

A)*&p B)*p C)p[0]D)*&a

52、已知int x[ ]={1,3,5,7,9,11}, *p=x; 则能够正确引用数组的语句是()

A)*(p--)B) *(--p)C)*(++p)D) *(p++)

53、在C语言的函数调用过程中,如果函数funA 调用了函数funB,函数funB又调用了函数funA;则()

A)称为函数的直接递归B) 称为函数的间接递归C)称为函数的递归定义D) C语言中不允许这样递归形式

54、下面的四个运算符中,优先级最低的是()

A) ( ) B) .C) –>D)++

55、已知:struct

{ int I ; char c; float a;

}test ;

则sizeof(test)=( )

A)4B)5 C)6 D) 7

56、已知:union

{ int I ; char c; float a;

}test ;

则sizeof (test)=( )

A)4B)5 C)6 D) 7

57、已知:union u_type

{ int I ; char c;

}temp ;

执行“temp.i=266”则temp.ch的值为( ) A) 266B) 256C) 10D) 1

58、

A) B) C)D)

59、以下叙述正确的是()

A.do….while语句构成的循环不能用其他语句构成的循环来代替

B.do….while语句构成的循环只能用break语句退出

C.用do….while语句构成的循环,在while后的表达式为零时结果循环

D.用do….while语句构成的循环,在while后的表达式为非零时结果循环

60、下列关于switch语句和break语句的说法中,正确的是()

A.switch语句中使用break语句可以结束switch语句的执行

B.switch语句中可以根据需要使用或不使用break 语句

C.switch语句中不使用break语句也能结束某个case分支的执行

D.switch语句中必须包含break语句,才能结束switch语句的执行

61、10、以下对C语言字符数组的描述中错误的是()

A.字符数组可以存放字符串

B.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

C.字符数组中的字符串可以整体输入、输出D.不可以用关系运算符对字符数组中的字符串进行比较

62、函数调用strcat(strcpy(str1,str2),str3)的功能是()

A.将串str1复制到串str2中后再连接到串str3之后

B.将串str1连接到串str2中后再复制到串str3之后

C.将串str2连接到串str1之后再将串str1复制到串str3之中

D.将串str2复制到串str1中后再将串str3连接到串str1之后

63、下面不正确的字符串赋值或赋初值方式是()

A.char *str,str=”string”;

B.B.char str[7]={’s’,’t’,’r’,’i’,’n’,’g’};

C.char str1[10]; str1=”string”;

D.char str1[]=”string”,str2[20];strcpy(str2,str1); 64、C语言规定,程序中各函数之间()

A.既允许直接递归调用,也允许间接递归调用B.既不允许直接递归调用,也不允许间接递归调用

C.允许直接递归调用,不允许间接递归调用D.不允许直接递归调用,允许间接递归调用

65、在C语言程序中,当调用函数时,下面说法正确的是()

A.实参和形参各占一个独立的存储单元

B.实参和形参可以共用存储单元

C.可以由用户指定是否共用存储单元

D.上面三种说法都不正确

66、下列程序的作用是()。

#include

void main()

{

char c;

c=getchar();

c=(c-‘a’)+’A’;

printf(“%c \n”,c);

}

A、计算大小写字母的ASCII值

B、输出变量c的ASCII值

C、大小写转换,且输出转换后的大写字母

D、以上内容都是

67、逻辑运算符的优先级正确的是()。

A、&&>!>||

B、!>&&>||

C、||>&&>!

D、!>||>&&

68、下列程序的作用是判断数的奇偶性,在画线处填写合适的语句()。

#include

void main()

{

int n;

printf("输入一个整数:");

scanf("%d",&n);

_______printf("%d是奇数\n",n);

else printf("%d是偶数\n",n);

}

A、if (n%2)

B、if(n/2)

C、if(n*2)

D、if(n>2)

69、DO循环和WHILE循环中,描述不正确的是()。

A、DO循环是先执行后判断

B、WHILE循环是

先执行后判断

C、DO循环是先判断后执行

D、DO,WHILE

循环都是先执行后判断

70、3、算出Z*=3+6;(Z=6)的结果是()

A、54

B、24

C、18

D、36

71、字符串“\r\nus”在内存中占几个字节()。

A、6

B、5

C、3

D、4 72、下列程序的结果是()。

#include

void main()

{

int I=10,j=8;

int m,n;

m=++I;

n=j++;

printf(“%d %d %d %d\n”,I,j,m,n);

}

A、10 9 10 8

B、11 9 11 8

C、12 9 12 8

D、11 8 11 9

73、下列标识符号中不合法的变量是()。

A、abc

B、_322

C、ABdf

D、abc_302

74、C语言中下列说法中不正确的是()。

A、C语言中的每一条语句的后面都必须用分号结束

B、在一对/*及*/中包含的语句是注释语句

C、从/ /开始到本行的回车结尾处的语句也是注释语句

D、void main()是C语言程序的子函数

75、下列程序的作用是()。

#include

void main()

{

char c;

c=getchar();

c=(c-‘a’)+’A’;

printf(“%c \n”,c);

}

A、计算大小写字母的ASCII值

B、输出变量c的ASCII值

C、大小写转换,且输出转换后的大写字母

D、以上内容都是

76、下列程序的作用是判断数的奇偶性,在画线处填写合适的语句()。

#include

void main()

{

int n;

printf("输入一个整数:");

scanf("%d",&n);

_______printf("%d是奇数\n",n);

else printf("%d是偶数\n",n);

}

A、if (n%2)

B、if(n/2)

C、if(n*2)

D、if(n>2)

77、A)B)C)D)

78、A)B)C)D)

79、A)B)C)D)

80、A)B)C)D)

二、填空题

1、设x为整型变量,则(x&1)==(x%2)的值为:________。

2、已知int x=10, y, z; 执行y=z=x ; x=y=z 后,变量x的值:______________。

3、表达式3*7%2+7%2*5的值为:

___________ 。

4、表达式8.0*(1/2)的值为:___________ 。

5、已知int x;当x的值分别为1、2、3、4时,表达式“(x&1==1)?1:0;”的值分别为:_______、_______、________、________。

6、写出下列算式的答案。

11/3 11.0/3 5%10 10%3

-10%3 10%3 10/5*3 10/(5*3)7、一个C程序一般由若干个函数组成,其中至少应包含一个___ _____函数。

8、C语言中的标识符只能由字母、数字和_____ _____三种字符组成。

9、若定义int a=3,b=2,c;则表达式c=b*=a-1的值为____________。

10、表达式(!10>3)?2+4:1,2,3的值是_______。

11、一个C程序一般由若干个函数组成,其中至少

应包含一个________函数。

12、设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为__________。13、设ch是char型变量,其值为A,且有下面的表达式:ch=(ch>’A’&&ch<=’Z’) ?

(ch+32) :ch 该表达式的结果为____________。

14、构成数组的各个元素必须具有相同的

__________。

15、C程序是由构成的,一个C程序中至

少包含。因此,是C 程序的基本单位。

16、C程序注释是由和所界定的

文字信息组成的。

17、函数体一般包括_____________ 和。

18、算法是。

19、三种基本程序结构是,_________

和。

20、.在C语言中(以16位PC机为例),一个char

数据在内存中所占字节数为,其数值范围为;一个int数据在内存中所占字节数为,其数值范围为;一个long数据在内存中所占字节数为,其数值范围为

;一个float数据在内存中所占字节数为,其数值范围为

21、C语言的标识符只能由大小写字母,数字和下

划线三种字符组成,而且第一个字符必须为

22、字符常量使用一对界定单个字符,

而字符串常量使用一对来界定若干个字符的序列。

23、在C语言中,不同运算符之间运算次序存在

的区别,同一运算符之间运算次序存在

的规则。

24、设x,i,j,k都是int型变量,表达式

x=(i=4,j=16,k=32)计算后,x的值

为。

25、设x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%2/4为。

26、设a=2,b=3,x=3.5,y=2.5,则

(float)(a+b)/2+(int)x%(int)y为。

27、数学式子

1

24

a x

ax

a

+

??

+

?

??

的C语言表达式

为。

28、数学式子

3ae

bc

的C语言表达式

为。

29、已知:char a=’a’,b=’b’,c=’c’,i;则表

达式i=a+b+c的值为。

30、已知int a=12,n=5;则:

31、一个表达式要构成一个C语句,必须。

32、复合语句是用一对界定的语句块。

33、8.已有int i,j; float x;为将-10赋给i,12

赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式

是。

34、C语言本身不提供输入输出语句,其输入输出操作是由来实现的。

35、C语言提供6种关系运算符,按优先级高低它

们分别是,,,,,等。

36、C语言提供三种逻辑运算符,按优先级高低它

们分别是,,。

38、4.写出数学式子

1(0)

0(0)

1(0)

x

y x

x

<

?

?

==

?

?->

?

的C语言表达

式。

39、将条件“y能被4整除但不能被100整除,或y

能被400整除”写成逻辑表达式。

40、设x,y,z均为int型变量;写出描述“x,y和z

中有两个为负数”的C语言表达式:。

41、已知A=7.5,B=2,C=3.6,表达式A>B && C>A ||

AB的值是。

42、有int x=3,y=-4,z=5;则表达式(x&&y)==(x||z)

的值为。

43若有x=1,y=2,z=3,则表达式(x

44、执行以下程序段后,

a= ,b= ,c= 。

int x=10,y=9 ;

int a,b,c ;

a = (x--=y++) ? x-- : y++ ;

b = x++ ;

c = y ;

45、2.至少执行一次循环体的循环语句

是。

46、循环功能最强的循环语句

是。

47、C语言允许循环嵌套使用层。

48、程序段

for (a=1,i=-1; -1

{ a++ ; printf(“%2d”,a); } ;

printf(“%2d”,i) ;

的运行结果是。49、1.在C语言中,二维数组的元素在内存中的存

放顺序是。

50、若有定义:double x[3][5],则x数组中行下标

的下限为,列下标的下限为。

51、若有定义:int

a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为,a[2][1]得到的值

为。

52、字符串”ab\n\\012\\”的长度是。

53、下面程序段的运行结果是。

char x[ ]=”the teacher”;

int i=0;

while (x[++i]!=’\0’)

if (x[i-1]==’t’) printf(“%c”,x[i]);

54、欲为字符串S1输入”Hello World!”,其语句

是。

55、欲将字符串S1复制到字符串S2中,其语句

是。56、如果在程序中调用了strcat函数,则需要预处

理命令。如果调用了gets函数,则需要预处理命

令。

57、C语言数组的下标总是从开始,不可以为负

数;构成数组各个元素具有相同的。

58、字符串是以为结束标志的一维字符数

组。有定义:char a[]=””;则a数组的长度

是。

59、1.C语言函数返回类型的默认定义类型

是。

60、函数调用语句:fun((a,b),(c,d,e))实参个数

为。

61、函数的实参传递到形参有两种方式:

和。

62、在一个函数内部调用另一个函数的调用方式称

为。在一个函数内部直接或间接调用该函数成为函数的调用方式。63、C语言变量按其作用域分为

和。按其生存期分为

和。

64、已知函数定义:void dothat(int n,double x)

{ …… },其函数声明的两种写法为

和。

65、1.在C程序中,指针变量能够赋

值或值。

67、在C语言中,数组名时一个不可改变

的,不能对它进行赋值运算。

68、有定义语句:int a[4]={0,1,2,3},*p;p=&a[1];

则++(*p)的值是。

69、若有定义:int a[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是,

*(a[1]+2)的值是。

70、若有程序段:

int *p[3],a[6],i;

for (i=0; i<3; i++) p[i]=&a[2*i] ;

则*p[0]引用的是a数组元素,*(p[1]+1)引用的是a数组元素。

三、程序阅读题。

1、main( )

{ int x=10, y=10;

printf(“%d%d”,x-- ,--y);

}

A)10 10 B)9 9C)9 10 D)10 9

2、main( )

{ int x=023;

printf(“%d\n”,--x);

}

A)18 B)22 C)23 D)19

3、main( )

{ int a=-1,b=4,k;

k=(++a<0)&&!(b--<0)

printf(“%d% d %d\n”, k , a, b);

A)104 B)103 C)003 D)004

4、main()

{ int a=3, b=7;

printf(“%d\n”, a++++b);

printf(“%d\n”, b%a);

printf(“%d\n”, !a>b);

printf(“%d\n”, a+b);

printf(“%d\n”, a&&b);

}

A)10 B)11C)12D)不定

A)1B)2C)0D)3

A)0B)7C)1D)10

A)3B)12C)4D)10

A)0 B)1 C)大于零的任意整数D)无值

5、main( )

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

switch(x)

{ case 1:

switch(y)

{ case 0: a++; break;

case 1: b++; break;

}

case 2:a++ ; b++; break;

}

printf(“a=%d, b=%d\n”, a , b);

}

A)a=2, b=1 B) a=1, b=1

C)a=1, b=0 D) a=2, b=2

6、main( )

{ int a=5, b=4 ,x, y ;

x=a++*a++*a++ ;

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

y=--b*--b*--b;

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

}

7、main( )

{ char c=’A’;

if(‘0’<=c<=’9’)

printf(“yes”);

else

printf(“no”);

}

A) yes B) no C) yes no D)语句错误

8、main( )

{ int a, b, t=0;

scanf(“%d%d” ,&a , &b);

if(a=2) t=a , a=b , b=t ;

printf(“%d,%d”, a , b );

}

A)2, 0 B) 2, 2 C) 2, 1D) 1,2

9、main( )

{ int a=10 ,b=0 ;

if( a=12)

{ a=a+1 ; b=b+1 ;}

else { a=a+4 ;b=b+4; }

printf(“%d,%d” a , b );

}

A)13,4 B)14,4 C)11,1 D)10,0

10、main( )

{ int n=4 ;

while(n--)

printf(“%d” ,- -n );

}

A) 2 0 B) 3 1 C)3 2 1 D)2 1 0

11、main( )

{ int i , j ;

for(I=0 , j=10 ; i

printf(“%d\n” , i);

printf(“%d\n” , j);

}

A) 5 B)6 C)7 D)8

A) 5 B)6 C)7 D)8

12、main( )

{ int I=0 , j= 0 ,k=0, m ;

for( m=0 ; m<4 ;m++)

switch(m)

{

case 0 : I=m++;

case 1 : j=m++;

case 2 : k=m++;

case 3: m++;

printf(“\n%d,%d,,%d,%d” ,I , j , k , m );

}

A) 0,0,2,4 B)0,1,2,3 C) 0,1,2,4 D)0,1,2,5

13、main( )

{ char I , j;

for( I= ‘0’ , j=’9 ‘ ; I

printf(“%c%c”, I , j);

printf(“\n”);

}

A)0123456789 B)0918273645

C)9876543210D)以上三个都不对

14、main( )

{ char c=’A’;

if(‘0’<=c<=’9’)

printf(“yes”);

else

printf(“no”);

}

A) yes B) no C) yes no D)语句错误

15、main( )

{int I=1;

while(I<15)

if(++I%3!=2)

continue;

else printf(“%d” , i);

printf(“\n”);

}

16、main()

{ int a , b, m, n ;

scanf(”%d %d” , &a,&b);

n=m=1;

if(a>0) m=m+n;

if(a

else if(a==b) n=5 ;

else n= m + n ;

printf(“m=%d n=%d\n” , m , n );

}

①当输入为-1,-2,程序的运行结果为:___________ ;

②当输入为-1,0,程序的运行结果为:_ __________ ;

③为了输出n=4 , 变量a和b应具备的条件是:___________ ;

17、main( )

{

int I ,j, k ;

char space=’‘;

for(I=0; I<=5 ; I++)

{ for(j=1; j<=I; j++)

printf (“%c” , space );

for(k=0; j<=5; k++)

printf (“%c” , ‘*’ );

printf(“\n”);

}

18、fun( int*p)

{ int a=10;

p=&a ;

++a;

}

main( )

{ int a=5;

fun(&a);

printf(“%d\n” , a);

}

A) 5 B)6 C) 10 D)11

19、main( )

{ int a=24 , b=16 , c ;

c=abc( a , b);

printf(“%d\n” , c);

}

int abc ( int u , int v)

{ int w;

while(v);

{ w=u%v;

u=v;

v=w;

}

return u;

}

A) 4 B)6 C) 5 D)8

20、main( )

{ int a=5 , b=10 ;

swap( a , b);

}

swap( int x , int y)

{ int temp ;

temp=x ; x=y ; y=temp ;

}

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

}

21、int m[3][3]={{1},{2},{3}};

int n[3][3]={1 , 2 , 3 };

main( )

{ printf(“%d=\n”, m[1][0]+n[0][0]);

printf(“%d=\n”, m[0][1]+n[1][0]);

}

A) 0 B)1 C)2 D)3

A) 0 B)1 C)2 D)3

22、#define FMT “%d\n”

main( )

{ static int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12} ; printf( FMT , a[2][2] );

printf( FMT , *(*(a+1)+1) );

}

A) 9 B)A C)B D)都不对

A) 6 B)7 C)8 D)都不对

23、main( )

{ int n[3][3] , I , j ;

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

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

n[I][j]=I+j ;

for( I=0 ; I<2 ; I++ )

for( j=0 ; j<2 ; j++)

n[I+1][j+1]= n[I][j] ;

}

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

24、main( )

{ int a[6][6] , I , j ;

for( I=1 ; I<6 ; I++ )

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

n[I][j]=(i/j)*(j/i);

for( I=1 ; I<6 ; I++ )

{ for( j=1 ; j<6 ; j++)

printf(“%2d\n” , a[I][j] );

printf(“\n”);

}

}

A)1 1 1 1 1 B) 0 0 0 0 1

1 1 1 1 1 0 0 0 1 0

1 1 1 1 1 0 0 1 0 0

1 1 1 1 1 0 1 0 0 0

1 1 1 1 1 1 0 0 0 0

C) 1 0 0 0 0 D) 1 0 0 0 1

0 1 0 0 0 0 1 0 1 0

0 0 1 0 0 0 0 1 0 0

0 0 0 1 0 0 1 0 1 0

0 0 0 0 1 1 0 0 0 1

25、main()

int a[6] , I ;

for(I=0 ; I<6 ;I++)

{ a[I]=9*( I-2+4*(I>3) )% 5;

printf(“%2d” , a[I] );

}

A)-3 –4 0 4 0 4 B)-3 -4 0 4 0 3

C)-3 –4 0 4 4 3 D)-3 -4 0 4 4 0

26、阅读程序,写出执行结果。

main( )

{ char str[ 30] ;

gets( str ) ;

printf( “%s\n” , str );

}

运行程序输入:Fortran Language

27、以下函数ABC的功能是___________。ABC( char * ps )

{ char *p;

p=ps;

while(*p++);

return (p-ps);

}

A) 比较两个字符串的大小B)求字符串的长度

C) 将串ps复制到串p中D)都不对

28、已知:int *p使用如下语句动态申请一个

int型的存储单元,应当使用________。

P=___________malloc ( sizeof ( int ) ) ;

A)int B)int * C)(*int) D)(int *)

29、main( )

{ static int a[2][3]={{1,2,3},{4,5,6}} ;

int m ,*ptr ;

ptr=&a[0][0] ;

m=(*ptr)*(*(ptr+2))*(*(ptr+4));

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

}

30、main( )

{ static char a[ ]= “language” ;

char *ptr=a;

while( *ptr)

{ printf( “%c” , *ptr-32) ;

ptr++ ;

}

}

A) LANGUAGE B)陷入死循环

C)有语法错误D)language

31、main( )

{ char *str=”abcde” ;

printf(“%c\n” , *str) ;

printf(“%c\n” , *str++) ;

printf(“%c\n” , *++str) ;

printf(“%c\n” , (*str)++) ;

printf(“%c\n” , *++str) ;

}

A) a B) b C) c D) d

A) a B) b C) c D) d

A) a B) b C) c D) d

A) b B) c C) d D) e

A) b B) c C) d D) e

32、main( )

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

printf( “ x\n” , p ); /*输出结果为:ffe2*/

printf( “ x\n” , p +9) ;

printf( “ x\n” , *p+9 ) ;

printf( “ x\n” , *(p+9) ) ;

printf( “ x\n” , *++p+9 ) ;

}

A) ffeb B)ffed C) fff2 D) fff4

A) 9 B) 10 C) 11 D) 0

A) 9 B) 10 C) 11 D) 0

A) 9 B) 10 C) 11 D) 0

33、void fun( char * s)

{ char a[10];

strcpy(a , “string”) ;

s=a ;

}

main( )

{ char *p ;

fun(p) ;

printf( “ %s ” , p);

}

A) string~~~~ B) string C) string~~~ D) 值不定

34、main( )

{ int a[ ]={1,2,3,4,5,6} ;

int *p ;

p=a ;

printf( “%d” , *p ) ;

printf( “%d” , *(++p) ) ;

printf( “%d” , *++p ) ;

printf( “%d” , *(p--) ) ;

p+=3 ;

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

}

35、main( )

{

int x ;

x=try( 5) ;

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

}

try( int n)

{ if ( n>0 )

return( n *try(n-2) ) ;

else

return 1;

}

A) 15 B) 120 C) 1 D)均错误

36、fib( int n)

{ if ( n>2 )

return( fib(n-1) *fib(n-2) ) ;

else

return 3;

}

main( )

{ printf(“%ld\n” , fib (5)) ;

}

A)8 B) 16 C) 30 D)均错误

37、已知:struct

{ int x, y ;

}s[2]={{1,2} , {3,4}}, *p=s ;

则表达式++p->x的值为( ) ,表达式++p->x的值为( ) 。

38、main ( )

{ int a[2][3] , I , j , n=1;

for(I=0;I<2;I++)

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

a[I ][j ]=n++;

for(I=0;I<2;I++)

{for(j=0;j<3;j++)

printf (“%4d” , a[I ][j ]);

printf (“\n”);

}

}

39、main()

{ char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;

for(k=1;k<3;k++)

printf("%s\n",w[k]);}

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

main()

{

int I=1,s=0;

while(I<=100){

s+=I;

I+=2;}

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

}

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

main()

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

int I,sum=0;

for(I=0;I<10;I+=3)

sum+=a[I];

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

42、下面程序的输出结果是

main()

{int i;

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

;

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

43、以下程序片段。

main ( )

{ int x=0,y=0,z=0;

if (x=y+z)

printf(“***”);

else

printf(“###”);

}

A)有语法错误,不能通过编译

B)输出:***

C)可以编译,但不能通过连接,所以不能运行D)输出:###

44、对下述程序,是正确的判断。

main ( )

{ int x,y;

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

if (x>y)

x=y;y=x;

else

x++;y++;

printf(“%d,%d”,x,y);

}

A)有语法错误,不能通过编译

B)若输入3和4,则输出4和5

C)若输入4和3,则输出3和4

D)若输入4和3,则输出4和5

45、若w=1,x=2,y=3,z=4,则条件表达式w

A)4 B)3 C)2 D)1

46、下述表达式中,可以正确表示x≤0或x≥1的关系。

A)(x>=1) | | (x<=0) B)x>=1 | x<=0

C)x>=1 && x<=0 D)(x>=1) && (x<=0)

47、下述程序的输出结果是。

main ( )

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

if (++a>0 | | ++b>0)

++c;

printf(“%d,%d,%d”,a,b,c);

}

A)0,0,0 B)1,1,1 C)1,0,1 D)0,1,1 48、若运行以下程序时,输入2473↙,则程序的运行结果是。

main ( )

{ int c;

while ((c=getchar( )) ! =’\n’)

switch (c-‘2’) {

case 0 :

case 1 : putchar (c+4) ;

case 2 : putchar (c+4) ; break ;

case 3 : putchar (c+3) ;

default : putchar (c+2) ; break ;

}

printf(“\n”);

}

A)668977 B)668966 C)66778777 D)6688766

49、写出下面程序的运行结果。

main ( )

{ int a[6][6],i,j ;

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

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

a[i][j]=(i/j)*(j/i) ;

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

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

printf(“%2d”,a[i][j]) ;

printf(“\n”);

}

}

50、写出下面程序的运行结果。

main ( )

{ int i=0;

char a[ ]=”abm”, b[ ]=”aqid”, c[10];

while (a[i]!=’\0’ && b[i]!=’\0’) {

if (a[i]>=b[i]) c[i]=a[i]-32 ;

else c[i]=b[i]-32 ;

i++;

}

c[i]=’\0’;

puts(c);

}

51、当运行下面程序时,从键盘上输入AabD↙,则

写出下面程序的运行结果。

main ( )

{ char s[80];

int i=0;

gets(s);

while (s[i]!=’\0’) {

if (s[i]<=’z’ && s[i]>=’a’)

s[i]=’z’+’a’-s[i] ;

i++;

}

puts(s);

}

52、写出下面程序的运行结果。

main ( )

{ int i,c;

char s[2][5]={“8980”,”9198”};

for (i=3; i>=0 ; i--) {

c=s[0][i]+s[1][i]-2*’0’;

s[0][j] = c % 10 + ‘\0’ ;

}

for (i=0; i<=1; i++) puts(s[i]);

}

53、当运行下面程序时,从键盘上输入7 4 8 9 1 5↙,则写出下面程序的运行结果。

main ( )

{ int a[6],i,j,k,m;

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

scanf (“%d”,&a[i]);

for (i=5 ; i>=0; i--) {

k=a[5];

for (j=4; j>=0; j--)

a[j+1]=a[j] ;

a[0]=k;

for (m=0 ; m<6 ; m++)

printf(“%d ”,a[m]);

printf(“\n”);

}

}

50、以下程序的运行结果是。

#define MIN(x,y) (x)>(y) ? (x) : (y)

main ( )

{ int i=10, j=15 , k;

k = 10*MIN(i,j);

printf(“%d\n”,k);

}

A)10 B)15 C)100 D)150 51、若有定义#define MOD(x,y) x%y,则执行下面语句后的输出为。

int z,a=15;

float b=100;

z=MOD(b,a);

printf(“%d\n”,z++);

A)11 B)10 C)6 D)有语法错误

52、在任何情况下计算平方数都不会引起二义性的宏定义是。

A)#define POWER(x) x*x

B)#define POWER(x) (x)*(x)

C)#define POWER(x) (x*x)

D)#define POWER(x) ((x)*(x))

53、以下程序的运行结果是。

#define DOUBLE(r) r*r

main ( )

{ int x=1,y=2,t;

t = DOUBLE(x+y) ;

printf (“%d\n”,t);

}

A)5 B)6 C)7 D)8

54、以下程序的运行结果为。

#define A 4

#define B(x) A*x/2

main ( )

{ float c,a=4.5;

c = B(a) ;

printf(“%5.1f\n”,c);

}

A)6.0 B)7.0 C)8.0 D)9.0

55、写出下面程序的运行结果。

fun (char *s)

{ char *p=s;

while (*p) p++ ;

return (p-s) ;

}

main ( )

{ char *a=”abcdef” ;

printf(“%d\n”,fun(a)) ;

}

56、写出下面程序的运行结果。

sub(char *a,int t1,int t2)

{ char ch;

while (t1

ch = *(a+t1); *(a+t1)=*(a+t2) ;

*(a+t2)=ch ;

t1++ ; t2-- ;

}

}

main ( )

{ char s[12];

int i;

for (i=0; i<12 ; i++) s[i]=’A’+i+32 ;

sub(s,7,11);

for (i=0; i<12 ; i++) printf (“%c”,s[i]);

printf(“\n”);

}

57、当运行以下程序时,写出输入 6↙的程序运行结果。

sub(char *a,char b)

{ while (*(a++)!=’\0’) ;

while (*(a-1)

*(a--)=*(a-1);

*(a--)=b;

}

main ( )

{ char s[]=”97531”,c;

c = getchar ( ) ;

fun(s,c); puts(s) ;

}

四、程序填空题1、下列函数用来计算

x

y

, 其中y为整型

变量且y>=0.

Float power ( float x ,float y)

{ float z ;

for( z=1 ; y>0 ; y_________1 )

z=_________x ;

return z ;

}

2、下列程序的作用是求以下算式的,请求出X, Y , Z的值。

X Y Z

+ Y Z Z

5 3 2

main( )

{ int x ,y , z , I , result=532 ;

for( x=1 ;_______ ; x++ )

for( y=1 ; __________; y++)

for(z=_______;_________; z++)

{ I=( _____ )+(100*y+10*z+z) ;

if( I= =result)

printf(“x=%d, y=%d ,z=%d” ,x , y , z ) ;

}

}

3、下面的函数gcd( a, b)是计算两个整数a和b的最大公因子。

gcd( int num , int den )

{ int temp;

while ( den )

{ temp =__________;

num = den ;

den = temp ;

}

return (________) ;

}

4、下列程序的输出结果是16.00,请填(1)空使程序完整。

main ( )

{ int a=9,b=2;

float x=[1 ],y=1.1,z;

z=a/2+b*x/y+1/2;

printf(“%5.2f\n”,z);

}

5、下面程序的功能是:计算1到10之间奇数之和以及偶数之和,请填空:

main( )

{ int a,b,c,I;

a=c=0;

for (I=0;I<10;I+=2)

{ a+=I;

__________

c+=b;

}

printf(“偶数之和=%d\n”,a); printf(“奇数之和=%d\n”,c); }

6、下面程序按公式1005010

2

111

1

k k k

k k

k

===

++

∑∑∑求和并输出

结果,请填(3)空使程序完整。

main ( )

{

;

int k ;

for (k=1 ; k<=100 ; k++)

s+=k ;

for (k=1 ; k<=50 ; k++)

s+=k*k ;

for (k=1 ; k<=10 ; k++)

s+= ;

printf(“sum= ”,s);

}

7、下面程序对数组中的元素进行升序排序,请将程序补充完整:

main( )

{ int a[16]={2,1,3,6,8,2,9,1,5,3,56,3,5,5,7,8}, i, j, tem;

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

for(j=__________; j<16; j++)

if(____________)

{ tem=a[i ] ; ____________;a[ j ]=tem;} for(i=0;i<16;i++)

printf (%4d” , a[ i ]);

printf(“\n”);

}

8、下面程序可求出矩阵a的主对角线上的元素之

和,请填(2)空使程序完整。

main ( )

{ int a[3][3]={1,3,5,7,9,11,13,15,17} , sum=0, i, j ;

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

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

if ( )

sum=sum+ ;

printf(“sum=%d”,sum);

}

9、下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。

main ( )

{ int a[10],max,min,i,j,k ;

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

scanf(“%d”,&a[i]);

max=min=a[0];

for (i=0; i<10; i++) {

if (a[i]

{ min=a[i]; ; }

if (a[i]>max)

{max=a[i]; ; }

}

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

printf(“%d”,a[i]);

}

10、下面程序用“插入法”对数组a进行由小到大的排序,请填(3)空使程序完整。

经典算法提示:

简单插入排序算法的基本思想使将数组处理n-1次,第k次处理是将第k个元素插入到目前的位置。第k次的元素是这样插入的:在第k次处理时,前面的元素a[0],a[1],…,a[k-1]必定已排成了升序,将a[k]与a[k-1],a[k-2],…a[0]逐个比较(由后向前),若有a[j]

main ( )

{ int a[10]={191,3,6,4,11,7,25,13,89,10} ;

int i,j,k ;

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

k = a[i] ;

j = 【1 】;

while (j>=0 && k>a[j] ) {

【2 】;

j--;

}

【3 】=k ;

}

11、10.以下程序是将字符串b的内容连接字符数

组a的内容后面,形成新字符串a,请填(2)空使程序完整。

main ( )

{ char a[40]=”Great ”, b[ ]=”Wall”;

int i=0,j=0 ;

while (a[i]!=’\0’) i++ ;

while ( ) {

a[i]=b[j] ; i++ ; j++ ;

}

;

printf(“%s\n” , a );

}

12、avg函数的作用是计算数组array的平均值返

回,请填空使程序完整。

float avg(float array[10])

{ int i ;

float avgr , sum=0 ;

for (i=1; ; i++)

sum+= ;

avgr = sum / 10 ;

;

}

13、下面函数的功能是将两个字符串s1和s2连接起来,请填(3)空使程序完整。

void conj(char *s1,char *s2)

{ char *p=s1 ;

while (*s1) ;

while (*s2) { *s1= ;

s1++,s2++; }

*s1=’\0’ ;

;

}

14、以下程序的功能是将文件file1.c的内容输出

到屏幕上并复制到文件file2.c中,请填(3)空使程序完整。

#include

main ( )

{ FILE ;

fp1=fopen(“file1.c”,”r”);

fp2=fopen(“file2.c”,”w”);

while (!feof(fp1)) putchar(getc(fp1));

while (!feof(fp1)) putc( );

fclose(fp1); fclose(fp2) ;

} 15、以下程序的功能是用变量count统计文件中的

字符个数,请填(3)空使程序完整。

#include

main ( )

{ FILE fp; long count=0;

if ((fp=fopen(“letter.dat”, ))==NULL)

{ printf(“error!\n”); exit(0) ; }

while (!feof(fp))

{ ;;}

printf(“count=%ld\n”,count); fclose(fp);

}

五、程序设计题

1、编程序,计算下面分段函数的值:

y=

?

?

?

?

?

>=

-

<

<=

+

<

+

)

15

(

10

2

)

15

0(5

3

)0

(

10

x

x

x

x

x

x

2、编写程序,读入3个整数a,b,c,然后交换它们中的数,把a中原来的值给b,把b中的值给c,把c 中的值给a,分别输出交换之前与交换之后的a,b ,c 的数。

3、写一程序,输出以下图案:

4、编写一个函数求三个数的最大值,函数首部给定

如下:int max(int a,int b,int c)要求将给果返回. (只须给出max函数的定义,不需写出主函数).

5、编写程序,用scanf()函数建立一个4x4的数组

b,输出各列之和。

6、编写下一程序,输出以下图案:

7、编写一个程序,将用户输入的十进制整数转换成

十六进制数。

8、编写程序,把一个65---91之间的数据看成是字

符的ASCII码,输出对应的字符。(用Do循环语GGGGGGG

EEEEE

CCC

A

***

*****

句编写,且字符之间用空格分开)

9、输入一个英文句子,它仅包含单词与空格,试把其中的每一个单词的第一个字母设置为大写,其余字母设置为小写,输出结果。(用数组编程)

10、

11、

12、

13、

14、

15、

16、

17

18、

19、

20、

21、

第二部分参考答案

参考资料:[1]程朔鹰等人民邮电出版社《C语言程序设计习题集》

[1]程朔鹰等人民邮电出版社《C语言程序设计习题集》

[1]程朔鹰等人民邮电出版社《C语言程序设计习题集》

[1]程朔鹰等人民邮电出版社《C语言程序设计习题集》

[1]程朔鹰等人民邮电出版社《C语言程序设计习题集》

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

国家开放大学C语言程序设计A第一次形考任务及答案

一、选择题(共40分,每小题2分) 题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。 A. main B. MAIN C. name D. function 题目2 C语言源程序文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目3 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目4 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为()。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号

D. 空格或回车 题目5 每个C语言程序文件的编译错误被分为()。 A. 1类 B. 2类 C. 3类 D. 4类 题目6 不符合C语言规定的复合语句是()。 A. {} B. {;} C. {x=0;} D. {y=10} 题目7 C语言程序中的基本功能模块为()。 A. 表达式 B. 标识符 C. 语句 D. 函数 题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。 A. 表达式 B. 语句 C. 参数表

D. 函数体 题目9 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对()。 A. 尖括号 B. 双引号 C. 单引号 D. 花括号 题目10 在C语言程序中,多行注释语句使用的开始标记符为()。 A. // B. /* C. */ D. ** 题目11 在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对应输出的数据类型为()。 A. char B. int C. float D. double 题目12 在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为()。

C语言程序设计第11.12章测试答案

第一题、单项选择题(每题1分,5道题共5分) 1、设有定义“int a=3,b,*p=&a;”,则下列语句中,使b不为3的语句是: A、b=*&a; B、b=*p; C、b=a; D、b=*a; 2、在C语言中,关于文件存取方式,: A、只能顺序存取 B、只能随机存取(也称直接存取) C、可以顺序存取,也可以随机存取 D、只能从文件开头存取 3、fp 是文件指针,str 是一个字符串,n是一个整数,向文件中输出数据的正确格式是: A、fprintf("%s,%d\n",str,n,fp); B、fprintf(fp,"%s,%d\n",str,n); C、fprintf("fp %s,%d\n",str,n); D、fprintf("%s,%d fp\n",str,n); 4、若有int a=3,*pa; float f=4.5,*pf=&f;,则下列表述中,错误的是 ( )。 A、pa=&a B、pa=&f C、pf=&f D、*pf=a+f 5、若有int a[10],*p=a;,则( )。 A、p++可以使p指向下一个字节 B、p+=2 相当于p=sizeof(a)/10 C、p++可以使p指向下一个元素,即a[1]的首地址 D、p+=2可以使p指向下一个元素,即a[1]的首地址 第二题、多项选择题(每题2分,5道题共10分) 1、C语言中的文件分类是: A、文本文件和数据文件 B、文本文件和二进制文件 C、数据文件和二进制文件 D、顺序文件和随机文件 2、以读写方式打开一个二进制文件fil2,fopen函数的正确的调用方式是: A、FILE *FP; FP=fopen("fil2","r"); B、FILE *FP; FP=fopen("fil2","rb");

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

C语言程序设计入门经典例题

1、加法练习程序:由用户通过键盘输入加数和被加数,程序显示加法式子,用户通过键盘作答后,程序给出正确与错误提示信息。要求:利用C的选择语句if条件语句或switch 开关语句,键盘输入数据前,程序会出被输入数据的信息提示。 #include void main(){ int a,b,c; printf("please put an addend:\n");scanf("%d",&a); printf("please put an augend:\n");scanf("%d",&b); printf("please answer the question:a+b=?");scanf("%d",&c); if(a+b==c) printf("very good!"); else printf("wrong! "); } 个人感觉这个程序最不好的地方是,不管回答正确还是回答错误,程都会立即结束,所以我用了do…while实现一个回答错误之后获得再次回答机会的循环,则程序修改如下: #include void main(){ int a,b,c; printf("请输入一个加数:\n");scanf("%d",&a); printf("请输入一个被加数:\n");scanf("%d",&b); do { printf("请回答:a+b=");scanf("%d",&c); if(a+b!=c) printf("请再想一想\n"); } while(a+b==c) printf("回答正确!"); } 2、判闰年程序:判断某一年是否闰年? 要求:程序首先提示用户从键盘输入4位数年份,程序能显示“XXXX年是闰年”或“XXXX年不闰年”的输出信息。 算法:year 是闰年,即year能被4整除但不能被100整除,或 year 能被 400 整除。其对应的C逻辑表达式为:(year % 4 = = 0 && year % 100 != 0) || (year % 400 = = 0) 或: (!(year % 4) && year % 100) || !(year % 400 ) 程序中可设置1个变量leap来代表是否闰年的信息,闰年:leap=1; 不闰年:leap=0。 #include void main() int year; printf("请输入4位数年份:");scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0)//闰年就是能被4整除但不能被100整除及能被400整除的

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

《C语言程序设计》第10章在线测试

A B C D 、下列描述中,合法的数组定义是: A B C D 程序的执行是从 A B C D 、下列语句中,正确的语句定义是 A B C D int a[3][4]; A B C D

2、若形参是简单变量形式,则对应的实参可以是: A、常量 B、数组名 C、简单变量 D、数组元素 3、下列描述中,合法的数组定义是( )。 A、char a[]={“String”}; B、char a[5]={0,1,2,3,4};这组题特BT,答案明明是D,却ABCD全要选才算正确,让我测了N回! C、char a[]=“String”; D、char a[]={0,1,2,3,4,5}; 4、下列描述中,不能正确给字符数组str定义和赋值的是( )。 A、char str[]={"abcdefghijklmn "}; B、char str[10];str={" abcdefghijklmn "}; C、char str[10]={"abcdefghijklmn"}; D、char str[10];strcpy(str,"abcdefghijklmn"); 5、如果想使下列数组a中5个元素的值全部为0,可以写成( )。 A、int a[5]={0:5}; B、int a[5]={0}; C、int a[5]={5:0}; D、int a[5]={0,0,0,0,0}; E、int a[5]=0; 第三题、判断题(每题1分,5道题共5分) 1、若有func((v1,v2),(v3,v4,v5),v6)调用,说明函数func有6个形参。 正确错误 2、在说明一个结构体变量时系统分配给它的存储空间是该结构体中所有成员所需存储空间的总和。

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

C语言程序设计50例(经典收藏)

水仙花 #include void main() { int a,b,c,i; for( i=100;i<1000;i++) { a=i/100; b=i%100/10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) { printf("\n"); } } } 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有

的排列后再去掉不满足条件的排列。 2.程序源代码: #include "stdio.h" #include "conio.h" main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } getch(); } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按1 0%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码:

第10章C语言程序设计习题答案

C 语言程序设计( Visual C++6.0 环境)》习题答案 习题十 、思考题 1.简述公有类型成员与私有类型成员的区别。 公有(public) 类型成员不但可以被类的成员函数访问,而且可以被外界访问,所以说公有类型定义了类的外部接口。 私有(private) 类型成员只能被类的成员函数访问,外界不能直接访问它。类的数据成员一般都应该声明为私有成员。 2.简述构造函数与析构函数的作用。 构造函数的作用就是在对象在被创建时利用特定的值构造对象,将对象初始化。析构函数的作用与构造函数正好相反,它是用来在对象被删除前进行一些清理工作。析构函数调用之后,对象被撤消了,相应的内存空间也将被释放。 3.简述什么是友元函数。 友元函数是在类定义中由关键字friend 修饰的非成员函数。友元函数可以是一个普通函数,也可以其它类中的一个成员函数,它不是本类的成员函数,但它可以访问本类的私有成员和保护成员。 4.简述公有继承、私有继承和保护继承三种继承方式的区别。 ⑴、当类的继承方式为公有(public 继承)时,基类的公有(public )成员和保 护( protected )成员仍然成为派生类的公有成员和保护成员,而基类的私有成员不能被派生类访问。 ⑵、当类的继承方式为保护( protected )继承时,基类的公有(public )成员和 保护( protected )成员将成为派生类的保护成员,而基类的私有成员不能被派生类访问。 ⑶、当类的继承方式为私有(private )继承时,基类的公有(public )成员和保护(protected )成员将成为派生类的私有成员,而基类的私有成员不能被派生类访问。5.定义一个圆柱体类,其属性为圆柱体的底面半径和高,能计算出圆柱体的体积。 #include class cylinder { public: cylinder(float r,float h) { radius=r; height=h; } float Volume(); private: float radius; float height;

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

国家开放大学C语言程序设计A第一次形考任务与答案(20201127230652)

一、选择题(共40分,每小题2分) 1 题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()* A.main B. MAIN C. name D. function 题目2 1 C语言源程序文件的缺省扩展名为()。 A. cpp B. exe C. obj * D.c 题目3 1 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目4

程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为() A. 空格或逗号 B. 逗号或回车 C. 逗号或分号

* D.空格或回车 题目5 1 每个C语言程序文件的编译错误被分为()。 A. 1类 ” B.2 类 C. 3类 D. 4类 题目6 不符合C语言规定的复合语句是()。 A. {} B. {;} C. {x=0;} + D.{y=10} 题目7 1 C语言程序中的基本功能模块为()。 A. 表达式 B. 标识符 C. 语句 D. 函数 题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()

B. 语句 C. 参数表 D. 函数体 题目9 1 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用 的起止定界符为一对()。 A. 尖括号 * B.双引号 C. 单引号 D. 花括号 题目10 L 在C语言程序中,多行注释语句使用的开始标记符为()。 A. // + B./* C.*/ D ** 题目11 1 在printf()函数调用的格式字符串中,若使用格式符为“%C',则对应输出的数据类型为()。

第10章C语言程序设计习题答案

《C语言程序设计(Visual C++6.0环境)》习题答案 习题十 一、思考题 1.简述公有类型成员与私有类型成员的区别。 公有(public)类型成员不但可以被类的成员函数访问,而且可以被外界访问,所以说公有类型定义了类的外部接口。 私有(private)类型成员只能被类的成员函数访问,外界不能直接访问它。类的数据成员一般都应该声明为私有成员。 2.简述构造函数与析构函数的作用。 构造函数的作用就是在对象在被创建时利用特定的值构造对象,将对象初始化。析构函数的作用与构造函数正好相反,它是用来在对象被删除前进行一些清理工作。析构函数调用之后,对象被撤消了,相应的内存空间也将被释放。 3.简述什么是友元函数。 友元函数是在类定义中由关键字friend修饰的非成员函数。友元函数可以是一个普通函数,也可以其它类中的一个成员函数,它不是本类的成员函数,但它可以访问本类的私有成员和保护成员。 4.简述公有继承、私有继承和保护继承三种继承方式的区别。 ⑴、当类的继承方式为公有(public继承)时,基类的公有(public)成员和保 护(protected)成员仍然成为派生类的公有成员和保护成员,而基类的私有成员不能被派生类访问。 ⑵、当类的继承方式为保护(protected)继承时,基类的公有(public)成员和 保护(protected)成员将成为派生类的保护成员,而基类的私有成员不能被派生类访问。 ⑶、当类的继承方式为私有(private)继承时,基类的公有(public)成员和保 护(protected)成员将成为派生类的私有成员,而基类的私有成员不能被派生类访问。 5.定义一个圆柱体类,其属性为圆柱体的底面半径和高,能计算出圆柱体的体积。 #include class cylinder { public: cylinder(float r,float h) { radius=r; height=h; } float Volume(); private: float radius; float height;

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

C语言程序设计实习报告

手机通讯录管理系统一、设计题目的任务和内容 任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。 具体要求: ◆建立通讯录信息,信息包含、姓名、分类(1、办公类2、个人类3、商务类)、电话、 电子邮箱等; ◆将通讯录保存在文件中; ◆查看功能:可按1、办公类2、个人类3、商务类分类查询,当选中其中一类时,显示出 此类所有数据中的姓名和电话号码。 ◆增加功能:能录入新数据。当录入重复姓名和电话号码时,则提示数据录入重复并取消 录入;当通讯录中超过15条信息时,存储空间已满,不能录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 ◆修改功能:选中某个人的姓名是,可对此人的相应数据进行修改。 ◆删除功能:选中某个人的姓名是,可对此人的相应数据进行删除并自动调整后续条目编 号。 系统功能需求分析: 查询:查询通讯录记录 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 修改:修改通讯录记录

二、总体设计思路 本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。 系统功能模块图: 输入新信息:可输入新的数据。 添加:可以添加通讯录记录,依次输入姓名、电话号码、分类、电子邮箱后,会提示是否继续添加。 删除:输入姓名删除,输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可按1、办公类2、个人类3、商务类分类查询 修改:输入欲修改的那个人的名字后,再依次输入姓名、电话号码、分类、电子邮箱即可完成修改。 下面就是总的程序流程图:

c语言程序设计答案

第一章基础知识 一、填空 1. 每个C 程序都必须有且仅有一个________ 函数。 2. C 语言程序开发到执行通常要经过6 个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C 语言是由________组成的。 7. C 语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C 语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不

同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA) 、管理信息系统(MIS) 、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C 程序的执行均是由执行_________开始。15. 函数体即为包含在{ }内的部分。它分为________和为完成功能任务由若干个C 语句组成的执行部分。 16. C 语言程序中一条简单语句是以________字符作为结束符的。 17. C 语言是结构化、________的程序设计语言。

C语言程序设计第一次月考试题

C语言程序设计第一次月考试题(2011.9) 班级:姓名:总分: 一、选择题(每小题3分,共60分) 1.一个C语言程序是由() A)一个主程序和若干子程序组成B)函数 C)若干过程组成D)若干子程序组成 2.下面4个选项中,均是C语言关键字的选项是() A)auto enum include B)switch typedef continue C)singed union scanf D)if struct type 3. 下面4个选项中,均是不合法的用户标识符的选项是() A)A P_0 do B)float 1a0 -A C) b—a goto int D) _123 temp INT 4.下面4个选项中,均是不合法的整形常量的选项是() A)- - 0f1 - oxfff 0011 B)- oxcdf 017 12,456 C) – 018 999 5e2 D)-0x48eg -068 03f 5. 下面4个选项中,均是不合法的浮点数的选项是() A)160.0.12 e3 B)123 2e4.2 .e5 C)-.18 123e4 0.0 D)-e3 .234 1e3 6.下面4个选项中,均是不合法的转义字符的选项是() A)‘\‖‘?\\‘?\xf‘B)‘\1011‘?\‘?\a‘ C) ?\011‘?\f‘?\}‘D)‘\abc‘?\101‘?x1f‘ 7.下面不正确的字符串常量是() A)‘abc‘B)‖12‘12‖C) ‖0‖D)‖‖ 8.Int k=7, x=12; 则以下能使值为3的表达式是() A)x%=(k%=5) B)x%=(k- k%5) C) x%=k-k%5 D)(x%=k) – (k%=5) 9.若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值 是() A) 4 B)16 C)32 D)52 10.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( ) A) 7 B) 8 C)6 D)2 11.已知各变量的类型说明如下: Int k, a, b; unsigned long w=5; double x=1.42; 则以下不正确的表达式是() A) x%(-3) B)w+=-2 C) k=(a=2,b=3, a+b) D)a+=a-=(b=4)*(a=3) 12.已知字母A的ASCII码为65,且定义c2为字符型变量,则执行语句c2=‘A‘+‘6‘-?3‘;后;c2中的值为() A) D B) 68 C)不确定的值D) C

C语言程序设计试题及答案解析[1]全解

C语言程序设计试题 第1、2、3章概述、类型、表达式 一、选择题 1、一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:() A、任意 B、第一个函数必须是主函数,其他函数任意 C、必须完全按照执行的顺序排列 D、其他函数可以任意,主函数必须在最后 2、下列四个叙述中,正确的是:() A、C程序中的所有字母都必须小写 B、C程序中的关键字必须小写,其他标示符不区分大小写 C、C程序中的所有字母都不区分大小写 D、C语言中的所有关键字必须小写 3、下列四个叙述中,错误的是:() A、一个C源程序必须有且只能有一个主函数 B、一个C源程序可以有多个函数 C、在C源程序中注释说明必须位于语句之后 D、C源程序的基本结构是函数 4、下面不是C语言合法标识符的是:() A、abc B、5n C、_4m D、x3 5、以下叙述不正确的是:() A. 分号是C语句的必要组成部分 B. C程序的注释可以写在语句的后面 C. 函数是C程序的基本单位 D. 主函数的名字不一定非用main来表示 6、C语言中允许的基本数据类型包括:() A. 整型、实型、逻辑型 B. 整型、实型、字符型 C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型 7、C语言中能用八进制表示的数据类型为:() A、字符型、整型 B、整形、实型 C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型 8、下列属于C语言合法的字符常数是:() A、’\97’ B、”A” C、’\t’ D、”\0” 9、在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:() A、char

《C语言程序设计》第10章

《C语言程序设计》第10章在线测试 A B D C 函数体 A B C D int a[][3] A B C D int a[3][4]; A B C D int a[][3]的第1维的长度为 A B C D

D、printf("%s",c[3].name[2]); 2、下列描述中,合法的数组定义是: A、char a[5]={’A’,’B’,’C’,’D’,’E’}; B、char a[]={’A’,’B’,’C’,’D’,’E’}; C、char a[]="ABCDE"; D、char a[]={65,66,67,68,69,70}; 3、若形参是简单变量形式,则对应的实参可以是: A、常量 B、数组名 C、简单变量 D、数组元素 4、下列关于对二维数组a进行初始化的操作中,正确的写法是( )。 A、int a[][3]={3,2,1,1,2,3}; B、int a[][]={{3,2,1},{1,2,3}}; C、int a[][3]={{3,2,1},{1,2,3}}; D、int a[2][3]={{3,2,1},{1,2,3}}; 5、在定义int a[2][3];之后,对数组a的引用错误的是( )。 A、a(1,2) B、a[1,3] C、a[2][0] D、a[1>2][!1] 第三题、判断题(每题1分,5道题共5分) 1、在说明一个结构体变量时系统分配给它的存储空间是该结构体中所有成员所需存储空间的总和。 正确错误 2、数组必须先定义后使用。

正确错误、可以在定义数组时对数组元素赋予初值。 正确错误、可以在定义数组时只给一部分数组元素赋值。 正确错误、对数组元素赋予的初值可以依次放在一对圆括号内。 正确错误

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

相关主题
文本预览
相关文档 最新文档