文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计基础教程_习题答案资料

C语言程序设计基础教程_习题答案资料

习题答案

第1章

1.1 填空题

1.1.1 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main 。

1.1.2 一个函数由__函数头__和__函数体__两部分组成。

1.1.3 在C语言中,输入操作是由库函数__scanf 完成的,输出操作是由库函数_printf_完

成的。

1.1.4 通过文字编辑建立的源程序文件的扩展名是_.c__;编译后生成目标程序文件,扩展

名是__.obj__;连接后生成可执行程序文件,扩展名是_.exe_;运行得到结果。

1.1.5 C语言程序的基本单位或者模块是__函数__。

1.1.6 C语言程序的语句结束符是_;___。

1.1.7 编写一个C程序,上机运行要经过的步骤:______________________________。

1.1.8 在一个C语言源程序中,注释部分两侧的分界符分别为_/*__和__*/__。

1.1.9 C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线。

且第一个字符必须为字母或下划线。

1.1.10 C语言中的标识符可分为关键字、预定义标识符和用户标识符3类。

1.2 选择题

1.2.1 一个C程序的执行是从( A )。

A)本程序的main函数开始,到main函数结束

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C)本程序的main函数开始,到本程序文件的最后一个函数结束

D)本程序文件的第一个函数开始,到本程序main函数结束

1.2.2 以下叙述不正确的是(C)。

A)一个C源程序可由一个或多个函数组成

B)一个C源程序必须包含一个main函数

C) 在C程序中,注释说明只能位于一条语句的后面

D) C程序的基本组成单位是函数

1.2.3 C语言规定:在一个源程序中,main函数的位置( C )。

A)必须在程序的开头B)必须在系统调用的库函数的后面

C)可以在程序的任意位置D)必须在程序的最后

1.2.4 C编译程序是(A)。

A)将C源程序编译成目标程序的程序

B)一组机器语言指令

C) 将C源程序编译成应用软件

D) C程序的机器语言版本

1.2.5 要把高级语言编写的源程序转换为目标程序,需要使用(D)。

A) 编辑程序B) 驱动程序C) 诊断程序D) 编译程序

1.2.6 以下叙述中正确的是(C)。

A) C语言比其他语言高级

B) C语言可以不用编译就能被计算机识别执行

C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D) C语言出现的最晚,具有其他语言的一切优点

1.2.7 以下叙述中正确的是(A)。

A) C程序中注释部分可以出现在程序中任意合适的地方

B) 花括号“{”和“}”只能作为函数体的定界符

C) 构成C程序的基本单位是函数,所有函数名都可以由用户命名

D) 分号是C语句之间的分隔符,不是语句的一部分

1.2.8 以下叙述中正确的是(B)。

A) C语言的源程序不必通过编译就可以直接运行

B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C) C源程序经编译形成的二进制代码可以直接运行

D) C语言中的函数不可以单独进行编译

1.2.9 用C语言编写的代码程序(B)。

A) 可立即执行B) 是一个源程序

C) 经过编译即可执行D) 经过编译解释才能执行

1.2.10 以下叙述中正确的是(C )。

A) 在C语言中,main函数必须位于程序的最前面

B) C语言的每行中只能写一条语句

C) C语言本身没有输入输出语句

D) 在对一个C程序进行编译的过程中,可以发现注释中的拼写错误

1.2.11 下列4组选项中,均不是C语言关键字的选项是(A )。

A)define B)getc C)include D)while

IF char scanf go

type printf case pow

1.2.12 下列4组选项中,均是C语言关键字的选项是(B)。

A)auto B)switch C)signed D)if

enum typedef union struct

include continue scanf type

1.2.13 C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符(C)。

A) 必须为字母B)必须为下划线

C)必须为字母或下划线D)可以是字母、数字和下划线中任一种字符

1.3 编程题

1.3.1 参照本章例题,编写一个C程序,要求输出如下字符。

***************************************************************************

Welcome to Expo 2010!

Shanghai 2010

#include

void main()

{

printf(“********************************************************************* ******\n”);

printf(“Welcome to Expo 2010!\n”);

printf(“Shanghai 2010\n”);

printf(“********************************************************************* ******\n”);

}

1.3.2 设计一程序,输入3个整数,计算并显示输出这3个整数之和。

#include

void main()

