文档库 最新最全的文档下载
当前位置:文档库 › C语言系列复习题(含答案 2013.2修改)

C语言系列复习题(含答案 2013.2修改)

C语言系列复习题(含答案 2013.2修改)
C语言系列复习题(含答案 2013.2修改)

第一部分C语言基础题(选择与程序分析)

1.常量与变量

1.1常量

1. (2001_1)以下四个选项中,均为非法常量的是C

A.–0x18,01177,0xf

B. ?\ \‘,‘\01‘,12,456

C. ?as‘,-0fff,‘\0xa‘

D. 0xabc,‘\0‘,‖a‖

2.(2000_2)以下常量中正确的是D

A. ?abc‘

B.‘\x123‘

C. 3.14e-1.2

D.‖a‖

3、(1996_7)以下程序的输出是A。

# include

main ( )

{

printf(―%d‖,NULL);

}

A. 0

B. ?\0‘

C. 1

D. 无定义

4.(2002_2_3)包含二目运算符的表达式可一般表示为(x)op(y),其中op代表运算符,x,y代表操作数。若op是“+”运算符,且x和y均为常量时,不能同时为字符串常量。

1.2变量

1. (1999_2_2)设有说明:int y;float x;则执行语句x=y=4.8; 后x的值为4

2. (2003_8)若有声明:

int k,a,b;

unsigned long y=5;

double x=1.23;

则表达式中正确的是D

A.x%(-5)

B. x=y[6]

C. k=(a=1,b=2,&a+&b)

D. a+=a-=(b=2)*(a=3)

3. (2003_2_1)在声明变量时,类型修饰符unsigned 一般用于修饰基本类型中的int和char、long ;

4.(1998_6)在C语言中,下面符号串中,能用作变量名的标识符为B

A. auto

B.puts

C. – 1 * num

D. 2 - and

5.(2002_2_5)在函数内部声明局部变量时缺省了存储类型,该变量的存储类型为auto ;

6. (2002_5)已知在某C语言编译系统中表达式sizeof(int)的值为2,如果希望将常量-70000正确的保存在一个变量a中,则该变量声明语句应当是B

A.int a;

B. long int a;

C. unsigned int a;

D. unsigned long int a;

7. (2003_2_3)已有声明:float x; double y; int a; long b; char c; ,则表达式x+y*a/x+b/y+c值的类型为double

8.(1993_4)在C的表达式中,可以将某一类型的变量a强制转换成具有类型b的值,可以为A A.(b)a B.a(b) C.b(a) D.(a)b

1.3变量作用域

1.(1997_10)变量的有效范围与其定义位置有关,B,其作用域在整个源程序文件中都有效。

A.在第一个函数中定义的变量

B.在定义第一个函数之前所定义的变量

C.在主函数中定义的变量

D.在函数中定义的静态变量

2.(1993_3)外部变量对程序中的任一函数而言,它们是A

A.存在的B.可直接存取的C.不可见的D.不可直接存取的

3.(1994_5)对于extern 型变量和static 型变量的初始化A

A.在编译时进行

B.在程序开始运行时进行

C.在程序运行过程中使用到它们时进行72

D.不能确定在何时进行

4.(2000_10)以下叙述中不正确的是C

A.一个变量的作用域完全取决于变量说明的位置

B.外部变量可以在函数以外的任何位置定义

C.内部变量的生存期只限于本次函数调用,无法将内部变量的值保存至函数的下一次调用

D.用static说明一个外部变量是为了限制其它编译单位引用

5.(2003_2)某程序段如下:

float p=1.5;

#define p 2.5

main()

{

printf(―%f‖,p);

}

则main函数中标识符p代表的操作数是D

A. float类型变量

B.double 类型变量

C. float类型常量

D. double类型常量

6. 执行以下程序的结果为。

5 -3 -7

5 8 9.9

8 8 8

8 8 9.9

8 -3 -7

main()

{

int a=5,b=-3,c=-7;

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

{

int b=8;

float c=9.9;

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

a=b;

{

int c;

c=b;

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

}

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

}

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

}

7. (2002_2_8)执行以下程序后,输出x的值为0,y的值为 2 ;

int x;

int f(int x)

{

if(x==3)

{

int x=2;

return x;

}

else

return x;

}

void main(void)

{

int y,k;

y=f(3);

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

}

8. (2000_2_3)下列程序的运行结果为3235

void main(void)

{

extern int x;

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

fun1(2);

}

int x=1;

fun1(int x)

{

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

fun2(2);

}

fun2(void)

{

printf("%d",x);

{

int x=5;

printf("%d",x);

}

}

1.4 static变量

1. (1994_2_3)运行该程序,第一行的输出是sum=4;第三行的输出是sum=57 ;将程序中标有/*change*/的注释行改为:int a2=1;则第五行的输出是sum=20。

int f()

{

static int a1=0;

static int a2=1; /*change*/

a1=a2;

return(a2+=2*a1+1);

}

main()

{

int i,sum,f();

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

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

}

2. (1996_2_9)以下程序输出的第一行是10 ;输出的第二行是21.

abc()

{

static int i;

i+=10;

return(i++);

}

main()

{

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

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

}

3. (1997_2_6)程序输出的第一行、第二行和最后行分别是C=0, C=-1, C=-2

#include

int c=-2;

void fun(int a,int b)

{

static int c=2;

c=a+b+++c;

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

}

main()

