文档库 最新最全的文档下载
当前位置:文档库 › C语言题库(有答案)

C语言题库(有答案)

C语言题库(有答案)
C语言题库(有答案)

C语言期中测试

3.2 填空题:

1.当输入19,2,21时下列程序运行的结果是_________。

main()

{int a,b,c,max;

printf("please scan three number a,b,c:\n");

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

max=a;

if(max

if(max

printf("max is:%d",max);

}

2.若输入字母C,程序输出结果为【1】;若输入字符*,程序将【2】。

#include

main()

{char c1,c2;

c1=getchar();

while(c1<97||c1>122)c1=getchar(); c2=c1-32;

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

}

3.以下程序运行的结果为________。main()

{ int a,b,c,x,y,z;

a=10;b=2;

c=!(a%b);x=!(a/b);

y=(a=0);

z=(a=0);

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

}

4.若输入4,程序运行结果为【 1 】,若输入-4,运行结果为【 2 】,若输入10,运行结果为【 3 】.

main()

{ int x,y;

scanf("%d",&x);

if(x<1)

{ y=x;

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

} else if(x<10)

{ y=2*x-1;

printf("x=%d,y=2*x-1=%d\n",x,y);

}

else

{ y=3*x-11;

printf("x=%d,y=3*x-11=%d\n",x,y);

}

}

5.以下程序运行的结果________。

main()

{int i=1,sum=0;

loop:if(i<=10)

{sum+=i;

i++;

goto loop;

}

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

}

6.以下程序运行的结果________。

main()

{ int x=2,y,z;

x*=3+1;

printf("%d,",x++);

x+=y=z=5;

printf("%d,",x);

x=y==z;

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

}

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

#include

#include

main()

{int i,k,m,n=0;

for(m=1;m<=10;m+=2)

{ if(n%10==0)printf("\n");

k=sqrt(m);

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

if(m%i==0)break;

if(i>k)

{printf("%2d",m);

n++;

}

}

}

8.如果输入‘1’,‘2’,‘3’,‘4’,程

序运行输出的是________。

#include

main()

{char c;

int i,k;

k=0;

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

{while(1)

{ c=getchar();if(c>='0'&&c<='9')br

eak;}

k=k*10+c-'0';

}

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

}

9.运行以下程序后,如果从键盘上输入

china#<回车>,则输出结果为________。

#include

main()

{int v1=0,v2=0;

char ch;

while ((ch=getchar())!='#')

switch(ch)

{case 'a':

case 'h':

default: v1++;

case '0':v2++;

}

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

}

10.程序运行结果是_________。

#include

main()

{int i;

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

{ if(i>4){printf("%d\t",i++);break

;}

printf("%d\t",i++);

}

}

1.答案:21

2.答案:【1】c C 【2】

等待继续输入,直到输入小写字母。3.答案:1,0,0,1

4.答案:【1】x=4,y=2*x-1=7 【2】x=-4,y=x=-4 【3】x=10,y=3*x-11=19

5.答案:55

6.答案:8,14,1

7.答案:1 3 5 7

8.答案:1234

9.答案:5,5

10.答案:1 3 5

20.下列程序计算平均成绩并统计90分及以上人数。

main()

{int n,m;

float grade,average;

average=n=m=【1】;

while(【2】)

{ scanf("%f",&grade);

if(grade<0)break;

n++;

average+=grade;

if(grade<90)【3】;

m++;

}

if(n)printf("%.2f%d\n",average/n,m );

}

21.下列程序计算Fibonacci数列:1,1,2,3,5,8,13……的前40项。main()

{int I;long f1,f2;

【1】;

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

{ printf("%12ld%12ld",f1,f2);

if(I%2)printf("\n");

f1+=f2;

【2】;

}

}

22.下列程序判断一个数是否为素数。#include

#include main()

{int I,k,m;

scanf("%d",&m);

k=sqrt(【1】);

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

if(m%I==0)【2】;

if(【3】)printf("%dyes\n",m);

else printf("%dno\n",m);

}

20.答案:【1】0 【2】1

【3】continue

21.答案:【1】f1=1;f2=1 【2】f2+=f1

22.答案:【1】m 【2】break

【3】I>=k+1

24.从键盘上输入两个整数m和n,求其

最大公约数。

main()

{int a,b,num1,num2,temp;

scanf("%d,%d",&num1,&num2);

if(【1】)

{ temp=num1;

num1=num2;

num2=temp;

}

a=num1;b=num2;

while(b!=0)

{ temp=【2】;

a=b;

b=temp;

}

printf("%d,%d",a,num1*num2/a);

}

24.答案:【1】num1>num2 【2】a%b

四、关于数组

4.1 选择题

1. 以下关于数组的描述正确的是( )。

A. 数组的大小是固定的,但可以有不同

的类型的数组元素

B. 数组的大小是可变的,但所有数组元

素的类型必须相同

C. 数组的大小是固定的,所有数组元素

的类型必须相同

D. 数组的大小是可变的,可以有不同的

类型的数组元素

2. 以下对一维整型数组a的正确说明

是( )。

A.int a(10);

B. int n=10,a[n];

C.int n;

D. #define SIZE 10

scanf("%d",&n);

int a[SIZE];

int a[n];

3. 在C语言中,引用数组元素时,其

数组下标的数据类型允许是( )。

A. 整型常量

B. 整型表达式

C. 整型常量或整型表达式

D. 任何类型的表达式

4. 以下对一维数组m进行正确初始化

的是( )。

A. int m[10]=(0,0,0,0) ;

B. int m[10]={ };

C. int m[ ]={0};

D. int m[10]={10*2};

5. 若有定义:int bb[ 8];。则以下

表达式中不能代表数组元bb[1]的地址

的是( )。

A. &bb[0]+1

B. &bb[1]

C. &bb[0]++

D. bb+1

1. C

2. D

3. C

4. C

5. C

9. 执行下面的程序段后,变量k中的值

为( )。

int k=3, s[2];

s[0]=k; k=s[1]*10;

A. 不定值

B. 33

C. 30

D. 10

10. 以下程序的输出结果是( )

main()

{

int i, a[10];

for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); } A. 258

B.

741 C. 852

D. 369

11. 以下程序运行后,输出结果是( )。 main() {

int n[5]={0,0,0},i,k=2; for(i=0;i

A. 不确定的值

B. 2

C. 1

D. 0

12. 以下程序运行后,输出结果是( )。 main() {

int y=18,i=0,j,a[8]; do

{ a[i]=y%2; i++; y=y/2; } while(y>=1); for(j=i-1;j>=0;j--) printf("%d",a[j]); printf("\n"); }

A. 10000

B. 10010

C. 00110

D. 10100

13. 以下程序运行后,输出结果是( )。 main() {

int a[10], a1[ ]={1,3,6,9,10}, a2[ ]={2,4,7,8,15},i=0,j=0,k; for(k=0;k<4;k++)

if(a1[i]

A. 1234

B. 1324

C. 2413

D. 4321

9. A 10. C 11. D 12. B 13. A

17. 若说明:int a[2][3]; 则对a 数组元素的正确引用是( ) 。

A. a(1,2)

B. a[1,3]

C. a[1>2][!1]

D. a[2][0]

18. 若有定义:int b[3][4]={0};则下述正确的是( ) 。 A. 此定义语句不正确 B. 没有元素可得初值0 C. 数组b 中各元素均为0

D. 数组b 中各元素可得初值但值不一定为0

19. 若有以下数组定义,其中不正确的是( ) 。

A. int a[2][3]; B int b[][3]={0,1,2,3}; C. int c[100][100]={0}; D.

int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 20. 若有以下的定义:int t[5][4];能正确引用t 数组的表达式是( )。

A. t[2][4]

B. t[5][0]

C. t[0][0]

D. t[0,0] 21. 在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。

A. 4

B. 1

C. 2

D. 5 22. 在定义int n[5][6]后第10个元

素是( )。 A. n[2][5] B. n[2][4] C. n[1][3] D. n[1][4] 23. 若二维数组c 有m 列,则计算任一元素c[i][j]在数组中的位置的公式为( )。

(假设c[0][0]位于数组的第一个位置)

A. i*m+j

B. j*m+i

C. i*m+j-1

D. i*m+j+1 24. 若有以下定义语句,则表达式

“x[1][1]*x[2][2]”的值是( )。 float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};

A. 0.0

B. 4.0

C. 5.0

D. 6.0

25. 以下程序运行后,输出结果是 ( )。 main() {

int

a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); }

A. 0650

B. 1470

C. 5430

D. 输出值不定 17. C 18. B

19. D 20. C 21. A 22. C 23. D 24. A 25. A

29. 下述对C 语言字符数组的描述中错误的是( )。

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

B. 字符数组中的字符串可以整体输入、输出

C. 可以在赋值语句中通过赋值运算符

"="对字符数组整体赋值 D. 不可以用关系运算符对字符数组中的字符串进行比较

30. 下述对C 语言字符数组的描述中正

确的是 ( )。

A. 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间

B. 一维数组的元素在引用时其下标大小没有限制

C. 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间

D. 一维数组的第一个元素是其下标为1

的元素 31. 不能把字符串:Hello!赋给数组b 的语句是( )。

A. char str[10]= {'H', 'e', 'l', 'l',

'o', '! '};

B. char str[10];str="Hello!";

C.

char

str[10];strcpy(str,"Hello!"); D. char str[10]="Hello!";

32. 合法的数组定义是( )。 A. int

a[]="string";

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

C. int

s="string";

D. char a[]={0,1,2,3,4,5}; 33. 下列语句中,不正确的是( )。 A.

static

char

a[2]={1,2}; B. static char a[2]={ '1', '2'};

C. static char a[2]={ '1', '2', '3'};

D. static char a[2]={ '1'}; 34. 若给出以下定义: char x[ ]="abcdefg"; char

y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。 A. 数组

x

和数组

y

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

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

D. 数组x 的长度小于数组y 的长度 35. 若有数组定义: char array [ ]="China"; 则数组 array 所占的空间为( )。

A. 4个字节

B. 5个字节

C. 6个字节

D. 7个字节 36. 若有定义和语句: char

s[10];s="abcd";printf("%s\n",s); 则结果是(以下└┘代表空格)( )。

A. 输出abcd

B. 输出 a

C. 输出abcd └┘└┘└┘└┘

D. 编译不通过

37. 下面程序运行后,输出结果是( )。 main() {

char ch[7]={ "65ab21"}; int i,s=0; for(i=0;ch[i]>= '0'&&ch[i]<=

'9';i+=2)

s=10*s+ch[i]- '0'; printf("%d\n",s); }

A. 12ba56

B. 6521

C. 6

D. 62

38. 运行下面的程序,如果从键盘上输入:123<空格>456<空格>789<回车>,输

出结果是( )。

A.

123,456,789 B. 1,456,789 C.

1,23,456,789 D. 1,23,456

main()

{ char s[100]; int c, i; scanf("%c",&c); scanf("%d",&i); scanf("%s",s);

printf("%c,%d,%s\n",c,i,s); }

30. A

31. B 32. D 33. C 34. C 35. C 36. D 37. C 38. D

46. 以下程序运行后,输出结果是( )。 main()

{ char

cf[3][5]={"AAAA","BBB","CC"}; printf("\"%s\"\n",ch[1]); }

A. "AAAA"

B. "BBB"

C.

"BBBCC" D. "CC" 47. 以下程序运行后,输出的结果是( )。 #include

#include main() { char

w[ ][10]={"ABCD","EFGH","IJKL","MN OP"},k;

for (k=1;k<3;k++) printf("%s\n",&w[k][k]); }

A. ABCD

B. ABCD

FGH EFG KL IJ

M

C. EFG

D. FGH

JK KL

O 46. B 47. D

1. C 语言中,数组元素的下标下限为

________。

2. C 程序在执行过程中,不检查数组下标是否________。

4. 下面程序的运行结果是________。 #define N 5 main() {

int a[N]={1,2,3,4,5},i,temp; for(i=0;i

a[i]=a[N-i-1];

a[N-i-1]=temp;}

printf("\n");

for(i=0;i

5. 以下程序以每一行输出4个数据的形式输出a 数组。 #include main() {

int a[20],i;

for(i=0;i<20;i++) scanf("%d",

【1】);

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

{if ( 【2】 ) 【3】 ; printf("%3d",a[i]); }

printf("\n"); } 1. 答案:0 2.

答案:越界

4. 答案:5 4 3 2 1

5. 答案:【1】&a[i] 【2】i%4==0 【3】printf("\n");

7. 以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。

main( ) {

float x[1000], sum=0.0, ave , a ;

int n=0, i ;

printf("Enter mark :\n");scanf("%f",&a);

while(a>=0.0&& n<1000) { sum+=【1】 ; x[n]= 【2】 ;

n++; scanf("%f",&a); }

ave=【3】 ; printf("Output :\n");

printf("ave=%f\n",ave); for (i=0;i

if ( 【4】 ) printf ("%f\n",x[i]); }

7. 答案:【1】a 【2】a 【3】sum/n 【4】x[i]

int i,j,min,temp,a[N]; for(i=0;i

for(i=0; 【2】; i++) {min=i;

for(j=i;j

if(a[min]>a[j]) 【3】 ; temp=a[i]; a[i]=a[min]; a[min]=temp; }

for (i=0;i

9. 答案:【1】&a[i] 【2】i

16. 以下程序段的输出结果是________。 main() {

char b[]="Hello,you"; b[5]=0;

printf("%s\n", b ); }

17. 若有以下程序段,若先后输入: English ↙

Good ↙

则其运行结果是________。 main() {

char c1[60],c2[3]; int i=0,j=0; scanf("%s",c1); scanf("%s",c2);

while(c1[i]!= '\0') i++;

while(c2[j]!= '\0') c1[i++]=c2[j++]; c1[i]= '\0'; printf("\n%s",c1); }16. 答案:Hello 17. 答案:EnglishGood 22. 设有下列程序: #include #include main() { int i;

char str[10], temp[10]; gets(temp);

for (i=0; i<4; i++) { gets(str); if

(strcmp(temp,str)<0)

strcpy(temp,str); }

printf("%s\n",temp); }

上述程序运行后,如果从键盘上输入(在此代表回车符):

C++ BASIC

QuickC Ada Pascal

则程序的输出结果是 ________。 23. 以下程序功能是:统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。 #include #include main( ) {

int num[26],i; char c;

for(i=0; i<26; i++) num[i]=0; while( 【1】 != '#') /*统计从终端输入的大写字母个数*/ if( isupper(c))

num[c-65]+=1; for(i=0;

i<26;

i++)

/*输出大写字母和该字母的个数*/

if(num[i])

printf("%c:%d\n",i 【2】 , num[i]); } 24. 下面程序段完成功能是:输出两个字符串中对应字符相等的字符。请填空。 char x[ ]= "language"; char y[ ]= "llngga"; int i=0;

while (x[i]!= 【1】 &&y[i]!= 【2】 ) { if (x[i]==y[i]) printf("%c", 【3】); else i++; }

22. 答案:QuickC

23. 答案: 【1】 (c=getchar()) 注意,外层括号不得遗漏 【2】 +65 或 +'A'

24. 答案:【1】 '\0' 【2】 '\0' 【3】 x[i++] 五、关于函数 5.1 选择题 1. C 语言是由( )构成。 A. 主程序和子程序 B. 主函数和若干子函数 C.

一个主函数和一个其他函数

D. 主函数和子程序

2.以下说法中正确的是()。

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

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

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

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

3.以下对C语言函数的有关描述中,正确的是()。

A. 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

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

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

D. C程序中有调用关系的所有函数必须放在同一个源程序文件中

4.C语言程序中,当函数调用时()。

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

B. 实参和形参共用一个存储单元

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

D. 计算机系统自动确定是否共用存储单元

5.关于return语句,下列正确的说法是()。

A. 在主函数和其他函数中均要出现

B. 必须在每个函数中出现

C. 可以在同一个函数中出现多次

D. 只能在除主函数之外的函数中出现一次

6.一个函数返回值的类型是由()决定的。

A. return语句中表达式的类型

B. 在调用函数时临时指定

C. 定义函数时指定的函数类型

D. 调用该函数的主调函数的类型7.在C语言的函数中,下列正确的说法是()。

A. 必须有形参

B. 形参必须是变量名

C. 可以有也可以没有形参

D. 数组名不能作形参

8.以下描述正确的是()。

A. 函数调用可以出现在执行语句

或表达式中

B. 函数调用不能作为一个函数的

实参

C. 函数调用可以作为一个函数的

形参

D. 以上都不正确

9.在调用函数时,如果实参是简单

变量,它与对应形参之间的数据传递方

式是()。

A. 地址传递

B. 单向值传递

C. 由实参传给形参,再由形参传回实参

D. 传递方式由用户指定

10.当调用函数时,实参是一个数组名,

则向函数传送的是()。

A. 数组的长度

B. 数组的首地址

C. 数组每一个元素的地址

D. 数组每个元素中的值

11.如果在一个函数的复合语句中定义

了一个变量,则该变量()。

A. 只在该复合语句中有效,在该复

合语句外无效

B. 在该函数中任何位置都有效

C. 在本程序的源文件范围内均有

D. 此定义方法错误,其变量为非法

变量

12.下列说法不正确的是()。

A. 主函数main中定义的变量在整

个文件或程序中有效

B. 不同函数中,可以使用相同名字

的变量

C. 形式参数是局部变量

D. 在一个函数内部,可以在复合语

句中定义变量,这些变量只在本复合语

句中有效

13.在一个源程序文件中定义的全局变

量的有效范围是()。

A. 本源程序文件的全部范围

B. 一个C程序的所有源程序文件

C. 函数内全部范围

D. 从定义变量的位置开始到源程

序文件结束

14.以下叙述中不正确的是()。

A. 在不同的函数中可以使用相同

名字的变量

B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在

本函数范围内有效

D. 在一个函数内的复合语句中定

义的变量在本函数范围内有效

15.如果要限制一个变量只能为本文件

所使用,必须通过()来实现。

A. 外部变量说明

B. 静态局部变量

C. 静态外部变量

D. 局部变量说明

16.下列哪种数据不存放在动态存储区

中()。

A. 函数形参变量

B. 局部自动变量

C. 函数调用时的现场保护和返回

地址 D. 局部静态变量

17.以下叙述中不正确的是()。

A. 函数中的自动变量可以赋初值,

每调用一次,赋一次初值。

B. 在调用函数时,实在参数和对应

形参在类型上只需赋值兼容。

C. 外部变量的隐含类别是自动存

储类别。

D. 函数形参可以说明为register

变量。

18.以下只有在使用时才为该类型变量

分配内存的存储类说明是()。

A. auto和 static

B. auto和 register

C. register和 static

D. extern和 register

19.C语言中,函数值类型的定义可以缺

省,此时函数值的隐含类型是()。

A. void

B. int

C. float

D. double

20.在C 语言中,函数的隐含存储类别是( )。

A. auto

B. static

C. extern

D. 无存储类别

1.B

2.C

3.A

4.A

5.C

6.C

7.C

8.A

9.B 10.B 11.A 12.A13.D 14.D15.C 16.D 17.C 18.B 19.B

20.C

23.以下所列的各函数首部中,正确的是( )。 A.

void play(var :Integer,var

b:Integer) B. void play(int a,b) C. void play(int a,int b) D.

Sub play(a as integer,b as

integer)

24.有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是( )。

A. 3

B. 4

C. 5

D. 有语法错

25.若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是( )。 A.3

B.4

C.5

D.6

26.以下函数值的类型是( )。 fun (float x) { float y; y= 3*x-4; return y; }

A. int

B. 不确定

C. void

D. float 23.C 24.A 25.A

26.A

29.以下程序的输出结果是( )。 fun(int x, int y, int z) { z=x*x+y*y; }

main() {

int a=31; fun(5,2,a); printf("%d",a);} A. 0 B. 29

C. 31

D. 无定值

30.下列程序执行后的输出结果是( )。 void func1(int i); void func2(int i); char st[]="hello,friend!"; void func1(int i) {

printf("%c",st[i]); if(i<3){i+=2;func2(i);} }

void func2(int i) {

printf("%c",st[i]); if(i<3){i+=2;func1(i);} } main() {

int i=0; func1(i); printf("\n"); }

A. hello

B. hel

C. hlo

D. hlm 31.有如下程序 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); }

该程序的输出的结果是( )。

A. 12

B. 13

C. 14

D. 15 32.有以下程序

float fun(int x,int y) { return(x+y); }

main() {

int a=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); }

程序运行后的输出结果是( )。 A. 编译出错 B. 9 C. 21

D. 9.0

33.有以下程序 #include "stdio.h" int abc(int u,int v); 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. 6 B. 7 C. 8 D. 9 29.C 30.C 31.D

32.B

33.C

5.2 填空题 1.

下面程序的输出结果是

________。

int t(int x,int y,int cp,int dp) {

cp=x*x+y*y;

dp=x*x-y*y; } main( ) {

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

t(a,b,c,d);

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

}

2.下面程序运行后的输出结果是________。

void fun(int x,int y)

{

x=x+y;y=x-y;x=x-y;

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

}

main()

{

int x=2,y=3;

fun(x,y);

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

}

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

void fun()

{

static int a=0;

a+=2; printf("%d",a);

}

main()

{

int cc;

for(cc=1;cc<4;cc++) fun();

printf("\n");

}

4.下面程序输出的最后一个值是________。

int ff(int n)

{

static int f=1;

f=f*n;

return f;

}

main()

{

int i;

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

printf("%5d",ff(i));

}

5.下面程序运行结果为________。#include

main()

{

int i;

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

}

as()

{

int lv=0;

static int sv=0;

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

lv++;sv++;

return;

}

1. 答案:56

2. 答案:3,2,2,3

解析:此题考的知识点是C语言中形参、

实参的单向值传递。主函数中,调用函

数fun,将实参x,y的值传给形参x,y,

形参x,y在子函数中交换的数值,所以

输出的形参值为3,2,但形参无法返回给

主函数中的实参x,y,所以输出的实参值

仍为2,3。

3. 答案:246

4. 答案:120

5. 答案:0,0

0,1

15.设在主函数中有以下定义和函数调

用语句,且fun函数为void类型;请

写出fun函数的首部【1】。(要求

形参名为b。)

main()

{

double s[10][22];

int n; ┆

fun(s);

}

15. 答案:【1】 void fun(double

b[][22]);

17.下面函数的功能是:求x的y次方,

请填空。

double fun( double x, int y)

{

int i;

double z;

for(i=1, z=x; i

return z;

}

18.若已定义:int a[10], i;,以下

fun函数的功能是:在第一个循环中给前

10个数组元素依次赋1、2、3、4、5、6、

7、8、9、10;在第二个循环中使a数组

前10个元素中的值对称折叠,变成1、2、

3、4、5、5、4、3、2、1。请填空。

fun( int a[ ])

{

int i;

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

for(i=0; i<5; i++) 【2】=a[i];

}

17. 答案:【1】 x

18. 答案:【1】 a[i-1] 【2】

a[9-i]

24.求出数组中的最大、最小元素值以

及所有元素的均值。

【1】 ;

float average(int n,float array[])

{

int i;

float sum;

max=min=sum= 【2】 ;

for(i=1;i

{ sum+=array[i];

if(max

if(min>array[i]) min=array[i];

}

return(sum/n);

}

main()

{

int i;

float aver,score[10];

printf("input 10 score:\n");

for(i=0;i<10;i++) scanf("%f",

【3】 );

aver=average(10,score);

printf("max=%.2f\nmin=%.2f\naverag e=%.2f\n",max,min,aver); }

25.下面程序的功能是找出三个字符串中最大串,填空完善程序。 【1】

#include main() {

int i; char string[20],str[3][20]; for(i=0;i<3;i++) gets( 【2】 ); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)> 【3】 ) strcpy(string,str[2]); printf("the

largest

string

is\n%s\n",string); } 24.

答案:【1】 float max,min 【2】 array[0] 【3】 &score[i] 25.

答案:【1】 #include

【2】 str[i] 【3】0

六、预编译 6.1 选择题 1. 下面叙述中正确的是( )。 A. 带参数的宏定义中参数是没有

类型的 B. 宏展开将占用程序的运行时间 C. 宏定义命令是C 语言中的一种特殊语句 D.

使用#include 命令包含的头文件必须以“.h ”为后缀 2. 下面叙述中正确的是( )。 A. 宏定义是C 语句,所以要在行末

加分号 B.

可以使用#undef 命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层

层嵌套

D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 3.

在“文件包含”预处理语句中,

当#include 后面的文件名用双引号括起时,寻找被包含文件的方式为( )。 A. 直接按系统设定的标准方式搜

索目录 B.

先在源程序所在目录搜索,若找不到,再按系统设定的标准方式搜索 C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录

4. 下面叙述中不正确的是( )。 A.

函数调用时,先求出实参表达

式,然后带入形参。而使用带参的宏只是进行简单的字符替换 B.

函数调用是在程序运行时处理

的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递 C.

对于函数中的实参和形参都要

定义类型,二者的类型要求一致,而宏

不存在类型问题,宏没有类型 D.

调用函数只可得到一个返回值,

而用宏可以设法得到几个结果 5. 下面叙述中不正确的是( )。 A.

使用宏的次数较多时,宏展开后

源程序长度增长。而函数调用不会使源程序变长 B.

函数调用是在程序运行时处理

的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时不分配内存单元,不进行值传递 C. 宏替换占用编译时间 D. 函数调用占用编译时间

1.A

2.B

3.B

4.B

5.D

10.以下程序执行的输出结果是( )。

#define MIN(x,y) (x)<(y)?(x):(y) main() {

int i,j,k;

i=10;j=15; k=10*MIN(i,j); printf("%d\n",k);

}

A.15

B.100

C.10

D.150

11.下列程序执行后的输出结果是( )。 #define MA(x) x*(x-1)

main() {

int a=1,b=2;

printf("%d \n",MA(1+a+b)); }

A. 6

B. 8

C. 10

D. 12

12.以下程序的输出结果是( )。 #define M(x,y,z) x*y+z main() {

int a=1,b=2, c=3;

printf("%d\n", M(a+b,b+c, c+a)); } A. 19 B. 17 C.

15

D. 12

13.程序中头文件typel.h 的内容是( )。

#define N 5 #define M1 N*3 程序如下:

#include "type1.h" #define M2 N*2 main() { int i; i=M1+M2; printf("%d\n",i);

}

