文档库 最新最全的文档下载
当前位置:文档库 › 大一C语言易错点总结和模拟试题带答案

大一C语言易错点总结和模拟试题带答案

大一C语言易错点总结和模拟试题带答案
大一C语言易错点总结和模拟试题带答案

易错点

C语言中易犯的错误

对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考.

******************************** ******************************** ************************

1.书写标识符时,忽略了大小写字母的区别.

main()

{

int a=5;

printf("%d",A);

}

编译程序把a和A认为是两个不同的变量名,而显示出错信息.

C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量

名用大写,变量名用小写表示,以增加可读性.

******************************** ******************************** ************************

2.忽略了变量的类型,进行了不合法的运算.

main()

{

float a,b;

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

}

%是求余运算,得到a/b的整余数.整型变量a和b可以进行求余运算,而实型变量则不允许进行"求余"运算.

******************************** ******************************** ************************

3.将字符常量与字符串常量混淆.

char c;

c="a";

在这里就混淆了字符常量与字符串常量,字符常量是由一对单

引号括起来的单个字符,字符串常量是一对双引号括起来的字符序

列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所

以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一

个字符变量是不行的.

******************************** ******************************** ************************

4.忽略了"="与"=="的区别.

在许多高级语言中,用"="符号作为关系运算符"等于".

如在BASIC程序中可以写

if (a=3) then …

但C语言中,"="是赋值运算符,"=="是关系运算符.如:

if (a==3) a=b;

前者是进行比较,a是否和3相等,后

者表示如果a和3相等,把

b值赋给a.由于习惯问题,初学者往往会犯这样的错误.

******************************** ******************************** ************************

5.忘记加分号.

分号是C语句中不可缺少的一部分,语句末尾必须有分号.

a=1

b=2

编译时,编译程序在"a=1"后面没发现分号,就把下一行"b

=2"也作为上一行语句的一部分,这就会出现语法错误.改错时,

有时在被指出有错的一行中未发现错误,就需要看一下上一行是否

漏掉了分号.

{

z=x+y;

t=z/100;

printf("%f",t);

}

对于复合语句来说,最后一个语句中最后的分号不能忽略不写

******************************** ******************************** ************************

6.多加分号.

对于一个复合语句,如:

{

z=x+y; t=z/100;

printf("%f",t);

};

复合语句的花括号后不应再加分号,否则将会画蛇添足.

又如:

if (a%3==0);

I++;

本是如果3整除a,则I加1.但由于

if (a%3==0)后多加了分号

,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都

将自动加1.

再如:

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

{scanf("%d",&x);

printf("%d",x);}

本意是先后输入5个数,每输入一个数后再将它输出.由于for

()后多加了一个分号,使循环体变为空语句,此时只能输入一个数

并输出它.

********************************

********************************

************************

7.输入变量时忘记加地址运算符"&".

int a,b;

scanf("%d%d",a,b);

这是不合法的.Scanf函数的作用是:

按照a,b在内存的地址将a,

b的值存进去."&a"指a在内存中的地址.

******************************** ******************************** ************************

8.输入数据的方式与要求不符.

①scanf("%d%d",&a,&b);

输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

3,4

输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车

键,跳格键tab.

②scanf("%d,%d",&a,&b);

C规定:如果在"格式控制"字符串中除了格式说明以外还有其它

字符,则在输入数据时应输入与这些字符相同的字符.下面输入是

合法的:

3,4

此时不用逗号而用空格或其它字符是不对的.

3 4 3:4

又如:

scanf("a=%d,b=%d",&a,&b); 输入应如以下形式:

a=3,b=4

********************************

********************************

************************

9.输入字符的格式与要求不一致.

在用"%c"格式输入字符时,"空格字符"和"转义字符"都作为有效字符输入.

scanf("%c%c%c",&c1,&c2,&c3);

如输入a b c

字符"a"送给c1,字符" "送给c2,字符"b"送给c3,因为%c

只要求读入一个字符,后面不需要用

空格作为两个字符的间隔.

********************************

********************************

************************

10.输入输出的数据类型与所用格式

说明符不一致.

例如,a已定义为整型,b定义为实型

a=3;b=4.5;

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

编译时不给出出错信息,但运行结果

将与原意不符.这种错误尤其

需要注意.

********************************

********************************

************************

11.输入数据时,企图规定精度.

scanf("%7.2f",&a);

这样做是不合法的,输入数据时不能

规定精度.

********************************

********************************

************************

12.switch语句中漏写break语句.

例如:根据考试成绩的等级打印出百

分制数段.

switch(grade)

