9512.net
甜梦文库
当前位置:首页 >> IT认证 >>

C语言试题及答案 (1)


第1章

C 语言概述习题

1. 单项选择题 (1) A. C 语言是在 回车符 B. B 冒号 语言的基础上产生的。 C. 逗号 D. 分号

(2) 在 C 语言中,每个语句必须以 A. (3) A. (4) 统将( A. 回车符 B. 冒号 C. C C.

D 逗号

结束。 D. 隔开。 分号

标识符和关键字间,要用 回车符 B. 冒号

空格

D.

分号

用 C 语言编写的源文件经过编译,若没有产生编译错误,则系 B )。 B. 生成目标文件 C. 输出运行结果

生成可执行目标文件

D.自动保存源文件 (5) A. B. 下列说法中正确的是( B )。

由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本

编辑的软件中输入 C. D. (6) 由于 C 程序是高级语言程序,因此输入后即可执行 由于 C 程序是高级语言程序,因此它由命令组成 下列说法中正确的是( A )。 B. C 语言程序由
1

A. C 语言程序由主函数和 0 个或多个函数组成

主程序和子程序组成 C. C 语言程序由子程序组成 成 (7) A. B. C. D. 下列说法中错误的是( D )。 D. C 语言程序由过程组

主函数可以分为两个部分:主函数说明部分和主函数体 主函数可以调用任何非主函数的其他函数 任何非主函数可以调用其他任何非主函数 程序可以从任何非主函数开始执行

2. 填空题 (1) (2) C 语言只有 37 个关键字和 9 种控制语句。

C 语言是一种“ 中级语言 ” ,既具有 高级语言 的特点又具有 的特点;既适合于开发系统软件又适合于编写应用程序。 函数,系统总是从该函数开始

低级语言 (3)

每个源程序有且只有一个 主

执行 C 语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII 码字符集 。 保留字 。

(5) C 语言的程序中有特殊含义的英语单词称为 (6) C 语言标识符的长度是前 (7) (8) 8 位有效。

C 语言中,标识符的定义规则是

以字母或下划线为开头



C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* */ 符号作为结束标记。

符号作为开始标记,以

2

第2章

数据类型运算符和表达式习题

1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 B. 510000 D C. -1.00 D 。

A. 32L (2)

D. 567

以下选项中,

是不正确的 C 语言字符型常量。 C. '\101' D. "a" C 形

A. 'a' (3)

B. '\x41'

在 C 语言中,字符型数据在计算机内存中,以字符的

式存储。 A. (4) A. 0 (5) 原码 B. 反码 C C. ASCII 码 。 D. "0" D. BCD 码

字符串的结束标志是 B. '0'

C. '\0'

算术运算符、赋值运算符和关系运算符的运算优先级按从高到 B 。 B. 算术运算、关系运算、

低依次为 A.

算术运算、赋值运算、关系运算

赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、

赋值运算 (6) 逻辑运算符中,运算优先级按从高到低依次为 B. ||,&&,! C. &&,||,! D 。 D. !,&&,

A. &&,!,|| || (7)

表达式!x||a==b 等效于

D

。 C. !(x||(a==b)) D.
3

A. !((x||a)==b)

B. !(x||y)==b

(!x)||(a==b) (8) 设整型变量 m,n,a,b,c,d 均为 1,执行 (m=a>b)&&(n=c>d)后, A 。 C. 1,0 D. 1,1 后,x,b 的值依

m,n 的值是 A. 0,0 (9) 次为

B. 0,1

int b=0 ,x=1 ;执行语句 if(x++) b=x+1; A 。 B. 2,0 C. 3,0 D. 3,2

A. 2,3

(10) 设有语句 int a=3; ,则执行了语句 a+=a-=a*=a; 的值是 A. 3 B 。 B. 0 C. 9 D. -12 D

后,变量 a

(11) 在以下一组运算符中,优先级最低的运算符是 A. * B. != C. + D. =



(12) 设整型变量 i 值为 2 ,表达式 (++i)+(++i)+(++i) 的结果是 B A. 6 。 B. 12 C. 15 D. 表达式出错