程序编译后运行的输出结果是( )。 A. 10

B. 20

C. 25

D. 30

14.请读程序: #include #define SUB(X,Y) (X)*Y main()

{

int a=3, b=4;

printf("%d", SUB(a++, b++)); }

上面程序的输出结果是( )。

A. 12

B. 15

C. 16

D. 20 10.A 11.B 12.D

13.C

14.A

6.2 填空题 1.

以下程序的输出结果是

________。

#define MAX(x,y) (x)>(y)?(x):(y) main() {

int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf("%d\n",t); } 2.

下面程序的运行结果是

________。 #define N 10 #define s(x) x*x #define f(x) (x*x) main() { int i1,i2; i1=1000/s(N); i2=1000/f(N);

printf("%d,%d\n",i1,i2); } 3.

设有如下宏定义

#define MYSWAP(z,x,y) {z=x; x=y; y=z;}

以下程序段通过宏调用实现变量a 、b 内容交换,请填空。 float a=5,b=16,c; MYSWAP( 【1】 ,a,b); 4.

计算圆的周长、面积和球的体积

【1】 main() {

float l,r,s,v;

printf("input a radus: "); scanf("%f ", 【2】 ); l=2.0*PI*r; s=PI*r*r;

v=4.0/3*( 【3】 );

printf("l=%.4f\n s=%.4f\n

v=%.4f\n",l,s,v); } 5.

计算圆的周长、面积和球的体积 #define PI 3.1415926

#define 【1】 L=2*PI*R; 【2】 ;

main() {

float r,l,s,v; printf("input a radus: "); scanf("%f",&r); CIRCLE(r,l,s,v);

printf("r=%.2f\n l=%.2f\n s=%.2f\n v=%.2f\n", 【3】 );

}

1. 答案:7 2. 答案:1000,10 3. 答案:【1】 c

4.

答案:【1】 #define PI

3.1415926 【

2

&r 【3】 PI*r*r*r 5.

答案:【1】 CIRCLE(R,L,S,V)

【2】 S=PI*R*R;V=PI*R*R*R*4/3 【3】 r,l,s,v

七、指针 7.1 选择题

1. 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是()。

A . p=q;

B . *p=*q;

C . a=*q;

D . q=a; 2. 若定义:int a=511, *b=&a ;,则printf("%d\n", *b);的输出结果为:

A . 无确定值

B . a 的地址

C . 512

D . 511

3. 已有定义 int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是()。

A . a=*p1+*p2;

B . p1=a;

C . p1=p2;

D . a=*p1*(*p2);

4. 变量的指针,其含义是指该变量的()。

A . 值

B . 地址

C . 名

D . 一个标志 5. 若有说明语句:int a, b, c, *d=&c ;,则能正确从键盘读入三个整数分别赋给变量a 、b 、c 的语句是()。 A . scanf("%d%d%d", &a, &b, d);

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

C . scanf("%d%d%d", &a, &b, &d);

D . scanf("%d%d%d", a, b,*d);

6. 若已定义int a=5; 下面对(1)、(2)两个语句的正确解释是()。

(1) int *p=&a; (2) *p=a;

A . 语句(1)和(2)中的*p 含义相同,都表示给指针变量p 赋值。

B . (1)和(2)语句的执行结果,都是把变量a 的地址值赋给指针变量p 。

C . (1)在对p 进行说明的同时进行初始化,使p 指向a ;

(2)变量a 的值赋给指针变量p 。 D . (1)在对p 进行说明的同时进行初始化,使p 指向a ;

(2)将变量a 的值赋予*p 。

1.D 2.D 3.B 4.B 5.A 6.D

11.以下程序中调用scanf 函数给变量a 输入数值的方法是错误的,其错误原因是()。

#include main()

{ int *p, *q, a, b; p=&a;

printf("input a:");

scanf("%d", *p); …

}

A . *p 表示的是指针变量p 的地址

B . *p 表示的是变量a 的值,而不是变量a 的地址

C . *p 表示的是指针变量p 的值

D . *p 只能用来说明p 是一个指针变量 12.下面程序的功能是从输入的十个字符串中找出最长的那个串。请在________处填空。 #include "stdio.h" #include "string.h" #define N 10 main() {

char s[N][81], * t; int j;

for (j=0; j

for (j=1; j

printf("the max length of ten strings is: %d, %s\n", strlen(t), t); }

A . t=s[j]

B . t=&s[j]

C . t= s++

D . t=s[j][0] 13.下面判断正确的是()。 A

char

*s="girl"; 等价于 char *s; *s="girl"; B

char

s[10]={"girl"}; 等价于 char s[10]; s[10]={"girl"}; C

char

*s="girl"; 等价于 char *s; s="girl";

D . char s[4]= "boy", t[4]= "boy"; 等价于 char s[4]=t[4]= "boy" 14.设char *s="\ta\017bc";则指针变量s 指向的字符串所占的字节数是()。

A .9

B . 5

C . 6

D . 7

15.下面程序段中,for 循环的执行次数是()。

char *s="\ta\018bc"; for

(

*s!='\0'

s++)

printf("*");

A . 9

B . 5

C . 6

D . 7

16.以下不能正确进行字符串赋初值的

语句是()。 A.

char str[5]= "good!"; B . char *str="good!"; C.

char str[]="good!";

D . char str[5]={'g', 'o','o', 'd'};

17.若指针p 已正确定义,要使p 指向两个连续的整型动态存储单元,不正确的语句是()。

A . p=2*(int *)malloc(sizeof(int));

B . p=(int *)malloc(2*sizeof(int));

C . p=(int *)malloc(2*2);

D . p=(int*)calloc(2, sizeof(int)); 18.下面程序段的运行结果是()。 char *s="abcde"; s+=2;

printf("%d", s);

A . cde

B . 字符'c'

C . 字符'c'的地址

D . 无确定的输出结果

19.设有如下的程序段:char s[]="girl",

*t; t=s;则下列叙述正确的是()。 A . s 和t 完全相同

B . 数组s 中的内容和指针变量t 中的

内容相等

C . s 数组长度和t 所指向的字符串长度

相等

D . *t 与s[0]相等

20.以下正确的程序段是()。

A

char

s[20]; B . char *s; scanf("%s", &s); scanf("%s", s); C

char

s[20]; D . char s[20], *t=s; scanf("%s", &s[2]); scanf("%s", t[2]);

21.下面程序段的运行结果是()。 #include "stdio.h" main() {

int m=10, n=20; char *format="%s, m=%d, n=%d\n"; m*=n;

printf(format, "m*=n", m,n);

}

A . format, "m*=n", m, n

B . format, "m*=n" C

m*=n,

m=200,

n=20

D . 以上结果都不对

11.B 12.A

13.C 14.C 15.C 16.A 17.A 18.C 19.D 20.C 21.C

26.若有以下定义和语句: int s[4][5], (*ps)[5]; ps=s;

则对s 数组元素的正确引用形式是()。 A . ps+1 B . *(ps+3) C . ps[0][2] D . *(ps+1)+3 27.不合法的main 函数命令行参数表示形式是:()。

A . main( int a, char *c[])

B . main(int argc, char *argv)

C . main( int arc, char **arv)

D . main( int argv, char*argc[]) 28.若有说明语句:char s[]="it is a example .", *t="it is a example.";则以下不正确的叙述()。

A . s 表示的是第一个字符i 的地址,s+1表示的是第二个字符t 的地址

B . t 指向另外的字符串时,字符串的长

度不受限制

C . t 变量中存放的地址值可以改变

D . s 中只能存放16个字符

29.若已定义char s[10];则在下面表达

式中不表示s[1]地址的是()。

A . s+1

B . s++

C . &s[0]+1

D . &s[1] 30.下面程序段的运行结果是()。(注:

└┘

代表空格)

#include "stdio.h" main()

{ char s[6]; s="abcd";

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

} A . "abcd" B . "abcd └┘" C . \"abcd\" D . 编译出错 31.执行以下程序后,a 的值为【1】, b 的值为【2】。 #include main() {

int a, b, k=4, m=6, *p=&k, *q=&m; a=p==&m; b=(-*p)/(*q)+7; printf("a=%d\n", a); printf("b=%d\n", b); }

【1】 A . -1 B . 1 C . 0 D . 4

【2】 A . 5 B . 6 C . 7 D . 10

26.C 27.B 28.D 29.B 30.D 31.【1】C 【2】C

37.下列程序的输出结果是()。 #include "stdio.h" main() {

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

printf("%d\n", *p+9); }

