当前位置:文档之家› C语言 已修改 附答案

C语言 已修改 附答案

C语言 已修改 附答案
C语言 已修改 附答案

第一章C语言基础知识

一、选择题

1.C语言规定,必须用 C 作为主函数名。

A)Function B)include C)main

D)stdio

2.一个C程序可以包含任意多个不同名的函数,但有且仅有一个 B ,一个C程序总是从开始执行。

A)过程B) 主函数C)函数D)include

3. A 是C程序的基本构成单位。

A)函数B) 函数和过程C) 超文本过程D) 子程序

4.下列说法正确的是 D 。

A)main函数必须放在C程序的开头

B)main函数必须放在C程序的最后

C)main函数可以放在C程序的中间部分,但

在执行C程序时是从程序开头执行的

D)main函数可以放在C程序的中间部分,但

在执行C程序时是从main函数开始的5.在C语言中,每个语句和数据定义是用结束。C

A)句号B)逗号C)分号D)括号

6.以下说法正确的是 C 。

A)C语言程序总是从第一个定义的函数开始

执行

B)在C语言程序中,要调用的函数必须在

main()函数中定义

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

D)C语言程序中的main()函数必须放在程序

的开始部分

7. B 不是C语言提供的合法关键字。

A)switch B)print C)case D)default

8. 一个C语言程序是由 B 。

A)一个主程序和若干个子程序组成;

B)函数组成, 并且每一个C程序必须且只能由

一个主函数;

C)若干过程组成;

D)若干子程序组成.

二、填空题

1.一个C程序至少包含一个主函数,即main函数。

2.一个函数由两部分组成,它们是说明部分和函数体。

3.函数体的范围是最外层的一对大括弧内地部分。

4.函数体一般包括变量定义和执行部分。

5.C语言是通过输入和输出函数来进行输入输出的。

6.在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个函数。

7.主函数名后面的一对圆括号中间可以为空,

但一对圆括号不能小写。

第二章C语言程序设计的初步知识

一、选择题

1.在C 语言中,下列类型属于基本类型的是C 。

A)整型、实型、字符型B)空类型、枚举型

C)结构体类型、实型D)数组类型、实型

2.下列字符串属于标识符的是 A 。

A)INT B)5_student C)2ong

D)!DF

3.下列字符串属于标识符的是 A 。

A)_WL B)3_3333 C)int

D)LINE 3

4.下列字符串不属于标识符的是 D 。

A)_above B)all C)_end D)# dfg

5.在C语言中,回车换行符是 A 。

A)\n B)\t C)\v

D)\b

6.在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII码 A 。

A)大32 B)大64 C)小32

D)小64

7.设d为字符变量,下列表达式不正确的是C 。

A)d=97 B)d=’a’C)d=?a?

D)d=’g’

8.如果i=3,则k=(++i)+(++i)+(i++)执行过后k

的值为 A ,i的值为。

A)15,6 B)12,5 C)18,6 D)15,5

9.如果int i=3,则printf(?%d?,-i++)的结果为A ,i的值为。

A)-3,4 B)-4,4 C)-4,3 D)-3,3

10.如果int i=3,int j=4,则k=i+++j执行之后k,i和j的值分别为 C 。

A)7,3,4 B)8,3,5 C)7,4,4 D)8,4,5

11.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为 B 。

main()

{char x,y;

x=’0’;y=’9’;

printf(?%d,%d\n?,x,y);

}

A)因输出格式不合法,输出错误信息

B)48,57

C)0,9

D)48,58

12.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为 C 。

main()

{char c=’A’;int i=10;

c=c+10;

i=c%i;

printf(?%c,%d\n?,c,i);

}

A)75,7 B)75,5

C)K,5 D)因存在非图形字符,无法直接显示出来

13.C语言中最简单的数据类型包括 B 。

A)整型,实型,逻辑型B)整型,实型,字符型

C)整型,字符型,逻辑型D)整型,实型,逻辑型,字符型

14.下面程序的输出结果是 A 。

main()

{int x;

x=-3+4*5-6;printf(?%d?,x);

x=3+4%5-6; printf(?%d?,x);

x=-3*4%-6/5; printf(?%d?,x);

x=(7+6)%5/2; printf(?%d?,x);

}

A)11 1 0 1 B)11 –3 2 1

C)12 –3 2 1 D)11 1 2 1

15.下面程序的输出结果是 B 。

mian()

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

x*=3+2; printf(?%d?,x);

x*=y=z=4; printf(?%d?,x);

}

A)8 40 B)10 40

C)10,4 D)8,4

16.下面程序的输出结果是 A 。

main()

{int i,j;

i=16;j=(i++)+i;printf(?%d?,j);

i=15;printf(?%d %d?,++i,i);

}

A)32 16 15 B)33 15 15

C)34 15 16 D)34 16 15

17.表达式(int)2.1416的值为 A 。

A)2 B)2.1 C)0

D)3

18.表达式(double)(20/3)的值为 B 。

A)6 B)6.0 C)2

D)3

19. 若有以下定义, 则正确的赋值语句为

A 。

int a, b ;

float x;

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

C)a=b=5 D)b= int (x) ;

20. .C语言规定标识符由 A 等字符组成.

A)字母数字下划线B)中划线字母数字

C)字母数字逗号D)字母下划线中划线

21. 若有如下定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式:

(float)(a+b)/2+(int)x%(int)y的值是B 。

A)2.500000 B)3.500000 C)4.500000 D)5.000000

22. 有如下语句:

printf(?%s,%5.3s\n?,?COMPUTER?,

?COMPUTER?);执行语句后的最终结果为 B 。

A)COMPUTER ,CMP . B)COMPUTER, CMP.

C)COMPU, CMP. D)COMPU, CMP

23.已知ch是字符型变量,下面不正确的赋值语句是: B 。

A)ch=‘\0’B)ch=‘a+b’

C)ch=‘7’+‘9’D)ch=7+9

24.若x和y都为float型变量,且x=3.6, y=5.8 执行下列语句后输出结果为: B 。

printf(?%f?,(x,y));

A)3.600000 B)5.800000

C)3.600000,5.800000 D)输出符号不够,输出不正确值

25.设变量a是整型,变量f是实型,变量I是双精度型,则表达式10 + ‘a’+I * f 值的数据类型:C 。

A)int B)float C)double D)不确定

26. 已知字母A的ASCII码为十进制65,下面程序段的运行结果为: A 。

char ch1,ch2;

ch1= ‘A’+5-3; ch2= ‘A’+6-3;

printf(?%d, %c\n?, ch1,ch2);

A)67, D B)B, C C)C,

D D)不确定值

二、填空题

1.C语言的数据类型有四大类,分别是基本类型构造类型指针类型空类型

2.C语言数据类型中构造类型包括三种,他们是、、。数组类型结构体类型共用体类型

3.C语言基本数据类型包括整型字符型实型枚举类型。

4.在C语言中,程序运行期间,其值不能被改变的量叫常量。

5.在C语言中,常量有不同的类型,包括、、和等。整型常量实型常量字符常量字符串常量

6.在C语言中,在习惯上符号常量名用,变量用。(大写或小写) 大写小写

7.在C语言中,标识符只能由、和三种字符组成,且第一个字符必须或。字母数字下划线字母下划线

8.可以用来表示C的整常数的进制是、、。十进制十六进制八进制

9.在C语言中,实数有两种表现形式,是和。十进制数形式指数形式

10.C的字符常量是用单引号括起来的一个字符。

11.在一个变量定义语句中可以同时定义多个变量,变量之间用逗号隔开。

12.C语言中规定,在变量定义的同时也可以给变量赋初值,叫做变量初始化。

13.下面的程序

mian()

{printf("abc\tde\rfg\n");/*空白处分别为两个和一个空格*/

printf("h\ti\b\bjk"); /*空白处为三个空格*/

}

运行结果是fgab c de 。

14.在C语言中,字符型数据和整型数据之间可以通用,一个字符数据既能输出,也可以输出。字符形式整数形式

15.下面的程序

main()

{char c1,c2;

c1='a';c2='b';

c1=c1-32;c2=c2-32;

printf("%c %c",c1,c2);

}

运行结果为AB 。

16.在ASCⅡ代码表中可以看到每一个小写字母比相应的大写字母的ASCⅡ代码大32 。

17.在C 语言中,系统在每一个字符串的结尾自动加一个?字符串结束标志符?即’\0’,以便系统据此数据判断字符串是否结束。

18.在C语言中,算术运算符的结合性是左结合。

19.下面的程序

mian()

{float x;int i;

x=3.6;i=(int)x;

printf("x=%f,i=%d",x,i);

}

运行结果为。x=3.600000,i=3

20.如果int i=3,则printf("%d",-i++)执行后输出是,i的结果是。-3,4

21.表达式x=(a=3,6*3)和表达式x=a=3,6*a分别是表达式和表达式,两个表达式执行完的结果是和.执行后X的值分别是, . 赋值逗号18 18 18 3 22.main()

{int i,j,m,n;

i=8;j=10;

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

printf("%d,%d,%d,%d",i,j,m,n);

}

运行后i,j,m,n的值是. 9,11,9,10

23.在C语言中,可以利用,将一个表达式的值转换成指定的类型。强制类型转换

第三章顺序结构程序设计

一、选择题

1.C语言中调用printf进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将 A ;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。

A)不予输出B)输出空格

C)照样输出D)输出不定值或0