(13) 若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+3/2 的 值是 型) A. 1 B. 2 C. 2.0 D. 2.5 A 出错 。 (表是长度)字节 C 。 (都为整

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

(15) 设 a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d 的
4

结果为 A. 4

D

。 B. 3 C. 2 D. 1

(16) 设 a 为整型变量,不能正确表达数学关系:10<a<15 的 C 语言 表达式是 A 。 B. a= =11|| a= =12 || a= =13 ||

A. 10<a<15 a= =14 C. a>10 && a<15

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

(17) 设 f 是实型变量,下列表达式中不是逗号表达式的是 A. f= 3.2, 1.0 f=(3.2, 1.0) B. f>0, f<10 C. f=2.0, f>0

(18) 设 ch 是 char 型变量, 其值为 'A', 则下面表达式的值是 ch=(ch>='A'&& ch<='Z')? (ch+32):ch A. A B. a C. Z D. Z A 。

B



(19) 以下运算符中,结合性与其他运算符不同的是 A. ++ B. % C. / B D. + 。 D. a+b

(20) 以下用户标识符中,合法的是 A. int B. nit C. 123

(21) C 语言中,要求运算对象只能为整数的运算符是 A. % B. / C. > D. * A 。

%



(22) PC 机中,'\n'在内存占用的字节数是 A. 1 B. 2 C. 3 D. 4

(23) 字符串"ABC"在内存占用的字节数是

B


5

A. 3

B. 4

C. 6

D. 8

(24) 要 为 字 符 型 变 量 a 赋 初 值 , 下 列 语 句 中 哪 一 个 是 正 确 的 B 。 B. char a=’3’; C. char a=%; D. char

A. char a="3"; a=*;

(25)下列不正确的转义字符是 A. \\ 2. 填空题 (1) 用 (2) (3) 0 B. \' C. 074

C

。 D. \0

C 语言中的逻辑值“真”是用 表示的。 符号常量的定义方法是

!0

表示的,逻辑值“假”是

#define N 10

。 ,双精度实 char 。

无符号基本整型的数据类型符为 double

unsigned int

型数据类型符为 (4)

,字符型数据类型符为

设 c='w',a=1,b=2,d=-5,

则 表 达 式 'x'+1>c, 'y'!=c+2, 为 1 、 0 、

-a-5*b<=d+1, b==a=2 的值分别 1 (5) 设 、 表达式错误 float 。 int 。

x=2.5,y=4.7; 2.5

a=7; , 表 达 式

x+a%3*(int)(x+y)%2/4 的值为 (6) 判断变量

a、b 的值均不为 。

0 的逻辑表达式为

(a!=0)&&(b!=0) (7)

求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c 的值依 。
6

次为 4,4,10,6

(8)

求解逗号表达式 x=a=3,6*a 后,表达式值、x、a 的值依次为 。 a/(b*c) 。

18,3,3 (9)

数学式 a/(b*c)的 C 语言表达式 顺序结构程序设计习题

第3章

1. 选择题 (1) printf("f=%3.2f%%",3.478);的输出结果是 B. f=3.5% C. f=3.48% % A 。

A. f=3.48% (2)

D. f=347.8% A a 。

printf("%c,%d",'a', 'a');的输出结果是 B. a 97 C. 97,a D. 97

A. a,97 (3)

scanf("%c",&a) ;若要给变量输入大写字母 A,则以下正确的 B 。 B. A <CR> \ C. "A" <CR> D.

输入是

A. 'A' <CR> 以上都不对 (4)

若 一 个 int 类 型 的 数 据 占 2 字 节 , 则 程 序 段 : int A 。 32768 D.

x=-1;printf("%u,%d",x,x); 的输出结果是 A. 65535, -1 32768,32767 (5) B. -1,65535 C.

32767,

在 TC 中,getchar 、putchar 、printf 、scanf 四个函数,均 B

包含在头文件 中。 A. math.h

B. stdio.h

C. stbio.h

D.
7

stdlib.h (6) 复合语句是用 B. [ ] C 括起来的语句组。 C. { } D. < >

A. ( ) (7) C

下列格式符中,哪一个可以用于以八进制形式输出整数 。 B. %8d C. %o D. %ld

A. %d (8) B

下列格式符中,哪一个可以用于以十六进制形式输出整数 。 B. %8x C. %d16 D. %d

A. %16d

(9) a 是 int 类型变量,c 是字符变量,下列输入语句中哪一个是错 误的 B 。 B. scanf("%d%c",a,c); D. scanf("d=%d,c=%c",&a,&c);

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

(10) 要使 double x; long a; 的数据能正确的输出,输出语句应是 D 。 B. printf("%d, %1f",a,

A. printf("%d, %f",a, x); x); C. scanf("%1d, %1f",&a, &x); x);

D. printf("%1d, %lf",a,

2. 程序改错题(以下各个程序段均有 5 个错误,请先找出错误的位 置,然后再改正)
8

(1)

以下程序的功能是,从键盘输入一个字符并鸣笛输出。

#include "stdio.h" mian() //main() { char c //char c;

getchar(c);//c = getchar(); putchar('\007') ; /*鸣笛*/

c=putchar(); //putchar(c); //} (2) 以下程序的功能是,输入长方形的两边长(边长可以取整数和实

数),输出它的面积和周长。 main //main() { int a,b,s,l; //double a,b,s,l; scanf("%d,%d",&a,&b); //scanf("%lf,%lf",&a,&b); s=a*b; l=a+b; //l=(a+b)*2; printf("l=%f,s=%f\n",l); //printf("l=%lf,s=%lf\n",l,s); } 3. 写出程序运行结果 (1) main() {
9

int a,b; scanf("%2d%*2s%2d",&a,&b); printf("%d\n",a+b); } 运行时输入:12345678 //输出:68 (2) main() { int a=3,b=5,x,y; x=a+1,b+6; y=(a+1,b+6); printf("x=%d\ny=%d\n",x,y); } 输出:x=4 y=11

第4章

选择结构程序设计习题

1. 单项选择题 (1) 选择结构程序设计的特点是___B____。 A. 自上向下逐个执行 支执行 C. 反复执行某些程序代码 D. 以上都是
10