{

int a,b,c;

printf(“input a,b,c:\n”);

scanf(“%d%d%d”,%a,%b,%c);

printf(“the sum of a,b,c is %5d\n”,a+b+c);

}

第2章

2.1填空题

2.1.1 C程序中数据有常量和变量之分,其中,用一个标识符代表一个常量的,称

为符号常量。C语言规定在程序中对用到的所有数据都必须指定其数据类型,

对变量必须做到先定义,后使用。

2.1.2 C语言中,用关键字float 定义单精度实型变量,用关键字double 定义双精度实

型变量,用关键字char 定义字符型变量。

2.1.3 在C语言中,以16位PC机为例,一个char型数据在内存中所占的字节数为

1 ;一个int型数据在内存中所占的字节数为

2 ,则int型数据的取值范围为

-32768~32767。一个float型数据在内存中所占的字节数为 4 ;一个double

型数据在内存中所占的字节数为8 。单精度型实数的有效位是6-7

位,双精度型实数的有效位是15-16 位。

2.1.4 设C语言中的一个基本整型数据在内存中占2个字节,若欲将整数135791正确

无误地存放在变量a中,应采用的类型说明语句是long int a=15791; 。

2.1.5 C的字符常量是用单引号括起来的 1 个字符,而字符串常量是用双引号括起

来的字符序列。

2.1.6 C语言中,用“\”开头的字符序列称为转义符。转义符“\n”的功能是回车换行;

转义符“\r”的功能是回车。

2.1.7 若有定义:char c=‘\010’;则变量c中包含的字符个数为 1 。

2.1.8 负数在计算机中是以补码形式表示。

2.1.9 C语言中,&作为双目运算符是表示的是按位与,而作为单目运算符时表示

的是取地址。

2.1.10 在C语言的赋值表达式中,赋值号左边必须是变量。

2.1.11 自增运算符++、自减运算符--,只能用于变量,不能用于常量或表达式。++

和- -的结合方向是“自右左至左”。

2.1.12 若a是int型变量,则执行下面表达式后a的值为 2 。

a=25/3%3

2.1.13 写出下列数所对应的其它进制数(D对应十进制,B对应二进制,o对应八进制,

H对应十六进制)

32D= 100000 B= 40 O= 20 H

75D= 1001011 B= 113 O= 4B H

2.1.14 假设已指定i为整型变量,f为float变量,d为double型变量,e为long型变量,

有式子10+'a'+i*f-d/e,则结果为double 型。

2.1.15 若有定义:int x=3,y=2; float a=2.5,b=

3.5;则下面表达式的值为 1 。

(x+y)%2+(int)a/(int)b

2.1.16 5/3的值为 1 ,5.0/3的值为 1.666667 。

2.1.17 若有以下定义,int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是-16 。

2.1.18 若a是int型变量,则表达式(a=4*5,a+2),a+6的值为26 。

2.1.19 若x和n均为int型变量,且x的初值为12,n的初值为5,则执行表达式x%=(n%=2)

后x的值为:0 。

2.1.20 若有定义语句:int e=1,f=4,g=2;float m=10.5,n=4.0,k;,则执行表达式

k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是13.7 。

2.2 选择题

2.2.1 逗号表达式"(a=3*5,a*4),a+15"的值是( C )。

A) 15 B) 60 C) 30 D) 不确定

2.2.2 若有以下定义和语句:

char c1='a', c2='f';

printf("%d,%c\n",c2-c1,c2-'a'+'B');

则输出结果是:( D )

A) 2 ,M B) 5,! C) 2,E D) 5,G

2.2.3 sizeof(float)是( B )。

A )一个双精度型表达式

B )一个整型表达式

C )一种函数调用

D )一个不合法的表达式

2.2.4 若有以下定义,则能使值为3的表达式是( D )。

int k=7,x=12;

A )x%=(k%=5)

B )x%=(k-k%5)

C )x%=k-k%5

D )(x%=k)-(k%=5)

2.2.5 在C 语言中,要求运算数必须是整型的运算符是( A )。

A) % B) / C) < D) !

2.2.6 下面4个选项中,均是合法整型常量的选项是( A )。

A) 160 B) -0xcdf C) -01 D)-0x48a

-0xffff 01a 986,012 2e5

011 0xe 0668 0x

2.2.7 下面4个选项中,均是不合法浮点数的选项是( B )。

A) 160. B)123 C) -.18 D)-e3

0.12 2e4.2 123e4 .234