{ case 'A':printf("85~100\n"); case 'B':printf("70~84\n");

case 'C':printf("60~69\n");

case 'D':printf("<60\n"); default:printf("error\n");

由于漏写了break语句,case只起标号

的作用,而不起判断作用.

因此,当grade值为A时,printf函数

在执行完第一个语句后接着执

行第二,三,四,五个printf函数语句.

正确写法应在每个分支后

再加上"break;".例如

case 'C':printf("60~69\n");break; ********************************

********************************

************************

13.忽视了while和do-while语句在

细节上的区别.

(1)main()

{int a=0,I;

scanf("%d",&I); while(I<=10)

{a=a+I;

I++;

}

printf("%d",a);

}

(2)main()

{int a=0,I;

scanf("%d",&I);

do

{a=a+I;

I++;

}while(I<=10);

printf("%d",a);

}

可以看到,当输入I的值小于或等于10时,二者得到的结果相同.

而当I>10时,二者结果就不同了.因为while循环是先判断后执行

,而do-while循环是先执行后判断.对于大于10的数while循环一

次也不执行循环体,而do-while语句则要执行一次循环体.

******************************** ********************************

************************ 14.定义数组时误用变量. int n; scanf("%d",&n); int a[n]; 数组名后用方括号括起来的是常量表达式,可以包括常量和符号常 量.即C 不允许对数组的大小作动态定义. **************************************************************************************** 15.在定义数组时,将定义的"元素个数"误认为是可使的最大下 标值. main() {static int a[10]={1,2,3,4,5,6,7,8,9,10}; printf("%d",a[10]); } C 语言规定:定义时用a[10],表示a 数组有10个元素.其下标值由0 开始,所以数组元素a[10]是不存在的. **************************************************************************************** 16.初始化数组时,未使用静态存储. int a[3]={0,1,2}; 这样初始化数组是不对的.C 语言规定只有静态存储(static)数组 和外部存储 (exterm)数组才能初始化.应改为: static int a[3]={0,1,2}; **************************************************************************************** 17.在不应加地址运算符&的位置加了地址运算符. scanf("%s",&str); C 语言编译系统对数组名的处理是:数组名代表该数组的起始地址 ,且scanf 函数中的输入项是字符数组名,不必要再加地址符&.应 改为:scanf("%s",str); **************************************************************************************** 18.同时定义了形参和函数中的局部变量. int max(x,y) int x,y,z; {z=x>y?x:y; return(z); } 形参应该在函数体外定义,而局部变量应该在函数体内定义.应改 为: int max(x,y)

int x,y;

{int z;

z=x>y?x:y;

return(z);

}

试题一

一、单项选择题(共30分,每题1分)

1. 下列不正确的转义字符是

A.\\

B.\‘

C.074

D.\02. 不是C语言提供的合法关键字是

A.switch

B.cher

C.case

D. default

3.正确的标识符是()A.?

a B.a=2 C.a.3 D.a_3

4.下列字符中属于键盘符号的

是A.\ B.\n C.\t D.\b

.下列数据中属于“字符串常量”的A.ABC B.“ABC” C.‘ABC’ D.‘A’6.char型常量在内存中存放的是

A.ASCII码

B.BCD码

C.内码值

D.十进制代码值

7.设a为5,执行下列语句后,b 的值不为2的是()

A.b=a/2

B.b=6-(——

a) C.b=a%2 D.b=a>3?2:2

8.在以下一组运算符中,优先级最高的运算符是()

A.<=

B.=

C.%

D.&&

9.设整型变量i的值为3,则计算表达式i——i后表达式的值是()

A.0

B.1

C. 2

D.表达式出错

10.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是()

A.6

B.9

C.8

D.表达式出错

11.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()

A.1

B.2

C.2.0

D.2.5

12.设a=1,b=2,c=3,d=4,则表达式:a

A.4

B.3

C.2

D.1

13.设a为整型变量,不能正确表达数学关系:10

A.10

B.a= =11 || a= =12 || a= =13 || a= =14

C.a>10&&a<15

D.!(a<=10)&&!(a>=15)

14.若有以下定义:char a、 int

b 、 float

c 、 double d,则表达式a*b+d-c值的类型为()

A.float

B.int

C.char

D.dou ble

15.表达式“10!=9”的值是()

A.true

B.非零

值 C.0 D.1

16.循环语句 for (x=0,y=0;(y!=123)|| (x<4);x++);的循环执行()

A.无限次

B.不确定次

C.4

次 D.3次

17.在C语言中,下列说法中正确的是()

A. 不能使用“do while”的循环

B.“do while”的循环必须使用break语句退出循环

C.“do while”的循环中,当条件为非0时将结束循环

D.“do while”的循环中,当条件为0时将结束循环。

18.设a,b为字符型变量,执行scanf(“a=%c,b=%c”,&a,&b)后使a为‘A’,b为‘B’,从键盘上的正确输入是()

A.‘A’‘B’

B.‘A’,

‘B’ C.A=A,B=B D.a=A,b=B

19.设i,j,k均为int型变量,执行完下面的for循环后,k的值为()

for (i=0,j=10;i<=j;i++,j ——)k=i+j;

A.10

B.9

C.8

D.7

20.设有定义:char

s[12]={“string”};则printf (“%d\n”,strlen(s));的输出是()

A.6

B.7

C.11

D.12

21.合法的数组定义是()

A.int a[]={“string”};

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

C.char a={“string”};

D.char a[]={0,1,2,3,4,5}

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

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

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

C. 将字符串str1复制到字符串str2中后再复制到字符串str3之后

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

23.设有如下定义,则正确的叙述为()

char x[]={“abcdefg”};

char y[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’};

A.数组x和数组y等

B.数组x和数组y的长度相同

C.数组x的长度大于数组y的长度

D.数组x的长度小于数组y的长度

24.设有单精度变量f,其值为13.8.执行语句“n=((int)f)%3;”后,n的值是()

A.4

B.1

C.4.333333

D.4 .6

25.执行语句“f=(3.0,4.0,5.0),(2.0,1.0,0.0);”后,单精度变量f的值是()

A.3.0

B.5.0

C.2.0

D.0. 0

26.设a、b均为整型变量,下列表达式中不是赋值表达式的是()

A.a=3,4,

5 B.a=3*2 C.a=a&&b D.a= b=4

27.表达式“1?(0?3:2):(10?1:0)”的值为()

A.3

B.2

C.1

D.0

28.sizeof(double)的结果值是()A.8 B.4 C.2 D.出错

29.指出下面正确的输入语句是()

A.scanf (“a=b=%d”,&a,

&b); B.scanf(“a=%d,b=%f”,&m,&f);

C.scanf(“%3c”,

c); D.scanf(“%5.2f,&f);

30.若有以下定义和语句,且

0<=i<5,则()是对数组元素地址的正确表示

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

p=a;

A.&

(a+i) B.&p C.a++ D.&p[i]

二、填空(20分,每空1分)1.在内存中存储“A”要占用()个字节,存储‘A’要占用()字节。

2.符号常量的定义方法是()。

3.能表述“20

4.结构化程序设计方法规定程序或程序段的结构有三种:顺序结构、()和()。

5.C语言共提供了三种用于实现

循环结构的流程控制语句,它们是()、()和()。

6.若在程序中用到“putchar”,应在程序开头写上包含命令

(),若在程序中用到“strlen ()”函数时,应在程序开头写上包含命令()。

7.设有定义语句“static int

a[3][4]={{1},{2},{3}}”,则a[1][1]值为(),a[2][1]的值为()。

8.“*”称为()运算符,“&”称为()运算符。

9.赋值表达式和赋值语句的区别在于有无()号。

10.用{}把一些语句括起来称为()语句

11.设a=12、b=24、c=36,对于“scanf (”a=%d,b=%d,c=%d“,&a,&b,&c);”,输入形式应为()

12.表达式“sqrt(s*(s-a)*(s-b)*(s-c));”对应的数学式子为()

13.C语言编绎系统在判断一个量是否为“真”时,以0代表“假”,以()代表“真”

三、读程序(30分)

1. main()

{ int a=10,b=4,c=3;

if (a

if (a

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

2. main()

{int y=9;

for (;y>0;y——)

if (y%3= = 0) {printf (“%d”,——y);continue;}

3. main()

{ int x,y;

for (y=1,x=1;y<=50;y++)

{ if (x>=10) break;

if (x%2= =1) { x+=5;continue;}

x-=3; }

printf (“%d”,y)4. main()

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

int i,j,s1=0,s2=0; i,j,s1=0,s2=0;

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

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

{ if (i= =j )s1=s1+a[i][j];

if (i+j= =2) s2=s2+a[i][j];

}

printf (“%d\n%d\n”,s1,s2);}

5. main()

{static char a[]={‘*’,‘*’,‘*’,‘*’,‘*’};

int i,j,k;

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

{printf (“\n”);

for (j=0;j

for (k=0;k<5;k++) printf (“%c”,a[k]); } }

6. int fac(int n)

{static int f=1;

f=f*n; return(f);}

main()

{int i;

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

printf (“%d!=%d\n”,i,fac (i));}

四、编写程序(20分)

1. 编一个程序,输入X的值,按下列公式计算并输出Y的值

2. 编程序按下列公式计算e的值(精度为1e-6)

e=1+1/1!+1/2!+1/3!+……1/n!

参考答案:

一、单项选择题(共30分,每题

1分)

1.C

2. B

3. D

4. A

5. B

6.

A 7. C 8. C 9. A 10. A 11.

C 12.

D 13. A 14. D 15. D 16.

C 17.

D 18. D 19. A 20. B 21.

D 22. A 23. C 24. B 25. D 26.

D 27. B 28. A 29. B 30. C

;}二、填空(20分,每空1分)

1.2,1

2.#define 符号常量常量

3.(x>20 && x<30) || x<-100

4.分支结构,循环结果

5.while do for

6.#include “stdio.h” # include “string.h”

7.a[1][1]=0 , a[2][1]=0

8.* 指针运算符, &地址运算符

9.分号;

10.复合语句

11.a=12,b=24,c=36

13.非0

三、读程序(30分)

1.结果:10,4,3

2.结果:8 5 2

3.6

4.18 10

5.*****

6.5!=120

四、编写程序(20分1. Main()

{int x,y;

scanf (“%d”,&x);

if (x<=1) y=x;(x<=1) y=x;

else if (x>1&&x<10) y=2*x-1;

else y=3*x-11;

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

}bsp; }

2.Main()

{float E;

int n;

s=0;E=1;

试题二 一、单项选择题(每小题2分,共50分) 1、一个C 程序的执行是从___A__。 A 、本程序的main 函数开始,到main 函数结束 B 、本程序的main 函数开始,到本程序文件的最后一个函数结束 C 、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 D 、本程序文件的第一个函数开始,到本程序main 函数结束 2、C 语言程序的基本单位是___C___。 A 、程序行 B 、语句 C 、函数 D 、字符 3、请选出可用作C 语言用户标识符的一组标识符___B___。 A 、void B 、a3_b3 C 、For D 、2a define _123 -abc DO WORD IF ase sizeof 4、假定x 和y 为double 型,则表达式(x=2,y=x+5/2)的值是__C__ 。 A 、 4.500000 B 、4 C 、 4.000000 D 、2.000000 5、下列可以正确表示字符型常量的是___D__。 A 、297 B 、"a" C 、"\n" D 、'\t' 6、在C 语言中,要求运算数必须是整型的运算符是__D__。 A 、/ B 、++ C 、*= D 、% 7、C 语言中,复合语句的构成是将一系列语句置于__C__。

A 、begin 与end 之间

B 、方框号“[ ]”之间

C 、花括号“{ }”之间

D 、圆括号“( )”之间 8、有如下程序段,对应正确的数据输入是___A___。 float x,y; scanf(”%f%f ”, &x,&y); printf(”a=%f,b=%f ”, x,y); A 、 2.04<回车> B 、2.04,5.67<回车> 5.67<回车> C 、A=2.04,B=5.67<回车> D 、2.045.67<回车> 9、以下程序段的输出结果是___D__。 int a=5678; printf(”%2d\n ”, a); A 、提示出错、无结果 B 、56 C 、78 D 、5678 10、已知:char ch='A';则下列表达式的值是__B__。 ch = (ch>='A'&&ch<='Z') ? (ch+32) : ch; A 、A B 、a C 、Z D 、z 11、下列描述,正确的是___B__ 。 A 、表达式3.91%5是合法的 B 、用b=89作为while 循环的条件是合法的 C 、逗号表达式是没有值和类型的 D 、字符型变量和int 型变量的操作完全不同 12、阅读以下程序: main() {int x; scanf("%d",&x); if(x--<5) printf("%d",x); else printf("%d",x++); } 程序运行后,如果从键盘上输人5,

则输出结果是__B__ 。 A 、3 B 、 4 C 、 5 D 、 6 13、下列程序的运行结果是___C__。 #include ”stdio.h ” main() { int k; k=3; switch(k) { case 1: printf(”%d\n ”, k++); case 2: printf(”%d\n ”, k++); case 3: printf(”%d\n ”, k++); case 4: printf(”%d\n ”, k++); break; default: printf(”Full!\n ”); } } A 、3 B 、4 C 、3 D 、4 4 4 14、设a 、b 、c 、d 、m 、n 均为int 型变量,且a=5、b=6、c=7、d=8、 m=2、n=1,则逻辑表达式(m==a=10) break; if (b%3==1) { b+=3; continue; } }

printf("%d\n",a); } A 、4 B 、6 C 、5 D 、101 17、执行以下程序后输出的结果是___D__。 main()

{ int y=10; do {y--;}

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

A 、-1

B 、1

C 、8

D 、0

18、执行以下程序后输出的结果是___B__。 main()

{int i, j, w=0; for(i=4; i; i--) for(j=1;j<=2;j++) w=w+i*j; w=i*j;

printf("%d\n",w); } A 、4 B 、0 C 、1 D 、30 19、以下程序运行后,输出结果是__C__。 main() { int n[5]={3,3,3},i,k=2; for(i=0;i

n[i]=n[i]+1; printf("%d\n",n[k]);

} A 、4 B 、9 C 、3 D 、不确定的值 20、以下程序的输出结果是 __A__ 。 f ( int a)

{int b=0; static int c = 3; b++; c++;

return(a+b+c); } main() {int a = 2, i; for(i=0;i<3;i++) printf("%d\n",f(a)); } A 、 7 B 、 7 C 、 7 D 、 7 8 9 10 7 9 11 13 7 21、设C 程序如下: #define ABC(x) x*x #include"stdio.h" main() {int a=3,b; b=ABC(a+1); printf("b=%d", b); } 上述程序运行输出的结果是__D_ 。 A 、b=4 B 、b=a+1 C 、b=16 D 、b=7 22、以下程序的输出结果是__B__。 main() {int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d %d %d",a[1],a[6],a[9]); } A 、 1 6 9 B 、9 4 1 C 、9 6 1 D 、3 5 7 23、若定义:float x=3.14159,*p=&x; 则printf("%f\n",*p++);的输出结果为__C__ 。 A 、无确定值 B 、x 的地址 C 、 3.14159 D 、4.14159 24、以下程序的输出结果是___B__ main() {char b[]="Language"; char *p=b; printf("%c ",*(b+2)); p=p+7; printf("%c\n",*p++); } A 、2 7 B 、n e C 、a g D 、n u 25、下列程序的输出结果是___A__。 #include "stdio.h" main() { int a[]={1,2,3,4,5,6,7,8,9,0}, i, s, *p; p=a;s=0; for(i=0;i<=9;i++) s+=*p++; printf("%d\n", s); } A 、45 B 、44 C 、0 D 、9 二、判断题(每小题1分,共10分) 1.语句int *point ;中的point 是指针变量名。( T ) 2.主函数和其它函数之间可以相互调用。( F ) 3.puts( )和gets( )函数只能输入或输出一个字符。( F ) 4. 可以对字符型数组元素进行整体输入、输出。( T ) 5.do-while 语句构成的循环不能用其他语句构成的循环来代替。( F ) 6.在一个函数内的复合语句中定义的变量可以在本函数范围内有效。(F ) 7.函数必须有返回值,否则不能使

用函数。( F ) 8.for(;;);语句相当于while(1);语句。( T ) 9.C 程序的执行总是从第一个定义的函数开始。( F ) 10.C 语言中的关键字专门用作语言的特定成分,而不能作为一般标识符使用。( T ) 三、程序填空题(每空2分,共10分) 1、下面程序完成判断某一个数m 是否为素数,如果是则输出"m is a prime!",否则就输出"m is not a prime!",请选择填空。 main() { int i, m; scanf("m=%d", &m); for(i=2; i void main() { int i, j, k, w, count = 0; for( (3) ; i<=9; i++) for(j=0;j<=9; j++) for(k=0; k<=9;k++) if( (4) ) { w =

i*100+j*10+k; if( (5) ) count++; } printf("\n count=%d\n", count); } (3)、 A 、i=0 B 、i=1 C 、i=9 D 、i=-1 (4)、 A 、i!=j B 、i!=j ||j!=k C 、i!=j&& j!=k D 、i!=j&& j!=k && k!=i (5)、 A 、w%13=0 B 、w/13=0 C 、w%13==0 D 、w/13==0 四、编程题(第1小题12分,第2小题18分,共30分) 1、从键盘输入一个4位数的正整数n ,将该数反序输出。例如,若输入的是

1357,则输出的是7531。 要求:1)利用VC++编译系统进行

调试、运行

2)对输入的正整数n 的合

法性进行检查 3)将源程序以“编程题

1.c ”为文件名保存在

网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他地方均不能得分

2、已知一组字符串a[27]="jjyyzzabcdefgJJYYZZABC DEFG"; 请编一程序,将其 中的小写字母换成其前一个字母,即z 换成y,y 换成x,...,b 换成a ,

若是a则换成z。然后对数组a[27]从小到大排序,并输出排序后的字符串。

要求:1)利用VC++编译系统进行调试、运行

2)先输出原字符串(即未做任何改变的字符串),最后输出排序后

的字符串

3)将源程序以“编程题

2.c”为文件名保存在网络

盘(K:盘)的考生文件夹

上,用其它文件名保存或

保存在其他地方均不能得

C语言易错点常考点总结

C语言易考点易错点总结 运算符的优先级及结合方向: 常见算法: 1.最大公约数,最小公倍数(x,y) int r; r=m%n; while(r!=0){ m=n; n=r; r=m%n;} 此时n为最大公约数,(x*y)/n为最小公倍数2.判断是否为素数(n) int i,j,k;

k=(int)sqrt(n)+1; if(n==2) //打印是素数 if(n!=2){ for(i=2;i<=k;i++){ j=n%i; if(j==0) break;} if(i struct student{ int num;}; void main(){ void sort(struct student *p[],int n); struct student stu[5],*ps[5]; int i; for(i=0;i<5;i++) ps[i]=&stu[i]; sort(ps,5); for(i=0;i<5;i++) printf(“%d ”,ps[i]->num);} void sort(struct student *p[],int n){ int i,j,k; struct student *t; for(i=0;inum>p[k]->num) k=j; //升序:只需p[j]->numnum即可if(k!=i){ t=p[i];p[i]=p[k];p[k]=t;} } 2)冒泡排序法(降序) #include struct student{ int num;};

江苏大学大一c语言期末复习题汇总

选择题1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.Void C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D. 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=; B.double b=1+; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s)

计算机二级C语言高效考点

计算机二级C语言高效考点 2017年计算机二级C语言高效考点锦集 C语言基本知识 【考点1】C程序 C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选 择结构(if和switch) 【考点2】main函数 每个C语言程序中main函数是有且只有一个。读程序都要从 main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做 选择)。 【考点3】存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八 个位。数据存放的位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行, 注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 【考点7】实型数据 实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。 2.333e-1就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。 【考点8】字符 字符数据的合法形式:: '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。 字符型和整数是近亲: chara=65; printf(“%c”,a);得到的输出结果:a

高中化学易错知识点总结

高中化学易错知识点总结 高中化学易错知识点总结 “元素化合物”知识模块 1.碱金属元素原子半径越大,熔点越高,单质的活泼性越大 错误,熔点随着原子半径增大而递减 2.硫与白磷皆易溶于二硫化碳、四氯化碳等有机溶剂,有机酸则较难溶于水 3.在硫酸铜饱和溶液中加入足量浓硫酸产生蓝色固体 正确,浓硫酸吸水后有胆矾析出 4.能与冷水反应放出气体单质的只有是活泼的金属单质或活泼的非金属单质 错误,比如2Na2O2+2H2O→O2↑+4NaOH 5.将空气液化,然后逐渐升温,先制得氧气,余下氮气 错误,N2的沸点低于O2,会先得到N2,留下液氧 6.把生铁冶炼成碳素钢要解决的主要问题是除去生铁中除Fe以外各种元素,把生铁提纯 错误,是降低生铁中C的百分比而不是提纯 错误,自然界钾元素含量不低,但以复杂硅酸盐形式存在难溶于水 8.制取漂白色粉末、配制波尔多液以及改良酸性土壤时,都要用到熟石灰

正确,制取漂白色粉末为熟石灰和Cl2反应,波尔多液为熟石灰和硫酸铜的混合物 9.二氧化硅是酸性氧化物,它不溶于酸溶液 错误,SiO2能溶于氢氟酸 10.铁屑溶于过量盐酸,再加入氯水或溴水或碘水或硝酸锌,皆 会产生Fe3+ 错误,加入碘水会得到FeI2,因为Fe3+的氧化性虽然不如 Cl2,Br2,但是强于I2,在溶液中FeI3是不存在的 11.常温下,浓硝酸可以用铝罐贮存,说明铝与浓硝酸不反应 错误,钝化是化学性质,实质上是生成了致密的Al2O3氧化膜保护着铝罐 12.NaAlO2、Na2SiO3、Na2CO3、Ca(ClO)2、NaOH、C17H35COONa、C6H5ONa等饱和溶液中通入CO2出现白色沉淀,继续通入CO2至过量,白色沉淀仍不消失 错误,Ca(ClO)2中继续通入CO2至过量,白色沉淀消失,最后得 到的是Ca(HCO3)2 13.大气中大量二氧化硫来源于煤和石油的燃烧以及金属矿石的 冶炼 正确 14.某澄清溶液由NH4Cl、AgNO3、NaOH三种物质混合而成,若加入足量硝酸必产生白色沉淀 正确,NH4Cl、AgNO3、NaOH混合后发生反应生成[Ag(NH3)2]+加 入足量硝酸后生成AgCl和NH4NO3 15.为了充分利用原料,硫酸工业中的.尾气必须经净化、回收处理 错误,是为了防止大气污染

c语言期中考试试题及答案

《C语言程序设计》期中考试试卷 课程编号:03402513试卷类型:A卷考试形式:笔试考试日期: 注意事项:1.请将试卷最后一页的答题纸撕下,将答案填写在其中;2.交卷时请确认答题纸是否按要求写好姓名等信息并与试题一起上交;3.不准携带任何书籍、资料、纸张等。4.草稿纸用试卷的背面。 一、单项选择题(1空1分,共20分) 1、C语言程序的基本结构是(【1】) 。 【1】 A) 函数 B) 语句 C) 字符 D) 程序行 2、一个C程序的执行是(【2】) 。 【2】A) 从本程序的主函数开始,到本程序的主函数结束 B)从本程序的第一个函数开始,到本程序的最后一个函数结束 C) 从本程序的主函数开始,到本程序的最后一个函数结束 D)从本程序的第一个函数开始,到本程序的主函数结束 3、下列四个叙述中,错误的是(【3】) 。 【3】 A) 一个C源程序必须有且只能有一个主函数 B) 一个C源程序可以含一个或多个子函数 C) 在C源程序中注释说明必须位于语句之后 D) C源程序的基本结构是函数 4、下面不属于C语言保留字的是(【4】) 。 【4】 A) short B) ELSE C) extern D) for 5、下列四个叙述中,正确的是(【5】) 。 【5】 A) 库函数也是C语言本身的组成部分 B) C语言中的输入输出操作是由相应语句完成的 C) 库函数是C编译系统提供的功能函数 D) 标题文件(头文件)可以在程序的函数内部调用 6、下列四组数据类型中,C语言允许的一组是(【6】)。 【6】 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、双精度型、布尔型 D) 整型、实型、复型 7、在C语言中不同数据类型的的长度是(【7】)。 【7】 A) 固定的 B) 由用户自己定义的 C) 任意的 D) 与机器字长有关

