c语言基础练习题及答案

c语言基础练习题及答案
c语言基础练习题及答案

c 语言基础练习题及答案

一、单项选择题

1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为_c_

A 、”.c” B、“ .obj ” C、“ .exe” D 、“ .bas”

2. 以下选项中不正确的整型常量是_c ______ 。

A、12L B 、-10 c、1,900 D、123U

3. 表达式___c___ 的值是0。

A、3%5

B、3/5.0 c、3/5 D、3<5

4. 表达式!(x>0||y>0) 等价于__D___ 。

A 、!x>0||!y>0

B 、!(x>0)||!(y>0) c 、!x>0&&!y>0 D 、!(x>0)&&!(y>0)

5. 若变量已正确定义并赋值,表达式__D ____ 不符合c 语言语法。

A、4&&3 B 、+a c、a=b=5 D 、int(3. 1 4)

6. 若变量已正确定义,执行语句scanf(%d%d%d ,&k1,&k2,&k3) ;时,___B

A 、2030,40 B、20 30 40 c、20, 30 40 D 、20, 30,40

7. 执行语句printf( ” __D ____ ” , 2); 将得到出错信息。

A、%d

B、%o c、%x D 、%f

8. 设变量定义为"int s[ ]=hello\nworld\n; ”则数组s中有—B __________ 个元素。

A、12

B、13 c、14 D、15

9. 设变量定义为“ int a[2]={1,3}, *p=&a[0]+1; ” 则*p 的值是___B_。

A、2

B、3 c、4 D、&a[0]+1

10. 若变量已正确定义并赋值,表达式-k++ 等价于__A________ 。

A、-(k++) B 、(-k)++ c、-(k+1) D、-(++k)

11. 在c 语言程序中,在函数内部定义的变量称为__D ____ 。

A、全局变量

B、全程变量

C、外部变量

D、内部变量

12. 若x 是整型变量,表达式(x=10.0/4.0) 的值是__D___ 。

A、2.5

B、 2.0

C、 3

D、2

13. 对于以下的变量定义,表达式__A ____ 是正确的。

struct node {

char s[10];

int k;

} p[4];

A、p->k=2 B 、p[0].s= “ abc” C、p[0]->k=2 D 、p->s=‘a'

14. 下列运算符中,优先级从高到低依次为__D___ 。

A、&& ,!,||

B、||,&& ,!

C、&& ,||,!

D、!,&& ,||

15. 下列程序段的输出结果是__B___ 。

int *p, *q, k = 1, j=10 ;

p=&j; q = &k ; p = q ; (*p)++; printf(%d,*q);

A、1

B、2

C、10

D、11

16.以下各选项企图说明一种新的类型名,其中正确的是水量(C) 的文件

是正确的输入。

A) typedef v1 int; B) typedef v2=int;

C) typedefv1 int v3; D) typedef v4: int;

17. 以下选项中,非法的字符常量是( C)

A) ‘ \t' B) ‘ \17 ' C)“n” D) ‘ \xaa'

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

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

19. 以下程序的输出结果是( B ) main()

{ char st[20]= “” ;

printf(%d %d \n ” ,strlen(st),sizeof(st));

}

A) 9 9 B) 5 20 C) 13 20 D) 20 20

20. 以下程序的输出结果是 ( D ) main()

{ int a, b;

for(a=1, b=1; a<=100; a++)

{ if(b>=10) break;

if (b%3= =1)

{ b+=3; continue; }

}

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

}

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

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

union myun

{ struct

{ int x, y, z; } u;

int k;

} a;

main()

{ a.u.x=4; a.u.y=5; a.u.z=6;

a.k=0;

printf(%d\n ” ,a.u.x);

}

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

22. 以下程序段的输出结果是(A)

char s[]=\\a\141abc\t;

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

A) 9 B) 12 C) 13 D) 14

23. 以下程序的输出结果是(B) main()

{ char ch[3][5]={AAAA,BBB,CC};

,ch[1]); }

A) AAAA B) BBB C) BBBCC D) CC

(C) 函数命令行参数表示形式是24. 不合法的mainA) main(int a,char *c[]) B) main(int arc,char **arv)

C) main(int argc,char *argv) D) main(int argv,char *argc[]) 有以下程序25.

