C语言试题及答案.doc

更新时间:2023-04-10 23:58:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第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 语言程序的注释可以出现在程序中的任何地方,它总是以

/* 符号作为开始标记,以*/符号作为结束标记。

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

1.单项选择题

(1)以下选项中,正确的 C 语言整型常量是D。

A. 32L

B. 510000

C. -1.00

D. 567

(2)以下选项中, D是不正确的C语言字符型常量。

A. ' a'

B. '\x41'

C. '\101'

D. "a"

(3)在C 语言中,字符型数据在计算机内存中,以字符的 C 形式存储。

A. 原码

B.反码

C. ASCII码

D. BCD码

(4)字符串的结束标志是C。

A. 0

B. '0'

C. '\0'

D. "0"

(5)算术运算符、赋值运算符和关系运算符的运算优先级按从高

到低依次为 B 。

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

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

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

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

(6)

A. && 逻辑运算符中,运算优先级按从高到低依次

为,! , || B. || ,&&, ! C. && ,|| , !

D

D. !

&&, ||

(7)表达式!x||a==b 等效于 D 。

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

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

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

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

(8)设整型变量 m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)

后 , m,n 的值是 A 。

A.0 ,0

B.0 ,1

C.1 ,0

D.1 ,1

(9) int b=0 , x=1;执行语句 if(x++) b=x+1; 后, x, b 的值依次为 A 。

A.2 ,3

B.2 ,0

C.3 ,0

D.3 ,2

(10) 设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量

a 的值是 B 。

A. 3

B. 0

C. 9

D. -12

(11) 在以下一组运算符中,优先级最低的运算符是 D 。

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 的值是 C 。(都为整型)

A. 1

B. 2

C. 2.0

D. 2.5

(14) size of (double) 的结果值是A。(表是长度)字节

A. 8

B. 4

C.2

D. 出错

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

的结果为D。

A.4

B.3

C.2

D.1

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

A. 10

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

C. a>10 && a<15

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

(17)设 f 是实型变量,下列表达式中不是逗号表达式的是

D。

A. f= 3.2, 1.0

B.f>0, f<10

C.f=2.0, f>0

D.

f=(3.2, 1.0)

(18) 设 ch 是 char型变量,其值为'A',则下面表达式的值是

B 。

ch=(ch>='A'&& ch<='Z')? (ch+32):ch

A. A

B. a

C. Z

D. Z

(19) 以下运算符中,结合性与其他运算符不同的是 A 。

A. ++

B. %

C. /

D. +

(20) 以下用户标识符中,合法的是 B 。

A. int

B. nit

C. 123

D. a+b

(21) C 语言中,要求运算对象只能为整数的运算符是% 。

A. %

B. /

C. >

D. *

(22) PC 机中, '\n' 在内存占用的字节数是 A 。

A. 1

B. 2

C. 3

D. 4

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

A. 3

B. 4

C. 6

D. 8

(24)要为字符型变量 a 赋初值,下列语句中哪一个是正确的

B。

A. char a="3";

B. char a=’3’;

C. char a=%;

D.

char a=*;

(25) 下列不正确的转义字符是C。

A. \\

B. \'

C. 074

D. \0

2.填空题

(1) C 语言中的逻辑值“真”是用!0表示的,逻辑值“假”

是用 0表示的。

(2) 符号常量的定义方法是#define N 10 。

(3) 无符号基本整型的数据类型符为unsigned int ,双精度实型数据类型符为double ,字符型数据类型符为char 。

(4) 设 c='w',a=1,b=2,d=-5, 则表达式 'x'+1>c, 'y'!=c+2,

-a-5*b<=d+1, b==a=2 的值分别为 1 、 0 、

1 、表达式错误。

(5) 设float x=2.5,y=4.7; int a=7; ,表达式x+a%3*(int)(x+y)%2/4 的值为 2.5 。

(6) 判断变量 a 、 b 的值均不为 0 的逻辑表达式为(a!=0)&&(b!=0) 。

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

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

(9)数学式a/(b*c) 的C 语言表达式a/(b*c) 。

第 3 章顺序结构程序设计习题

1.选择题

(1)printf("f=%3.2f%%",3.478);的输出结果是