谭浩强C语言知识点总结

谭浩强C语言知识点总 结 文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)

C语言最重要的知识点总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI ; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---?.obj---?.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次)

高中化学易错知识点总结

高中化学易错知识点总结 1、羟基就是氢氧根 看上去都是OH组成的一个整体,其实,羟基是一个基团,它只是物质结构的一部分,不会电离出来。而氢氧根是一个原子团,是一个阴离子,它或强或弱都能电离出来。所以,羟基不等于氢氧根。 例如:C2H5OH中的OH是羟基,不会电离出来;硫酸中有两个OH也是羟基,众所周知,硫酸不可能电离出OH-的。而在NaOH、Mg(OH)2、Fe(OH)3、Cu2(OH)2CO3中的OH就是离子,能电离出来,因此这里叫氢氧根。 2、Fe3+离子是黄色的 众所周知,FeCl3溶液是黄色的,但是不是意味着Fe3+就是黄色的呢?不是。Fe3+对应的碱Fe(OH)3是弱碱,它和强酸根离子结合成的盐类将会水解产生红棕色的Fe(OH)3.因此浓的FeCl3 溶液是红棕色的,一般浓度就显黄色,归根结底就是水解生成的Fe (OH)3导致的。真正Fe3+离子是淡紫色的而不是黄色的。将Fe3+溶液加入过量的酸来抑制水解,黄色将褪去。 3、AgOH遇水分解 我发现不少人都这么说,其实看溶解性表中AgOH一格为“—”就认为是遇水分解,其实不是的。而是AgOH的热稳定性极差,室温就能分解,所以在复分解时得到AgOH后就马上分解,因而AgOH 常温下不存在。和水是没有关系的。如果在低温下进行这个操作,是可以得到AgOH这个白色沉淀的。 4、多元含氧酸具体是几元酸看酸中H的个数。 多元酸究竟能电离多少个H+,是要看它结构中有多少个羟基,非羟基的氢是不能电离出来的。如亚磷酸(H3PO3),看上去它有三个H,好像是三元酸,但是它的结构中,是有一个H和一个O分别和中心原子直接相连的,而不构成羟基。构成羟基的O和H只有两个。因此H3PO3是二元酸。当然,有的还要考虑别的因素,如路易斯酸H3BO3就不能由此来解释。 5、酸式盐溶液呈酸性 表面上看,“酸”式盐溶液当然呈酸性啦,其实不然。到底酸式盐呈什么性,要分情况讨论。如果这是强酸的酸式盐,因为它电离出