{

int i;

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

fun(i,c);

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

}

4. (1998_2_2)执行以下程序后,第一行的输出是5,第三行的输出是9

int fac(int a)

{

int b=0;

static int c=3;

b++;

c++;

return a+b+c;

}

main()

{

int a=3,j;

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

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

}

5.(2001_2_7)以下程序的运行结果为6,720

int fun(int m)

{

static int k=1;

while(m)

k*=m--;

return(k);

}

void main(void)

{

int i,j;

i=fun(3);

j=fun(5);

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

}

2.宏定义、宏包含

1. (1994_1)用#include 命令包含的文件是C

A.目标文件B.可执行文件C.源程序文件D.二进制文件

2.(1996_6)预处理命令可能具有如下特点:

1.均以”#”开头2.必在程序开头3.后面不加分号 4. 在真正编译前处理正确的说法是,预处理命令具有以下哪几条特点:B

A. 1,2

B. 1,3,4

C. 1,3

D. 1,2,3,4

3.(1997_2)若有宏定义和变量说明如下:

#define X 5

#define Y X+1

#define Z Y*X/ 2

int a; a = Y;

则执行以下printf语句后输出的结果是A。

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

A.7 5

B. 12 6

C. 12 5

D.7 6

4. (2000_2_4)

#define N 2

#define Y(n) ((N+1)*n)则执行z=2*(N+Y(N+2))后,z的值为20

5.(2002_2_7)设有以下宏定义:

#define N 3

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

则执行语句z=2*(N+Y(5+1))后,z的值为48;

6. (2001_2)

#include "stdio.h"

#define PI 3.14

#define F(y) ((y)*(y))

#define P(a) printf(%d",a)

void main(void)

{

int x=PI;

P(F(1+2)*x);

}

27

7. (1998_2_6)程序是否正确(是或否)是;若程序错,则原因是(或程序正确,则输出结果是):x=69

#define A 3

main()

{

int a;

#define B(a) ((A+1)*a)

a=3*(A+B(5));

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

}

8. (2003_2_6)以下程序的运行结果是8.0 ;

#define PT 3.14

#define S(x) PT*x*x

void main(void)

{

int a=2;

printf("%4.1f",6.28/S(a));

}

9. (1993_2_6)执行以下程序的结果为。

-2

2

-2

1

#include "stdio.h"

#define LOW (-2)

#define HIGH (LOW+5)

#define PR(arg) printf("%d\n",(arg))

#define FOR(arg) for(;(arg);(arg)--)

main()

{

int i=LOW,j=HIGH;

FOR(j)

switch(j)

{

case 1:PR(i++);

case 2:PR(j);break;

default:PR(i);

}

}

3.转义字符

1.(1999_1)char *str="\t\'c\\Language\n";

printf("\n%d",strlen(str));的值为13

2. (1998_2_4)执行以下程序后,程序输出为5

#include "string.h"

main()

{

printf("%d\n",strlen("ab\034\\\x89"));

}

3. (1999_2_4)如下程序的输出结果是3

printf("%d\n",strlen("abc\0defg"));

4.(1997_1)执行语句printf(‖字串为:is c:\\too1s\‘ book.txt‖);后的输出是D

A.字串为:is c:tools‘book.txt

B. 字串为:is c:\too1s book.txt

C.字串为:is c:\\tools\‘book.txt

D.字串为:is c:\too1s‘book.txt

4.运算符

1. (1999_2_3)在C语言中,任一语句必定以字符;结束

2. (1996_2_5)运算符“&”有二种含义:一种是取地址,另一种是:位运算

3.(2002_2_2)&既可以用作单目运算符也可以用作双目运算符,其中用作单目运算符时表示的功能是取操作数地址

4.1逗号运算符

1.(1998_2)设有变量说明:int x;则表达式(x=4*5,x*5),x+25 的值为B。

A. 20

B. 45

C.100

D. 125

2.(1997_5)设a和b为整型变量,执行语句:

b=(a=2+3,a*4),a+5;

后,a和b的值为D。

A. 5,10

B. 20,25

C. 5,25

D. 5,20

3.(2002_2)表达式(a=4*5,b=a*2),b-a,a+=2的值是C

4.2复合运算符

1. (2000_2_1)若有

int a=5;

a+=a-=-a*a;

printf("\n%d",a);则a的值为60

2.(1996_2)设a是整型变量,初值是12,执行完表达式a+=a-=a*a后,a的值是B

A. 144

B. -264

C. 264

D. 0

3. (1999_2)

int m=3,n=2;

x=(--m==n++)?--m:++n;

y=m++;

z=n;

printf("\n%d\t%d\t%d",x,y,z); 的值为 1 1 3

4.3 ++,--运算符

1.(1993_2_1)设有如下的说明:

int i=3,j=5,m;

问:执行语句m=(i++)-(--j);后,m的值是-1,j的值是4。

2. (2001_6)

int i,j;

j=(i=1,i+9>9?i++||++i:++i);

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

2,1

5.表达式

5.1算术表达式

1.(1994_3)int a1=10,a2=3;float a3=8.0;若程序中,有表达式a1/a2*a2*a3,结果值为D A.80 B.80.0

C.72 D.72.0

2.(2001_5)已知a,b为整数且b!=0,则表达式(a/b)*b+a%b的值为A

A. a

B. b

C. a被b除的余数部分

D. a被b除商的整数部分

3.(2000_1)int k=11;