main()

{ char *s[]={one, wo, hree},*p;

p=s[1];

printf(%c,%s\n,*(p+1),s[0]); }

(C)

执行后输出结果是

A) n,two B) t,one C)w,one D) o,two

26. 设有如下说明typedef struct

{ int n; char c; double x;}STD;

(A) 则以下选项中,能正确定义结构体数组并赋初值的语句是'B',75}};

B) STD tt[2]={1,A,62},2, B,75};

'B'}};

B, 75.0}};

27. 若变量c 为char 类型,则能正确判断出c 为小写字母的表达式是( D )

A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')

C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')

二、填空题

1. 设ch 是字符型变量,判断ch 为英文字母的表达式是:

(ch>= ' A' &&ch,= ' Z' )||(ch>= ' a' &&ch<= ' z') __。

2. 计算下列分段函数的if 语句是_ if(x>0)y=1;else if(x=0)y=0;else y= -1;___ 。1 x>0

y= 0 x=0

-1 x<0

3. 表达式!!5 的值是__1 ___ 。

4. 下列程序段的输出结果是___12___ 。printf(%xn, (0x19 <<1) & 0x17);

5. 下列程序段的输出结果是__ k=4 s=6___ 。

int k, s;

for(k=0, s=0; k<10; k++)

if (s>k) break ;

else s += k;

printf(k=%d s=%d, k, s);

6. 下列程序段的输出结果是__15___ 。#define MIN(x,y) (x)<(y)?(x) : (y)

printf(%d,10*MIN(10,15));

7. 下列程序在运行时可能会出错,原因是__指针变量s 未赋初值 _____ 。

# include

void main( )

{ char *s;

gets(s);

puts(s);

}

8. 下列程序段的输出是___6 0__ 。

# include

int f(int m)

{ static int k=0;

int s=0;

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

return s;

}

void main( )

{ int s1, s2;

s1=f(5);

s2=f(3); printf(%d %d\n, s1, s2);

}

9. 下列程序段的输出结果是__ fgh ___。

char *st[ ]={abcd,efgh,ijkl,mnop}; printf(%s, *(st+1)+1);

10. 用typedef 定义一个含10 个元素的整型数组ARR 。typedef int ARR[10];

11.以下程序调用findmax 函数返回数组中的最大值,请填空。findmax(int *a,int n) { int *p,*s;

for(p=a,s=a; p-a

if ( *p>*s ) s=p; return(*s);

}

main()

{ int x[5]={12,21,13,6,18}; printf(%d\n,findmax(x,5));

}

三、程序(段)填空题

1 ?设变量x, y, z已正确定义和赋值,请仔细阅读程序段A,然后在程序段E中填入正确的内容,使程序段A和程序段E有相同的功能。

B

程序段A 程序段

x=x+y;

y=x -y;

x=x -y;

z=x+y; z=x ;

x=y ;

y=z;

z=x+y;

2. 请仔细阅读函数fl,然后在函数f2中填入正确的内容,使函数fl和函数f2有相同的功能。

char *f1(char s[ ], char t[])

{ int k;

for(k=0; t[k]!=' '; k++)

s[k]=t[k];

s[k]=' ';

return s;

}

char *f2(char *s, char *t)

{ char *p=s ;

while(( *p++ = *t++)!=' ')

return s ;

}

一、单项选择题

1. ___D___ 是合法的用户自定义标识符。

A、b-b B 、float C、D、_isw

2. 若变量已正确定义并赋值,表达式___B___不符合C 语言语法。

A 、a*b/c;

B 、3.14%2 C、2, b D 、a/b/c

3. ___C__ 是不正确的字符常量。

A、'n'

B、'1'

C、a D 、'101'

4. 在C 程序中,用___B__ 表示逻辑值“真” 。

A、1

B、非0的数

C、非1的数

D、大于0的数

5. __C ___ 把x、y定义成float类型变量,并赋同一初值3.14。

A、float x, y=3.14; B 、float x, y=2*3.14;

C、f loat x=3.14, y=x=3.14; D 、float x=y=3.14;

6. 若变量已正确定义,表达式___C___的值不是2。

1A3

、a==2 D 、1<<1 C 、2&3 B 、 A

7. 若变量已正确定义,语句“ if(a>b) k=0; else k=1; ”和__C _____ 等价。

A 、k=(a>b)?1:0;

B 、k=a>b;

C、k=a<=b; D 、a<=b ? 0 : 1;

8. 设变量定义为“ int a, b; ”,执行下列语句时,输入_D ____ ,则a和b的值都是10 scanf(a=%d, b=%d,&a, &b) ;

A、10 10

B、10, 10

C、a=10 b=10

D、a=10, b=10

9. 下列程序的输出结果是__D___ 。

fun(int a, int b, int c)

{ c =a*b; }

void main( )

{ int c;

fun(2,3,c);

printf( ” %dn ” ,c);

}

A、0

B、1

C、 6

D、无法确定

10. 在C 程序中,若对函数类型未加说明,则函数的隐含类型为__A_

A、int B 、double C、void D 、char

11. 表达式strlen( ”hello ”) 的值是___B______ 。

A、4

B、5

C、6

D、7

12. 设变量定义为“ int a[4]; ” ,则表达式__D ______ 不符合C 语言语法

A 、*a

B 、a[0]

C 、a D、a++

13. 设变量定义为“ int x, *p=&x; ”,则&*p 相当于__A___ 。A、p B、*p C、x D、*&x

14. 若变量已正确定义,_A___ 不能使指针p 成为空指针。

A 、p=EOF

B 、p=0 C、p=' ' D、p=NULL

15. 对于以下的变量定义,表达式__D _____ 不符合C 语言语法。

struct node {

int len;

char *pk;

} x = {2,

ight}, *p = &x;

A、p->pk

B、*p.pk C 、*p ->pk D 、*x.pk

16. 有如下程序

int runc(int a,int b)

{ return(a+b);}

main0

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

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

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

}

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