A .0

B . 1

C .10

D . 9 38.以下程序的输出结果是()。 #include "stdio.h" char cchar(char ch) { if

(ch>='A'

&&

ch<='Z')

ch=ch-'A'+'a'; return ch; } main() {

char s[]="ABC+abc=defDEF", *p=s;

while(*p) { *p=cchar(*p); p++; }

printf("%s\n",s); } A

abc+ABC=DEFdef B . abcaABCDEFdef C

abc+abc=defdef D . abcabcdefdef

39.以下程序的输出结果是()。 #include "stdio.h"

#include "string.h" main()

{ char

b1[8]="abcdefg",

b2[8],

*pb=b1+3;

while( --pb>=b1) strcpy(b2, pb);

printf("%d\n", strlen(b2)); }

A8 B3 C1 D7 40.有以下程序 #include "string.h" #include "stdio.h" main() {

char *p="abcde\0fghjik\0"; printf("%d\n", strlen(p));

} 程序运行后的输出结果是()。

A . 12

B . 15

C . 6

D . 5

37.C 38.C 39.D 40.D

45.下列程序段的输出结果是()。 #include "stdio.h" void fun( int *x, int *y) {

printf("%d%d", *x, *y);

*x=3; *y=4; } main() {

int x=1, y=2; fun(&y, &x);

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

}