2.在scanf函数的格式控制中,格式说明的类型与输入的类型应该一一对应匹配。如果类型不匹配,系统 B 。

A)不予接收

B)并不给出出错信息,但不可能得出正确信息数据

C)能接受正确输入

D)给出出错信息,不予接收输入

3.以下程序的输出结果是 A 。

main()

{

int i=010,j=10,k=0x10;

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

A)8,10,16 B)8,10,10 C)10,10,10

D)10,10,16

4.设有如下定义

int x=10,y=5,z;

则语句

printf("%d\n",z=(x+=y,x/y));

的输出结果是 D 。

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

5.以下程序的输出结果是 D 。

main()

{int x=10,y=10;

printf("%d %d\n",x--,--y);

}

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

则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是。

A)scanf("x=%dy=%d",&x,&y);a=getchar();b=getchar();c=g etchar();

B)scanf("%dy%d",&x,&y);a=getchar();b=getchar();c=getcha r();

C)scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,& c,&c);

D)scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);

6.若已知a=10,b=20,则表达式!a

C 。

A)10 B)20 C)1

D)0

7.printf函数中用到格式符"%4s",其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为 C 。

A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出

C)右对齐输出该字符,左补空格D)输出错误信息

8. 以下程序的输出结果是:(注:▂表示空格)

D 。

main( )

{ printf(?\n*s1=%8s*?, ?china?);

printf(?\n*s2=%-5s*?, ?chi?) ; }

A)*s1=china▂▂▂* B)*s1=china▂▂▂*

*s2=chi*

*s2=chi▂▂*

C)*s1=▂▂▂china* D)*s1=▂▂▂china*

*s2=▂▂chi * *s2=chi▂▂*

二.填空题

1.putchar函数的作用是。向终端输出一个字符

2.printf函数的?格式控制?包括两部分,他们是和。格式说明普通字符

3.对不同类型的语句有不同的格式字符。例如:格式字符是用来输出十进制整数,格式字符是用来输出一个字符,格式字符是用来输出一个字符串。d,c,s

4.如果要输出字符?&?,则应该在?格式控制?字符串中用表示。连续两个%

5.getchar函数的作用是。从终端输入一个字符

6.符号?&?是运算符,&a是指。地址a在内存中的地址

7.scanf函数中的?格式控制?后面应当是,而不是。变量地址变量名

8.C语言中的空语句就是。一个分号

9.复合语句是由一对括起来的若干语句组成。花括弧

10.下列程序的输出结果是。65 A

#include

main()

{char a;

a='A';

printf("%d%c",a,a);

}

三、编程题

1.从键盘上输入一个大写字母,要求改用小写字母输出。

#include

main()

{

char c1,c2;

c1=getchar();

printf("%c,%d\n",c1,c1);

c2=c1+32;

printf("%c,%d\n",c2,c2);

}

2.编写程序,求方程ax2+bx+c=0的解x。

#include

#include

main( )

{float a,b,c,disc,x1,x2,realpart,imagpart;

scanf(?%f%f%f?,&a,&b,&c);

printf(?the equation?);

if(fabs(a)<=1e-6)

printf(?is not quadratic?);

else disc=b*b-4*a*c;

if(fabs(disc) <=1e-6)

printf(?has two equal roots:%8.4f\n?,-b/(2*a));

else if (disc>1e-6)

{x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

printf(?has distincr real roots: %8.4f\n?,x1,x2);

}

else

{realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a);

printf(?has complex roots:\n?);

printf(?%8.4f+%8.4fi\n?,realpart,imagpart);

printf(?%8.4f-%8.4fi\n?,realpart,imagpart);

}

}

第四章选择结构程序设计

一、选择题

1.以下关于运算符优先级的描述中,正确的是A 。

A)!(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算

B)&&(逻辑与)>算术运算>关系运算>赋值运算

C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算

D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或)

2.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是 B 。

A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)

B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)

C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)

D)(x<=-10)||(x>=-5)&&(x<=0)||

(x>=100)

3.以下程序的运行结果是 B 。

main( )

{

int c,x,y;

x=1;

y=1;

c=0;

c=x++||y++;

printf(?\n%d%d%d\n?,x,y,c);

}

A)110 B)211 C)011 D)001

4.判断字符型变量ch为大写字母的表达式是C 。

A)’A’<=ch<=’Z’B)(ch>=’A’)&(ch<=’Z’)

C)(ch>=’A’)&&(ch<=’Z’)D)(ch>=’A’)AND(ch<=’Z’)

5.以下if语句书写正确的是 B 。

A)if(x=0;)B)if(x>0)printf(?%f?,x); {x=x+1; printf(?%f?,x);}

else printf(?%f?,-x); else printf(?%f?,-x);

C)if(x>0);D)if(x>0)

{x=x+1; printf(?%f?,x);} {x=x+1; printf(?%f?,x) }

else printf(?%f?,-x); else printf(?%f?,-x);

6.两次运行下面的程序,如果从键盘上分别输

入6和4,则输出结果是 A 。

main( )

{ int x;

scanf(?%d?,&x);

if(x++>5) printf(?%d?,x);

else printf(?%d\n?,x--);

}

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

7.写出下面程序的执行结果 D 。

main( )

{int x,y=1;

if(y!=0) x=5;

printf(?%d\t?,x);

if(y= =0) x=3;

else x=5;

printf(?%d\t\n?,x);

}

A)1 3 B)1 5 C)5 3 D)5 5

8.假定所有变量均已正确说明,下列程序段运行后x的值是 B 。

a=b=c=0;x=35;

if(!a) x=-1;

else if(b);

if(c) x=3;

else x=4;

A)34 B)4 C)35 D)3

9. 能正确表示a>=10或a<=0的关系表达式是

D 。

A)a>=10 or a<=0 B)a>=10 | a<=0

C)a>=10 && a<=0 D)a>=10 | | a<=0

10. 当a = 1, b = 3 , c = 5, d = 4 时, 执行完下面程序段后x 的值为 B 。

if ( a < b )

if ( c < d ) x = 1 ;

else

if ( a < c )

if ( b < d ) x =2 ;

else x = 3 ;

else x = 6 ;

else x = 7 ;

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

11. 能表示整数x符合下面两个条件的语句是AA 。(1)?能被4整除,但不能被100整除?.(2)能被4整除,又能被400整除.

A)(x%4==0&&x%100!=0)||x%400==0

B)(x%4==0||x%100!=0)&&x%400==0

C)(x%4==0&&x%400!=0)||x%100==0

D)(x%100==0||x%4!=0)&&x%400==0

12.设有如下定义:char ch=’z’,则执行下面语句后变量ch是值为: D 。

ch=(‘A’<=ch&&ch<=‘Z’)?(ch+32):ch

A)A B)a C)Z D)z

13. 已知int x=30,y=50,z=80;以下语句执行后变

量x、y、z的值分别为: A 。

if (x>y||xz)

z=x; x=y; y=z;

A)x=50, y=80, z=80 B)x=50, y=30, z=30

C)x=30, y=50, z=80 D)x=80, y=30, z=50

14. 以下程序的输出结果是 B 。

main( ) {int x=2,y=-1,z=2;

if (x

printf(?%d\n?,z); }

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

15.在C语言中,多分支选择结构语句为:

switch(c)

{ case 常量表达式1:语句1;

……

case 常量表达式n-1:语句n-1;

default 语句n;}

其中括号内表达式c的类型: C 。

A)可以是任意类型B)只能为整型

C)可以是整型或字符型D)可以为整型或实型

16.下面程序的输出结果是 A 。

main()

{int x,y,z;

x=y=1;

z=x++-1;

printf(?%d,%d\t?,x,z);

z+=-x+++(++y||++z);

printf(%d,%d?,x,z);

}

A)2,0 3,-1 B)2,1 3,0

C)2,0 2,1 D)2,1 0,1

二、填空题

1.在C语言中,对于if语句,else子句与if子句的配对约定是。else与它前面最近的一个if配对

2.设有程序片段如下:

switch(class)

{case 'A':printf("GREAT!\n");

case 'B':printf("GOOD!\n");

case 'C':printf("OK! \n");

case 'D':printf("NO!\n");

default:printf("ERROR!\n");

}

若class的值为'C',则输出结果是。OK!

NO!

ERROR!

3.根据以下if语句写出与其功能相同的switch 语句(x的值在0~100之间)。

if语句:

if(x<60) m=1;

else if(x<70) m=2;

else if(x<80) m=3;

else if(x<90) m=4;

else if(x<100) m=5; switch语句:

switch((1))

{

(2)m=1;break;

case 6:m=2;break;

case 7:m=3;break;

case 8:m=4;break;

(3)m=5;

}

(1)x/10

(2)case 0: case 1: case 2: case 3: case 4: case 5:

(3)case 9:

4.输入一个字符,如果是大写字母,则把其变成小写字母;如果是小写字母,则变成大写字母;其它字符不变。请在()内填入缺省的内容。

main( )

{ char ch;

scanf(?%c?,&ch);

if (___(1)____) ch=ch+32;

else if(ch>=’a’&&ch<=‘z’) (__(2)___);

printf(?%c\n?,ch); }

ch>=’A’&& c<=’Z’ch=ch-32

三、编程题

1.编写程序,判断某一年是否是闰年。

#i nclude

void main()

{

int n;

printf("输入年份:");

scanf("%d",&n);

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

printf("闰年\n");

else printf ("不是闰年\n");

}

2.编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为‘A’;80~89分为‘B’;70~79分为‘C’;60~69分为‘D’;60分以下为‘E’。