A. f=3.48%

B. f=3.5%

C. f=3.48% %

D. f=347.8%

(2)printf("%c,%d",'a', 'a');的输出结果是

A. a,97

B. a 97

C. 97,a

D. 97 a A。A。

(3)scanf("%c",&a) ;若要给变量输入大写字母 A ,则以下正确

的输入是 B。

A. 'A'

B. A \

C. "A"

D.

以上都不对

(4)若一个int 类型的数据占 2 字节,则程序段:int x=-1;printf("%u,%d",x,x); 的输出结果是 A 。

A. 65535, -1

B. -1,65535

C. 32767, 32768

D. 32768,32767

(5)在 TC 中, getchar 、putchar 、printf、scanf四个函数,均包含在头文件 B

中。

A. math.h

B. stdio.h

C. stbio.h

D. stdlib.h

(6)复合语句是用C括起来的语句组。

A.()

B.[]

C.{}

D.<>

(7)下列格式符中,哪一个可以用于以八进制形式输出整数

C。

A. %d

B. %8d

C. %o

D. %ld

(8)下列格式符中,哪一个可以用于以十六进制形式输出整数

B。

A. %16d

B. %8x

C. %d16

D. %d

(9) a 是 int 类型变量, c 是字符变量,下列输入语句中哪一个是

错误的B。

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

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

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

D. scanf("d=%d,c=%c",&a,&c);

(10 )要使double x; long a;的数据能正确的输出,输出语句应

是 D。

A. printf("%d, %f",a, x);

B. printf("%d,%1f",a, x);

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

D.

printf("%1d, %lf",a, x);

2.程序改错题(以下各个程序段均有5个错误,请先找出错误的

位置,然后再改正)

(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;

",l,s); printf("l=%f,s=%f\n",l); //printf("l=%lf,s=%lf\n

}

3.写出程序运行结果

(1)

main()

{

int a,b;

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

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

}

运行时输入:输出: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.自上向下逐个执行

B.根据判断条件,选择其中一个分支执行

C. 反复执行某些程序代码

D.以上都是

(2)假定所有变量均已正确定义,下列程序段运行后

x 的值是__B_。

a=b=c=0, x=35;

if(!a) x--; else if(b); if(c) x=3; else x=4;

A.34

B.4

C.35

D.3

(3)下面的程序片段所表示的数学函数关系是_ A____ 。

if(x<0) y= -1;

else if(x>0) y=1;

else y=0;

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

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

int x=5;

if(x>0) y=1;

else if(x==0) y=0;

else y= 1;

printf("%d",y);

A. 1

B. 5

C. 0

D. 2

(6) 程序段intx=5,y=8,max; max=(x>y)?x:y; printf("%d",max); 的输出结果是 B 。

A. 5

B. 8

C. 3

D. 13

(7) 程序段 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

B.2

C.3

D.4

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

(B)。

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

输出: 10, 4, 3 (2)