A) 12 B) 13 C) 14 D) 15

17. 对于基类型相同的两个指针变量之间,不能进行的运算是(C)

A) < B) = C) + D) - 有如下程序18.

long fib(int n)

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

else return(2);

}

main0

{ printf( “ %d\n ”,fib(3)); 该程序的输出结果是(B)

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

19. 有如下定义

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

strict person class[10]={ “ Johu”, 17,

“ Paul” , 19

“ Mary ” , 18,

“ Adam 16,};

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

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

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

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

D) printf( “ %A c\n ”,class[2].name[O]);

20. 以下所列的C 语言常量中,错误的是(B)

A) 0xFF B) 1.2e0.5 C) 2L D) ‘\72'

21. 有以下程序段

int k=0

while(k=1)k++;

while 循环执行的次数是(A)

A) 无限次B) 有语法错,不能执行

C) 一次也不执行D) 执行1 次

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

A) 0 B) 29 C) 31 D) 无定值fun(int x, int y, int z) { z=x*x+y*y; }

main()

{ int a=31;

fun(5,2,a);

printf( “ %d”,a);

}

23. 下列程序段的输出结果是(A) A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 void fun(int *x, int *y)

{ printf( “ %d %d” , *x, *y); *x=3; *y=4;}

main()

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

,x, y);

” %d %d “printf(

}

24. 当调用函数时,实参是一个数组名,则向函数传送的是A) 数组

(B)

的长度B) 数组的首地址

C) 数组每一个元素的地址D) 数组每个元素中的值

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

A) 1 B) 2 C) 3 D) 4 long fun( int n)

{ long s;

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

else s=n-fun(n-1); return s;

}

main()

{ printf( “ %ld\n ” , fun(3)); }

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

A) 16 B) 2 C) 9 D) 1 #define SQR(X) X*X main()

{ int a=16, k=2, m=1; a/=SQR(k+m)/SQR(k+m);

printf( “ d\n ” ,a);

}

27. 以下函数返回a 所指数组中最小的值所在的下标值fun(int *a, int n) { int i,j=0,p;

p=j;

for(i=j;i if(a[i] return(p);

} 在下划线处应填入的是(D)

A) i=p B) a[p]=a[i] C) p=j D) p=i

二、填空题

1. 表示"x > y> z ”的C 表达式是______ x>=y && y>=z ____

2. 下列程序段的输出是__1 _____ 。

pri ntf(%on, 010<<1A1);

3. 下列程序段的输出是__6,90 ___ 。