B.

根据判断条件,选择其中一个分

(2) 假定所有变量均已正确定义,下列程序段运行后 x 的值是__B_。 a=b=c=0,x=35; if(!a) x--; else if(b); if(c) A. 34 B. 4 C. 35 x=3; else x=4; D. 3 A____。

(3) 下面的程序片段所表示的数学函数关系是_ if(x<0) y= -1; else if(x>0) else y=0; y=1;

(4)

下列各语句序列中,能够且仅输出整型变量 a、b 中最大值的是

( C )。 A. if(a>b) printf("%d\n",a); printf("%d\n",b); B. printf("%d\n",b); if(a>b) printf("%d\n",a); C. if(a>b) printf("%d\n",a); else printf("%d\n",b); D. if(a<b) printf("%d\n",a); printf("%d\n",b); (5) 以下程序段的输出结果是 A

int x=5; if(x>0) y=1; else if(x==0) y=0; else y= 1;
11

printf("%d",y); A. 1 (6) B. 5 C. 0 D. 2

程序段 int x=5,y=8,max; max=(x>y)?x:y; printf("%d",max); B 。 C. 3 D. 13

的输出结果是 A. 5 (7) B. 8 程序段

int x=3,a=1;switch(x) {case 4: a++;case 3:

a++;case 2: a++;case 1: a++;} printf ("%d",a); 的输出结果是 D A. 1 (8) ( B 。 B. 2 C. 3 D. 4

下列语句应将小写字母转换为大写字母,其中正确的是 )。

A.if(ch>='a'&ch<='z') ch=ch-32; B.if(ch>='a'&&ch<='z')ch=ch-32; C.ch=(ch>='a'&&ch<='z')?ch-32:’’; D.ch=(ch>'a'&&ch<'z')?ch-32:ch;

2. 阅读程序,写出运行结果 (1) void main () { int a=10, b=4, c=3; if(a<b) a=b ; if(a<c) a=c ;

printf("%d, %d, %d\n", a, b, c) ; } 输出:10,4, 3
12

(2) void main ( ) { int x=100, a=10, b=20, ok1=5, ok2=0; if(a<b) if(!ok1) x=1; if(b!=15) }

else if(ok2) x=10; else x=-1; printf("%d\n", x);

输出:-1;

(3) int k,a=1,b=2; k=(a++==b) ? 2:3; printf("%d",k); 输出:3 (4) void main() { int s=1,k=0; switch (s) { case 1: k+=1; case 2: k+=2; default: k+=3;

} printf(“%d”,k); }输出:6 (5) void main() { int s=1,k=0; switch (s) { case 1: k+=1;break; case 2: k+=2;break; default: k+=3; } printf(“%d”,k);
13

} 输出:1

第5章

循环结构程序设计习题

1. 单项选择题 (1)for(i=1;i<9;i+=1);该循环共执行了 A. 7 B. 8 C. 9 B 次。

D. 10 A 次。

(2)int a=2;while(a=0) a--;该循环共执行了 A. 0 B. 1 C. 2 D. 3

(3)执行完循环 for(i=1;i<100;i++);后,i 的值为 A. 99 B. 100 C. 101 D. 102 D 。

B



(4)以下 for 语句中,书写错误的是 A. for(i=1;i<5;i++); C. for(i=1;i<5;) i++; (5) C

B. i=1;for(;i<5;i++); D. for(i=1,i<5,i++);

语句,在循环条件初次判断为假,还会执行一次循环体。 B. while C C. do-while 。 B. 根据判断条件,执行其中 D. 以上都不是

A. for

(6)循环结构的特点是 A.

从上至下,逐个执行

一个分支
14

C.

满足条件时反复执行循环体

D.

以上都对

(7) i、j 已定义为 int 类型,则以下程序段中内循环体的执行次数 是 A 。

for(i=5;i;i--) for(j=0;j<4;j++){?} A. 20 B. 24 C. 25 D. 30 D 。 任意表

(8) C 语言 while 语句中,用于条件的表达式是 A. 达式 (9) int a=1, x=1; D A. 。 无限次 B. 不确定次 A C. 10 次 。 关系表达式 B. 逻辑表达式 C.

算术表达式 D.

循环语句 while(a<10) x++; a++;

的循环执行

D. 9 次

(10)下列程序段执行后 s 的值为 int i=1, s=0; A. 2 B. 3 while(i++) C. 6

if(!(i%3)) break ; D. 以上均不是

else s+=i ;

2. 填空题 (1)三种循环语句是 等价 价的。

(2)当循环体中的 switch 语句内有 break 语句,则只跳出 swicth 语 句。同样,当 switch 语句中有循环语句,内有 break 语句,则只跳 出 循环 语句。 跳过本次循环进入下次循
15

(3) 循环体执行遇到 continue 语句时





(4)下列程序的功能是输入一个正整数,判断是否是素数,若为素数 输出 1,否则输出 0,请为程序填空。 void main( ) { int i, x, y=1; scanf("%d", &x); for(i=2; i<=x/2; i++) if ( x%i==0 ) { y=0; break; }

printf("%d\n",y); } (5)输入 N 个实数,输出其中的最大值、最小值。 #include <stdio.h> void main( ) { int n,i; float no1,nmax,nmin; scanf("%d",&n); scanf("%f",&no1); nmax=no1; nmin=no1 ; for(i=2;i<=n;i++) {
16