E3 .e5 0.0 1e3

2.2.8 下面正确的字符常量是( C )。

A)”C ” B)”\\” C)’W ’ D)’’

2.2.9 在C 语言中,int 、char 和short 三种类型数据在内存中所占用的字节数( D )。

A)由用户自己定义 B)均为2个字节

C)是任意的 D)由所用机器的机器字长决定

2.2.10 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b )后x 的值为( B )。

A)7 B)8 C)6 D)2

2.2.11 假设所有变量均为整型,则表达式x=(i=4,j=16,k=32)后x 的值为( C )。

A)4 B)16 C)32 D)52

2.2.12 若有代数式x x 103log ,则正确的C 语言表达式是( D )。

A)fabs(x*3+log(x)) B)fabs(pow(x,3)+log(x))

C)abs(pow(x,3.0)+log(x)) D)fabs(pow(x,3.0)+log(x))

2.2.13 设变量n 为float 类型,m 为int 类型,则以下能实现将n 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( B )。

A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0

C)n=n*100+0.5/100.0 D) n=(n/100+0.5)*100.0

2.2.14 以下不正确的叙述是( D )。

A)在C 语言中,逗号运算符的优先级最低

B)在C 语言中,APH 和aph 是两个不同的变量

C)若a 和b 类型相同,在执行了赋值表达式a=b 后b 中的值将放入a 中,而b 中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

2.2.15 以下正确的叙述是( D )。

A)在C 语言中,每行中只能写一条语句

B)若a 是实型变量,C 程序中允许赋值a=10,因此实型变量中允许存放整型数

C)在C 程序中,无论是整数还是实数,都能被准确无误地表示

D)在C程序中,%是只能用于整数运算的运算符

2.3编程题

2.2.1 编写一程序,求出给定半径r的圆的面积和周长,并输出计算结果。其中,r的值由用户输入,用实型数据处理。

#include

#define PI 3.14159

void main()

{

float r,c,s;

printf("input the 半径");

scanf("%f",&r);

c=2*PI*r;

s=PI*r*r;

printf("周长为%5.2f,面积为%5.2f\n",c,s);

}

2.2.2 已知华氏温度和摄氏温度之间的转换关系是:C=5/9*(F-32)。编写一程序,将用户输入的华氏温度转换为摄氏温度,并输出结果。

#include

void main()

{

float c,f;

printf("input the 华氏温度");

scanf("%f",&f);

c=5.0/9*(f-32);

printf("华氏温度为%5.2f,摄氏温度为%5.2f\n",f,c);

}

习题三

3.1 填空题

3.1.1 程序的三种基本结构是顺序、选择、循环。

3.1.2 执行( a=3.0+5,a*4 ),a+=-6; 变量a 及表达式的值分别为 2.0,2.0

3.1.3 下列语句被执行后的执行结果是1\abc\def 。

int a=1;

printf (“%d\\%s\\%s”,a,”abc”,”def”);

3.1.4 getchar( ) 函数的作用是从键盘上接收一个字符。

3.1.5 运行以下程序后,用户输入123456abc,输出结果为123,45,6 。

void main()

{ int a,b;

char c;

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

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

}

3.1.6 下面程序的输出结果是1112 。

# include

void main( )

{ int i=10;

{ /* int i=20; */

i++;

printf (“%d”,i ++);

}

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

}

3.1.7 下面程序运行后,从键盘输入30,则程序的输出结果是a=31,Ha=1f,Oa=37 。

void main ()

{ int a ;

scanf(”%d”, &a );

a++;

printf (“a=%d,Ha=%x,Oa=%o”,a,a,a);

}

3.1.8 下面程序的输出结果是a=-3

b=’D’

“END”。

void main ( )

{ int a,b=68;

a=-3;

printf(“\ta=%d\n\tb=\’%c\’\n\”end\”\n”,a,b);}

3.1.9 下面程序的输出结果是13.7000000 。

# include

# include

main()

{ int a=1,b=4,c=2;

float x=10.5,y=4.0,z;

z=(a+b)/c+sqrt((double)y)*1.2/c+x;

printf(“%f\n”,z);

}

3.1.10 下面程序运行后,若输入a=2,b=3结果是x1= 6.00

x2= 0.67 。

void main( )

{ float a ,b ,x1, x2 ;

scanf (“a=%f,b=%f“ ,&a ,&b ) ;

x1=a*b ;

x2=a/b ;

printf (“x1=%5.2f \nx2=%5.2f \n” ,x1,x2 );

}