c语言易错知识点总结[工作范文]

c语言易错知识点总结 篇一:c语言易错知识 C语言教学中学生容易出错的知识点解析 0引言 C语言是一种很灵活的语言,在程序调试过程中常常会 遇到一些难解决的问题,一般语法错误计算机能检测出来, 而逻辑错误计算机则检测不出来。这给教师的教学带来比较 多的麻烦,也大大削减了学生学习的自信心。本文结合笔者多年教学经验,把学生容易出错的知识点进行总结,以供C 语言教学参考。1教学实例 以下实例均在Turbo C环境下调试运行。 递增(减)运算符的表达式 例如:i=3,a=(++i)+(++i)+(++i); 大多数学生都知道i++和++i的最终结果都是使i的值加1,但i++和++i作为表达式的用途是不一样的,++i是“先加后用”,i++是“先用后加”。上面的题目是“++”运算 符最典型的应用,其中a的结果是18,而不是有些书上分析的 4+5+6=15。因为在这里要考虑运算符的优先级,很显然 “ ++” 的优先级高于“ +”。若是“ i=3,a=(++i)+(++i)+(++i) ”则a结果是9,而两者最终的i值都将自增3即为6。“一” 运算符

和“ ++”运算符使用方式一样,不再赘述。 输入语句中缺取址符& 例如:scanf( “ %d ,x); 这一语句错在x前缺取址符,导致输入的数值没有赋给变量x,所以结果出错。再如:char a[10];scanf( “%S,&a); 有学生想,输入语句的输入变量前一定要加取址符,所以这个语句里加了取址符,肯定不会出错。而结果却又恰恰错了,这是为什么呢?因为a在这里既表示数组名字,又表示数组首地址,它本身已经代表了地址,所以就不用再加取址符了。解决此类问题的办法就是在使用输入语句的时候要仔细观察,什么时候该加取地址符号,什么时候不该加,一定要搞清楚。 逻辑运算符&&和位运算符&相混淆 例如:if(x&y) xx人员此判别条件的本意是将x和y的“与” (&&)运 算结果作为条件。程序运行时,并不出错,但是结果却不对。原因是误用按位“与”运算符&替代了“与”运算符&&这 种错误初学者很容易犯,但是又十分隐秘,在某些特殊情况下甚至可以得出正确的结果,所以更具有迷惑性。位运算符是C语言独特的一种运算符,其中“&”表示对两个操作数 按二进制位进行“与”运算,规则是:0&0=0,0&1=0,1 &0=0,1 &1=1。如6&5=4,其中6 变为00000110,5变为00000101,按位“与”运算的结果为100即4。