scanf("%f",

&no1

);

if(no1>nmax) nmax=no1; if(no1<nmin) nmin=no1; } printf("MAX=%f } (6)输入若干个字符,分别统计数字字符的个数、英文字母的个数, 当输入换行符时输出统计结果,运行结束。 #include <stdio.h> void main( ) { char ch; int s1=0,s2=0 ; while(( { if(ch>='0'&&ch<='9') s1++; if(ch>='a'&&ch<='z' || } } 3. 阅读下列程序,写出程序运行的输出结果 (1) void main( ) { int y=9; for( ;y>0; y--)
17

MIN=%f\n",nmax,nmin);

ch=getchar() )!='\n')

ch>=’A’||ch<=’Z’) s2++;

if(y%3==0) { printf("%d", --y);

continue; } i-- ; i-- ; ",

continue;} } 输出:852 (2)main() { int k,n,m; n=10;m=1;k=1; while(k++<=n) m*=2; printf("%d\n",m); } 输出:1024 (3) void main ( ) { int i=5; do {switch (i%2) {case break; case 6: i--; 4: i--; break; } i);

printf("i=%d

} while(i>0);

输出:i=3 i=1 i=-1

(4)#include <stdio.h> void main( ) { int k=0; char c='A'; do { switch(c++) { case 'A': k++;

case 'B': k--;
18

case break;

'C':

k+=2;

#include <stdio.h> void main( )

case 'D': k=k%2; break; case 'E': k=k*10; break; default: k=k/3; } k++; }while(c<'G'); printf("k=%d\n", k); } 输出:8 (5)输入数据:2,4

{ int s=1,t=1,a,n; int i; scanf("%d,%d",&a,&n); for(i=1;i<n;i++) { t=t*10+1; s=s+t; } s*=a; printf("SUM=%d\n",s); } 输出:2468

4. 程序改错 (1) 以下程序是显示[200,300]所有能被 7 整除的数,每行显示 5 个数,此程序有 5 处错。 main() { int i,n=0; /*n 用来记录每行已打印数的个数*/
19

while(i<300) //while((i <= 300)&&(i >= 200)) { //i++; if(i%7==0) //if(i%7!=0) break; //continue; printf("%5d",i); n=n+1; if(n=5)/*满 5 个换行*/ //if(n == 5) { printf("\n"); n=0; } } } (2) 以下程序是求 1!+2!+3!+4!+5!+6!+7!的值,其中有 3 处错误。

main() { int i,s,t=0; //long s = 0,t = 1; //int i; for(i=1;i<=7;i++) { s=0; //去掉该语句 t=t*i;
20

s=s+t; } printf("sum=d\n",s); //printf(“sum=%ld”,s); }

第6章

函数习题

1. 单项选择题 (1)C 语言总是从 A. main 选一个 (2) 函 数 在定 义时 , 省 略 函数类 型 说 明 符, 则 该 函 数 值的类 型 为 A 。 B. float B C. long D. double A B. 函数开始执行。 处于最前的 C. 处于最后的 D. 随机

A. int (2)以下

函数,真正地没有返回值。 B. void

A. int a(){int a=2;return (a);} b(){printf("c");} C. int a(){int a=2;return a;}

D.

以上都是 C 。

(3)在 C 语言中,有关函数的说法,以下正确的是 A. 函数可嵌套定义,也可嵌套调用 B.

函数可嵌套定义,

但不可嵌套调用 C. 函数不可嵌套定义,但可嵌套调用 D. 函数不可嵌套定义,

也不可嵌套调用 (4)以下函数调用语句中,含有实参的个数为 B 。 7
21

fun((2,3),(4,5+6,7)); A. 1 B. 2 D C. 5 。 B. 函数语句中 C. 函数参数中 D. 6

(5)函数调用可以在 A. D. 函数表达式中 以上都是

(6)被调函数返回给主调函数的值称为 A. (7) A. 形参 D B. 实参 C.

C 返回值

。 D. 参数

,可以不进行函数类型说明。 B. 被调函数的定义

被调函数的返回值是整型或字符型时

在主调函数定义之前时 C. 在所有函数定义前,已在函数外预先说明了被调函数类型 D. 以上都是 D 语句,将值返回给主调函数。 C. while B 。 D. return

(8)被调函数通过 A. if

B. for

(9)被调函数调用结束后,返回到

A.主调函数中该被调函数调用语句处 B.主函数中该被调函数调用语句处 C.主调函数中该被调函数调用语句的前一语句 D.主调函数中该被调函数调用语句的后一语句 (10)以下对 C 语言函数的有关描述中,正确的是 A 。

A. 在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不 能传送给实参 B. C 函数既可以嵌套定义又可递归调用
22

C. 函数必须有返回值,否则不能使用函数 D. C 程序中有调用关系的所有函数必须放在同一个源程序文件中 (11)C 语言中函数的隐含存储类型是 A. auto B. static C. extern A 。 D. 无存储类型

(12)能把函数处理结果的两个数据返回给主调函数,在下面的方法中 不正确的是 A. C. A 。 B. 形参用两个元素的数组 D. 用两个全局变量

return 这两个数 形参用两个这种数据类型的指针

2. 填空题 (1) 变量的作用域主要取决于变量 存储类型 定义的位子 ,变量的生存 存储方式 。

期既取决于变量 (2)

,又取决于变量

说明变量时,若省略存储类型符,系统默认其为 int 。

整形 存储类

别,该存储类别的类型符为: (3)

静态型局部变量的作用域是 ,生存期是

静态局部变量定义的复合语句 。 地

或函数体内 (4)

整个程序运行期内

函数中的形参和调用时的实参都是数组名时,传递方式为 ,都是变量时,传递方式为 值传递 。

址传递 (5)

函数的形式参数的作用域为

整个函数体内

,全局的外

部变量和函数体内定义的局部变量重名时, 变量优先。 (6)

函数体内定义的局部

若 自定 义函 数 要 求 返回一 个 值 , 则应在 该 函 数 体中有 一 条

return 语句,若自定义函数要求不返回一个值,则应在该函数说明
23

时加一个类型说明符 (7) 地址 (8)

void

。 数组名 、

若函数的形式参数是指针类型,则实参可以是 或 指针变量 。

函数的参数为 char * 类型时,形参与实参结合的传递方式为 。 值传

地址传递 (9) 递 (10)

函数的实参为常量时,形参与实参结合的传递方式为 。 对数组按值从大到小的顺序排序后输出,请填空。

#include <stdio.h> void main() { float a[7]={2,6,3,8,3,12,9}; int i ; void sort(float*,int); sort(a,7) ;

for(i=0;i<7;i++) printf("%f ",a[i]); printf("\n"); } void sort( { int i,j,k; float t; for(i=0;i<n-1;i++) {
24

float *p, int n )

k=i; for(j=i+1;j<n;j++) if( p[k]<p[j] if(k != i) { t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; } } } (11) 下列函数在 n 个元素的一维数组中,找出最大值、最小值并 ) k=j;