k=1/3*k++;

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

1

5.2关系表达式

1. (1999_2_1)在C语言中,当关系表达式的关系成立时,关系表达式的值为 1

2. (2000_3)设有int a;以下不能正确表达数学式10

A. 10

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

C. a>10&&a<15

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

5.3逻辑表达式

1.(1993_1)当a的值为5,b的值为4时,逻辑表达式a<=6&&a+b>8的值为C A.true B.false

C.非0整型值D.整型值0

2.(2003_6)逻辑“异或”运算可描述为“a xor b”,其中a和b为参与运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其它情况均为假。以下表达式中可以正确表示逻辑“异或”运算的是D。

A.a||b

B. a&&b

C. (a&&b)&&!(a||b)

D. (a||b)&&!(a&&b)

3.(1996_10)若x,y,z的初值均为1,则执行表达式w=++x||++y&&++z 后,x,y,z的值为D

A.x=1,y=1,z=2 B.x=2,y=2,z=2 C.x=1,y=2,z=1 D.x=2,y=1,z=1

4.(1998_4)设有说明: int x=1,z=1,y=1,k; 执行语句:k=x++|| ++ y&& ++ z;;后,变量y 的值为A

A. 1

B. 2

C. 3

D. 4

5. (1999_5)int a=4,b=5,c=6,d=7,m=1,n=1,e;

c=(m=a>b)&&(n=c>d);

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

0 1

6.(2000_7)

int a=0,b=4,k=2;

k=a+1>0||(++a<0)&&(!(b--<=0));

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

1,0,4

6.顺序结构

1. (2003_10)在缺省情况下,标准C的编译系统中预定义的标准输出流stdout直接连接的设备是D

A. 软盘

B. 硬盘

C. 键盘

D. 显示器

2. (2003_2_4)系统库函数scanf和gets在被调用执行时都可以读取从键盘输入的一串数字字符,其中函数scanf 具有将读取的数字字符串转换为整型数的功能。

3. (1996_2_13)若输入数据为:345 2456 ABCD<CR>,其中为回车,则程序的输出结果为a=3,b=4,s=5,c= ,d=2456

main()

{

int d;

char a,b,c,s[10];

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

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

}

7.选择结构

1. (2000_5)关于if语句描述,错误的是B

A.条件表达式可以是任意的表达式

B.条件表达式只能是关系表达式或逻辑表达式

C.条件表达式的括号不可以省略

D. 与else配对的if语句是其之前最近的未配对的if语句

2.(1997_8)对下面三条语句(其中s1和s2为内嵌语句),正确的论断是A

(1)if(a)sl;else s2

(2)if(a = = 0)s2;else sl

(3)if(a!= 0)s1;else s2

A. 三者相互等价

B. (1)和(2)等价,但与(3)不等价

C. 三者互不等价

D. (1)和(3)等价但与(2)不等价

3.(2002_2_6)以下程序运行后,x,y,z的值分别为1,2,3

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

if(x++&&y++)

z--;

else if(x+1==6||y--)

z++;

4. (1997_2_7)程序输出的最后一行是-2

#include

main()

{

int i=-5;

while(i++)

{

switch(i+5)

{

case 1: switch(-i-3)

{

case 1:printf("%d\n",i);

case 2:printf("%d\n",i);

}

case 2: printf("%d\n",i);break;

case 3: printf("%d\n",i);

}

}

}

8.循环结构

1.(1998_7)设整型变量x的当前值为3,执行以下循环语句后,输出的结果是B do

printf(―%d\t‖,x-= 2);

while (! ( - - x));

A. 0

B. 1 -2

C.3 0

D.死循环

2.(1999_6)循环语句:for(x=0,y=0;y!=150||x<4;x++) y+=50;执行了多少次?无数次

3. (1997_2_1)有int a,b;则对于下面“for循环中的scanf语句最少可执行1次。最多可执行 3 次。for(a=0,b=0; b!=30&&a<3; a++)scanf(―%d‖,&b).

4.(1996_4)设i和s都是整型变量,执行如下语句:for(i=0,s=0; i+s<10; i++, s++);printf(―%d, %d\n‖,i,s); 输出的i和s的值分别为:D

A. 11,11

B. 5,5

C. 6,6

D. 10, 10

5. (1996_2_12)以下程序的输出结果为********。

main()

{

int i,j;

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

{

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

printf("*");

printf("\n");

}

}

6.(2001_2_5)下列程序的运行结果为30

void main(void)

{

int i=0,j=10,k=2,s=0;

for(;i<=j;)

{

i+=k++;

s=s+i;

}

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

}

9.continue、break

1.(1997_9)退出一个循环语句(不终止函数的执行)的有效措施是A

A.用break语句

B.用continue语句

C.用return语句

D.。用exit语句

10. (1999_10)break语句C

A. 用在能出现语句的任何地方

B.只能用在循环体内

C.只能用在循环体内或switch语句中

D.可用作函数内的任一语句

2.(2003_9)以下跳转语句中,只有C可以选择不唯一的跳转目的地。

A. continue

B. break

C. goto 标识符

D. return

3. (2001_2_1)任何函数返回值都是通过函数体中的return语句返回的,void 类型的函数没有返回值,因此它的调用形式不能作为表达式的运算分量;

4.(2002_2_1)只能在循环体中出现的语句是continue

5. (2001_2_9)执行以下程序时输出第二行是5,6第三行是10,11;