main()

{float score;

scanf(?%f?,&score);

if(score>=90) printf(?A?);

else if(score>=80) printf(?B?);

else if(score>=70) printf(?C?);

else if(score>=60) printf(?D?);

else printf(?E?);

}

第五章循环结构程序设计

一、选择题

1.在do-while循环中,循环由do开始,用while 结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。C

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

2.for语句中的表达式可以部分或全部省略,但两个 C 不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。

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

3.程序段如下

int k=-20;

while(k=0) k=k+1;

则以下说法中正确的是 C 。

A)while循环执行20次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次

4.以下for循环是 D 。

for(a=0,b=0;(b!=123)&&(a<=4);a++)

A)无限循环B)循环次数不定C)执行4次D)执行5次

5.以下程序的输出结果 A 。

main()

{

int x=3;

do

{printf("%3d",x-=2);

}while(--x);

}

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

6.以下程序的输出结果是 A 。

main()

{int i;

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

{if(i%2)printf("#");

else continue;

printf("*");

}

printf("$\n");

}

A)*#*#*#$ B)#*#*#*$

C)*#*#$ D)#*#*$

7.以下程序的输出结果是 A 。

main()

{int a=0,i;

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

{swich(i)

{case 0:

case 3:a+=2;

case 1:

case2:a+=3;

default:a+=5;

}

}

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

}

A)31 B)13 C)10 D)20

8.若i,j已定义为int型,则以下程序段中循环体的总的执行次数是 A 。

for(i=5;i;i--)

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

{ }

A)20 B)24

C)25 D)30

9. 循环语句中的for语句,其一般形式如下:for(表达式1;表达式2;表达式3) 语句

其中表示循环条件的是 B 。

A)表达式1 B)表达式2 C)表达式3 D)语句

10.下面程序段的运行结果是: D 。

x=y=0; while(x<15) y++, x+=++y;

printf(?%d, %d?, y, x);

A)20, 7 B)6, 12

C)20, 8 D)8, 20

11.以下程序的运行结果是: A 。

main( )

{ int n=4;

while(n--)

printf (?%2d?,--n);}

A)2 0 B)3 1

C)3 2 1 D)2 1 0

*

二、填空题

1.while语句的特点是,do-while语句的特点是。

(1)先判断条件是否成立(为真),若成立(为真)再执行循环语句

(2)先执行循环语句,再判断条件是否成立(为真),若成立则继续执行循环,若不成立,

则结束循环。do-while至少执行一次循环

语句

2.将for(表达式1;表达式2;表达式3)语句改写为while语句是。

表达式1;

while(表达式2)

表达式3;

3.continue语句的作用是,即跳过循环体

中下面尚未执行的语句,接着进行下一次是否执

行循环的判定。结束本次循环执行

4.在循环中,continue语句与break语句的区别是:continue语句只是,break

语句是。

(1)结束本次循环,后进行循环的条件判定,即不终止整个循环的执行过程

(2)终止整个循环的执行,不再进行条件判定

5.while语句的特点是,do_while语句的特点是。先判断表达式,后执行语句;先执行语句,后判断表达式

6.把for(表达式1;表达式2;表达式3);改写为等价的while语句为。

表达式1;

while(表达式2)

{语句;

表达式3;

}

四、读程序写结果题

1.下面程序的输出结果是 3 。

main()

{int s,i;

for(s=0,i=1;i<3;i++,s+=i);

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

}

2.下面程序的输出结果是47 。

main()

{int i=10,j=0;

do

{j=j+i;i--;

while(i>2);

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

}

3.下面程序的输出结果是S=6 。

main()

{int s=0,k;

for(k=5;k>=0;k--)

{swich(k)

{case 1:

case 5:s++;break;

case 3:

case 4:break;

case 0:

case 2:s+=2;break;

}

}

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

}

五、编程题

1.编写程序,求两个整数的最大公约数和最小公倍数。

#i nclude

void main()

{

int hcf(int,int);

int lcd(int,int,int);

int u,v,h,l;

printf("Please input two numbers:\n");

scanf("%d,%d",&u,&v);

h=hcf(u,v);

printf("H.C.F=%d\n",h);

l=lcd(u,v,h);

printf("L.C.D=%d\n",l);

}

int hcf(int u,int v)

{

int t,r;

if(v>u)

{t=u;u=v;v=t;}

while((r=u%v)!=0)

{u=v;v=r;}

return(v);

}

int lcd(int u,int v,int h)

{

return(u*v/h);

}

2.编写一程序,求1-3+5-7+.........-99+101的值。

#include

mian( )

{int k,sum=0,sign=1;

for(k=1;k<=101;k+=2)

{sum+=k*sign;

sign*=-1;

}

printf(?\nsum=%d?,sum);

}

3.编写程序,计算1!+2!+3!+.......+n!的值,其中n的值由用户输入。

#include

main ( )

{int k,l,n;/*定义k,l,n代表什么?请讲解*/

double sum=0,fact_k=1;/*fact-k=1,又表示什么?请讲解*/ printf("Please Input n:");

scanf("%d",&n);

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

{fact_k=1;

for(l=1;l<=k;l++)/*两个for 循环分别表是什么?请讲解*/

fact_k*=l;/*这个又表示什么?*/

sum+=fact_k;

}

printf("sum=%.2lf",sum);

}

第六章数组

一、选择题

1.在C语言中,引用数组元素时,其数组下标的数据类型允许是 B 。

A)整型常量B)整型常量或整型表达式

C)整型表达式D)任何类型的表达式

2.不是给数组的第一个元素赋值的语句是

D 。

A)int a[2]={1};

B) int a[2]={1*2};

C)int a[2];scanf (?%d?,a); D)a[1]=1;

3.下面程序的运行结果是 C 。

main()

{int a[6],i;

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

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

printf("%2d",a[i]);

}

}

A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4

3 D)-

4 0 4 4 0

4.设有char str[10],下列语句正确的是D 。

A) scanf("%s",&str); B) printf("%c",str);

C) printf("%s",str[0]); D) printf("%s",str);

5.假设array是一个有10个元素的整型数组,则下列写法中正确的是 A 。

A) array[0]=10 B)

array=0

C) array[10]=0 D) array[-1]=0

6. 若有以下定义:

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

char b= ‘a’, c, d, e;

则下面表达式中数值为2的是 A 。

A)a [3] B)a [e –c] C)a [d-b] D)a [ e-b ]

7.下面几个字符串处理表达式中能用来把字符串str2连接到字符串str1后的一个是: A 。

A)strcat(str1,str2) ; B)strcat(str2,str1);

C)strcpy(str1,str2) ; D)strcmp(str1,str2);

8.设有两字符串?Beijing?、?China?分别存放在字符数组str1[10],str2[10]中,下面语句中能把?China?连接到?Beijing?之后的为: C 。

A)strcpy(str1,str2); B)strcpy(str1, ?China?);

C)strcat(str1,?China?);D)strcat(?Beijing?,str2);

9.若有如下定义:

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

则下列语句的输出结果是: A 。

for (i=0;i<=2;i++) printf(?%d?,a[i][2-i]);

A)3 5 7 B)3 6 9

C)1 5 9 D)1 4 7

10. 下面程序的运行结果是 D 。

char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};

printf(?%s?,c); }

A)‘a’‘b’B)ab\0c\0

C)ab c D)ab

11. 有字符数组a[80]和b[80],则正确的输出语句

是 D 。

A)puts (a,b); B)printf(?%s,%s?,a[],b[]);

C)putchar(a,b); D)puts(a),puts(b);

12.若有如下定义和语句:

char s[12]= ?a book!?;

printf(?%d?,strlen(s) );

则输出结果是: C 。

A)12 B)10 C)7 D)6 二、填空题

1.对于一维数组的定义?类型说明符数组名[常量表达式]?,其中常量表达式可以包括和,不能包含。常量符号常量变量

2.在定义数组时对数组元素赋以初值,需要在数组的类型说明符前加关键字。static 3.如果要使一个内部数组在定义时每个元素初始化值为0,但不进行逐个赋值,将其说明成

存储类型即可。静态(static)4.定义变量时,如果对数组元素全部赋初值,则数组长度。可以指定

5.对与数组a[m][n]来说,使用数组的某个元素时,行下标的最大值是,列下标的最大值是。m-1,n-1

6.在C语言中,数组的首地址是。数组的名称

三、程序填空题

1. 打印以下杨辉三角形.(要求打印出10行) main( )

{ int a[10][10],i, j ; 1

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

{__(1)___ ___(2)___ } 1 2 1

for( i=2; i<10; i++ ) 1 3 3 1

for(j=1; j

a[i][j] =___(3)___; ………for(i=0; i<10; i++)

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

printf(?%5d?,a[i][j]);

printf(?\n?);}

}

(1)a[i][0]=1;

(2)a[i][i]=1

(3)a[i-1][j]+a[i-1][j-1]

2. 用起泡法对十个数由大到小排序。

main( )

{ int a[11], i, j, t;

printf(?input 10 numbers: \n?);

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

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

printf(?\n?);

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

for(i=1; _(1)__; i++)

if (__(2)___)

{___(3)___ a[i]=a[i+1]; __(4)__ } printf(?the sorted numbers: \n?);

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

printf(?%d?,a[i]);

}

(1)i<=10-j

(2)a[i]>a[i+1]

(3)t=a[i];

(4)a[i+1]=t;

四、读程序写结果题