传送到调用函数,请填空。 #include <stdio.h> void find(float *p, float *max, float *min, int n) { int k; float t; *max=*p; *min = *p;

for(k=1;k<n;k++) { t=*(p+k); if( t>*max ) *max=t;

if(t<*min) *min=t; } } 3. 写出下列程序运行结果:
25

(1) main() { int i=1,p; p=fun(i,i+1); printf("%d\n",p); } int fun(int a,int b) { int f; }

if(a>b) f=1; else if(a==b) f=0; else f=-1; return f;

输出:-1

(2)键盘输入 abcdef<CR>

输出:fedcba (3)

#include <stdio.h> void fun( ) { char c ; if((c=getchar( ))!='\n') fun( ) ; putchar(c); } void main( ) { fun( ); }

#include <stdio.h> #define C 5 int x=1,y=C; void main( ) { int x; x=y++; x,y); if(x>4) { int x ; x=++y;
26

printf("%d %d\n",

printf("%d %d\n",x,y) ; x+=y--; printf("%d %d\n",x,y); } (4) #include <stdio.h> int c , a=4 ; func(int a , int b) {

}

} 输出:4,2,8,9 (5) unsigned fun6(unsigned num) { unsigned k=1; do { k*=num%10; num/=10; } while(num); return k; } void main( ) {

c=a*b ; a=b-1 ; b++ ;

return (a+b+1) ; } void main( ) { int b=2 , p=0 ; c=1 ; p=func(b , a) ; printf("%d,%d,%d,%d\n", a,b,c,p) ; 输出:5 6 7 7 12 6 第7章 数组习题

unsigned n=26; printf("%d\n", fun6(n)); } 输出:12

1. 单项选择题 (1) int a[4]={5,3,8,9};其中 a[3]的值为( D )。
27

A. 5 (2) 不同。 A. gets (3)

B. 3

C. 8 A

D. 9 )所在的头文件与其他 3 个

以下 4 个字符串函数中, (

B. strcpy 以下 4 个数组定义中,(

C. strlen D )是错误的。 long b[N];

D. strcmp

A. int a[7]; D. (4) int n,d[n];

B. #define N 5

C. char c[5];

对字符数组进行初始化,(

B

)形式是错误。 B. char c2[ ]=123; D. char

A. char c1[ ]={'1', '2', '3'}; C. char c3[ ]={ '1', '2', '3', '\0'}; c4[ ]="123"; (5) 在数组中,数组名表示( A )。

A. 数组第 1 个元素的首地址 C. 数组所有元素的首地址 址 (6) ( B

B.数组第 2 个元素的首地址 D. 数组最后 1 个元素的首地

若有以下数组说明,则数值最小的和最大的元素下标分别是 )。

int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12}; A. 1,12 (7) B. 0,11 C. 1,11 D. 0,12 D )。