大一C语言期末考试试题

6.以下程序的输出结果为(D)。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case ‘a’:printf("%c,",c);break; case ‘b’:case ‘e’:printf("ok,"); default: printf("end"); } } } A a,ok,end B a,ok,endend C a,ok,end,end D a,ok,ok 9.以下程序的输出结果为(B)。 #define A 3 #define B(a) (A+1)*a main() { int x; x=3*A+B(7); printf("x=%d\n",x); } A x=93 B x=37 C x=60 D x=90 三写出下列程序的运行结果(10分,每小题2分) 1.main( ) { char c1=‘A’,c2=‘\144’,c3=‘\x44’,c=0xf5,x=13,a; int i=0122,j=0xa4; printf(“c1=%c,c4=%c\tc5=%c\n”,c1,c2,c3); printf(“%d,%d\n”,i,j); i=-34; j=20; printf(“%d,%d,%d\n”,i%j,i&j<<2,sizeof(j)); printf(“c=%d\n”,c|x); a=c^x<<2;

printf(“a=%d\n”,a); } 2.main() { int x,y=1,z=10; if(y!=0) x=5; printf(“x=%d\t”,x); x=1; if(z<0) if(y>0) x=3; else x=5; printf(“x=%d\n”,x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(“x=%d\t”,x); printf(“z=%d\n”,z); } 3.main( ) { char s[20]=“I like it.”,t[20]=“Are you?”,c[20]; int i=0; while(s[++i]!=‘\0’) t[i]=s[i]; t[i]=0; printf(“string s:%s\n”,s); printf(“string t:%s\n”,t); } 4.int i=5; main( ) { int i=3; { int i=10; i++; printf(“%d\n”,i);

C语言知识点总结 完美版

PS这个文档是我从百度文库找的,其中存在一些错误在我能力范围之内的已被纠正过来了,并且有些内容我做了适当的修改。来不及复习的同学如果觉得书太多懒得看,可以看看这个,已经复习的同学也可以查漏补缺哈。复习的话建议书本加网上作业。预祝大家考试过过过! C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种:顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是它的地址. 4)bit是位是指为0或者1。byte是指字节,一个字节=八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI3.1415926;这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。(但能嵌套调用) 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。(continue不能用于switch语句) 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。

9易混易错知识点汇总

易混易错知识点总结 一、人民当家作主 1.在我国,一切权力属于【人民】 3.有立法权、人事任免权和重大事项决定权×。【全国人民代表大会】 4. 【全国人民代表大会】是我国最高权力机关。 5【人民代表大会制度】是我国的根本政治制度。 6. 【各级人民代表大会】是我国的权力机关。 7.人民代表大会制度是我国的【根本政治制度】 8.我国公民有直接参加国家管理的民主权利。× 二、我国的经济成分 1. 【公有制经济】是我国经济的主体。【公有制经济】是我国社会主义经济制度的基础。 2. 【国有经济】是我国经济的主导。 4.非公有制经济是社会主义市场经济的重要组成部分。 5【国有经济】控制着我国国民经济的命脉。 三、中国走向世界 1.改革开放是我国长期坚持的一项基本国策。×【对处开放】 2.中国是维护世界和平与稳定的决定力量(领导力量、主宰力量、控制力量)。×【重要力量(、坚定力量、中坚力量)】 3.中国在国际事务中发挥着决定力量(领导力量、主宰力量、控制力量)。×【重要力量(、坚定力量、中坚力量)】 四、社会主义初级阶段 1.人口多、底子薄是我国的基本国情。×【处于并将长期处于社会主义初级阶段】 2.“三个代表”重要思想是我国的立国之本。×【四项基本原则】 3.对外开放是强国之路,是社会主义建设的活力源泉、不竭动力。×【改革开放】 4.党和国家始终把民生问题、人民的切身利益放在一切工作的首位(首要工作、中心工作、工作中心、工作重心、工作重点)。×【以经济建设为中心,大力发展生产力】 5.我国的根本任务是实现共同富裕。×【集中力量进行社会主义现代化建设(以经济建设为中心,大力发展生产力)】(共同富裕是社会主义的根本目的和根本原则,不是根本任务) 6.解决我国所有问题的关键(最重要、最根本的)是共同富裕。×【发展(以经济建设为中心,大力发展生产力)】 共同富裕、公平正义、科技成就、人与自然 1.党和国家的各种措施有利于实现各族人民的同步富裕(同等富裕、同时富裕)。×【共同富裕】 2.党和国家致力于维护社会的绝对公平与正义。×【“绝对”删去(公平是相对的,没有绝对的公平)】 3.我国的科技实力不断增强,已经跻身于世界先进行列。×【部分(某些)领域已经跻身世界先进行列。】 4.我们要战胜自然、改造自然,走可持续发展道路。×【人与自然和谐相处】 六、法治的国家 1.依法治国是党领导人民治理国家的基本国策。×【基本方略(治国方略)】 2.依法治国的主体是中国共产党(全体公民)。×【广大人民群众】 3.最有效、最可靠最重要的规则是道德。×【法律】 4.依法治国和以德国(法律和道德),依法治国(法律)更重要,更有效。×【两者相辅相成,同等重要、缺一不可。】

大一上学期C语言期末复习总结和模拟试题带答案

易错点 C语言中易犯的错误 对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考. ******************************** ******************************** ************************ 1.书写标识符时,忽略了大小写字母的区别. main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息. C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量 名用大写,变量名用小写表示,以增加可读性. ******************************** ******************************** ************************ 2.忽略了变量的类型,进行了不合法的运算. main() { float a,b; printf("%d",a%b); } %是求余运算,得到a/b的整余数.整型变量a和b可以进行求余运算,而实型变量则不允许进行"求余"运算. ******************************** ******************************** ************************ 3.将字符常量与字符串常量混淆. char c; c="a"; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单 引号括起来的单个字符,字符串常量是一对双引号括起来的字符序 列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所 以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一 个字符变量是不行的. ******************************** ******************************** ************************ 4.忽略了"="与"=="的区别. 在许多高级语言中,用"="符号作为关系运算符"等于". 如在BASIC程序中可以写 if (a=3) then … 但C语言中,"="是赋值运算符,"=="是关系运算符.如: if (a==3) a=b; 前者是进行比较,a是否和3相等,后

大学大一C语言程序设计期末考试试卷和答案

四川师范大学计算机科学学院 2012~2013学年度第二学期期末考试 C 语言程序设计试卷 试卷A 答卷说明: 1、 本试卷共6页,答题纸3页,4个大题,35个小题,满分100 分,120分钟完卷。 2、 闭卷考试,所有的答案都必须写在答题纸上,判卷以答题纸上 答案为准。 3、 本试卷适用于2011级1、2、3班。 一、 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的 序号填在题干的括号内。每小题1分,共20分) 1、 在C 语言中,下列标识符中合法的是( ) A). -int B). in1_3 C). A_B!D D). const 2、 不属于C 语言基本数据类型的是( ) A). int B). union C). char D). unsigned 3、 下面是对宏定义的描述。不正确的是( ) A). 宏不存在类型问题,宏名无类型,它的参数也无类型 B). 宏替换不占用运行时间 C). 宏替换只是字符串的简单替代 D). 宏替换时先检查类型,类型一致时才可以替换 4、 C 语言中,″\\xfds ″在内存中占用的字节数是( ) __________________学院__________级___________班 姓名_______________ 学号_______________ ………………………………(密)………………………………(封)………………………………(线)……………………………… 密 封 线 内 答 题 无 效