1. 下列程序的运行结果是。

main( )

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

int i, j;

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

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

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

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

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

printf( ?%5d?,b[i][j] );

printf( ?\n?); }

}

1 5 9

2 6 10

3 7 11

4 8 12

2.下面程序的运行结果是:。main( )

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

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

{ a[i][0] =1; a[i][i] =1; }

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

for(j=1; j

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

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

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

printf(?%5d?,a[i][j]);

printf(?\n?);}

}

*****

*

*

*

*

五、编程题

1.用起泡法对10个数排序。

main( )

{ int i,j,m,a[11];

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

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

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

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

if(a[j]>a[j+1])

{ m=a[j];

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

a[j+1]=m; }

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

printf(?%d ?,a[i]);}

2.编一程序,从键盘输入10个整数并保存到数组,求出该10个整数的最大值、最小值及平均值。#include

#include

main( )

{int i,max,min,data[10];

float average=0,sum=0;

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

scanf(?%d?,&da ta[i]);

max=min=data[0];

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

{if(max

else if(min>data[i])

min=data[i];

sum+=data[i];

}

average=sum/10;

printf(?max=%d,min=%d,average=%f?,max,min,average);

}

第七章函数

一、选择题

1.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: B 。

A)地址传递;B)单向值传递;

C)双向值传递;D)由用户指定传递方式

2.以下正确的函数形式是: D 。

A)double fun(int x,int y) B)fun (int x,y)

{z=x+y;return z;} {int z;return z;}

C)fun(x,y)

D)double fun(int x,int y)

{int x,y; double z; {double z;

z=x+y; return z;} z=x+y; return z;}

3.以下错误的描述是 D 。函数调用可以

A)出现在执行语句中B)出现在一个表达式中

C)做为一个函数的实参D)做为一个函数的形参

4.若用数组名作为函数调用的实参,传递给形参的是 A 。

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

C)数组中全部元素的值D)数组元素的个数

5.以下正确的说法是 A 。

如果在一个函数中的复合语句中定义了一个变量,则该变量

A)只在该复合语句中有效B)在该函数中有效

C)在本程序范围内有效D)为非法变量

6.有如下程序

int func(int a,int b)

{ return(a+b);}

main( )

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

printf(?%\d\n?,r);

}

该程序的输出的结果是 D 。

A) 12 B) 13 C) 14

D) 15

7.有如下程序

long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2));

else return(2);

}

main( )

{ printf(?%d\n?,fib(3));

该程序的输出结果是 B 。

A}2 B}4 C}6 D} 8

8.以下函数的功能是:通过键盘输入数据,为数

组中的所有元素赋值。

#define N 10

void arrin(int x[N])

{ int i=0;

while(i

scanf("%d",_________);

}

在下划线处应填入的是 C 。

A) x+i B) &x[i+1] C)

x+(i++) D) &x[++i]

9.有以下程序

main()

{ char s[]="\n123\\";

printf("%d,%d\n",strlen(s),sizeof(s));

}

执行后输出结果是 C 。

A) 赋初值的字符串有错B)

6,7

C) 5,6 D)

6,6

10.main()

{int a=4,b=3,c=5,d,e,f;

d=f1(a,b); d=f1(d,c);

e=f2(a,b); e=f2(e,c);

f=a+b+c-d-e;

printf("%d,%d,%d\n",d,f,e);

}

f1(int x, int y)

{int z; z=(x>y)?x:y; return(z); }

f2(int x, int y)

{int z; z=(x

执行后输出的结果是 D 。

A) 3,4,5 B) 5,3,4 C) 5,4,3

D)3,5,4

11.以下C语言中,对函数不正确的描述是

D 。

A) 当用数组名作形参时,形参数组改变可使实参数组随之改变

B) 允许函数递归调用

C) 函数形参的作用范围只是局限于所定义的函

数内

D) 函数说明必须在主调函数之前

12.以下对C语言函数的有关描述中,正确的是

A 。

A) 在C中,调用函数时,只能把实参的值传送

给形参,形参的值不能传送给实参

B) C函数既可以嵌套定义又可以递归调用

C) 函数必须有返回值,否则不能使用函数

D) C程序中有调用关系的所有函数必须放在同

一个源程序文件中

13.一个数据类型为void的函数中可以没有return语句,那么函数的被调用时 D 。

A) 没有返回值B) 返回一个系统默认值

B) 返回值由用户临时决定D) 返回一个不确定的值

14.以下函数值的类型是 A 。

fun ( float x )

{ float y;

y= 3*x-4;

return y;

}

A)int B)不确定C)void D)float

15.下面程序的输出结果是: B 。

int m=13;

int fun( int x, int y)

{ int m=3;

return( x*y-m); }

main( )

{int a=7,b=5;

printf(?%d\n?, fun(a,b)/m); }

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

16.以下程序的运行结果是: B 。

main( )

{ int a=2, i ;

for(i=0;i<3;i++) printf(?%4d?,f(a) ) ; }

f( int a)

{ int b=0,c=3;

b++; c++; return(a+b+c); }

A)7 10 13 B)7 7 7

C)7 9 11 D)7 8 9

二、填空题

1.C语言规定,可执行程序的开始执行点是。

2.在C语言中,一个函数一般由两个部分组成,它们是和。

3.函数swap(int x,int y)可完成对x和y值的交换。

在运行调用函数中的如下语句后,a[0]和a[1]

的值分别为,原因。

4.函数swap(arr,n)可完成对arr数组从第1个元素

到第n个元素两两交换。在运行调用函数中

的如下语句后,a[0] 和a[1]的值分别

为,原因。

5.设在主函数中有以下定义和函数调用语句,且

fun函数为void类型;请写出fun函数的首

部。要求形参名为b。

main()

{ double s[10][22];

int n; ┆

fun(s);

}

6.返回语句的功能是从返回。

1.程序中的main( )函数

2.函数说明部分函数体

3.a[0]=1,a[1]=2 单向值传递,不能返回交

换后的值

4.a[0]=2,a[1]=1 因实参是地址,已对指定

地址中的内容进行了交换

5.fun(double b[][])

6.包含它的函数调用函数

三、读程序写结果题

1.以下程序的输出结果是x=9

x=10 。

#include

void increment(void);

void main(void)

{

increment();

increment();

}

void increment(void)

{

static int x = 8;

x ++;

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

}

6. 2.若有以下程序,执行后输出结果是

9 。

int f(int x,int y)

{ return((y-x)*x); }

main()

{ int a=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

7. 3. 假如在运行程序时输入5 ,写出程序的运

行情况及最终结果: 。input a

integer number:5

5!=120

float fac(int n)

{ float f ;

if(n<0){printf(?n<0,dataerror!?);

f=-1;}

else if (n==0||n==1) f=1;

else f=fac(n-1)*n;

return(f);

}

main( )

{int n ;

float y ;

printf(?input a integer number:?);

scanf(?%d?,&n);

y=fac(n);

printf(?%d!=%5.0f?, n,y);

}

4.下面程序的运行结果是:777 。func( int a)

{ int b=0,c=3;

b++;c++;

return(a+b+c);}

main( )

{ int a=2,i;

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

printf(?%d?,func(a)); }

四、编程题

1.有一个数组,内放10个学生的英语成绩,写一个函数,求出平均分,并且打印出高于平均分的英语成绩。main( )

{float grade[10],i,aver;

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

scanf(?%f?,grade[i]);

aver=fensu(grade,10)

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

if(grade[i]>aver) printf(?%f?,grade[i]);

}

fensu(float a[10],int n)

{ float sum=0,pj;

for(i=0;i

sum=sum+a[i];

pj=sum/n;

return(pj);

}

第八章指针

一、选择题

1.变量的指针,其含义是指该变量的 B 。

A)值B)地址C)名D)一个标志

2.设有说明int (﹡ptr)[M];其中ptr是

C 。

A)M个指向整型变量的指针

B)指向M个整型变量的函数指针

C)一个指向具有M 个整型元素的一维数

组的指针

D)具有M个指针元素的一维指针数组,

每个元素都只能指向整型量

3.如下程序的执行结果是 B 。

# include

main() { static int a[ ]={1,2,3,4,5,6}; int ﹡p; p=a;

﹡(p+3)+=2; printf(〞%d,%d\n 〞,﹡p,﹡(p+3)); }

A)1,3 B)1,6 C)3,6 D)1,4

4.若有以下定义,则对a数组元素的正确引用是

D 。

int a[5], ﹡p=a;

A)﹡&a[5] B)a+2 C)﹡(p+5) D)﹡(a+2)

5.若有定义:int a[5];则a数组中首元素的地址

可以表示为 C 。

A)&a B)a+1 C)a D)&a[1]

6.若有以下定义,则﹡(p+5)表示 B 。

A)元素a[5]的地址B)元素a[5]的值

C)元素a[6]的地址D)元素a[6]的值

7.下面程序段的运行结果是 B 。

char str[ ]=?ABC?,*p=str;

printf(?%s\n?,*(p+1));

A) 66 B) BC C)字符‘B’的地址

D)字符‘B’

20.已有定义int k=2, *ptr1,*ptr2;且ptr1和ptr2均已指向同一个变量k,下面不正确执行的赋值语句是: B 。

A) k=*ptr1+*ptr2 ; B) ptr2=k;

C) ptr1=ptr2; D)k=*ptr1*(*ptr2);

8.有以下程序

int *f(int *x,int *y)

{ if(*x<*y)

return x;

else

return y;

}