int k;

float s;

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

s += k/2;

printf(%d, %fn, k, s);

4. 下列程序段的输出是__5,25 ______ 。

#define f(a, b, x) a*x+b printf(%d, %dn, f(3,2,1), f(6, 5, f(3, 2, 1)));

5. 下列程序段的输出是_*#*# main() { int k;

for(k=1; k<5; k++) {

if(k % 2) printf(*);

else continue;

printf(#);

}

}

6. 下列程序段的输出是__5 8_

# include

int f(int x)

{ static y=1;

y++;

x += y;

return x;

}

void main()

{ int k;

k=f(3);

printf(%d %dn, k, f(k));

}

7. 下列程序段的输出是___5__ int *p, *q, k = 5 , j = 6 ; q = &k ; p = q ; q = &j ; printf(%d, *p);

8. 函数

void f(char s[ ], char t[ ])

{ int k=0;

while (s[k]=t[k]) k++;

}

等价于

void f(char *s, char *t)

{ while (_*s++=*t++ ___ );

}

9. 下列程序段的输出是_ ne,s _ char *a[2]={one, wo}, **p=a; printf(%s,, *(p++)+1);

printf(%cn, **p -1);

10. 下列程序编译后生成t.exe, 运行t input output zoo oil 的输出结果是__zoo___ 。void main(int argc, char * argv[ ])

{ int k;

char *p=argv[1];

if(strcmp(argv[k], p)>0) p=argv[k];

for(k=2; k

printf(%sn, p);

}

11. 下列程序调用swap 函数交换a 和b 的值,并输出交换后的a 和b 的值。程序的输出结果是:

After swap 5, 3 。

void main( )

{ int a=3, b=5;

swap( &a, &b ) ;

printf(After swap %d, %d, a, b);

}

swap( int *p, int *q )

{ int t;

t=*p; ;

*p=*q ;

*q=t ;

}

一、选择题( (1)-(40)题每题1分,(41) -(50)题每题2分,共60 分)

下列各题A) 、B)、C)、D) 四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。

(1) 计算机的存储器完整的应包括

A) 软盘、硬盘B) 磁盘、磁带、光盘

C) 内存储器、外存储器D) RAM 、ROM

(2) 计算机中运算器的作用是

A) 控制数据的输入/输出B) 控制主存与辅存间的数据交换

C) 完成各种算术运算和逻辑运算D) 协调和指挥整个计算机系统的操作

(3) 软磁盘处于写保护状态时,其中记录的信息

A) 绝对不会丢失

B) 不能被擦除,但能追加新信息

C) 不能通过写磁盘操作被更新

D) 不能以常规方式被删除,但可以通过操作系统的格式化功能被擦除

(4) 光盘根据基制造材料和记录信息的方式不同,一般可分为

A) CD 、VCD

B) CD 、VCD 、DVD 、MP3

C) 只读光盘、可一次性写入光盘、可擦写光盘

D) 数据盘、音频信息盘、视频信息盘

(5) 在计算机系统中,可执行程序是

码D) ASCII 机器语言代码C) 汇编语言代码B) 源代码A)

(6) 计算机软件系统包括

A) 操作系统、网络软件B) 系统软件、应用软件

C) 客户端应用软件、服务器端系统软件D) 操作系统、应用软件和网络软件

(7) 目前,一台计算机要连入Internet ,必须安装的硬件是

A) 调制解调器或网卡B) 网络操作系统

C) 网络查询工具D) WWW 浏览器

(8) 在多媒体计算机系统中,不能存储多媒体信息的是

A) 光盘B) 磁盘C) 磁带D) 光缆

(9) 要将当前盘当前目录下一个文本文件内容显示在屏幕上,正确的命令形式是

A) TYPE a*.* B) TYPE abc.exe

C) TYPE pro.c>PRN D) TYPE abc.txt

(10) 下列更改文件名的命令中正确的是

A) REN A:file1 C:F1 B) RENAME A: A:file1 C:F1

C) REN A:file1 F1 D) REN A:file1 \SUB\F1

(11) 已知A 盘为DOS 系统启动盘,只有A:\DOS 下有自动批处理文件,其中内容为:CD\DOS MD USER

CD USER