A . 2 1 4 3

B . 1 2 1 2

C . 1 2 3 4

D . 2 1 1 2 46.下列程序的输出结果是()。 #include "stdio.h" main() {

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

printf("%d", *--p); }

A . 非法

B . a[4]的地址

C . 5

D . 3

45.A 46.C 7.2 填空题

1. 设有定义:int a, *p=&a; 以下语句将利用指针变量p 读写变量a 中的内容,请将语句补充完整。 scanf("%d", 【1】 ); printf("%d\n", 【2】 );

1. 答案:【1】p 【2】 *p

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

#include "stdio.h" #include "string.h" int *p;

main() {

int x=1, y=2, z=3; p=&y;

fun(x+z, &y);

printf("(1) %d %d %d\n", x, y, *p); }

fun( int x, int *y)

{

int z=4;

*p=*y+z;

x=*p-z;

printf("(2) %d %d %d\n", x, *y, *p);

}

4.下面程序段是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。

#include "stdio.h"

#include "string.h"

main()

{

int m;

char s[80], *t;

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

{

s[m]=getchar();

if (s[m]=='\n') break; }

s[m]= 【1】;

t=【2】;

while (*t) putchar(*t++);

}

5.下面程序段的运行结果是________。 char s[80], *t="EXAMPLE";