A).3 B).4C).5D).6 5、设int x;则执行printf(″%x\n″,~x^x);的结果是() A). ffffffff B). ff C).0D). 1 6、对于while语句,错误的说法是() A).用条件控制循环体的执行次数B).循环体至少要执行一次 C).循环体有可能一次也不执行D).循环体中可以包含若干条语句 7、执行下列语句后输出的结果是() int a=8,b=7,c=6; if(ac){a=c;c=b;} printf("%d,%d,%d\n",a,b,c); A).6,7,7B).6,7,8C).8,7,6D).8,7,8 8、设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是() A).9,19B).9,20C).10,19D).10,20 9、设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么() A).x数组的长度等于y数组的长度B).x数组的长度大于y数组的长度 C).x数组的长度少于y数组的长度D).x数组与y数组的存储区域相同 10、设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).147B).159C).357D).369 11、执行完下列语句后,n的值是() int n; for (n=0 ; n<100 ; n=2*n+1); A).125B).126 C).127D).128 12、有以下语句:int a=6;a+=a-=a*a;printf(“%d”,a);输出结果() A).–132 B).–60 C). -24 D). 0 13、为了连接两个字符串s1与s2,应当使用() A). strcat( s1,s2 ) B). strcpy( s1, s2 ) C). strlen( s1, s2 ) D). strcmp( s1, s2 ) 14、设int a,*p;则语句p=&a;中的运算符“&”的含义是() A).位与运算B).逻辑与运算C).取指针内容D).取变量地址 15、下面输出的结果为() i nt a=13, b=64; printf(“%d\n”, !a || (b>>3) );