3.2 选择题

3.2.1 指出下面正确的输入语句是( B )。

A) scanf (“a=b=%d”,&a,&b);B) scanf (“a=%d,b=%f”,&m,&f );

C) scanf (“%3c”,c); D) scanf (“%5.2f”, &f);

3.2.2 执行scanf (“%d%c%f”,&a,&b,&c) 语句,若输入1234a12f56 则变量a,b,c的值为

( C )。

A) a=1234 b=’a’ c=12.56 B) a=1 b=’2’ c=341256

C) a=1234 b=’a’ c=12.0 D) a=1234 b=’a12’ c=56.0

3.2.3 执行scanf (“a=%d,b=%d”,&a,&b) 语句, 若要使变量a和b的值分别为3和4, 则

正确的输入方法为( C )。

A) 3 ,4 B) a:3 b: 4 C) a=3,b=4 D) 3 4

3.2.4 设b=1234 , 执行printf(“%%d@%d”,b)语句,输出结果为: ( D )。

A) 1234 B) %1234 C) %%d@1234 D) %d@1234

3.2.5 若x是int型变量,y是float型变量,所用scanf语句为scanf(“x=%d,y=%f”,&x,&y);

正确的输入操作是( A )。

A) x=10,y=66.6<回车> B) 10 66.6<回车>

C) 10<回车>66.6<回车> D) x=10<回车>y=66.6<回车>

3.2.6 设a,b均是int型变量,则以下不正确的函数调用为( D )。

A) getchar(); B) putchar(‘\108’);

C) scanf(“%d,%2d”,&a,&b); D) putchar(‘\’);

3.2.7 下列程序的执行结果是( C )。

# include

void main( )

{ int a=5;

float x=3.14;

a*=x*(‘E’-‘A’);

printf (“%f\n”,(float)a);}

A) 62.800000 B) 62 C) 62.000000 D) 63.000000

3.2.8 若输入2.50 ,下列程序的执行结果是( A )。

void main( )

{ float r , area ;

scanf (“ %f ” , & r ) ;

printf (“ area=%f \n” , area=1/2*r*r ) ; }

A) 0 B) 3.125 C) 3.13 D) 程序有错

3.3 编程题

3.3.1 编写程序,从键盘上输入2个整数给变量a和b,交换a、b值然后输出。

//参考程序

#include

void main( )

{ int a,b,temp;

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

printf("\n交换前: a=%d,b=%d\n",a,b);

temp=a;a=b;b=temp;

printf("交换后: a=%d,b=%d\n",a,b) ;

}

3.3.2 试编写一个程序,任意输入一个小写字母,分别按八进制、十进制、十六进制、

字符格式输出。

//参考程序:

#include

void main()

{ char c;

printf("请输入1个小写字母:\n");

scanf("%c",&c);

printf("八进制: %o\n十进制: %d\n" ,c,c);

printf("十六进制: %x\n字符: %c\n" ,c,c);

}

3.3.3 输入一个华氏温度,要求输出摄氏温度,输出要有文字说明,取2位小数。公式

为:

()32

9

5

-=F

c

//参考程序:

# include

void main()

{ float c,f;

printf(“请输入一个华氏温度:\n”);

scanf(“%f”,&f);

c= 5.0/9*(f-32);

printf(“华氏温度F=%.2f\n”,f);

printf(“摄氏温度c=%.2f\n”,c);

}

3.3.4 设圆半径r=3,圆柱高h=4,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体

积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2

位数字。请编程序。

//参考程序:

# include

# define PI 3.1415926

void main()

{ float r,h,c,s1,s2,v1,v2;

print f(“请输入圆半径,圆柱高:”);

scanf(“%f,%f”,&r,&h);

c=2*PI*r; s1=PI*r*r; s2=4*PI*r*r;

v1=4/3*PI *r*r*r; v2=s1*h;

printf(“r=%.2f,h=%.2f\n”,r,h);

printf(“圆周长=%.2f,圆面积=%.2f\n”,s1,s2);

printf(“圆体积=%.2f,圆柱体积=%.2f\n”,v1,v2);

}

习题四

4.1 填空题

4.1.1 表示条件:10

4.1.2 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表

达式为 a 。

4.1.3 若已知a=10,b=20,则表达式!a