t=strcpy(s, t);

s[0]='e';

puts(t);

6.函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。

#include "stdio.h"

int sstrcmp( char *s, char *t)

{

while (*s && *t && *s==【1】)

{

s++; t++;} return 【2】;

}

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

void swap(int *a, int *b)

{

int *t;

t=a;

a=b;

b=t;

}

main()

{

int x=3, y=5, *p=&x, *q=&y;

swap(p,q);

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

}

8.以下程序的输出结果是________。

#include "stdio.h"

main()

{

char *p="abcdefgh", *r;

long *q;

q=(long *) p;

q++;

r=(char *) q;

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

}

9.下面程序的功能是将字符串中的数

字字符删除后输出。请填空。

#include "stdio.h"

#include "malloc.h"

void delnum( char *t)

{

int m, n;

for (m=0,n=0;

t[m]!='\0';m++)

if (t[m]<'0' 【1】t[m]>'9')

{ t[n]=t[m]; n++;}

【2】;

}

main()

{

char *s;

s=(char *) malloc

(sizeof(char)); /*给s分配一个地

址*/

printf("\n input the original

string:");

gets(s);

delnum(s);

puts(【3】);

}

10.下面程序的功能是比较两个字符串

是否相等,若相等则返回1,否则返回0。

请填空。

#include "stdio.h"

#include "string.h"

fun (char *s, char *t)

{

int m=0;

while (*(s+m)==*(t+m) && 【1】) m++;

return (【2】);

}

3.答案:(2) 2 6 6

(1) 1 6 6

4.答案:【1】'\0' 【2】s

5.答案:eXAMPLE

6.答案:【1】*t 【2】

*s-*t

7.答案:3 5

8.答案:efgh

9.答案:【1】|| 【2】

t[n]= '\0' 【3】

s

10.答案:【1】s[m]!='\0'

【2】(*(s+m)== '\0' &&

*(t+m)=='\0')? 1:0

17.以下程序将数组a中的数据按逆序

存放。请填空。

#include "stdio.h"

#define M 10

main()

{

int a[M], m, n, temp;

for( m=0; m

a+m);

m=0;

n=M-1;

while(m

{

temp=*(a+m);

【1】;

*(【2】)=temp;

m++;

n--;}

for (m=0;m

}

18.以下程序在a数组中查找与x值相同的元素的所在位置。请填空。

#include "stdio.h"

main()

{

int a[11], x, m;

printf("please input ten numbers:\n");

for(m=1;m<11;m++) scanf("%d", a+m); printf("please input x:");

scanf("%d", &x);

*a=【1】;

m=10;

while (x!=*(a+m))

【2】;

if (m>0) printf("%5d's position is : %4d\n", x, m);

else printf("%d not been found!\n", x);

}

19.以下程序的功能是________。

#include "stdio.h"

main()

{

char * s[]=={ "PASCAL", "FORTRAN", "COBOL", "BASIC"};

char **p;

int n;

p=s;

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

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

} 20.若有定义和语句:int a[4]={1,2,

3,4},*p; p=&a[2]; ,则*--p的值是

________。

21.若有定义和语句:int a[2][3]={0},

(*p)[3]; p=a;,则p+1表示数组

________。

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

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

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

则*p[0]引用的是a数组元素【1】;

*(p[1]+1)引用的是a数组元素【2】。

17.答案:【1】*(a+m)=*(a+n) 【2】

a+n

18.答案:【1】x 【2】

m--

19.答案:PASCAL

FORTRAN

COBOL

BASIC

20.答案:2

21.答案:&a[1][0]

22.答案:【1】a[0] 【2】a[3]

25.定义语句int *f();和int (*f)();

的含义分别为【1】和【2】。

26.请根据运行结果,完成main函数中

的填空。

Array_add( int a[], int n)

{

int m, sum=0;

for (m=0;m

return (sum);

}

main()

{

int Array_add(int a[], int n);

static int

a[3][4]={2,4,6,8,10,12,14,16,18,20

,22,24};

int *p, total1, total2;

【1】;

pt=Array_add;

p=a[0];

total1=Array_add(p,12);

total2=(*pt)(【2】);

printf("total1=%d\ntotal2=%d\n",

total1,total2);

}

运行结果:total1=156

total2=156

25.答案:【1】函数的返回值为指向int

类型的指针【2】定义一个指向函数

的指针

26.答案:【1】int (*pt)()

【2】p,12

八、结构体与共用体

8.1 选择题

1.以下程序运行的输出结果是( )。

main()

{union {char i[2];

int k;

}r;

r.i[0]=2;r.i[1]=0;

printf("%d\n",r.k);

}

A.2

B.1

C.0

D.不确定

2.有以下程序输出结果是( )。

#include

struct stu

{int num;

char name[10];

int age;

};

void fun(struct stu *p)

{printf("%s\n",(*p).name);}

main()

{struct stu students[3]=

{{9801,"zhang",20},{9802,"Wang",19

},{9803,"zhao",18}};

fun(students+2);}

A.Zhang

B.Zhao

C.Wang

D.18

3.有下列程序输出结果是( )。

#include

main()

{union

{int k;

char i[2];

}*s,a;

s=&a;

s->i[0]=0x39;

s->i[1]=0x38;

printf("%x\n",s->k);

}

A.3839

B.3938

C.380039

D.390038

4.设有如下定义:

struct sk

{ int a;

float b;

} data,*p;

若有p=&data;则对data中的a 域的正确引用是( )。

A.(*p).data.a

B.(*p).a

C.p->data.a

D.p.data.a 5.若有下面的说明和定义,则sizeof(struct aa)的值是( )。

struct aa

{ int r1;

double r2;

float r3;

union uu

{ char u1[5];

long u2[2];

}ua;

}mya;

A.30

B.29

C.24

D.22

6.设有以下定义

typedef union

{ long i;

int k[5];

char c;

} DATE;

struct date

{ int cat;

DATE cow;double dog;

} too;

DATE max;

则语句printf(〞%d〞,sizeof(struct

date)+sizeof(max)))的执行结果是

( )。

A.25

B.30

C.18

D.8

1.A 2.B 3.A

4.B

5.D

6.B

10. 下列程序的执行结果为( )。

struct s1

{ char *s;

int i;

struct s1 *sip;

}

main()

{ static struct s1

a[]={{"abcd",1,a+1},{"efgh",2,a+2}

,{"ijkl",3,a}};

struct s1 *p=a;int i=0;

printf("%s%s%s",a[0].s,p->s,a[2].s

ip->s);

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

printf("%c\n",++a[i].s[3]);

}

A.abcd abcd abcd 2 0 e

B.abcd efgh ijkl 2 0 e

C.abcd abcd ijkl 2 0 e

D.abcd abcd abcd 2 1 e

11. 下面程序的输出结果为( )。

struct st

{ int x;

int *y;

} *p;

int dt[4]={10,20,30,40};

struct st

aa[4]={50,&dt[0],60,&dt[1],70,&dt[

2],80,&dt[3]};

main()

{ p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

printf("%d\n",++(*p->y));

}

A.10

B.50

C.

51 D.60

20 60 60

70

20 21 21

31

12. 设有以下语句:

struct st{int n;struct st *next;};

static struct st

a[3]={5,&a[1],7,&a[2],9,'\0'},*p;

p=&a[0];

则表达式( )的值是6。

A.p++->n

B.p->n++

C.(*p).n++

D.++p->n

13. 下面程序的输出是( )。

main()

{ enum

team{my,your=4,his,her=his+10};

printf("%d %d %d %d\n",my,your,his

,her);

}

A.0 1 2 3

B.0 4 0 10

C.0 4 5 15

D.1 4 5 15

14. 下面程序的输出是( )。

main()

{ struct cmplx{int x;int y;}

cnum[2]={1,3,2,7};

printf("%d\n",cnum[0].y/cnum[0].x*

cnum[1].x);

}

A.0

B.1

C.3

D.6

15. 下面程序的输出是( )。

typedef union { long x[2];

int y[4];

char z[8];

} MYTYPE;

MYTYPE them;

main()

{ printf("%d\n",sizeof(them));

} A.32 B.16 C.8 D.24

10.A 11.C 12.D 13.C 14.D 15.C

8.2 填空题

1. 有以下定义和语句,则sizeof(a)的值是【1】,而sizeof(a.share)的值是【2】。 struct date { int day ; int month ; int year ; union

{ int share1; float share2; }share ; } a ;

2.若有以下说明和定义语句,则变量w 在内存中所占字节数________。 union aa { float x,y ; char c[6]; }; struct st { union aa v ; float w[5]; double ave ; } w ;

3.有以下说明定义语句,可用a.day 引用结构体成员day,请写出引用结构体成员a.day

的其它两种形式【 1 】 【 2 】。 { int day ; char mouth ; int year ; } a,*b ; b=&a ;

4.为了建立如图所示的存储结构(即每个结点含两个域,data 是数据域,next 是指向该结构的指针域,data 用以存放整型数)请填空。

data next struct

link

{char

data

( 【 1 】 )}node ;

5.变量root 有如图所示的存储结构,其中sp 是指向字符串的指针的指针域,next 是指向该结构的指针域,data 用以存放整型数。请填空,完成此结构的类型说明和变量root 的定义。 root

struct list {

char *sp ; ( 【1】) ( 【2】 )

}root ;

6.以下函数creatlist 用来建立一带头节点的单链表,链表的结构如下图所示,新的

节点总是插入在链表的末尾。链表的头指针作为函数值返回。链表最后一个节点的next 域放入NULL ,作为链表结束的标志。data 为字符型数据域,next 为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。

{ char data ;

struct node *next ; };

……

( 【1】 )creatlist( ) { struct node *h,*s,*r ; char ch ; h=(struct node *)malloc(sizeof(struct node)); r=h ;

ch=getchar(); while (ch!=’#’) {

s=(struct

node*)malloc(sizeof(struct node));

s->data=( 【2】 ); r->next=s.r ; r=s ; ch=getchar(); }

r->next=( 【3】 ); return h ; }

1. 答案:【1】10 【2】4

2. 答案:34

3. 答案:【1】(*b).day 【2】b->day

4. 答案:【1】struct link *next

5. 答案:【1】struct list *next 【2】int data

6. 答案:【1】struct 【2】ch 【3】NULL

10. 下面程序的输出结果是________。

struct ks

{ int a;int *b;}

main()

{ struct ks s[4],*p;int n=1,i; for(i=0;i<4;i++)

{ s[i].a=n; s[i].b=&s[i].a; n=n+2; } p=&s[0];

printf("%d,%d\n",++(*p->b),*(s+2)->b);

}

10. 答案:2 5

12. 若有以下的说明和语句,已知int 类型占两个字节,则以下的输出结果为_______。

main()

{ struct st

{ char a[10];

int b;

double c;

};

printf("%d\n",sizeof(struct st)); }

13. 若有以下的说明和语句,已知int 类型占两个字节,则以下的输出结果为________。

main()

{ union un

{ int i;

double y;

};

struct st

{ char a[10];

union un b;

};

printf("%d\n",sizeof(struct st)); }

12. 答案:20

13. 答案:18

15. 下面程序的输出是_______。

main()[

{ enum em{em1=3,em2=1,em3};

char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2], aa[em3]);

}

答案:DDBBCC

认真的雪

夜深人静那是爱情

偷偷的控制着我的心

提醒我爱你要随时待命

音乐安静还是爱情啊

一步一步吞噬着我的心

爱上你我失去了我自己

爱得那么深爱得那么认真

可还是听见了你说不可能

已经十几年没下雪的上海突然飘雪

就在你说了分手的瞬间

雪下得那么深下得那么认真

倒映出我躺在雪中的伤痕

我并不在乎自己究竟多伤痕累累

可我在乎今后你有谁陪

爱得那么认真比谁都认真

可最后还是只剩我一个人

漫天风雪请别再把我的眼泪擦去

毕竟那是我最爱的女人

毕竟我曾是她深爱的人我还来不及做好

准备

爱情里没有谁对谁错.mp3

约定就已经开始作废

都说爱情是弥足珍贵

现在感觉里只有苦味

可是我不会夜夜流泪

虽然偶尔也痛彻心扉

缘尽了你走了无法回头

我要努力学会无所谓

就这样就这样忍住伤悲

也许会也许会感到疲惫

再给我花开花落一个轮回

你就会在记忆中慢慢消褪

不再想不再想谁是谁非

爱情里并没有谁错谁对

再给我春去秋来一个轮回

我就会化茧成蝶飞得更美

你的选择

看着你慢慢离开我的视线

才明白原来这份爱情已走远

而我还相信有永恒的诺言

]既然爱已到了痛的边缘

就算为我们留住时间

也换不回相爱的那一天

]沧海桑田,谁为谁而改变