main()

{ int a=7,b=8,*p,*q,*r;

p=&a; q=&b;

r=f(p,q);

printf("%d,%d,%d\n",*p,*q,*r);

}

执行后输出结果是 B 。

A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8

9.有以下程序

main()

{ int x[8]={8,7,6,5,0,0},*s;

s=x+3;

printf("%d\n",s[2]);

}

执行后输出结果是 B 。

A) 随机值B) 0 C) 5

D) 6

10.有如下程序段

int *p,a=10,b=1

p=&a; a=*p+b;

执行该程序段后,a的值为 B 。

A) 12 B) 11 C) 10

D) 编译出错

11.以下函数返回a所指数组中最小的值所在的下标值。

fun(int *a, int n)

{ int i,j=0,p;

p=j;

for(i=j;i

{if(a[i]

return(p); }

在下划线处应填入的是 D 。

A) i=p B) a[p]=a[i]

C)p=j D) p=i

12.有如下说明

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

则数值为9的表达式是 B 。

A) *p+9 B) *(p+8) C)

*p+=9 D) p+8

13.有如下程序

main()

{ char ch[2][5]={?6937?,?8254?},*p[2];

int i,j,s=0;

for(i=0;i<2;i++) p[i]=ch[i];

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

for(j=0;p[i][j]>’\0’;j+=2)

s=10*s+p[i][j]-‘0’;

printf(?%d\n?,s);

}

该程序的输出结果是 C 。

A)69825 B)63825 C)6385 D)693825

14.执行以下程序后,a的值为 C 。

int *p, a = 10, b=1;

p = &a; a = *p*b;

A) 12 B) 编译出错C) 10

D) 1

15.以下各语句或语句组中,正确的操作是

C 。

A) char s[5]="abcde" B) char *s; gets(s);

C) char *s; s="abcde"; D) char s[5]; scanf("%s", &s);

16.以下程序的输出结果是 D 。

#include

void main(void)

{ char a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, *p = a+5;

printf(?%d ?, *--p); } A) 非法 B) a[4]的地址 C) 3 D) 5 17. 若有以下定义: int a[10],*p=a; 则*(p+3)表示的是 B 。 A )元素a[3]的地址 B )元素a[3]的值 C )元素a[4]的地址 D )元素a[4]的值 18. 有如下语句 int a=10,b=20,*p1,*p2; p1=&a; p2=&b; 如图1所示;若实现如图2所示的存储结构,可选用的赋值语句是: B 。 p1 p2 p1 p2 a

b a b 10 20 10 20 图1 图2 A )*p1=*p2 B )p1=p2 C )p1=*p2 D )*p1=p2 19. 执行以下程序后,y 的值是 C 。 main() { int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) y+=*(p+x); printf("%d\n",y); } A) 17 B) 18 C) 19 D) 20 20.若有以下定义 int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的表达式是 B 。 A) p+=2,*(p++) B) p+=2,*++p C) p+=3,*p++ D)p+=2,++*p 二、填空题 1.完成以下有关数组描述的填空。 a) C 语言中,数组名是一个不可改变的 ,不能对它进行赋值运算。 b) 数组在内存中占用一段连续的存储

空间,它的首地址由 表示。 地址常量 数组名 2.在C 程序中,指针变量能够赋 值或

值。地址 NULL (或ˊ\0ˊ,或0,或空值) 3.若有以下定义,则通过指针p 引用值为98的

数组元素的表达式是 。*(p+5)或p[5]

int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;

4.int a[10];则a[i]的地址可表示为

或 ,a[i]可表示为 。

&a[i],a+i,*(a+i) 5.一个指针变量P 和数组变量a 的说明如下: int a[10],*p;

则p=&a[1]+2的涵义是指针p 指向数组a 的第 4 个元素。

6.一个数组,其元素均为指针类型数据,这样得数组叫 。指针数组

7. int *p[4]表示一个 ,int(*p)[4]表

示 。p 是由4个指针组成的指针数组;p 是一个指针变量,它指向4个整型元素组成的数组 8.若有以下定义和语句 int w[10]={23,54,10,33,47,98,72,80,61},*p;

p=w; 则通过指针p 引用值为98的数组元素的表达式是 。*(p+5)或p[5] 四、读程序写结果题 1.以下程序的执行结果是 ch=f 。 # include

main ( ) { char s[ ]=?abcdefg ?; char ﹡p; p=s; printf(〞ch=%c\n 〞,

﹡(p+5)); }

2.以下程序的执行结果是 654321 。

# include main ( ) { int a[ ]={1,2,3,4,5,6},﹡p; for (p=&a[5];p>=a;p ﹣﹣) printf(〞%d 〞, ﹡p); printf(〞\n 〞); } 3.以下程序的执行结果是 CDG 。 #include void main(void)

{ static char

a[]="ABCDEFGH",b[]="abCDefGh";

char *p1,*p2; int k;

p1=a; p2=b;

for(k=0;k<=7;k++)

if (*(p1+k)==*(p2+k)) printf("%c",*(p1+k));

printf("\n");

}

4.以下程序的执行结果是80,-20 。

#include

int fun(int x,int y,int *cp,int *dp)

{ *cp=x+y; *dp=x-y;

}

void main(void)

{ int a, b, c, d;

a=30; b=50;

fun(a,b,&c,&d);

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

}

第九章结构体与共用体

一、选择题

1.在说明一个结构体变量时系统分配给它的存储空间是 D 。

i.该结构体中第一个成员所需存储

空间

ii.该结构体中最后一个成员所需存

储空间

iii.该结构体中占用最大存储空间的

成员所需存储空间

iv.该结构体中所有成员所需存储空

间的总和

2.若有以下说明和语句:

struct worker

{ int no; char ﹡name; }work, ﹡

p=&work;

则以下引用方式不正确的是 D 。

A) work.no B) (﹡p).no C) p->no

D)work->no

3.有如下定义:

struct date { int year, month, day; };

struct worklist { char name[20]; char sex;

struct date birthday; }person;

对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是 C 。

A) year=1958

B) birthday.year=1958

C) person.birthday.year=1958 D) person.year=1958

4.以下对结构体类型变量的定义中不正确的是

D 。

E)#define STUDENT struct student B)

struct student

STUDENT

{ int num;

{ int num;

float age;

float

age; }std1; }std1;

C) struct D)

struct

{ int num; { int num;

float age; float age; } student;

}std1;

struct student std1;

5.设有以下说明语句

struct stu

{ int a; float b; }stutype;

则下面的叙述不正确的是 C 。

E)struct是结构体类型的关键字

F)struct stu是用户定义的结构体类型

G)stutype是用户定义的结构体类型名

H)a和b都是结构体成员名

6.C语言结构体类型变量在程序执行期间

A 。

A)所有成员一直驻留在内存中

B)只有一个成员主留在内存中

C)部分成员驻留在内存中

D)没有成员驻留在内存中

7.以下程序的运行结果是 A 。

# include

main( )

{ struct date

{ int year, month, day; }today;

printf(?%d\n?,sizeof(struct date)); }

A) 6 B) 8 C) 10 D)128.有如下定义

struct person{char name[9]; int age;};

struct person class[10]={?Johu?, 17,

?Paul?, 19

?Mary?, 18,

?Adam 16,};

根据上述定义,能输出字母M的语句是

D 。

A)prinft(?%c\n?,class[3].mane);

B)pfintf(?%c\n?,class[3].name[1]);

C)prinft(?%c\n?,class[2].name[1]);

D)printf(?%^c\n?,class[2].name[0]); 9.设有如下定义

struct ss

{ char name[10];

int age;

char sex;

} std[3],* p=std;

下面各输入语句中错误的是 B 。

A) scanf("%d",&(*p).age);

B) scanf("%s",&https://www.doczj.com/doc/df12803714.html,);

C) scanf("%c",&std[0].sex);

D) scanf("%c",&(p->sex))

10.设有以下说明语句,则下面的叙述中不正

确的是 B 。

struct ex {

int x ; float y; char z ;

} example;

A) struct结构体类型的关键字

B) example是结构体类型名

C) x,y,z都是结构体成员名

D) struct ex是结构体类型

11.若程序中有下面的说明和定义:

struct stt

{ int x;

char b;

}

struct stt a1,a2;

则会发生的情况是 B 。

A)程序将顺利编译、连接、执行。

B)编译出错。

C)能顺利通过编译、连接,但不能执行。

D)能顺利通过编译,但连接出错。

12.已知教师记录定义为:

struct student

{ int no;

char name[30];

struct

{ unsigned int year;

unsigned int month;

unsigned int day;

}birthday;

} stu;

struct student *t = &stu;

若要把变量t中的生日赋值为?1980年5

月1日?,则正确的赋值方式为

D 。

A) year = 1980; B) t.year = 1980;

month = 5; t.month = 5;

day = 1; t.day = 1;

C) t.birthday.year = 1980; D) t-> birthday.year = 1980;

t.birthday.month = 5;

t-> birthday.month = 5;

t.birthday.day = 1; t-> birthday.day = 1;

13.以下结构类型可用来构造链表的是

B 。

A)struct aa{ int a;int * b;};

B)struct bb{ int a;bb * b;};

C)struct cc{ int * a;cc b;};

D)struct dd{ int * a;aa b;};

14.以下程序的输出结果是 A 。

amovep(int *p, int a[3][3],int n)