void main(void)

{

int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},i,j;

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

{

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

{

if(i>j+1)

continue;

if(i

break;

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

}

printf("\n");

}

}

10.数组

10.1 数据数组

1. (2002_4)以下声明语句正确的是D

A.int n,a[n]; B. int a[]; C. int a[2][3]={{1},{2},{3}}; D. int a[][3]= {{1},{2},{3}};

2. (2003_3)已有声明:int s[2][3];以下选项中A正确的引用了数组s中的基本元素。

A. s[1>2][!1]

B. s[2][0]

C. s[1]

D. s

3. (1999_4)设有说明:int a[4][4];与数组元素a[3][3]等价表示的是D

A. a[3]+3

B.*(a+3)+3

C. &a[3][3]

D. *(*(a+3)+3)

4. (2002_10)设有声明语句:int a[3][3]={1,2,3,4,5,6,7,8,9};以下语句中不是a[1][2]表达形式的是D

A. *(*(a+1)+2)

B. *(&a[2][0]-1)

C. *(a[1]+2)

D. *(a+1)[2];

5. (2001_2_2)执行以下程序段后b[0],b[1],b[2]的值为2,1,0

int b[3]={0,1,2};b[2]=b[(b[0]=2)+b[1]-1]-2;

6. (1996_2_7)问题:设输入的数据为:

1 2 3 3 2 1 2 1 3

问题:执行程序后,该程序的输出结果为a[1,1]= 2; a[2,2]= 3;a[3,3]= 2.

main( )

{

int a[4][4],i,j;

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

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

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

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

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

a[i][j]=a[(a[i][j]+1)%3+1][(a[j][i]+2)%3+1];

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

printf("a[%d,%d]=%d\n",i,i,a[i][i]);

}

7. (1997_2_4)执行以下程序结束后,a[3][0]= 4 , a[0][2]= 11 , a[1][2]= 16 .

main()