4.1.4 当a=3,b=2,c=1时,表达式f=a>b>c的值是0 。

4.1.5 设y为int型变量,请写出描述“y是奇数”的表达式y%2!=0 。

4.1.6 设x,y,z为int型变量,请写出描述“x或y中有一个小于z”的表达式

x=z||x>=z&&y

4.1.7 已知a=7.5,b=2,c=3.6,表达式a>b && c>a||ab的值是 1 。

4.1.8 假设a=5, b=2, c=4,以下表达式的值依次为:0,1,1,1 。

(1) a % b * c && c % b * a

(2) b % c * a && a % c * b

(3) a % b * c || c % b * a

(4) b % c * a || a % c * b

4.1.9 假设a=3, b=4, c=5,x=0,y=0,以下各表达式的值依次为0,1,1,0,1 。

(1) a + b > c && b == c

(2) a || b + c && b - c

(3) ! (a > b) && ! c || 1

(4) ! (x = a) && (y = b) && 0

(5) ! (a + b) + c – 1 && b + c/2

4.1.10 两次运行下面的程序,如果从键盘上分别输入6和4,输出的结果是7和5 。

void main()

{ int x;

scanf(“%d”,&x);

if(x++>5)

printf(“%d”,x);

else

print f(“%d\n”,x--); }

4.2 选择题:

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

A) 10

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

4.2.2 在以下一组运算符中,优先级最高的是( C )。

A) <= B) = C) % D) &&

4.2.3 设a,b,c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的表达式是

( D )。

A) ’a’&&’b’ B) a<=b C) c||+c&&b-c D) !((a

4.2.4 在C语言的if语句中,用作判断的表达式为( D )。

A) 关系表达式B) 逻辑表达式C) 算术表达式D) 任意表达式

4.2.5 在以下运算符中,优先级最高的运算符是( B )。

A) <= B) /C) != D) &&

4.2.6 假设所有变量均为整型,表达式(a=2,b=5,a>b? a++:b++,a+b)的值是( B )。

A) 7 B) 8 C) 9 D) 2

4.2.7 在C语言中,能代表逻辑值"真"的是( D )。

A) true B) 大于0的数C) 非0整数D) 非0的数

4.2.8 在以下运算符中,优先级最高的运算符是( A )。

A) ! B) = C) + D) ||

4.2.9 逻辑运算符两侧运算对象的数据类型( D )。

A) 只能是0或1 B) 只能是0或非0正数

C) 只能是整型或字符型数据D) 可以是任何类型的数据

4.3 编程题

4.3.1 编写一个C程序,要求从键盘输入一个整数,判断该整数是否能够被17整除。

(解析:当该数与17的余数为零时,即可以被17整除。)

//参考程序

#include

void main()

{

int a;

printf(“请输入一个整数:”);

scanf(“%d”,&a);

if(a%17==0)

printf(“%d能被17整除\n”,a);

else

printf(“%d不能被17整除\n”,a);

}

4.3.2 编写一个C程序,计算并显示由下列说明确定的一周薪水。如果工时小于40,

则薪水按每小时8元计;否则,按320元加上超出40小时部分的每小时12元。

(解析:一周工时数为键盘输入,显示其相应薪水为输出。)

//参考程序

#include

void main()

{

float a,wage;

printf(“请输入工时数:”);

scanf(“%f”,&a);

if(a<0) printf(“error!”);

else

{ if(a<40) wage=a*8;

else wage=320+(a-40)*12;

printf(“周薪水=%.1f元\n”,wage);

}

}

4.3.3 编写一个C程序,要求从键盘输入三个整数a,b,c,输出其中最大的数。(解析:

求极值问题。设立一个变量max总是保留两数比较时较大的那个值。具体方法如

下:先将a的值赋给max,如果max

c进行比较,如果max

最后输出max。)

//参考程序

#include

void main()

{

int a,b,c,max;

printf(“请输入三个整数:”);

scanf(“%d %d %d”,&a,&b,&c);

if(a>b) max=a;

else max=b; /* max=a>b?a:b; */

if(c>max) max=c; /* max=max>c?max:c; */

printf(“最大值max=%d\n”,max);

}

4.3.4 编写一个C程序,要求从键盘输入三个整数x,y,z,请把这三个数由小到大输出。

(解析:排序问题。想办法把三个数进行调换,使得最小的数放到x变量里,最

相关文档
相关文档 最新文档