若有以下说明,则数值为 4 的表达式是(

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; g ; A. a[g-c] B. a[4] C. a['d'-'c']

char c=’a’, d,

D. a['d'-c]
28

(8)

设 有 定 义 : char

s[12]

= A

"string" )。

;



printf( "%d\n",strlen(s)); A. 6 (9) B. 7 C. 11

的输出是( D. 12

设有定义:char s[12] = "string"; B )。 D. 12 A )。

则 printf("%d\n ",

sizeof(s)); 的输出是( A. 6 B. 7 C. 11

(10) 合法的数组定义是( A. char a[ ] = "string"; C. char a="string "; (11) 合法的数组定义是(

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

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

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

a[2][3]={0,1,2,3,4,5,}; (12) 下列语句中,正确的是 ( A. char a[3][ ]={'abc', '1'}; C. char a[3][ ]={'a', "1"}; D )。 B. char a[ ][3] ={'abc', '1'}; D. char a[ ][3] ={ "a", "1"};

(13) 下列定义的字符数组中,输出 printf("%s\n", str[2]) ;的输 出是( C )。 "windows"}; 输出语句出错 C B. )。 int

static str[3][20] ={ "basic", "foxpro", A. basic B. foxpro C. windows D.

(14) 下列各语句定义了数组,其中哪一个是不正确的( A. char a[3][10]={"China","American","Asia"}; x[2][2]={1,2,3,4};

29

C. float x[2][ ]={1,2,4,6,8,10}; m[][3]={1,2,3,4,5,6};

D.

int

(15) 数组定义为 int a[3][2]={1,2,3,4,5,6} ,值为 6 的数组元素 是( B )。 B. a[2][1] C. a[1][2] D.

A. a[3][2] a[2][3]

2. 填空题 (1) C 语言中,数组的各元素必须具有相同的 0 ,下标必须是正整数、 0、或者 越界 。 的存储区,由 数组 类型 常量 ,元素的下 。但在程序

标下限为

执行过程中,不检查元素下标是否 (2) 名

C 语言中,数组在内存中占一片 代表它的首地址。 数组名是一个

连续 字符

常量, 不能对它进

行赋值运算。 (3) 0 (4) 执行 static int b[5], a[ ][3] ={1,2,3,4,5,6}; 后,b[4] = ,a[1][2] = 6 。

设 有 定 义 语 句 static int a[3][4] ={{1},{2},{3}}; 则 2 ,a[1][1] 值为 0 ,a[2][1]的值为 0 。

a[1][0]值为 (5)

如定义语句为 char a[ ]= "windows",b[ ]= "2000"; ,语句 windows2000 。

printf("%s",strcat(a,b)); 的输出结果为 (6)

输入 20 个数,输出它们的平均值, 输出与平均值之差的绝对

值为最小的数组元素。请填空。 #include <stdio.h> #include <math.h>
30

void main( ) { float a[20],pjz=0,s,t; int i,k; for(i=0; i < 20; i++) scanf(“%f”,&a[i]); for(i=0;i<20;i++) pjz+=a[i]; pjz/=20; s=fabs(a[0]-pjz);

for(i=1;i<20;i++) if(fabs(a[i]-pjz)<s) { s=fabs(a[i]-pjz); t=a[i]; }

printf(“%f,%f”,pjz,t); }

(7) 以下程序以每行 10 个数据的形式输出 a 数组,请填空。 void main( ) { int a[50],i; printf("输入 50 个整数:"); for(i=0; i<50; i++) for(i=1; i<=50; i++) { if( i%10==0 ) a[i-1] ) ; scanf( "%d", &a[i] );

printf( "%3d\n" ,

else printf( "%3d",a[i-1]); } } (8) 下面程序的功能是输出数组 s 中最大元素的下标,请填空。

void main( )
31

{ int k, p; int s[] = {1, -9, 7, 2, -10, 3}; for(p=0,k=p; p<6; p++) if(s[p] > s[k]) printf("%d\n" ,k); } k = p ;

3. 阅读程序,分析程序的功能。 (1) #include <stdio.h> #include <string.h> void main( ) { char s[80]; int i ; for(i=0; i<80; i++) { s[i]=getchar( ); if(s[i]=='\n') break; } s[i]='\0'; while(s[i]) putchar(s[i++]); putchar(‘\n’); i=0; (2) #include <stdio.h> #include <string.h> void main( ) { char int str[10][80], c[80]; i; i<10; i++) } 分析:输入一个字符串,以回车 结束,并将其原样输出。

for(i=0; gets(str[i]);

strcpy(c, str[0]); for(i=1; i<10; i++)
32

if(strlen(c)<strlen(str[i])) {strcpy(c,str[i]); } printf( "%s\n", c); printf( (c)); "%d\n", strlen

} 分析: 输入 10 个字符串, 输出 10 个字符串中最长的字符串和它的 长度。

(3) #include <stdio.h> #include <string.h> void main( ) { char a[10][80], c[80]; int i, j, k; if(strcmp(a[j],a[k])<0) k=j; if(k!=i) { strcpy(c,a[i]) ; strcpy(a[i], a[k]); strcpy(a[k],c); } // 字符串交换 } for(i=0; i<10; i++) k=i; for(j=i+1; j<10; j++) }
33

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

puts(a[i]);

分析:输入 10 个字符串,用选 择排序算法将 10 个字符串按从

小到大顺序排列并输出。

#include <stdio.h> (4) 阅读程序,写出运行结果。 void main( ) { char a[8],temp; int j,k; for(j=0;j<7;j++) a[j]='a'+j; a[7]='\0';

#include <stdio.h> void main( ) {int a[6]={12,4,17,25,27,16}; int b[6]={27,13,4,25,23,16},i,j; for(i=0;i<6;i++) { for(j=0;j<6;j++) if(a[i]==b[j]) break; if(j<6) printf("%d ",a[i]); } printf("\n"); } 分析:按数组 a 中元素顺序输出 与数组 b 中元素相同的数。 输出:4,25,27,16 (5) 阅读程序,写出运行结果。

for(j=0;j<3;j++) { temp=a[6]; for(k=6;k>0;k--) a[k]=a[k-1]; a[0]=temp; printf("%s\n",a); } } 分析:将字符串的最后的 3 个元 素移到字符串首位。 输出:efgabcd

34

(6)

阅读下列程序,写出程序运行的输出结果。

#include <stdio.h> #include <string.h> void main( ) { char str1[ ]="*******"; for(int i=0;i<4;i++) { printf("%s\n",str1); str1[i]=' '; str1[strlen(str1)-1]='\0'; } } 输出:******* ***** *** * 第8章 指针习题

1. 单项选择题 (1) 指 针 pstr 所 指 字 符 串 的 长 度 为 D 。 char

*pstr="\t\"1234\\abcd\n"

A. 15 (2)

B. 14

C. 13 B

D. 12 。 Hi" D.

对于 char *pstr; ,以下正确的是 B. pstr="Hi"

A. *pstr="Hi" **pstr="Hi" (3)

C. *pstr="

以下程序段的输出结果为

B



char astr[5]="1234"; char *pstr=astr; printf("%c",pstr[1]-'0'); A. 1 B. 2 C. ASCII 码值为 1 的字符 D.

ASCII 码值为 2 的字符 (4) 下述程序段的输出结果为 D 。

char astr[]="abcde"; char *pstr=&astr[5]; while(--pstr>=astr) putchar(*pstr); putchar('\n'); A. abc (5) B. cba C. abcde D. edcba A D. c=a 。

若有定义 int a=1,*b,c;,以下不正确的是 B. b=&a C. b=&a,c=*b C 。

A. b=a (6)

以下程序段的运行结果为

int num[]={1,2,3,4,5,6,7,8,9},*pnum=&num[2]; pnum++;

++pnum; printf("%d\n",*pnum); A. 3 (7) B. 4 C. 5 B 。 D. 6

以下程序段的运行结果为

char *pstr="My name is Tom"; int n=0; while(*pstr++!='\0') n++; printf("n=%d\n",n); A. 12 (8) B. 14 C. 16 B 。 D. 不确定

以下程序段的运行结果为

int num[9]={1,2,3,4,5,6,7,8,9},*p; p=num; *(p+1)=0; printf("%d,%d,%d\n",*p,p[1],(*p)++); A. 2,0,1 (9) B. 1,0,1 C. 2,2,2 C 。 D. 1,1,1

以下程序段的运行结果为

int a=5,*p=&a,b,*q; a=10; *p=15; q=p; *q=20;

b=*q; p=&b; printf("a=%d,b=%d,*p=%d,*q=%d\n",a,b,*p,*q);

A.

a=5,b=10,*p=15,*q=20

B.

a=20,b=15,*p=10,*q=5 C. a=20,b=20,*p=20,*q=20 D.

a=15,b=15,*p=15,*q=15 (10) 已知 char *p,*q;,以下语句正确的是 A. p*5; B. p/=q; C. p+=5; C 。 D. p+=q;

第9章

结构体共用体习题

1. 填空题 (1) 定义结构体的关键字是 struct union 。 都是构造类型 , 不同点 ,定义共用体的关

键字是 (2)

结构体和共用体的相同点是

是 共用体在同一时间只能使用一个成员 。 (3) 若有以下定义和语句,则 sizeof(a) 的值是 20 。 12 ,

而 sizeof(b)的值是 struct tu { int m; char n;

int y;}a;

struct { float (4) p; char q; struct tu r} b;

设有下面结构类型说明和变量定义,则变量 a 在内存 32 。如果将该结构改成共用体,结果为

所占字节数是 16 。 stud

struct { (5)

char num[6]; int s[4]; double ave; } a; 下面程序用来输出结构体变量 ex 所占存储单元的字

节数,请填空。 struct st { char name[20]; double score; }; main() { struct st ex ; printf("ex size: %d\n",sizeof( ex )); } (6) 下面定义的结构体类型拟包含两个成员 , 其中成员变

量 info 用来存入整形数据;成员变量 link 是指向自身结构 体的指针,请将定义补充完整。 struct node { int info; struct node * link; A } 。

(7)

以下程序执行后输出结果是 main() { union {

unsigned int n; unsigned char c; } u1; printf("%c\n",u1.n); }

u1.c='A';

(8)

变量 root 如图所示的存储结构,其中 sp 是指向字符

串的指针域,next 是指向该结构的指针域,data 用以存放 整型数。请填空,完成此结构的类型说明和变量 root 的定 义。 root sp struct { list } root; next data

char *sp ; struct list *next ; int data ;

2. 阅读下面的程序,写出程序结果 (1) struct { char main() { struct info info a,b,c;};

s[2]={{‘a’,‘b’,‘c’},{‘d’,‘e’,‘f’}};int t; t=(s[0].b-s[1].a)+(s[1].c-s[0].b); printf("%d\n",t); 输出:2 }

(2) void main() { union { char i[2]; int k; } stu; stu.i[0]='2'; stu.k=0;

printf("%s,%d\n",stu.i,stu.k); } 输出: ,0 (3) union myun { struct{ int x, y, z; } u; main() { a.u.x=4; a.u.y=5; a.u.z=6; a.k=0; int k; } a;

printf(“%d\n",a.u.y); } 输出:0

商业计划书

http://www.chnci.com/syjhs

可行性分析报告 http://www.qfcmr.com 市场调查 http://www.51kybg.com



更多相关文章:
C语言试题及答案 (1).doc
C语言试题及答案 (1) - 第1章 C 语言概述习题 1. 单项选择题 (1) A. C 语言是在 回车符 B. B 冒号 语言的基础上产生的。 C. 逗号 D. 分号 (2)...
C语言期中考试试题及答案-1.doc
C语言期中考试试题及答案-1 - 高级语言程序设计试题 答案在最后 、单项选择
C语言试卷一(含答案).pdf
C语言试卷一(含答案) - 试卷 1 一、选择题(共 20 题,每题 2 分,共
C语言试题及答案1.pdf
C语言试题及答案1 - 一、 单选题 1.在 C 语言中,下列类型属于构造类型的
c语言试题及答案[1].doc
c语言试题及答案[1] - 1、以下正确的说法是( B ) (A) 用户若需要调
一c语言试题及答案.doc
c语言试题及答案 - 一、单项选择题(20 分,每题 2 分) 1.程序段 i
C语言测试题(含答案及评分标准)[1].pdf
C语言测试题(含答案及评分标准)[1] - 单项选择题(每小题 2 分,共 50
C语言期末考试试题(1).doc
C语言期末考试试题(1) - C 语言期末考试试题(1) 1.下列定义变量的语句
c语言试题及答案(1).doc
c语言试题及答案(1) - 《C 语言程序设计》试题 十 返回 一、 单项选择
C语言上机试题及答案1.doc
C语言上机试题及答案1 - 在 C 语言中,形参的缺省存储类是(C) 。 A、extern B、register C、auto D、static 下列标识符中,不合法的 C 语言用户自定义标识...
c语言试题及答案[1].doc3.doc
c语言试题及答案[1].doc3 - 1、以下正确的说法是( B ) (A) 用
C语言程序设计模拟试题1(附答案).doc
C语言程序设计模拟试题1(附答案) - 《C 语言程序设计》模拟试卷一 一、 单项选择题(每题 2 分,共 30 分) 1、下列有关 C 语言的叙述中错误的是(D)。 ...
C语言程序设计试题1及答案_图文.pdf
C语言程序设计试题1及答案_IT认证_资格考试/认证_教育专区 暂无评价|0人阅读|0次下载 | 举报文档 C语言程序设计试题1及答案_IT认证_资格考试/认证_教育专区。...
C语言试题1.doc
C 语言试题 1 (本试题答卷时间为 120 分钟) 试题(28 分) 解答下列各小...C语言试题及答案2[1] 暂无评价 27页 5下载券 C语言上机考试试题1 暂无评价...
C语言程序设计模拟试题1(附答案).doc
C语言程序设计模拟试题1(附答案) - 《C 语言程序设计》模拟试卷一 一、 单项选择题(每题 2 分,共 30 分) 1、下列有关 C 语言的叙述中错误的是(D)。 ...
C语言 试题1.doc
C语言 试题1 - 试题 、填空题 1、C 语言中基本的数据类型有:整型 、
C语言1_6章复习题及答案讲解.doc
C语言1_6章复习题及答案讲解 - 一、单项选择题 1、以下说法中正确的是(C) (2 分) A、C 语言程序总是从第一个的函数开始执行 B、在 C 语言程序中,要...
(1)2011年计算机二级C语言考试(试题及答案详解)_图文.pdf
(1)2011年计算机二级C语言考试(试题及答案详解) - 2011 年 3 月计算机等级考试二级 C 语言笔试:文字版 一、 选择题 (1)下列关于栈叙述正确的是 A)栈顶元素...
计算机等级考试二级C语言模拟试题(1).doc
语言模拟试题(1) 计算机等级考试二级 C 语言模拟试题(1) 考龙网 www.kaolong.com 一、选择题(每题 2 分,共计 70 分) 选择题 1.栈队列的共同特点是 A...
2012-2013 1C语言期末考试试卷.doc
2012-2013 1C语言期末考试试卷 - 南京林业大学试卷 课程 题号 得分
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图