心甘情愿,却不见我们的永远

爱与被爱同样是受伤害

谁先不爱谁先离开

留下的人,满身伤痕

你的选择,没有错,我欠你的太多

受伤的心,找不到解药,怎么愈合

你的选择,躲不过,泪水的折磨

宁愿解脱,一个人,独自漂泊

我的秘密花园-01-cha cha.

红玫瑰遇到蒲公英,仙人掌爱上了满天

星,花枝招展的爱情

藏在花园里要小心保持神秘

我的心己被你锁定

花丛间你在匍匐前进究竟搞什么诡计

居然邀请我跳第一支舞

CHA CHA 越跳越靠近 CHA CHA 越跳越着

急该不该要不要能不能

倒在你怀里 OH OH

CHA CHA 是不是爱你 CHA CHA 算不算爱

情快一拍慢一拍深呼吸

你的吻太客气 OH OH

不相信谁相信别相信

决不能轻易地爱上你

我和你敌对敌两颗心

玩BINGO的游戏

我要先胜利

好天气坏天气怪天气

花园里阴或晴搞不定

你的爱就像下大雨集中火力甜蜜攻击

女孩渴望真心姐妹们暗中较劲

男孩们拼谁殷勤别大意怕三振出局

跟着节奏一起再不跳舞就太可惜