{ int i, j;

for( i=0;i

for(j=0;j

}

main()

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

p=(int *)malloc(100);

amovep(p,a,3);

printf("%d %d \n",p[2],p[5]);free(p);

}

A)56 B)25 C)34

D) 程序错误

15.以下程序的输出结果是 D 。

struct HAR

{ int x, y; struct HAR *p;} h[2];

main()

{ h[0].x=1;h[0].y=2;

h[1].x=3;h[1].y=4;

h[0].p=&h[1].x;

h[1].p=&h[0].x;

printf("%d %d \n",(h[0].p)->x,(h[1].p)->y);

}

《C语言程序设计》第三章 C语言基础 课堂笔记

页眉内容 《C语言程序设计》第三章C语言基础课堂笔记 §3.1 基本字符集、关键字和标识符 一.基本字符集 字符是C的基本元素,C语言允许使用的基本字符集: 1.26个大写字母A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2.26个小写子母a b c d e f g h I j k l m n o p q r s t u v w x y z 3.10个阿拉伯数字0 1 2 3 4 5 6 7 8 9 4.其他字符!" # % & ' ( ) * + , - . / : < = > ? [ \ ] ^ _ { | } ~ 5.空格字符以及制表符合换行符等控制字符 二.关键字(P375,附录II) C中具有固定意义的字符串。 (1) C中的关键字共32个,必须用小写字母 (2) 关键字不可用于变量名、函数名等。 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while 三.标识符 标识符用于命名变量、类型、函数和其他各种用户定义的对象,是由字母、下划线和数字三种字符组成。 (1) 第一个字符必须为字母或下划线 (2) C对标识符的长度规定为任意,Turbo C区分32 个字符 (3) C区分大小写 (4) 不允许关键字作为标识符 §3.2 C数据类型

2019年电大C语言考试题库(c语言小题+编程)

C语言程序设计课程期末复习练习 一、单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( )。 A. main B. MAIN C. name D. function 2.每个C语言程序文件的编译错误分为()类。 A. 1 B. 2 C. 3 D. 4 3. 字符串"a+b=12\n"的长度为()。 A. 6 B. 7 C. 8 D. 9 4. 在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为()语句。 A. for B. if C. do D. while 5. 在下面的do-while循环语句中,其循环体语句被执行的次数为()。 int i=0; do i++; while(i<10); A. 4 B. 3 C. 5 D. 10 6. 将两个字符串连接起来组成一个字符串时,选用的函数为()。 A. strlen() B. strcap() C. strcat() D. strcmp() 7. 若用数组名作为函数调用的实参,传递给形参的是()。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组中全部元素的值 D. 数组元素的个数 8. 假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大( )个字节。 A. 4 B. 8 C. 16 D. 32 9. 假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为()。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 10. 从一个数据文件中读入以换行符结束的一行字符串的函数为()。 A. gets() B. fgets() C. getc() D. fgetc() 11. 由C语言目标文件连接而成的可执行文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. c 12. 设有两条语句为“int a=12; a+=a*a;”,则执行结束后,a的值为( )。 A. 12 B. 144 C. 156 D. 288 13. 带有随机函数调用的表达式rand()%20的值在( )区间内。 A. 1~19 B. 1~20 C. 0~19 D. 0~20 14. for循环语句“for(i=0; i

c语言笔记

慕课网C语言第四章笔记 1 多重循环语句的使用: For循环中的变量步进值 2 思维模式的注意一些事项 函数 C语言提供了大量的库函数(右侧资料下载中有),比如stdio.h提供输出函数,但是还是满足不了我们开发中的一些逻辑,所以这个时候需要自己定义函数,自定义函数的一般形式:

注意: 1、[]包含的内容可以省略,数据类型说明省略,默认是int类型函数;参数省略表示该函数是无参函数,参数不省略表示该函数是有参函数; 2、函数名称遵循标识符命名规范; 3、自定义函数尽量放在main函数之前,如果要放在main函数后面的话,需要在main函数之前先声明自定义函数,声明格式为:[数据类型说明] 函数名称([参数]); 那么函数的返回值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。 函数的返回值要注意以下几点: 1. 函数的值只能通过return语句返回主调函数。return语句的一般形式为: return 表达式或者为:return (表达式); 2. 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数返回类型为准,自动进行类型转换。 3. 没有返回值的函数,返回类型为void。如果小刚算了一会没有返回结果的话,那么用代码表示就是: 注意:void函数中可以有执行代码块,但是不能有返回值,另void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为:return; 错误!

错误! 函数的调用的一些问题 #include /* Jone算出结果应该怎么写函数? */ int joneResult(int x, int y, int z) { int sum = x+y+z; return sum/3; //这里是不是应该将sum返回呢? } /* Jack没有算出结果只说了一句话是不是应该用无返回值函数? */ void jackResult(int x, int y, int z) { printf("我算不出来\n"); return 0; } int main() { int a, b, c; a = 10; b = 20; c = 30; //Jone的返回值类型是什么? int jR = joneResult(a, b, c);

大学c语言考试题库含答案

================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10; printf("%d",a++); A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B

能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 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",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0;

C语言笔记_me

预编译处理: 1.宏定义 形式:#define 标识符字符串 说明: 宏名一般用大写。 宏定义不作语法检查,只有在编译被宏展开后的源程序时才会报错。 宏定义不是C语句,不在行末加分号。 宏名有效范围为定义到本源文件结束。 可以用#undef命令终止定义的作用域。 在宏定义时,可以引用已定义的宏名 带参数的宏定义 形式:#define 宏名(参数表)字符串 2.文件包含处理 #include “文件1” 就是交文件1的全部内容复制插入到# include位置,作为一个源文件进行编译。 3.条件编译 条件编译:指不对整个程序都编译,而是编译满足条件的那部分。有以下几种形式: ①.# ifdef 标识符 程序段1 #else 程序段2 #endif 作用:当标识符在前面已经被定义过(一般用#define),则对程序段1编译,否则 对程序段2编译。 ②.# if 标识符 程序段1 #else 程序段2 #endif 作用:和# ifdef相反,当标识符没被定义过时,才对程序段1编译。 ③.# ifndef 表达式 程序段1 #else

程序段2 #endif 作用:当表达式值为真(非0)时,对程序段1编译,否则对程序段2编译。 条件编译的应用 全局变量应该是得到内存分配且可以被其他模块通过C语言中extern关键字调用的变量。因此,必须在.C 和.H 文件中定义。这种重复的定义很容易导致错误。 以下讨论只需用在一个头文件中定义一次, 1.首先,说明一个条件编译命令: #ifdef 标识符 程序1 #else 程序2 #endif 先在一个头文件(.h)中输入条件编译命令。 那么,对C程序(.c)进行编译时,若程序包令: #include标识符 或#include标识符0 即:只要有标识符出现,编译时就会加入程序1,一并进入编译。否则,加入程序2。 例:在uCOS_II.H 中包含: #ifdef OS_GLOBALS #define OS_EXT #else #define OS_EXT extern #endif OS_EXT INT32U OSIdleCtr; OS_EXT INT32U OSIdleCtrRun; OS_EXT INT32U OSIdleCtrMax; 同时,uCOS_II.C中包含: #define OS_GLOBALS (当然,所有.C应该都包含#include uCOS_II.H,这样才达到.C文件能访问全局 变量) 这样,当编译器处理uCOS_II.C时,它使得头文件变成如下所示,因为OS_EXT被设置为空。编译器就全局变量分配在内存,而当编译其他不含#define OS_GLOBALS的.C文件时,OS_EXT被设置为extern,表示该变量为外部定义的全局变量,不用再分配内存了。 其实,这样是将一个C文件的所有全局变量定义在一个头文件中,而所有C文件都包含这个头文件,这样防止重复定义一个全局变量而发生错误。

(完整版)C语言考试题库之判断题(2)

三、判断题(10道小题,共10分) 1、C 语言具有简洁明了的特点。(1分) 正确 2、预处理命令的前面必须加一个“#”号。(1分) 正确 3、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。(1分) 正确 4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。(1 分) 正确 5、continue 不是结束本次循环,而是终止整个循环的执行。(1分) 错误 6、在对数组全部元素赋初值时,不可以省略行数,但能省略列数(1分) 错误 7、.函数的实参传递到形参有两种方式值传递和地址传递(1分) 正确 8、直接访问就是直接利用变量的地址进行存取直接访问(1分) 正确 9、共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员。(1分) 正确 10、文件指针和位置指针都是随着文件的读写操作在不断改变。(1分) 错误 11、C 语言标准格式输入函数scanf() 的参数表中要使用变量的地址值。(1分) 正确 12、浮点型常量的指数表示中,e 是可以省略的。(1分) 错误 13、任何表达式语句都是表达式加分号组成的。(1分) 正确 14、在switch语句中,每一个的case常量表达式的值可以相同。(1分) 错误 15、do-while循环的while后的分号可以省略。(1分) 错误 16、用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志'\0'。正确 17、C语言函数返回类型的默认定义类型是void(1分) 错误 18、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数(1分) 正确 19、枚举类型中的元素都具有一个整型值。(1分) 正确 20、C 语言是一种具有某些低级语言特征的高级语言。(1分) 正确 21、case语句后如没有break,顺序向下执行。(1分)正确

郝斌老师C语言笔记

专题: 动态内存分配(所有高级语言,没有C里深刻) 传统数组的缺点: 1.数组长度必须事先指定,而且只能是常整数,不能是变量 例子int a[5];//必须事先指定,而且只能是常整数 int len = 5; int a[len];//error 2.传统形式定义的数组,该数组的内存程序员无法手动释放 数组一旦定义,系统为数组分配的内存空间就会一直存在,除非数组所在的函数运行终止。 在一个函数运行期间,系统为该函数中的数组分配的空间会一直存在。 直到该函数运行完毕时,数组的空间才会被系统自动释放。 例子:void f(void){int a[5]={1,2,3,4,5};....} //数组a 占20个字节的内存空间,程序员无法手动编程释放它,数组a只能在f()函数结束被系统释放 3. 数组的长度一旦定义,数组长度就不能再更改。 数组的长度不能在函数运行的过程中动态的扩充或缩小 4. 传统方式定义的数组不能跨函数使用 A函数定义的数组,只有在A函数运行期间才可以被其他函数使用, 但A函数运行完毕后,A函数中的数组将无法在被其他函数使用。 #include void g(int * pArr, int len) { pArr[2] = 88; //parr[2]==a[2] 等价于 } void f(void) { int a[5] = {1,2,3,4,5}; //数组a 只在f()执行时有效 g(a,5); printf("%d\n", a[2]); } int main(void) { f(); // 结果: 88 //printf("a[0] = %d\n", a[0]); // error return 0; } 为什么需要动态分配内存 很好的解决的了传统数组的4个缺陷 动态内存分配举例_动态数组的构造难点

郝斌C语言详细笔记(附源码)

郝斌老师的C语言:课堂讲解全程动手敲代码,讲解细致,对于重要知识点的讲解不厌其烦,是一个难得的C语言入门教程。在这里对老师的辛勤付出表示感谢。 郝斌c语言视频教程 · 概述: 课程计划 为什么学习c语言: Fortran语言主要用于科学计算,在第三代语言中,以1980年为分水岭,分为结构化和面向对象语言。Basic语言是vb的前生,pascal语言一般是用于教学。C语言是最重要的,其他的语言一般很少用了。结构化的代表语言是c语言。结构化语言的数据和操作是分离的,导致在写大项目的时候,会出现各种各样莫名其妙的问题。 在面向对象的语言中c++是最复杂的语言。由于c++语言太复杂,sun公司对c++进行了改装,产生了java语

言。而c#是由微软开发的,和java相似,几乎一模一样。 在高级语言的执行速度上,c是最快的,c++其次,而java 和c#是最后的。Java和c#流行,主要的一个原因是可以跨平台。 C语言的发展和过程:

C语言的特点: ·优点:代码量小,速度快,功能强大。 ·缺点:危险性高,开发周期长,可移植性弱。 危险性高:写同一个程序,在java中会报错,而在c中不会报错,为什么呢,因为c认为程序你想怎么写就怎么写,c语言认为你写的程序不是很离谱,他都认为你写的这个程序有特殊的含义。可以直接通过,而java 则不可以。 开发周期长:c语言是面向过程的语言,面向过程的语言的特点就是在开发大项目的时候,很容易崩溃,好比盖大楼,C语言还要造大量的砖块、钢筋等结构原材料,而C++ C# JAVA则进行了一定的继承封装等操作,相当于原材料直接给你,你只需要用它盖楼即可。 现在市场上的语言分三块

C语言试题库(完整版)

C语言试题库 一、单项选择 第一章 C语言概述 (1)一个C程序的执行是从 A、本程序的MAIN函数开始,到MAIN 函数结束。 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。(2)以下叙述正确的是 A、在C程序中,MAIN函数必须位于程序的最前面。 B、 C程序的每行中只能写一条语句。 C、 C语言本身没有输入输出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3) C语言规定,在一个源程序中,MAIN主函数的位置是在: A、必须在最前面。 B、必须在系统调用的库函数的后面 C、可以在任意位置。