由 A 盘启动DOS 系统后,A 盘的当前目录是

A) \DOS B) \DOS\USER C) \ D) \USER

(12) MS -DOS 是

A) 分时操作系统B) 分布式操作系统

C) 单用户、单任务操作系统D) 单用户、多任务操作系统

(13) 在Windows 操作系统中,不同文档之间互相复制信息需要借助于

A) 剪切板B) 记事本C) 写字板D) 磁盘缓冲器

(14) 在Windows 操作系统中

A) 同一时刻可以有多个活动窗口

B) 同一时刻可以有多个应用程序在运行,但只有一个活动窗口

C) 同一时刻只能有一个打开的窗口

D) DOS 应用程序窗口与Windows 应用程序窗口不能同时打开着

(15) 下列叙述中正确的是

A) 所有DOS 应用程序都可以在Windows 操作系统中正确运行

B) 所有DOS 应用程序都不能在Windows 操作系统中正确运行

C) 大部分DOS 应用程序可以在Windows 操作系统中正确运行

D) 为DOS5.0 以上版本操作系统编写的应用程序可以在Windows 操作系统中正确运行

(16) 下列叙述中正确的是

A) C 语言编译时不检查语法

B) C 语言的子程序有过程和函数两种

C) C 语言的函数可以嵌套定义

D) C 语言所有函数都是外部函数

(17) 以下所列的C 语言常量中,错误的是

A) 0xFF B) 1.2e0.5 C) 2L D) '\72'

(18) 下列选项中,合法的C 语言关键字是

AR B) cher C) integer D) default

A) V

(19) 以下变量x.、y、z 均为double 类型且已正确赋值,不能正确表示数学式子的C 语言表达式是

A) x/y*z B) x*(1/(y*z)) C) x/y*1/z D) x/y/z

(20) 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是

A) -3 B) 9 C) -12 D) 6

(21) 设x、y、t 均为int 型变量,则执行语句:x=y=3;t=++x||++y; 后,y 的值为

A) 不定值B) 4 C) 3 D) 1

(22) 若变量已正确说明为float类型,要通过语句seanf(%f %f %f ,&a,&b,&c); 给a赋于10.0 ,b

赋予22.0,c赋予33.0,不正确的输入形式是:

A) 10<回车> B) 10.0,22.0,33.0<回车>

22<回车>

33<回车>

C) 10.0<回车> D) 10 22<回车>

22.0 33.0<回车> 33<回车>

(23) 若执行以下程序时从键盘上输入9,则输出结果是

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

Main0

{ int n;

scanf(%d,&n);

if(n++<10) printf(%d\n,n);

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

}

(24) 若a、b、cl、c2、x、y、均是整型变量,正确的switch语句是

A) swich(a+b); B) switch(a*a+b*b)

{ case 1:y=a+b; break; {case 3:

case 0:y=a-b; break; case 1:y=a+b;break;

} case 3:y=b -a,break;

}

C) switch a D) switch(a -b)

{ case c1 :y=a -b; break {default:y=a*b;break

case c2: x=a*d; break case 3:case 4:x=a+b;break default:x=a+b; case 10:case 11:y=a -b;break;

} }

(25) 有以下程序段

int k=0

while(k=1)k++;

while 循环执行的次数是

A) 无限次B) 有语法错,不能执行

C) 一次也不执行D) 执行1 次

(26) 以下程序执行后sum 的值是

A)15 B)14 C) 不确定D ) 0 min()

{ int i , sum;

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

printf(%d\n,sum);

}

(27) 有以下程序段

int x=3 do

{ printf(%d,x -=2); } while (!( --x)); 其输出结果是

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

(28) 若变量c 为char 类型,能正确判断出c 为小写字母的表达式是A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')

C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')

(29) 以下所列的各函数首部中,正确的是

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)

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

A) 0 B) 29 C) 31 D) 无定值fun(int x, int y, int z) { z=x*x+y*y; } main()

{ int a=31;

fun(5,2,a);

printf(%d,a);

}

(31) 下列程序段的输出结果是

A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 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);

}

(32) 下列程序的输出结果是

A)非法B) a[4]的地址C) 5 D) 3

main()

{ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(%d,* --p);

}

(33) 下列程序的运行结果是