欢迎你挑战爱情

我的秘密花园随时都为你艳丽(Rap)

电话响了半天还是没有人接

我的头上长出了三条斜线

突然间我发现奇迹总在一瞬间

我的天你的脸带着诡异微笑出现

你的手比了两个7合在一起

说这是爱情送给你

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语言笔试真题及答案

1 2009年9月全国计算机等级考试二级笔试 试卷 1)下列数据结构中,属于非线性结构的是 A )循环队列 B) 带链队列 C) 二叉树 D )带链栈 2)下列数据结果中,能够按照“先进后出”原则存取数据的是 A) 循环队列 B) 栈 C)队列 D)二叉树 3)对于循环队列,下列叙述中正确的是 A )队头指针是固定不变的 B )队头指针一定大于队尾指针 C )队头指针一定小于队尾指针 D )队头指针可以大于队尾指针,也可以小于队尾指针 4)算法的空间复杂度是指 A )算法在执行过程中所需要的计算机存储空间 B )算法所处理的数据量 C )算法程序中的语句或指令条数 D )算法在执行过程中所需要的临时工作单元数 5)软件设计中划分模块的一个准则是 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 6)下列选项中不属于结构化程序设计原则的是 A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精 7)软件详细设计产生的图如下: 该图是 A) N-S 图 B) PAD 图 C) 程序流程图 D) E-R 图 8)数据库管理系统是 A )操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统 D) 一种操作系统 9)在E-R 图中,用来表示实体联系的图形是 A) 椭圆图B) 矩形C) 菱形D) 三角形 10)有三个关系R ,S 和T 如下: 其中关系T 由关系R 和S 通过某种操作得到,该操作为 A) 选择 B) 投影 C) 交 D) 并 11)以下叙述中正确的是 A )程序设计的任务就是编写程序代码并上机 B )程序设计的任务就是确定所用数据结 构 C )程序设计的任务就是确定所用算法 D )以上三种说法都不完整 12)以下选项中,能用作用户标识符的是 A )void B )8_8 C )_0_ D )unsigned 13)阅读以下程序 #include main() { int case; float printF; printf(“请输入2个数:”); scanf(“%d %f”,&case,&pjrintF); printf(“%d %f \n”,case,printF); } 该程序编译时产生错误,其出错原因是 A )定义语句出错,case 是关键字,不能 用作用户自定义标识符B )定义语句出错,printF 不能用作用户自定义标识符 C )定义语句无错,scanf 不能作为输入函 数使用 D )定义语句无错,printf 不能输出case 的值 14)表达式:(int)((double)9/2)-(9)%2的值是 A )0 B )3 C )4 D )5 15)若有定义语句:int x=10;,则表达式 x-=x+x 的值为 A )-20 B )-10 C )0 D )10 16)有以下程序 #include main() { int a=1,b=0; printf(“%d,”,b=a+b); printf(“%d \n”,a=2*b); } 程序运行后的输出结果是 A )0,0 B )1,0 C )3,2 D )1,2 17)设有定义:int a=1,b=2,c=3;,以下语 句中执行效果与其它三个不同的是 A )if(a>b) c=a,a=b,b=c; B )if(a>b) {c=a,a=b,b=c;} C ) if(a>b) c=a;a=b;b=c; D ) if(a>b) {c=a;a=b;b =c;} 18)有以下程序 #include main() { int c=0,k; for (k=1;k<3;k++) switch (k) {default: c+=k case 2: c++;break; case 4: c+=2;break; } printf(“%d \n”,c); } 程序运行后的输出结果是 A )3 B )5 C )7 D )9 19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A )if((a>b)&&(b>c)) k=1;else k=0; B )if((a>b)||(b>c) k=1;else k=0; C )if(a<=b) k=0;else if(b<=c) k=1; D )if(a>b) k=1;else if(b>c) k=1; else k=0; 20)有以下程序 #include main() { char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]>=?a?&&s[i]<=?z?) n++; printf(“%d \n”,n); } 程序运行后的输出结果是 A )0 B )2 C )3 D )5 21)有以下程序 #include main() { int n=2,k=0; while(k++&&n++>2); printf(“%d %d \n”,k,n); } 程序运行后的输出结果是 A )0 2 B )1 3 C )5 7 D )1 2 22)有以下定义语句,编译时会出现编译错误的是 A )char a=?a? B )char a=?\n?; C )char a=?aa?; D )char a=?\x2d?; 23)有以下程序 #include main() { char c1,c2; c1=?A?+?8?-…4?; c2=?A?+?8?-…5?; printf(“%c,%d \n”,c1,c2); } 已知字母A 的ASCII 码为65,程序运行后的输出结果是

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