D、必须在最后面 (4)一个C程序是由: A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (5)以下叙述不正确的是: A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个MAIN函数 C、 C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 第二章数据类型、运算符与表达式 (1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32) A、4 B、16 C、32

D、52 (2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case E、 if, struct, type (3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT (4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3 (5)已知各变量的类型说明如下:

大学C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 大学C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题库吧。加油! 一单项选择题库 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

c语言学习笔记(数组、函数)

数组 2010-3-29 22:40 一维数组的定义和一维数组的引用 内存中一串连续的存储单元(变量),叫数组。指针移动和比较只有在一串连续的数组中才有意义。 当数组中每个变量只带一个下标时,为一维数组。 定义一个一维数组: 类型名数组名【常量表达式】如:int a[8]; 说明:①定义一个一维整型名为a的数组。 ②方括号中规定此数组有8个元素,(a【0】-a【7】),不存在a【8】这个元素。 ③a数组中每个元素均为整型,且每个元素只能存放整型。 ④每个元素只有一个下标,且第一个元素的下标总为0。 ⑤c编译程序,为a数组开辟8个连续存储单元。 3)在定义数组语句中,可以有多个数组说明符;它们用逗号隔开。 例:double a【22】,v【100】,u【5】,a,b,c;注:双精度型每个单元占用8个字节的存储空间。另外,也可以和普通变量一起定义。 用逗号分隔开。 2010-3-23 10:29 一维数组元素的引用2 1) 引用形式:数组名【下标表达式】可以是:常量,变量,表达式。 如:double x【8】则x【0】x【j】x【i+k】均合法 2) (1)一个数组元素实际上就是一个变量名,代表内存中的一个存储单元。我们可以把数组元素看做一个变量名来处理。 (2)一个数组不能整体引用,数组名中存放的是一个地址常量,它代表整个数组的首地址。当学习指针时,引用的变量的地址,就是变量中第一个字节的地址。数组的首地址也是它的第一个元素的第一个字节的地址,即它的首地址。 数组的首地址存放在数组名中。所以说,数组名就代表一个地址。数组名是一个地址值。 (3)在引用数组元素时,数组元素下标表达式必须是整数,下标表达式下限为0.系统并不自动检验数组元素下标是否越界,因此编程时要注意。 如:double a,b; int c[10]; a=2.0;b=3.0; 则a[i]; 是不合法的。 给数组赋初值时,如果所赋初值少于元素个数时,后面的元素补为0,字符补为’\0’可以通过赋初值来定义一个数组的大小。如:int a[]={0,0,0,0,0}; 相当于:a[5]={0};

C语言考试题库之判断题[1]_共5页

三、判断题(10道小题,共10分) 1、c语言具有简洁明了的特点。 正确 2、预处理命令的前面必须加一个“#”号。正确 3、标准格式输入函数seanf()可以从键盘上接收不同数据类型的数据项。 正确 4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{} 括起来组成一个复合语句。 正确 5、continue不是结束本次循环,而是终止整个循环的执行。 错误 6、在对数组全部元素赋初值时,不可以省略行数,但能省略列数 错误 7、.函数的实参传递到形参有两种方式值传递和地址传递 正确 8、直接访问就是直接利用变量的地址进行存取直接访问 正确 9、共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员。 正确 10、文件指针和位置指针都是随着文件的读写操作在不断改变。 错误 11、C语言标准格式输入函数scanfO的参数表中要使用变量的地址值。 正确 12、浮点型常量的指数表示中,6是可以省略的。 错误 13、任何表达式语句都是表达式加分号组成的。 正确 14、在switch语句中,每一个的case常量表达式的值可以相同。 错误 15、do-while循环的while后的分号可以省略。 错误 16、用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志'\0'。 正确 17、C语言函数返回类型的默认定义类型是void( 错误 18、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数正确 19、枚举类型中的元素都具有一个整型值。 正确 20、C语言是一种具有某些低级语言特征的高级语言。 正确 21、c ase语句后如没有break,顺序向下执行。正确 22、d o-while循环至少要执行一次循环语句。正确

c语言读书笔记

Vc++读后感 闲来无事,跑来图书馆,突然被一本名叫《致程序员之家论坛的所有会员》的书把我的注意力吸引过去了,于是我用心的读起来了。下面这些是我做的一些笔记。 应该掌握程序运行的原理与机制:学习VC++6.0 在WINDOWS下编程,就应该了解WINDOWS消息机制。(关于消息机制不用太深入,新手学习一个大概流程就可以了) 掌握编程的思想:这点就比较难了,C++的编程就是面向对象,对象的概念一定要清楚。这点重要是多练习自己动手做做小程序。 多动脑,多动手,再加上十分的仔细:关于这点就是一个学习态度的问题了。勤劳和懒惰都是人天生都有的本性,就看我们选择那一个了。 在编写一个程序的时候,要知道为什么要去编它,在程序中的函数为什么这么调用,这个程序的内存模型是怎样的?可以这样说:我们做任何事前都要有目标,有目标才能前进,函数流程就是一个程序的生命,就像人们血液流动的过程一样,从心脏出发经过各个脏器,我们要了解的就是经过那一些,那一些是主要的脏器,这些脏器是用来干什么的。最终回到那里去。内存模型蛮专业化的词,不过不用怕,就是数据在内存客中排列的顺序结构,谁在前面谁在后面了解就可以了。 程序语言的学习,是一个循序渐进的过程,切忌急功近利 这一点我认为最重要,我们往往想静心学习一点东西都不是很容易,总是想一口气吃成个大胖子,这种心态,去学习任何事情都不会成功的,笔者自己也是一样,经常想马上就学会,最后是什么也学不会。只能一步一步来,天才少,努力的人才多。切忌急功近利。 我们往往会因为不知从何入手而不知不觉中走了弯路,停留于表面,你越是着急,反而越容易走弯路,越是搞不懂,就越是需要我们的耐心,不过我也知道这个说说容易做做难,我的方法是,烦的时候回到原点想想你为什么学习编程,也许会对你好一点。每一个人的情况不同,所以要找对自己最有效果的。