A) 6 3 B) 3 6 C) 编译出错D) 0 0

void fun(int *a, int *b)

{ int *k;

}

main()

{ int a=3, b=6, *x=&a, *y=&b;

fun(x,y);

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

}

(34) 下面程序的输出结果是

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

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

p=a;

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

}

(35) 当调用函数时,实参是一个数组名,则向函数传送的是

A) 数组的长度B) 数组的首地址

C) 数组每一个元素的地址D) 数组每个元素中的值

(36) 设有以下说明语句

struct ex

{ int x ; float y; char z ;} example; 则下面的叙述中不正确的是

A) struct 结构体类型的关键字B) example 是结构体类型名

C) x,y,z 都是结构体成员名D) struct ex 是结构体类型

(37) 以下只有在使用时才为该类型变量分配内存的存储类说明是

A) auto 和static B) auto 和register

C) register 和static D) extern 和register

(38) 若fp 是指向某文件的指针,且已读到文件末尾,则库函数

feof(fp) 的返回值是

A) EOF B) -1 C) 非零值D) NULL

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

A) 20 B) 21 C) 22 D ) 23 main()

{ int i, k, a[10], p[3];

k=5;

for (i=0;i<10;i++) a[i ]=i;

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

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

}

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

A) 1,5,9 B) 1,4,7 C) 3,5,7 D ) 3,6,9 main()

{ 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]);

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

21 A) 18 B) 19 C) 20 D ) main()

6} },i,j,s=0;

for(i=1;i<3;i++) for(j=0;j<=i;j++)s+=a[i][j];

printf(%dn,s);

}

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

A) ABCD B) ABCD C) EFG D) EFGH

FGH EFG JK IJKL

KL IJ O

M

main()

{ char w[][10]={ ABCD,EFGH,IJKL,MNOP},k; for(k=1;k<3;k++) printf(%s\n,w[k]);

}

(43) 当执行下面的程序时,如果输入ABC ,则输出结果是

A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789

#include stdio.h

#include string.h

main()

{ char ss[10]=,2,3,4,5;

gets(ss); strcat(ss, 789); printf(%s\n,ss);

}

(44) 假定以下程序经编译和连接后生成可执行文件PROG.EXE ,如果在此可执行文件所在目录的DOS 提示符下键入:

PROG ABCDEFGH IJKL< 回车>,则输出结果为

A) ABCDEFG B) IJHL C) ABCDEFGHIJKL D) IJKLABCDEFGH main( int argc, char *argv[]))

{ while( -- argc>0) printf(%s,argv[argc]);

);

}

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

A) 1 B) 2 C) 3 D) 4 long fun( int n) { long s;

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

else s=n-fun(n -1); return s;

}

main() { printf(%ld\n, fun(3)); } (46) 以下程序的输出结果是 A) 16 B) 2 C) 9 D) 1 #define SQR(X) X*X main()

{ int a=16, k=2, m=1; a/=SQR(k+m)/SQR(k+m); printf(d\n,a);

}

(47) 若定义了以下函数: void f( ....... )

{……

*p=(double *)malloc( 10*sizeof( double));

}

p 是该函数的形参,要求通过 p 把动态分配存储单元的地址传回主调函数,则形参 义应当是

A) double *p B) float **p C) double **p D) float *p (48) 以下程序的输出是 A) 10 B) 11 C) 51 D) 60 struct st { int x; int *y;} *p; int dt[4]={ 10,20,30,40 };

struct st aa[4]={ 50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],}; main() { p=aa;

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

}

(49) 假定建立了以下链表结构,指针 p 、q 分别指向如图所示的结点,则以下可以将

点从链表中删除并释放该结点的语句组是 A) free(q); p ->next=q ->next; B) (*p).next=(*q).next; free(q); C) q=(*q).next; (*p).next=q; free(q);

D) q=q ->next; p->next=q; p=p ->next; free(p); (50) 以下程序的输出结果是 A) 0 B) 1 C) 2 D) 3 main()

{ int x=0.5; char z='a'; printf(%d\n, (x&1)&&(z<'z') ); }

、填空题 (每空 2分,共 40 分) 请将每一个空的正确答案写在答题卡【 1】至【 20】序号的横线上,答在试卷上不得分。