{

int a[4][4];

int nc,nl,i,j,k;

i=j=0;

nc=3; nl=0;

a[i][j]=1;

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

{

if(i

else if(i==nc&&j

else if(i>nl&&j==nc)a[--i][j]=k;

else if(i==nl&&j>nl+1)a[i][--j]=k;

if(i==nl&&j==nl+1){nc--;nl++;}

}

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

{

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

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

printf("\n");

}

}

8. (1998_2_1)执行以下程序后,sq[0][2]= 2 , sq[1][1]= 5 , sq[2][0]= 8

#include

void main(void)

{

static int sq[3][3]={0,0,0,0,0,0,0,0,0};

int i,j,k;

i=1;j=0;

sq[i][j]=1;

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

{

i--;j--;

if(i<0&&j<0)

{

i++;

j+=2;

}

else if(i>=0&&j<0)

j=2;

else if(i<0&&j>=0)

i=2;

else if(i>=0&&j<=2&&sq[i][j]!=0)

{

i++;

j+=2;

}

sq[i][j]=k;

}

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

{

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

printf("%5d",sq[i][j]);

printf("\n");

}

}

9. (2002_2_9)执行以下程序时输出第一行是 1 4 3 ,第二行是 2 5 8 ;

void main(void)

{

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

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

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

if((m+k)%2)

t=a[m][k],a[m][k]=a[k][m],a[k][m]=t;

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

{

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

printf("%d",a[m][k]);

printf("\n");

}

}

10.2字符数组

1. (1999_3)static char x[]="12345";

static char y[]={'1','2','3','4','5'}; 关于以上两语句说法正确的是:B

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

B. x数组长度大于y数组长度

C. x数组长度小于y数组长度

D. x数组等价于y数组

2. (2002_1)若有声明语句char s1[10]={0},s2[10]=‖books‖;则能将字符串‖books‖赋给数组s1保存的表达式是D

A. s1=‖books‖;

B. strcpy(s2,s1);

C. s1=s2;

D. stract(s1,s2);

3.(1998_9)判断两个字符串s1 s2是否相等,应当使用D

A . if(s1= =s2) B.if(s1=s2) C. if(strcmp(s1,s2)) D. if(! strcmp(s1,s2))

4.(1996_9)表达式‖This>That‖ 的值为A

A.该字符串的首址

B. ―This>That‖

C.不确定

D. 表达式错误,不能求值

5. (1997_2_5)设输入的字符串为:

The WinXP Operating system

则执行程序后,输出的第一行和最后一行分别是The和erating

#include

main()

{

char a[4][10],i,j;

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

scanf("%s",a[i]);

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

{

j=i;

printf("%s\n",a[i++]+j);

}

}

11.函数

11.1函数定义

1. (2003_1)在定义任何一个函数时,下列选项中 B 是不可缺少的。

A. 函数名前的数据类型

B. 函数名后的圆括号

C. 形参声明

D. 函数体中的语句

2.(1998_10)C 语言中函数返回值的类型是由 C 决定的。

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

B.调用该函数的主调函数类型

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

D.传递给函数的实参类型

3. (1994_2)若对一个函数执行在先,说明在后,C 语言将视其返回值为 D

A .非法

B .无返回值

C .浮点值

D .整型值

4. (2002_2_4)当 return 语句被执行时,程序的执行流程无条件地从一个函数跳转到另一个函数。

5. (2002_3)以下自定义函数的头部,正确的是 C

A. int fun(int a[],b)

B. int fun(int a[],int a)

C. int fun(int *a,int b)

D. int fun(char a[][],int b)

6. (1998_1)数学式y

x y x ?+2

2在C 程序中对应正确的表达式为 D 。 A. sqrt(x*x+y*y)/x*y B.sqrt(x*x+y*y)/x*y

C.sqrt(x*x+y*y)/x/yD, sqrt(x*x+y*y)/(x*y))

7. (2000_6)设有以下函数定义,则返回的函数值是 C

int *fun(int *a)

{

int *t;

*a=99;

t=a;

return t;

}

void main(void)

{

int x,*y;

y=fun(&x);

----

}

A. 无确定值

B. 形参a 的地址

C. 主程序中变量x 的地址

D. 函数中变量t 的地址

11.2函数参数传递

1. (1997_3)C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是B。

A.地址传递

B.值传递

C.由实参传给形参,并由形参传回来给实参。

D.由用户指定传递方式

2. (2001_7)在以下程序的main函数中需要调用search函数的位置,填入正确的是B

A. search(c[3][4],12,8)

B. search(&c[0][0],12,8)

C. search(&c,12,8)

D. search(**c,12,8)

int search(int x[],int n,int k)

{

int i;

for(i=0;i

if(x[i]==k)

return i;

return -1;

}

void main(void)

{

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

if( !=-1)

printf("found");

else

printf("not found");

}

3. (2002_8)以下程序中,需要在fun函数中声明一个int变量,以下选项中不能用该变量的名字的是A

A. x

B. y

C. fabs

D. fun

#include "math.h"

int y;

int fun(int x)

{

; //int变量声明位置

------------

}

void main(void)

{

int a=1;

fun(a);

}

4. (2003_5)若有程序

int x;

int f(int y)

{

return 标识符;

}

#include "stdio.h"

int w;

void main(void)

{

int z=2;

f(z);

---

则在函数f中,return语句后允许出现的标识符是B

A. x或w

B. x或y

C. z或w

D. NULL

11.3数据处理函数

1. (1998_2_5)执行以下程序后,第一行输出是 3 ,第二行的输出是 1 ,最后一行的输出是 5 。

void f(int b,int t)

{

int m;

if(b

{

m=(b+t)/2;

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

f(b,m-1);

f(m+1,t);

}

}

main()

{

f(1,6);

}

2. (1999_2_8)执行以下程序时输出第一行是34 ,第二行是56 ,第三行是 5 ;

int i,j=2;

void p(void)

{

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

{

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

if((i+1)%2==0)

printf("\n");

}

}

void main(void)

{

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

p();

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

}

3. (2000_2_7)以下程序的运行结果为3,4,5

int *swap(int *a,int *b)

{

int *p;

p=a;a=b;b=p;

return a;

}

void main(void)

{

int x=3,y=4,z=5;

swap(swap(&x,&y),&z);

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

4. (2001_2_8)执行以下程序时输出第一行是15432 第二行是45132 ;

void rev(int *p,int n)

{

int t;

if(n>1)

{

t=p[0];

p[0]=p[n-1];

p[n-1]=t;

rev(p+1,n-2);

}

}

void main(void)

{

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

rev(a+1,4);

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

printf("%d",a[j]);

printf("\n");

rev(a,3);

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

printf("%d",a[j]);

}

5. (2000_2_5)以下程序的运行结果为15

add(int *p,int n)

{

if(n==1) return *p;

else return *p+add(p+1,n-1);

}

void main(void)

{

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

printf("\n%d",add(p,5));

}

6. (2002_2_11) 执行以下程序时输出第一行是1,3,7 ;

#include "stdio.h"

num(int n)

{

if(n==0) return 1;

return num(n-1)*2+1;

}

numlist(int *p,int n)

{

int i;

for(i=0;i

p[i]=num(i);

}

void main(void)

{

int a[3][3],i,j;

numlist(&a[0][0],9);

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

{

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

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

printf("\n");

}

}

7. (2003_2_12)执行以下程序时输出第一行是9 6 3 ,第二行是8 5 2

void swap(int *a,int *b)

{

int c;

c=*a;*a=*b;*b=c;

}

void main(void)

{

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

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

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

if(i==j)

swap(&a[i][j],&a[i+2][j+2]);

else

swap(&a[i][j],&a[i+1][j+1]);

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

{

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

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

printf("\n");

}

}

8. (2003_2_11)以下程序的运行结果是6 2 4 3 5 1

void fun(int *p1,int *p2)

{

int t;

if(p1

{

t=*p1;*p1=*p2;*p2=t;

fun(p1+=2,p2-=2);

}

}

void main(void)

{

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

fun(a,a+5);

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

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

}

9. (2000_2_8)执行以下程序时输出第一行是1,1 ,第二行是4,1 ,第三行是x =10 ;

fun(int n,int *s)

{

int f1,f2;

if(n==1||n==2)

*s=1;

else

{

fun(n-1,&f1);

fun(n-2,&f2);

*s=2*f1+f2+1;

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

}

}

void main(void)

{

int x;

fun(4,&x);

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

}

10. (2000_2_10)执行以下程序时输出第一行是 1 1 2 ,第二行是 3 5 8 ,第三行是13 21 34 ;

func(int *q1,int *q2,int *q3)

{

*q3=*q1+*q2;

}

void main(void)

{

int i,j,a[3][3]={1,1},*p1,*p2,*p3;

p1=a[0],p2=a[0]+1,p3=a[0]+2;

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

func(p1++,p2++,p3++);

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

{

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

printf("%d\t",a[i][j]);

printf("\n");

}

}

11. (2003_2_10) 以下程序的运行结果是 2 3 4 1

int f(int a[],int m,int b[],int n,int c[])

{

int i,j,k=0,t;

for(i=0;i

{

for(t=1,j=0;j

if(a[i]==b[j])

{

t=0;

break;

}

if(t)

c[k++]=a[i];

}

return k;

}

void main(void)

{

int x[]={7,2,3,6,5,4,1},y[]={5,10,7,9,8,6},z[10],w,j;

w=f(x,7,y,6,z);

for(j=0;j

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

c语言复习题答案

c语言复习题-2010 1~5 ABCDB 6~10 BADAD 11~15 DABAB 16~20 ADDDC 1. 编程计算1!+2!+3!+……+n!的值,其中n的值由用户输入。 #include main() { long term = 1,sum = 0; int i,n; scanf(“%d”,&n); for (i = 1; i <= n; i++) { term = term * i; sum = sum + term; } printf("1!+2!+...n! = %ld \n", sum); } 2. 从键盘任意输入某班20个学生的成绩,打印最高分,并统计不及格学生的人数。要求按如下函数原型进行编程,分别计算最高分和统计不及格学生的人数:int FindMax(int score[], int n); int CountFail(int score[], int n); #include int FindMax(int score[], int n); int CountFail(int score[], int n); main() { int i, score[20],max,count; for (i=0; i<20; i++) { scanf("%d",&score[i]); } max = FindMax(score, 20); printf("max = %d\n",max); count = CountFail(score, 20); printf("count = %d\n",count); } int FindMax(int score[], int n) { int max,i;

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语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

C语言基础练习题(含答案)Word版

第一章C语言基础知识 1.1 选择题 1. 以下不是C语言的特点的是()。B A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2. 下列字符序列中,不可用作C语言标识符的是()。B A.abc123 B.no.1 C._123_ D._ok 3. 正确的C语言标识符是()。A A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。B A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 5. 下列符号中,不属于转义字符的是()。B A.\\ B.\0xAA C.\t D.\0 6. 不属于C语言关键字的是()。d A.int B.break C.while D.character 7. 是C语言提供的合法关键字的是()。b A.Float B.signed C.integer D.Char 8. 以下不能定义为用户标示符的是()。b A.scanf B.Void C._3com_ D.int 9. 一个C程序是由()。 b A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 c A.程序行 B.语句 C.函数 D.字符 11. 下列说法中,错误的是()。 a A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外 C.主函数只能调用用户函数或系统函数,用户函数可以相互调用 D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12. 以下说法中正确的是()。 c A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行

(完整版)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; printf("d=%d",d); } A d=70 B d=80 C d=140 D d=700 10.已知职工记录描述如下,在Turbo C中,系统为变量w分配()字节的空间。 struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 11.设有以下定义,值为5的枚举常量是()。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu 12.下面选项中正确的赋值语句是(设char a[5],*p=a;)()。 A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd"; 13.设有以下程序段,则值为6的表达式是()。 struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 写出下列程序的运行结果(10分,每小题2分) 1.float average (float array[10]) { int i;

C语言1-5章复习题及参考答案

一.选择题 1、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。 A .-3 B.9 C.-12 D.6 2、若有定义:int a=8, b=5, c; 执行语句 c=a/b+0.4; 后,c的值为()。 A .1.4 B.1 C.2.0 D.2 3、有如下程序: void main() { int i,sum; for(i=1;i<=3;sum++) sum+=i; printf("%d\n",sum); } 该程序的执行结果是()。 A .6 B.3 C.死循环 D.0 4、下列关于表达式的描述中,错误的是()。 A . 常量和变量都是表达式。 B. 运算符类型对应表达式的类型。 C. 每一个表达式都有自己的值。 D. 表达式必须以分号结尾。 5、C语言中,合法的长整型常数是()。 A . '\t' B.” A” C.65 D.a 6、若已定义 x 和 y为double 类型,则表达式 x=1;y=(x+3)/2 的值是()。 A .1 B.2 C.2.00000 D.2.50000 7、表达式:10!=9的值是()。 A . true B. 非零值 C.0 D.1 8、以下程序的输出结果是()。 #include void main() { printf("%d\n", NULL); } A . 不确定的 B.0 C.-1 D.1 9、请选出合法的C语言赋值语句。() A . a=b=58 B.i++; C. a=58,b=58 D. k=int(a+b); 10、假设 int b=2; 表达式(b>>2)/(b>>1)的值是()。 A .0 B.2 C.4 D.8 11、关于语句printf(“hello world\n”);,下列描述中错误的是()。 A . printf()是格式化输出函数,用于输出信息。 B. printf()括号中的内容为函数的参数。 C. printf()括号中的内容会全部输出到控制台上。 D. \n表示换行操作。 12、下列选项中,哪一项不是C语言中的位运算符()。 A .& B.|| C.~ D.^ 13、以下程序的输出结果是()。 void main()

c语言试题及答案

C语言部分 一、选择题(每小题2分,共10分) (下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。 1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D, E ) A、*(a+1)为元素6的地址 这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。 B、*(a[1]+1)的值为2 为8,故B不正确 C、**(a+1)+2的值为8 这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确; D、a[0]与a相同 因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。 E、a[1][2]的值为10 它是指第二行的第三个元素,为10,正确 2、对函数的正确使用方法描述( A,C,D )。 A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组 B、实参数组元素和形参数组元素类型可以不一致 C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度 E、数组名做参数属于值传递 3、对静态变量的正确描述( A,B,D,E )

A、静态局部变量在静态存储区内分配单元() B、静态外部变量可以赋初值,也可以不赋初值 C、静态外部变量的作用与外部变量相同 D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。 E、静态局部变量只赋一次初值 4、下列描述正确的是( A ,C)。 A、由main 函数及其参数argc和* argv[]可以实现命令行方式 B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中 //先写缓冲区数据到文件中,再释放文件指针 C、字符数组并不要求它的最后一个字符是‘\0’ //是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。 D、‘A’和“A”都是字符串常量 E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是7 5、在缓冲文件系统中用于读写的函数有( A,B,D ) A、putchar () B、fread() C、rewind () D、purw() E、fseek() 二、程序阅读,并给出运行结果(共10分,每题5分)。 (1)main() { unsigned a,b,x int n; a=0x763 输出结果: n=6;

c语言期末考试试题

一、单项选择题。(每题1分,共20分) 1. C程序的基本单位是:() A.子程序 B.程序 C.子过程 D.函数 2.在C语言中,非法的八进制是:() A.016 B.018 C.017 D.02 3. 不是C语言实型常量的是:() A.55.0 B.0.0 C.55.5 D.55e2.5 4 .字符串“xyzw”在内存中占用的字节数是:() A.6 B.5 C.4 D.3 5. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:() A.2.0 B.2.25 C.2.1 D.1.5 D.1.5 D.1.5 D.1.5 6. 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2- `a`,c2-c1);则输出结果为:() (a的ASCII码值为97) A.M,2 B.G,3 C.G,2 D.D,g 7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据 输入是:() A.a=2.2,b=3 B.a=2.2 b=3 C.2.2 3 D.2.2,3 8.表示关系12<=x<=y的C语言表达式为:() A.(12<=x)&(x<=y) B. (12<=x)&&(x<=y) C. (12<=x)|(x<=y) D.(12<=x)||(x<=y) 9.设x=1,y=2,m=4,n=3,则表达式x>y?x:mc4)后,s,t的值为:() A.1,2 B.1,1 C.0,1 D.1,0 12. 语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf最多可执行次数为:() A.4 B.6 C.5 D.1 13. 对于for(s=2;;s++)可以理解为:()

c语言试题及答案 ()

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (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 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 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) 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 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是(D )。 A. 软件是一种逻辑实体,具有抽象性 ~ B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于(D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 【 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件

A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。 - A. 设计说明书 B. 需求规格说明书 C. 可行性分析报告 D. 用户手册 9. 以下关于数据流图的说法错误的是( c )。 A. 数据流图舍去了具体的物质,只剩下数据的流动、加工处理和存储 B. 数据流图是用作结构化分析的一种工具 C. 传统的数据流图中主要由加工、数据源点/终点、数据流、控制流、数据存储组成 D. 数据流图的绘制采用自上向下、逐层分解的方法 10. 数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( c )。 A. 数据库设计 B. 数据通信 C. 数据定义 D. 数据维护 11. 需求分析阶段的研究对象是( b )。 ¥ A. 系统分析员要求 B. 用户要求 C. 软硬件要求 D. 系统要求 12. 结构化方法的基本原则是( b )。 A. 模块化 B. 抽象与分解 C. 信息隐蔽 D. 逐步求精 13. 耦合度最高的是(b)耦合。 A. 环境 B. 内容 C. 控制 D. 数据 14. 内聚程度较低的是( a )内聚。 A. 偶然 B. 通讯 C. 顺序 D. 时间 15. 对一个程序来说,组成系统的模块数目( b ),则开发成本越小。 A. 越多 B. 越少 C. 顺序 D. 时间> 16. 画软件结构图时应注意调用关系只能是(B )。 A. 从下到上 B. 从上到下 C. 从左到右 D. 从右到左 17. 程序流程图中的箭头代表( b )。 A. 数据流 B. 控制流 C. 顺序流 D. 调用 18. 软件测试是软件质量保证的重要手段,下述( B )是软件测试的最基础环节。

C语言考试复习试题及参考答案

中南大学现代远程教育课程考试复习试题及参考答案 C语言程序设计 一、单项选择题 若以下各题所有库函数都可以合法使用,且变量定义如下: int m=5, i=3,j=2,*p, a=8,b=0; int arr[10]={0,1,2,3,4,5,6,7,8,9},td[ ][3]={1,2,3,4,5,6}; float x=2.5,y=3.0; double z=0; long n=1; char c=’A’,ch[20]={’a’,’b’,’c’,’\0’,’d’,’\0’}; struct student { int num; char name[20]; float score; struct student *next; }st1,st2,*ps;

FILE *fp; 1.若将3和10从键盘输入给变量a、x,输入语句为 scanf(“a=%d,x=%f”,&a,&x);正确的键盘输入是(↙表回车): A a=3,x=10↙ B 3,10↙ C 3 10↙ D 3,10.0↙ 2. 以下不是死循环的语句是: A for ( ;;y+=i++); B while(a) y+=i++ ; C do{ y+=i++}while (a>0); D for (b=0;(c=getchar()!=’\n’);)b++; 3.若p=arr;正确的语句是: A *p=arr[10]; B *p=arr[2*a]; C p=arr[5]; D p[i]=arr[0]; 4.若ps=&st1;则下面描述正确的是: A ps->num与st1->num等价。 B ps.num与st1.num等价。 C ps->num与num等价。 D ps->num与st1.num等价。 5.语句printf(“%d",aj);的输出结果是:

C语言试题库(带答案解析)~排版

一、选择题 1、以下不能定义为用户标识符的是( )。 (A) MAIN (B) _HJ (D) LINE1 2、以下不能定义为用户标识符的是( ) (A) If (B) H_J (D) LINE12 3、下面属于C 语言标识符的是( )。 (A) 2ab (B) @f (C) b 4、下列符号中用来表示C 语言中的回车换行的是( )。 (A) \r (C) \b (D) \t 5、在计算机系统中,可执行程序是( ) (A) 源代码 (B)汇编语言代码 (D) ASCII 码 6、在Visual C++ 环境下,C 源程序文件名的默认后缀是( )。 (A) .obj (B) .txt (D) .doc 7、Microsoft Visual C++ 中,C 语言可执行程序的扩展名是:( ) (B) obj (C) c 或cpp (D) txt 8、C 程序由( )组成。 (A)子程序 (B) 主程序和子程序 (D) 过程 9、C 程序的基本组成单位( )。 (A) 数据类型 (B) 变量和常量 (D) 表达式 10、C 语言中主函数的个数是( )。 (A) 2个 (C) 任意个 (D) 10个 11、一个 C 程序的执行是从( ) (B)本程序文件的第一个函数开始,到本程序文件最后一个函数结束. (C)本程序文件的第一个函数开始,到本程序main 函数结束. (D) 本程序的main()函数开始,到本程序文件的最后一个函数结束. 12、以下叙述正确的是 (A)在C 语言程序中,main 函数必须放在其他函数的最前面 (C)在C 语言程序中,只有main 函数才可单独进行编译 (D)每个后缀为.C 的C 语言源程序都应该包含一个main 函数 13、设变量a 是整型,b 是实型,c 是双精度型,则表达式2+’a’+b*c 值的数据类型是( )。 (A) int (B) float 14、以下选项中表示一个合法的常量是(说明:符号□表示空格) A) 9□9□9 C) D) 15、以下选项中非法的字符常量是 A)'\102' B)'\65' C)'\xff' 16、以下选项中,能表示逻辑值“假”的是 A)1 B) D) 17、下列关系表达式中,结果为“假”的是 A)(3+4)>6 C) 3<=4||3 D)(3<4)==1 18、关于C 语言变量,以下说法不正确的是( ) (A) 变量名由程序员定义,必须符合标识符的命名规则。 (B) 变量是程序运行过程中其值可以改变的量。 (D) 变量命名时应尽量做到见名知意。 19、关于C 语言中数的表示,以下叙述正确的是 B)只要在在允许范围内整型和实型都能精确表示 C)只有实型数在允许范围内能精确无误的表示,整型数会有误差 D)只有八进制表示的数在不会有误差 20、设有语句int a=3;,则执行了语句a+=a=a*a;后,变量a 的值是 。 A .3 B .0 C .9 21、在C 语言中,要求运算数必须是整型的运算符是 。 B ./ C .< D .! 22、C 语言中最简单的数据类型包括 。 A .整型、实型、逻辑型 C .整型、字符型、逻辑型 D .整型、实型、逻辑型、字符型 23 、在C 语言中,合法的字符型常量是 。 B ."A" C .65 D .A 24、若已定义x 和y 为double 型变量,则表达式x=1 ,y=x+3/2的值是 。 A .1 B .2 D . 25、设正x 、y 均为整型变量,且x=10,y=3,则以下语句的输出结果是 。 printf("%d,%d\n",x--,--y); A .10,3 B .9,3 C .9,2 26、若有定义int a=8,b=5,C;,执行语句C=a/b+;后,C 的值为 。 A . C . D .2 27、以下选项中,不正确的赋值语句是 。 A .++t; B .n1=(n2=(n3=0)); C .k=i==j; 28、设x 和y 均为 int 型变量,则语句:x+=y,y=x-y;x-=y;的功能是 。 A .把x 和y 按从大到小的顺序排列 B .把x 和y 按从小到大的顺序排列 C .无确定结果 29、以下程序的输出结果是 。 #include <> main() { char c='z'; printf("%c",c-25); } B .Z C .z-25 D .y 30、已知字母A 的ASCII 码为十进制数的65,以下程序的输出结果是 。 #include <> main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); B .B,C C .C,D D .不确定的值 31、若k 是int 型变量,则以下程序片段的输出结果是 。 k=-3; if(k<=0) printf("####"); printf("&&&&"); B .&&&& C .####&&&& D .有语法错误,无输出结果 32、关于以下程序,说法正确的是 。 #include <> main()

C语言试题及答案

C语言试题及答案 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (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 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言 的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言面试题及答案

1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 4、语句for( ;1 ;)有什么问题?它是什么意思? 答:和while(1)相同。 5、do……whi le和while……do有什么区别? 答:前一个循环一遍再判断,后一个判断以后再循环 6、请写出下列代码的输出内容 以下是引用片段: #include main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; }

答:10,12,120 7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于( 堆)中。 9、设有以下说明和定义: typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max; 则语句printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:___52____ 答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.

相关文档