第三章 基本数据类型与常用库函数(课后练习)-《C语言程序设计》同步教学(清华大学出版)

2024-08-12
| 6页
| 295人阅读
| 49人下载

内容正文:

第3章 基本数据类型与常用库函数(练习及答案)-《C语言程序设计》(清华大学出版) 第3章 习 题 解 答 一、选择题 1. 在C程序中,________。 A) 用户标识符中可以出现下画线和中画线(减号)。 B) 用户标识符中不可以出现中画线,但可以出现下画线。 C) 用户标识符中可以出现下画线,但不可以放在用户标识符的开头。 D) 用户标识符中可以出现下画线和数字,它们都可以放在用户标识符的开头。 答案:B 分析:在C语言中,标识符的命名规则如下。 (1) 标识符由数字、字母、下画线组成。 (2) 标识符的首字符必须为字母或下画线。 (3) 标识符不能是C语言中的保留字。 (4) C语言对英文字母区分大小写。例如,A与a表示不同的标识符。 2. 以下选项中不合法的标识符是________。 A) print B) FOR C) &a D) _00 答案:C 3. 以下选项中不属于C语言数据类型的是________。 A) signed short int B) unsigned long int C) unsigned int D) long short 答案:D 分析:选项D不是合法的C语言数据类型。C语言中的整型变量可分为以下6种类型:有符号基本整型[signed]int(方括号表示可省略,比如signed int可简写为int)、无符号基本整型unsigned int、有符号短整型[signed]short[int]、无符号短整型unsigned short[int]、有符号长整型[signed]long[int]和无符号长整型unsigned long [int]。 4. C语言中的基本数据类型包括________。 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、逻辑型、字符型 D) 整型、实型、逻辑型、字符型 答案:B 分析:C语言中没有逻辑型数据,而是使用数值0表示“假”,并使用非零值表示“真”。 5. 以下关于long、int和short型数据所占内存大小的叙述中,正确的是________。 A) 均占用4字节 B) 根据数据的大小来决定所占内存的字节数 C) 由用户自己定义 D) 由C语言编译系统决定 答案:D 分析:C语言并没有规定long、int和short型数据占用的内存大小,而由编译系统决定。 6. C源程序中不能表示的数制是________。 A) 二进制 B) 八进制 C) 十进制 D) 十六进制 答案:A 分析:C语言只支持使用十进制、八进制和十六进制。 7. 下列选项中能够正确地定义符号常量的是________。 A) #define n=10 B) #define n 10 C) #define n 10; D) #DEFINE N 10 答案:B 分析:符号常量的定义格式为“#define 符号常量名 常量”。符号常量可用标识符命名,注意符号常量名的前后要有空格。 8. 以下所列的C语言常量中,错误的是________。 A) 0xFF B) l.2e0.5 C) 2L D) ' ' 答案:B 分析:选项A中的常量是以0x开头的十六进制数;选项C中的常量是长整型常量;选项D中的常量是转义字符常量;选项B中的常量表示形式错误,e的右侧不能是小数,而只能是整数。 9. 在C语言中,字符型数据在内存中的存储形式是________。 A) 原码 B) 反码 C) 补码 D) ASCII码 答案:D 分析:字符型数据在内存中保存的是ASCII码,而ASCII码都是正整数,正整数的原码、反码和补码完全相同。 10. 若有定义语句char c='\72';,则变量c________。 A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 定义不合法 答案:A 分析:字符型变量只能保存一个字符,而'\72'是转义字符,表示编码为072(八进制)的字符。 11. 不合法的八进制数是________。 A) 0 B) 028 C) 077 D) 01 答案:B 分析:八进制数由数字0~7组成,并且以0开头,不包含数字8。 12. 以下选项中正确的字符串常量是________。 A) "\\\" B) 'abc' C) OlympicGames D) "" 答案:D 分析:选项A错,因为转义字符\\表示字符\,而转义字符\"表示字符",所以选项A的右端缺少定界符"。选项B和C也错,因为字符串必须用双引号引起来。选项D表示一个空的字符串。 13. 以下选项中正确的定义语句是________。 A) double a;b; B) double a=b=7; C) double a=7,b=7; D) double ,a,b; 答案:C 分析:选项A错,a和b应该用逗号分开。选项B错,应为double a=7,b=7;。选项D错,double和a之间应使用空格隔开,而不能使用逗号。 14. 假设c1、c2为字符型变量,执行语句cl=getchar(); c2=getchar(); 时,从键盘输入A↙,此时c1和c2的值分别为________。 A) 都是'A' B) c1是'A',c2未输入 C) c1未输入,c2是'A' D) c1是'A',c2是' ' 答案:D 分析:getchar函数的功能是从键盘接收一个字符,当输入A↙(↙表示按回车键,也就是输入换行符' ')时,第一个字符'A'被赋给c1,第二个字符' '被赋给c2。 15. 假设c为字符型变量,值为'A';a为整型变量,值为97;执行语句putchar(c);putchar(a);后,输出结果为________。 A) Aa B) A97 C) A9 D) aA 答案:A 分析:putchar(x)函数的功能是输出字符x。参数x可以是字符,也可以是整数。当x是整数时,就输出以这个整数作为ASCII码值的字符。 16. 假设a和b是整型变量,执行语句scanf("a=%d,b=%d", &a,&b);,为了使a和b的值分别为1和2,正确的输入应该是________。 A) 1 2 B) 1,2 C) a=1,b=2 D) a=l b=2 答案:C 分析:当scanf输入函数的格式字符串中包含普通字符时,必须原样输入。在这里,格式字符串"a=%d,b=%d"中的a=和b=是普通字符,因此必须原样输入。 17. 为了使用输入语句scanf("%4d%4d%10f", &i,&j,&x);,为i输入-10,为j输入12,为x输入345.67,正确的输入形式应该是________。 A) -1012345.67↙ B) -10 12 345.67↙ C) -10001200345.67 ↙ D) -10,12,345.67↙ 答案:B 分析:选项D是错误的,因为scanf输入函数的格式字符串中没有逗号。由于变量i的输入格式为%4d,这表示宽度为4,因此系统在从选项A或C中读取数据时,将获得-101或-100,选项A和D都是错的。选项B是对的,因为选项B中的3个数是用空格分开的,而题目中为3个变量指定的输入格式的宽度都大于对应的数据,宽度将不起作用。 18. 已知字母A的ASCII码值为65,以下语句的输出结果是________。 char cl='A' , c2='Y'; printf("%d,%d ", c1,c2); A) 输出格式非法,因而输出错误信息 B) 65,90 C) A,Y D) 65,89 答案:D 分析:字符型数据实际上是整型数据,也就是字符的ASCII码值。比如,字符'A'的ASCII码值是65,字符'B'的ASCII码值是65+1,以此类推,字符'Y'的ASCII码值是65+24=89。 二、填空题 1. 在C语言程序中,用关键字________定义基本整型变量,用关键字________定义单精度实型变量,用关键字_________定义双精度实型变量。 答案:int float double 2. 把a1、a2定义成单精度实型变量并赋初值1的语句是________。 答案:float a1=1.0, a2=1.0; 分析:也可以将1.0改为1,因为在进行赋值时,系统会自动进行转换。 3. C程序中定义的变量代表内存中的________。 答案:存储单元 分析:在编译C程序时,系统会根据变量的类型给变量分配存储单元,给变量赋值就是将数据存放到变量所代表的存储单元中。 4. 若有定义语句int i=123; float x=-45.678;,则语句printf("i=%5d x=%7.4f ",i,x);的输出结果是_______。 答案:i= 123 x=-45.6780 分析:格式字符串中的普通字符原样输出;格式说明符%5d表示输出项i的值(123)的宽度为5,左补两个空格;%7.4表示输出项x的值的宽度为7,其中小数部分有4位,整数部分以实际宽度输出。 5. 若有定义语句float alfa=60,pi=3.1415926535626;,那么语句printf("sin(%3.0f*%.4f/180) ",alfa,pi);的输出结果是________。 答案:sin(60*3.1416/180) 分析:格式字符串中的普通字符原样输出;格式说明符%3.0f表示输出项alfa的值的小数部分不输出;%.4f表示输出项pi的值的小数部分保留4位,整数部分以实际宽度输出。 6. 若有定义语句char ch='$',float x=153.4523;,那么语句printf("%c%-8.2f\ ",ch,x);的输出结果是________。 答案:$153.45 分析:%c表示对应的输出项ch的值以字符形式输出;%-8.2f表示对应的输出项x的值以小数形式输出,宽度为8,小数点后取两位,负号表示左对齐,右补空格;转义字符\\表示输出一个\,然后输出n。 7. 假设整型变量a和b的值分别为7和9,要求按以下格式输出a和b的值: a=7 b=9 请完成如下输出语句:printf( "_________", a, b);。 答案:a=%d b=%d 8. 执行以下程序时,若输入1234567↙,则输出结果是________。 #include < stdio.h > main() { int a=1,b; scanf("%2d%2d",&a,&b); printf("%d %d ",a,b); } 答案:12 34 分析:由于在输入语句中为a和b指定的输入宽度都是2,因此系统从输入的数字中依次各取两位并分别赋给a和b。 三、编程题 1. 输入一个字符,然后输出这个字符及其ASCII码值。 分析:字符型数据在内存中以相应的ASCII码值存放,因而既可以字符的形式输出,也可以ASCII码值(整数)的形式输出。 程序如下: #include<stdio.h> int main() { char ch; /* 定义字符型变量ch */ scanf("%c",&ch); /* 为变量ch输入字符 */ printf("%c %d ",ch,ch); return 0; } 程序运行结果如下: B↙ B 66 2. 求平面上两点之间的距离。 分析:求平面上两点(x1,y1)和(x2,y2)之间距离的公式如下 程序如下: #include <stdio.h> #include <math.h> /* sqrt函数所在的头文件 */ int main() { float x1, y1,x2,y2,d; printf("input (x1,y1),(x2,y2): "); /* 输出提示信息 */ scanf("%f%f%f%f",&x1,&y1,&x2,&y2); d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); /* 使用sqrt函数求平方根 */ printf("d=%0.2f ",d); return 0; } 程序运行结果如下: input (x1,y1),(x2,y2): 1 1 2 2↙↙ d=1.41 3. 已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n可由键盘输入。 分析:等差数列的前n项之和的计算公式为a*n+n*(n-1)*d/2。 程序如下: #include<stdio.h> int main() { int a,d,n,sum; /* 定义4个整型变量 */ printf("input a d n: "); /* 输出提示信息input a d n: */ scanf("%d%d%d",&a,&d,&n); / * 输入3个整数,分别赋给a、d、n */ sum=a*n+n*(n-1)*d/2; /* 求等差数列的前n项之和 */ printf("sum=%d ",sum); /* 输出结果 */ return 0; } 程序运行结果如下: input a d n: 1 3 50↙↙ sum=3725 学科网(北京)股份有限公司 $$

资源预览图

第三章 基本数据类型与常用库函数(课后练习)-《C语言程序设计》同步教学(清华大学出版)
1
第三章 基本数据类型与常用库函数(课后练习)-《C语言程序设计》同步教学(清华大学出版)
2
第三章 基本数据类型与常用库函数(课后练习)-《C语言程序设计》同步教学(清华大学出版)
3
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。