(1)计算机机领域中,通常用英文单词 ?瑹履表示 【1】。

。【2】 环境下,自动批处理的文件名为 DOS 在(2)

(3) 要将当前盘当前目录下所有扩展名为 .TXT 的文件内容在打印机上打印输出,应使用的单 条DOS 内

部命令为 【3】。

p 的正确定

q 所指结

窗口的移动。

(5) 在Windows环境下,可以将窗口最小化为【5】

(6) 以下程序的输出结果是【6】

main()

{ int a=1, b=2; a=a+b; b=a - b; a=a-b;

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

}

(7) 下列程序的输出结果是16.00,请填空。main()

{ int a=9, b=2;

float x= 【7 】, y=1.1,z;

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

printf(%5.2f\n, z );

}

(8) 用以下语句调用库函数

malloc ,使字符指针st 指向具有11 个字节的动态存储空间,请填

空。

st=(char*) 【8】

(9) 下列程序段的输出结果是【9】

main()

{ char b[]=Hello,you;

b[5]=0; printf(%s \n, b );

}

(10) 下列程序段的输出结果是【10】

int n='c';

switch(n++)

{ default: printf(error);break;

case 'a':case 'A':case 'b':case 'B':printf(good);break;

case 'c':case 'C':printf(pass);

case 'd':case 'D':printf(warn);

}

(11) 以下程序通过函数指针p调用函数fun,请在填空栏内,写岀定义变量p的语句

void fun(int *x,int *y)

{……}

main()

{ int a=10,b=20;

【11 】; / 定义变p */

p=fun; p(&a,&b);

}

(12) 下列程序的输出结果是 【 12】 。 void fun(int *n) { while( (*n) --); printf(%d,++(*n));

}

main() { int a=100; fun(&a);

}

(13) 以下程序的输出结果是 【 13】 。 main()

{ int arr[ ]={30,25,20,15,10,5}, *p=arr; p++;

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

}

(14) 以下程序用来输出结构体变量 ex 所占存储单元的字节数,请填空。 struct st

{ char name[20]; double score; }; main() { struct st ex;

printf(ex size: %d\n,sizeof( 【 14】 ));

}

(15) 下面程序把从终端读入的文本 (用 @作为文本结束标志) 输出到一个名为 中。请填空。

#include stdio.h FILE *fp; { char ch;

if( (fp=fopen ( 【15】 ) )= = NULL)exit(0); while( (ch=getchar( )) !='@') fputc (ch,fp); fclose(fp);

}

(16) 若变量 n 中的值为 24,则 prnt 函数共输出 【 16】 行,最后一行有 【 void prnt(int n, int aa[ ]) { int i;

for(i=1; i<=n;i++) { printf(m, aa[i]); ); );

}

(17) 以下程序中,主函数调用了 Lin eMax 函

数,实现在N 行M 列的二维数组中, 找岀每一行

bi.dat 的新文件 个数

上的最大值。请填空。

#define N 3

#define M 4

void LineMax(int x[N][M])

{ int i,j,p;

for(i=0; i { p=0;

for(j=1; j if(x[i][p] printf(The max value in line %d is %d\n, i, 【19】);

}

}

main()

{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【20 】

}

一.选择题:

1.一个C 语言程序的执行是从a 。

a) 第一个函数开始,直到最后一个函数结束. b) main 函数开始,直到main 函数结束。

c) 第一个语句开始,直到最后一个语句结束。d) main 函数开始,直到最后一个函数结束2.运算表达

式! (5<9) | | (6>10) 的结果为( b) A) 1 B)0 C)12 D)10

3 .设n=3 ;则n++ 的结果是(b) A) 2 B) 3 C)

4 D)5

4.已知字母A 的ASCII 码是65,以下程序的执行结果是( d)

main()

{char c1= ' A' ,c2=' Y' ;

printf( “%d,%d\n ”,c1,c2);

} A)A,Y B) 65,65 C) 65,90 D)65,89

5 .设x=2,表达式x*=3+2 的结果x 为(b ) A) 5 B)10 C)

6 D) 4

6.C 语言中规定函数的返回值的类型由( d)

调用该函数时的主调函数类型所决定B) 语句中的表达式类型决定A) return C) 调用该函数时

相关主题
相关文档
最新文档