大学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语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #include void main() {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) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

C语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

新版计算机二级C语言测试题及答案解析

计算机二级C语言测试题及答案解析计算机二级C语言测试题及答案解析 C语言的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,下面给大家整理了计算机二级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题为相同类型题 考点:标识符的命名规则 只能由字母、数字、下划线构成

数字不能作为标识符的开头 关键字不能作为标识符 选项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语言考试题库(含标准答案)

单项选择 ================================================== 题号: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 题号:45 能正确表示逻辑关系:" 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 。 while(i<10) { if(i<1) continue 。 if(i==5) break 。 i++ 。 } } A、死循环,不能确定次数 B、6 C、4 D、1

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

历年全国计算机二级C语言试题库完整

. . . . 参考 50道C 语言知识题 1.以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C 程序实现的算法可以没有输出但必须要有输入 C)用C 程序实现的算法可以没有输入但必须要有输出 D)用C 程序实现的算法可以既没有输入也没有输出 2.下列可用于C 语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C 语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line 是一个数组,每个数组元素是一个基类型为char 为指针变量 B)定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line 是一个指针数组,语句中的*号称为间址运算符 D)定义line 是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c 的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段

C语言函数题库及答案

C语言函数题库及答案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

第六部分函数 一、单项选择题 1.C语言中的函数返回值的类型是由(D)决定 A.return语句中的表达式B.调用函数的主调函数 C.调用函数时临时D.定义函数时所指定的函数类型 2.下面不正确的描述是(B)。 A.调用函数时,实参可以是表达式 B.调用函数时,实参和形参可以共用内存单元 C.调用函数时,将形参分配内存单元 D.调用函数时,实参与形参的类型必须一致 3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是 (D) A.地址传递B.值传递 C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式 4.下面的函数调用语句中含有(A)个实参 inta,b,c; intsum(intx1,intx2); …… total=sum((a,b),c); A.2B.3C.4 D.5 5.在C语言中(C) A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义和调用均不可以嵌套 C.函数的定义不可以嵌套,但是函数的调用可以嵌套 D.函数的定义和调用均可以嵌套 6.关于C语言中的return语句正确的是(C) A.只能在主函数中出现 B.在每个函数中都必须出现 C.可以在一个函数中出现多次 D.只能在除主函数之外的函数中出现 7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是(D) (floatx[],intn) (float*x,intn) (floatx[10],intn) (floatx,intn) 8.在C语言中,函数的数据类型是指(A) A.函数返回值的数据类型 B.函数形参的数据类型 C.调用该函数时的实参的数据类型 D.任意指定的数据类型 9.已知如下定义的函数: fun1(a) {printf("\n%d",a); } 则该函数的数据类型是(C)

C语言试题及答案

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。

全国计算机等级考试二级C语言真题2013年3月

全国计算机等级考试二级C语言真题2013年3月 (总分40, 做题时间90分钟) 一、选择题 1. 程序流程图中带有箭头的线段表示的是______。 A 图元关系 B 数据流 C 控制流 D 调用关系 答案:C [解析] 在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。 2. 结构化程序设计的基本原则不包括______。 A 多态性 B 自顶向下 C 模块化 D 逐步求精 答案:A [解析] 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。 3. 软件设计中模块划分应遵循的准则是______。 A 低内聚低耦合 B 高内聚低耦合

C 低内聚高耦合 D 高内聚高耦合 答案:B [解析] 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。 4. 在软件开发中,需求分析阶段产生的主要文档是______。 A 可行性分析报告 B 软件需求规格说明书 C 概要设计说明书 D 集成测试计划 答案:B [解析] A错误,可行性分析阶段产生可行性分析报告。C错误,概要设计说明书是总体设计阶段产生的文档。D错误,集成测试计划是在概要设计阶段编写的文档。B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 5. 算法的有穷性是指______。 A 算法程序的运行时间是有限的 B 算法程序所处理的数据量是有限的 C 算法程序的长度是有限的 D 算法只能被有限的用户使用

2019二级C语言题库参考答案解析

2019年C语言考题答案 1、程序填空题 给定的程序的功能是调用fun 函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat 的二进制中。 填空:( 1) STYPE(2)FILE(3)fp 改错:(1) for(i=0;i<=sl;i++)(2)t[2*sl]= 0“ 或t[sl+sl]= 0“ 编程: *c=(a/10)*1000+(b/10)*100+(a%10)*10+(b% 10); 2、程序填空题给定程序的功能是:从键盘输入若干文本 (每行不超过80 个字符),写到文件myfile4.txt 中,用-1 作为字符串输出输入的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText 和Writetext 实现。 填空:(1)*fw(2)str (3) str 改错:(1)voidfun(longs,long*t)(2) s1=s1*10; 编程:int i,j=0,min=a[0].s; for(i=0;i

else if(min==a[i].s) b[j++]=a[i]; } return j; 3、程序填空题 给定程序中,函数fun 的功能是:讲自 然数1~10 以及它们的平方根写到名为myfile3.txt 的文本中,然后再按顺序读出显示在屏幕上。 填空:( 1) fp( 2)fclose(fp)(3)myfile3.txt 改错:( 1)for(i=j+1;i

C语言上机作业试题5套含答案

第一次上机作业(2014): 要求: ?独立完成,上机调试通过后上交 ?作业提交邮箱: ?邮件主题命名:班级学号姓名(第1次作业), 例如:电1301班2王鹏(第1次作业) ?以附件形式将每次作业的所有程序源程序压缩打包后提交,压缩文件命名格式同上。 ?程序必须采用缩进格式 1.大写字母转换成小写字母 从键盘输入一个大写英文字母,输出相应的小写字母。 例:输入G 输出g 2.求平方根 输入一个实数x,计算并输出其平方根(保留1 位小数)。 例:输入17 输出The square root of 17.0 is 4.1 3.温度转换 设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32) a)输入华氏温度(实型) b)输出的摄氏温度结果保留两位小数 例:Please input Fahrenheit temperature: 76.8 The corresponding Celsius temperature is 24.89 4. 计算旅途时间 输入二个整数time1 和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。 (输入的有效的时间范围是0000 到2359,不需要考虑出发时间晚于到达时间的情况。) 例:输入712 1411 (出发时间是7:12,到达时间是14:11) 输出The train journey time is 6 hours 59 minutes. 5. 数字加密 输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。 例:输入1257 输出The encrypted number is 4601 思考题:你能否编程找出谁做的好事? 有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。 ?A说:不是我。 ?B说:是C。 ?C说:是D。 ?D说:他胡说。 已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。 第二次上机作业(2014): 要求: ?独立完成,程序必须采用缩进格式,上机调试通过后上交

大学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语言试题及答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。

相关文档