void main ( ) {

if(a

b, c) ; if(a

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

else x=-1; 输出:-1 ;

(3) printf( “%d” ,k); int k,a=1,b=2; } 输出:6

k=(a++==b) ? 2:3; printf("%d",k);

输出: 3

(4)

void main()

{ (5)

void main() {

int s=1,k=0;

switch (s)

{

int s=1,k=0; switch (s) { case 1: k+=1;break; case 2: k+=2;break; default: k+=3;

case 1: k+=1; case 2: k+=2; }

printf( “%d” ,k);

default: k+=3; }

} 输出:1

第 5 章循环结构程序设计习题

1.单项选择题

(1) for(i=1;i<9;i+=1);该循环共执行了B次。

A. 7

B. 8

C. 9

D. 10

(2)int a=2;while(a=0) a--; 该循环共执行了 A 次。

A. 0

B. 1

C. 2

D. 3

(3) 执行完循环 for(i=1;i<100;i++); 后, i 的值为B 。

A. 99

B. 100

C. 101

D. 102

(4) 以下 for 语句中,书写错误的是 D 。

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

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

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

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

(5) C 语句,在循环条件初次判断为假,还会执行一次循环体。

A. for

B. while

C. do-while

D. 以上都不是

(6) 循环结构的特点是 C 。

A. 从上至下,逐个执行

B. 根据判断条件,执行其中

一个分支

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

(8) C 语言while 语句中,用于条件的表达式是 D 。

A.关系表达式

B. 逻辑表达式

C. 算术表达式

D. 任意表达式

(9) int a=1, x=1;循环语句while(a<10) x++; a++;的循环执行D。

A. 无限次

B.不确定次

C. 10次

D. 9

(10) 下列程序段执行后s的值为A。

int i=1, s=0; while(i++) if(!(i%3)) break ; else s+=i ;

A. 2

B. 3

C. 6

D.以上均不是

2.填空题

(1) 三种循环语句是等价价的。

(2)当循环体中的 switch 语句内有 break 语句,则只跳出 swicth 语句。同样,当 switch 语句中有循环语句,内有 break 语句,则只跳

出循环语句。

(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

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++)

{

scanf("%f", &no1 );

if(no1>nmax) nmax=no1;

if(no1

}

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

}

(6)输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。

#include

void main( )

{

char ch;

int s1=0,s2=0 ;

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

{

if(ch>='0'&&ch<='9') s1++;

if(ch>='a'&&ch<='z' || ch>=’A’||ch<= ’Z’) s2++; }

}

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

(1) n=10;m=1;k=1;

void main( ) while(k++<=n)

{ int y=9; m*=2;

for( ;y>0; y--) printf("%d\n",m);

if(y%3==0) }

{ printf("%d", --y); 输出: 1024

continue;} (3)

} void main ( )

输出: 852 { int i=5;

(2)main() do

{ {switch (i%2)

int k,n,m; {case 4: i--;

break; break;

case 6: i--; case 'D': k=k%2; continue; break;

} case 'E': k=k*10;

i-- ; i-- ; break;

printf("i=%d ", default: k=k/3;

i);

} while(i>0);

}

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

}

k++;

}while(c<'G'); printf("k=%d\n", k);

(4) #include }

void main( ) 输出:8

{ (5) 输入数据:2,4 int k=0; char c='A'; #include

do void main( )

{ {

switch(c++) int s=1,t=1,a,n;

{ int i ;

case 'A': k++; scanf("%d , %d",&a,&n); break; for(i=1;i

case 'C': k+=2; }

s*=a; }

printf("SUM=%d\n",s); 输出:2468

4.程序改错

(1)以下程序是显示[200 , 300] 所有能被7 整除的数,每行显示 5 个数,此程序有 5 处错。

main()

{

int i,n=0; /*n用来记录每行已打印数的个数*/

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;

s=s+t;

}

printf("sum=d\n",s); //printf(

“ sum=%ld”,s);

}

第 6 章函数习题

1.单项选择题

(1)C 语言总是从 A 函数开始执行。

A. main

B. 处于最前的

C. 处于最后的

D. 随机选一个

(2) 函数在定义时,省略函数类型说明符,则该函数值的类型为A。

A. int

B. float

C. long

D. double

(2)以下 B函数,真正地没有返回值。

A. int a(){int a=2;return (a);}

B.void b(){printf("c");}

C. int a(){int a=2;return a;}

D.以上都是

(3) 在 C 语言中,有关函数的说法,以下正确的是C。

A.函数可嵌套定义,也可嵌套调用

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

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

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

(4) 以下函数调用语句中,含有实参的个数为 B 。7

fun((2,3),(4,5+6,7));

A.1

B.2

C. 5

D. 6

(5) 函数调用可以在 D 。

A. 函数表达式中

B. 函数语句中

C.函数参数中

D. 以上都是

(6) 被调函数返回给主调函数的值称为 C 。

A. 形参

B. 实参

C. 返回值

D.参数

(7) D ,可以不进行函数类型说明。

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

B.被调函数的定义在主调函数定义之前时

C.在所有函数定义前,已在函数外预先说明了被调函数类型

D. 以上都是

(8) 被调函数通过 D 语句,将值返回给主调函数。

A. if

B. for

C. while

D. return

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

A. 主调函数中该被调函数调用语句处

本文来源:https://www.bwwdw.com/article/ljrl.html

Top