c语言上机题库 (1)

1、给定n 个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 2、编写程序求无理数e 的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x 的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N ×M 整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n 位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n 门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。

11、请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最大元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun用比较法对主程序中用户输入的具有10 个数据的数组a按由大到小排序,并在主程序中输出 排序结果。 13、编写main程序调用函数fact求解从m个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m不能小于n,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a和b分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。 19、对任意输入的x,用下式计算并输出y 的值。 5 x<10 y= 0 x=10 -5 x>10 20、求给定正整数m以内的素数之和。 例如:当m=20时,函数值为77。 21、判断整数x是否是同构数。若是同构数,函数返回1; 否则返回0。x的值由主函数从键盘读入,要求不大

(考研复试)C语言笔记资料

(考研复试)C语言笔 记

1:用高级语言编写的程序叫做源程序,然后用编译程序吧源程序翻译成二进制的目标程序,然后将该目标程序与系统函数库以及其他目标程序连接,形成可执行程序。 2:算法五个特点:确定性,有穷性,输入,输出,可行性。 3:程序流程图、N-S盒图、伪代码 4:int 无论有符号无符号,都是16位 Short 无论是有符号还是无符号都是16位 Long 无论是有符号还是无符号都是32位 Float 32位 double 64位,long double 128位。 一个整型常量后面加u就是无符号,加l就是长整型5:\t,\b退格,\r移到本行开头 6:‘0’48,‘A’65,‘a’97,差值32 7:级别char

13:整形给long,同char给int一样, 14:putchar() Getchar() Puts(),gets() Printf(“%md”,d) %d,%c,%f,%ld,%o,%x,%u,%s %d的原意是,按十进制整形数据输出 M表示输出字段的宽度,数字靠右拜访。如果数字太大,就输出数字,不管m. Printf(“%m.ns”,d) 输出占m列,靠右端,只取字符串中的前n个字符,如果n大于m,则不管m Printf(“%-m.ns”,d) 输出占m列,靠左端 Printf(“%m.nf”,d) %f输出实数,包括单精度和双精度,只能输出六位小数, 输出n位小数 Printf(“%m.ne”,d) N指的是输出小数的位数, Scanf输入整形,分割可以用回车或者tab或者空格但是不能用逗号 Scanf(“%3d%3d”,&a,&b)输入123456.

C语言上机题库

C语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include int main(void) { char ch; int sum; ch=getchar(); sum=ch-'A'+10+15; printf("%d\n",sum); return 0; } 3.12输入三个整数,求其平均值。 输入格式: 3 5 7 输出格式: 5 #include int main(void) { int a,b,c,aver; scanf("%d %d %d",&a,&b,&c); aver=(a+b+c)/3; printf("%d\n",aver); return 0; } 3.13根据c=5/9*(f-32) 公式,输入华氏温度f,求摄氏温度c,结果精确到小数点后两位。 输入格式: 80.0 输出格式:26.67 #include int main(void) { float f,c; scanf("%f",&f); c=5.0/9*(f-32); printf("%.2f\n",c); return 0; } 3.14输入一个四位正整数,求其各位数字之和。例如,1357的各位数字之和为1 + 3 + 5 + 7 = 16。 输入格式: 1357 输出格式: 16 #include int main(void) { int num; int a,b,c,d,total; scanf("%d",&num); a=num/1000; b=(num-a*1000)/100; c=(num-a*1000-b*100)/10; d=num-a*1000-b*100-c*10; total=a+b+c+d; printf("%d\n",total); return 0; } 3.15输入一大写字母,输出对应的小写字母。 输入格式: A 输出格式: a

c语言学习笔记

网络通讯中数据大小端的问题: 大端模式:高位字节放在内存的低地址端,即该值的起始地址;低位字节排放在内存的高地址端。 小端模式:低位字节放在内存的低地址端,即该值的起始地址;高位字节放在内存的高地址端。 数组的名字是一个常量指针,如X【2】,X是一个常量指针,没有分配的内存。 数据存在存储空间,数值不存在。 在C语言里,指针可以访问到任何地方,但是对不应该访问的地址进行访问没有意义,也可能会禁止读写。 函数的接口类型,可变参数的类型和执行跳转: C语言的函数名可以看做一个地址常量(和数组一样)。 系统的堆栈:堆和栈的第一个区别就是申请方式不同:栈(英文名称是stack)是系统自动分配空间的,例如我们定义一个char a;系统会自动在栈上为其开辟空间。而堆(英文名称是heap)则是程序员根据需要自己申请的空间,例如malloc(10);开辟十个字节的空间。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。而堆上的数据只要程序员不释放空间,就一直可以访问到,不过缺点是一旦忘记释放会造成内存泄露。、 、 预处理操作: 宏定义:#define M 3; #define M(x,y) 2*x+y; 预处理对宏的处理,分为3类: 预处理“标识符”的展开; 预处理“标识符”的判断; 预处理“标识符”的文本替换。 #if 0 。。。。 #endif 用作代码注释。 基础类型重定义:一个C程序在PC上开发,逻辑验证正确后,下需要移植到某个嵌入式系统中,但是它们对应的int的位宽定义不同,目标系统是X86时,编译器将其看做32位,而目标系统为嵌入式系统的时候,编译器将其看作16位(对应的32位为long关键词)。这种情况,就需要进行基础类型的重定义: #define _TARGET_X86_SYSYTEM 0 #define _TARGET_DEV_SYSYTEM 1 #define _TARGET_SYSYTEM _TARGET_X86_SYSYTEM #if(_TARGET_SYSYTEM = _TARGET_X86_SYSYTEM) Typedef signed int _i32 Typedef unsigned int _u32 #elif(_TARGET_SYSYTEM = _TARGET_DEV_SYSYTEM)

C语言考试题库--综合

试卷编号:10183 所属语言:Turbo C 试卷方案:fny-13 试卷总分:110分 共有题型:7种 ━━━━━━━━━━━━━━ 一、填空共5题(共计15分) ━━━━━━━━━━━━━━ 第1题(3.0分) int x=4,y=z=2;z=x==(y=z); 则z的值为【1】。 答案: 1). 0 第2题(3.0分) 设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b后,t 的值是【1】。 答案: 1). 9

第3题(3.0分) 设x=72,表达式x=(x>=60)的值为【1】。答案: 1). 1 第4题(3.0分) sqrt()函数的原型在头文件【1】中。 答案: 1). math.h 第5题(3.0分) int x=2;z=-x+++1; 则z的值为【1】。 答案: 1). -1 ━━━━━━━━━━━━━━ 二、判断共5题(共计10分) ━━━━━━━━━━━━━━

第1题(2.0分) 若有说明int c;则while(c=getchar());是正确的C语句。 答案:Y 第2题(2.0分) 结构体类型只有一种。 答案:N 第3题(2.0分) 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。 答案:N 第4题(2.0分) 参加位运算的数据可以是任何类型的数据。 答案:N 第5题(2.0分) 若有int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。 答案:N

━━━━━━━━━━━━━━━━━ 三、单项选择共10题(共计10分) ━━━━━━━━━━━━━━━━━ 第1题(1.0分) 若有下列定义,则对a数组元素地址的正确引用是()。int a[5],*p=a; A:*(p+5) B:*p+2 C:*(a+2) D:*&a[5] 答案:C 第2题(1.0分) 在C语言的函数中,下列正确的说法是()。 A:必须有形参 B:形参必须是变量名 C:可以有也可以没有形参 D:数组名不能作形参 答案:C

(完整版)C语言题库(带详解答案)

一单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

最新(考研复试)C语言笔记

1:用高级语言编写的程序叫做源程序,然后用编译程序吧源程序翻译成二进制的目标程序,然后将该目标程序与系统函数库以及其他目标程序连接,形成可执行程序。 2:算法五个特点:确定性,有穷性,输入,输出,可行性。3:程序流程图、N-S盒图、伪代码 4:int 无论有符号无符号,都是16位 Short 无论是有符号还是无符号都是16位 Long 无论是有符号还是无符号都是32位 Float 32位 double 64位,long double 128位。 一个整型常量后面加u就是无符号,加l就是长整型 5:\t,\b退格,\r移到本行开头 6:‘0’48,‘A’65,‘a’97,差值32 7:级别char

14:putchar() Getchar() Puts(),gets() Printf(“%md”,d) %d,%c,%f,%ld,%o,%x,%u,%s %d的原意是,按十进制整形数据输出 M表示输出字段的宽度,数字靠右拜访。如果数字太大,就输出数字,不管m. Printf(“%m.ns”,d) 输出占m列,靠右端,只取字符串中的前n个字符,如果n大于m,则不管m Printf(“%-m.ns”,d) 输出占m列,靠左端 Printf(“%m.nf”,d) %f输出实数,包括单精度和双精度,只能输出六位小数, 输出n位小数 Printf(“%m.ne”,d) N指的是输出小数的位数, Scanf输入整形,分割可以用回车或者tab或者空格但是不能用逗号 Scanf(“%3d%3d”,&a,&b)输入123456. 系统自动把123赋值给a,456赋值给b;同理,如果系统输入abc三个字符,但是ch只能容纳一个,就吧a给ch,bc给后面的。

相关主题
文本预览