C语言基础知识整理

C 语言基础知识 1. 每个C 程序有且只有一个主函数main() ,且程序必须从main() 函数开始执行,并在main() 函数中结束。 2. 在C语言中,用e来表示科学计数法时,规定在e的前面必须有数字,后面必须为整数。 3. 用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。 4. 外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。 5. 在一个函数内的复合语句中定义的变量,只能在这个复合语句范围内有效。 6. 用sizeof(int) 计算int 类型数据的字节数。 7. C语言运行时,首先系统检查语法的正误,再运行程序的语法;C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8. 预处理命令行的位置没有规定,只是习惯放在前面;在源文件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空 间。 9. feo f函数的作用是检查文件是否结束,当结束时返回的值为非零,否则为零。 10. 当定义了数组后,在给其赋值时,不能直接把字符串赋给数组名。 11. 在赋值表达式中,赋值运算符"=”右侧不能为表达式;在求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12. 静态局部变量,只有当程序结束后,其值才释放。 13. 当调用函数时,实参是一个数组名,则向函数传送的是数组每一个元素的地址。 14. 算法的特点为有零个或多个输入,有一个或多个输出,当相同的输入时,其结果相同;算法 正确的程序最终一定会结束。15. 在 C 语言中,预处理命令行都以“#”开头;当需要时才用 #include; 预处理的作用就是实现宏定义和条件编译。16. 当数组元素的下标超出了定义 的下标范围时,系统不给出“下标越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17. 共用体变量不能作为函数的参数,也不能使函数带回共用体变量。 18. 指向函数的指针变量的定义形式为:数据类型(* 指针变量)();,因此其为指向函数的 指针变量。 19. 用C 语言编写的代码程序是源程序,只有通过编译、连接才能进行。 20. 在说明为static 时,其生存期得到延长,而其作用域并没有改变,在定义后系统会自动帮它赋值为0,static 为关键字不能被用作它用。 21. 频繁地使用空语句会降低程序的可读性和运算速度。22. 运算符%两边都应是整数,赋值语 句左边应该是变量,而非表达式,强制转换语句强制类型应加括号。 23. 在逻辑运算符中,其两侧的运算符对象为任意合法的表达式即可。 24. 函数fread (&larray,2,16,fp)的功能是,从fp所指的数据文件中读取16次2字节的数据 存储到数组larray中。25.整个流式文件也可以随机存取数据,C语言文件中有好多函数可以达 到写入数据时,未经输入数据,达到不覆盖的目的,在进行写操作时,系统会自动关闭文件。 26. 使用putchar、getchat、puts、gets、printf、seanf函数时,必须在程序的开头岀现包含头文件 #inelude "stdio.h ”的命令行,而使用字符串处理函数时,必须在程序的开头岀现包含头文件 #include”string.h ”命令行,而使用数学函数时,必须在程序的开头岀现包含头文件#include”math.h” 的命令行。 27. 一个斜杠与小于等于127 任意数字按一个字符计算,一个斜杠与任意一个字符按一个字符计 28. 一个C 程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C 语言程序可以实现

语文易错知识点汇总

语文易错知识点汇总一易错的字音字词易错读音1 ǐ)户q)绮(nún tùh)馄饨(nùn dùhì)灯混沌(chǐ)梁白炽(j脊()头攻讦(núx噱()喷nēp)沱大雨香喷喷(ngāp)滂(èxié)跑马卖解(ji )气íp)头倔脑倔脾(èju)倔(?uq?gé)强枸杞(ju)香倔(nèp()然iěfù)立斐(chù)立矗(zhì)古不化伫(nú)撼树泥(fíp蚍蜉()闻iēfì)子手绯(gu)刽(iàkuú)市侩(rèni嗫嚅(易错多音字2 炮、菲易错词语3 平心而论挖墙脚老生常谈明信片食不果腹大满贯启事文身亟待爆冷门凑合履新埋单出其不意出奇制胜挑肥拣瘦=一如既往继往开来捡(拾取)拣(挑选)买单工力悉敌前事不忘,后事之师顶礼膜拜倾轧毋庸置疑荟萃萃取易错词义4 没工夫)-武术)工夫(时间/罚不当罪(罚重了)功夫(同工夫完成某项工作的人力)/功效)工力(力量和本领/功力(功夫和力量二易错的病句类型)搭配、用词不当1(,关键时期长身体、长知识,形成人生观、世界观的正是(正处在)青年学生1教育部门、学校领导和有关组织对他们的双休日是该好好关心一下了。读者在学习英语句型方面起举一反三的作用。引导(对)本书作者希望本书能2,她纵横,对她来说,

是一次史无前例的的“长征”医学尖端—癌症攻克当代3。医学独创自己的提出中西,博采众长,千年求索,推陈出新,,有鲤鱼跳)岁月verb蹉跎(和青春往事了自己的自述在这本新书里,冯小刚4龙门,有对生活的坦白,更有对朋友的怀念。。兴趣(?)和浓厚的关心了极大的表示科技界的同志对这一问题5(多重否定)收集邮票。无时无刻不忘小李是个集邮迷,他6还可以发展到特点但研究人员认为其微型超微型电脑已经尽显了巨大的魅力,7。更高水平。倍1~2下降了夏季即将来临,空调的价格愈演愈烈,有的品牌价格甚至8胜利凯旋拿破仑远征西班牙后9 。把文化思维方式和表达方式的思维训练提前到中学教育阶段,已是人们的共10 。人生发展规律,而且要更加重视尊重人生价值的实现识,创新教育不仅要(关联词递进关系错误),在民间的影响如日中天,所近几年,易中天因做客中央电视台“百家讲坛”11 到许多高校发表演讲深受学生欢迎。被应邀(应邀就有被动含义)以常,对其他高新技术以及高新技术代表当代最高水平的成为(作为)航天技术12 就能产生无法他一旦转化为现实生产力,经济社会的发展具有很强的带动作用,估量的经济效益。,

C语言学习知识常考的知识点

C语言常考的知识点:总体上必须清楚的: 1)程序结构是三种:顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 5)一定要记住二进制如何划成十进制。 概念常考到的: 1、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、每个C语言程序中main函数是有且只有一个。 3、在函数中不可以再定义函数。 4、算法的是一定要有输出的,他可以没有输入。 5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。 第一章 1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。

大一c语言期末考试题

大一c语言期末考试题 C语言期末考试试题附答案 一选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c;

C语言知识点总结【完美版】

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。 C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)(程序编辑-程序编译-程序连接-程序运行) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字(保留字)、预定义标识符、用户定义标识符。关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。(关键字都是小写) 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所

相关文档
相关文档 最新文档