内容正文:
身高体型判定系统的数据处理(3.输入输出及项目实施)
一、单项选择题
1、执行int a=-1; printf("%u", a);语句,在 Visual C++ 环境中的输出结果是( )
A. -1
B. 1
C. 4294967295
D. 编译错误
2、以下 scanf 语句中,能正确给整型变量 a 输入数据的是( )
A. scanf ("% d", a);
B. scanf ("% d", &a);
C. scanf ("% f", &a);
D. scanf ("% u", a);
3、执行float pi=3.1415926; printf("%.2f", pi);语句,输出结果是( )
A. 3.141593
B. 3.14
C. 3.1416
D. 3.1415926
4、以下关于 putchar 函数的描述,正确的是( )
A. 一次可以输出多个字符
B. 参数只能是字符型变量
C. 参数可以是字符常量或整型变量(对应 ASCII 码)
D. 需要包含头文件math.h
5、执行int a,b; scanf("%d*%d", &a, &b);语句,若输入10*20,则变量 a 和 b 的值分别是( )
A. 10,20
B. 10,10
C. 20,10
D. 编译错误
6、执行int num=123; printf("%-5d*", num);语句,输出结果是( )
A. 123*
B. 123 *
C. 0123*
D. 123*
7、关于 getchar 函数,以下说法正确的是( )
A. 函数有一个参数
B. 读取输入时会自动跳过空格和换行符
C. 返回值是读取到的字符的 ASCII 码值
D. 只能读取数字字符
8、以下 printf 语句中,格式符与输出项不匹配的是( )
A. printf ("% c", 'A');
B. printf ("% s", "Hello");
C. printf ("% d", 3.14);
D. printf ("% f", 3.14);
9、输入双精度浮点数时,scanf 应使用的格式符是( )
A. % f
B. % lf
C. % d
D. % e
10、执行float x=314.159; printf("%g", x);语句,输出结果是( )
A. 314.159
B. 3.14159e+02
C. 314.16
D. 314
二、判断题
1、使用 scanf 输入变量时,所有变量前都必须加取地址运算符&。( )
2、printf 的格式控制字符串中,格式符的数量少于输出项数量时,多出的输出项不会被输出。( )
3、getchar 函数只能读取字母字符,无法读取数字字符和符号。( )
4、printf 输出字符串时,必须使用格式符%s,且输出项为字符串常量或字符数组名。( )
3、 填空题
1、在 printf 中输出%本身,需要使用的格式声明是____。
2、使用 scanf 输入单个字符时,对应的格式符是____。
3、putchar 函数的参数可以是字符常量、字符变量或____(填数据类型)。
4、使用 C 语言标准库中的平方根函数 sqrt () 时,需要在程序开头包含的头文件是____。
5、printf 中指定输出实型数据保留 3 位小数的格式声明是____。
四、程序填空题
1、题目描述:以下程序用于实现身高预测系统,输入父母身高和孩子性别,根据公式计算并输出孩子的预测身高,需补充缺失代码。
#include <stdio.h>
int main() {
float father, mother, predict;
char gender;
printf("请输入父亲身高(cm):");
// 读取父亲身高
___(1)_;
printf("请输入母亲身高(cm):");
// 读取母亲身高
__(2)__;
printf("请输入孩子性别(M/m表示男,F/f表示女):");
// 读取孩子性别,跳过输入缓冲区的换行符
__(3) __;
if(gender == 'M' || gender == 'm') {
// 男孩身高公式:(父亲身高+母亲身高)*1.08/2
predict = __(4) __;
} else if(gender == 'F' || gender == 'f') {
// 女孩身高公式:(父亲身高+0.923*母亲身高)/2
predict = __(5)__;
} else {
printf("性别输入错误!
");
return 1;
}
// (6) 保留2位小数输出预测身高
printf("孩子的预测身高为:____ cm
", predict);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
身高体型判定系统的数据处理(3.输入输出及项目实施)
一、单项选择题
1、执行int a=-1; printf("%u", a);语句,在 Visual C++ 环境中的输出结果是( )
A. -1
B. 1
C. 4294967295
D. 编译错误
【答案】C
【解析】%u是无符号十进制整数格式符,当输入负数时,会将其以补码形式转换为无符号整数,-1 的 32 位补码是全 1,对应无符号整数 4294967295,因此输出该值。
2、以下 scanf 语句中,能正确给整型变量 a 输入数据的是( )
A. scanf ("% d", a);
B. scanf ("% d", &a);
C. scanf ("% f", &a);
D. scanf ("% u", a);
【答案】B
【解析】scanf 的输入项必须是变量的地址,需用取地址运算符&获取变量 a 的内存地址;选项 A 缺少&,选项 C 格式符%f对应浮点型,选项 D 格式符%u对应无符号整型且缺少&,只有选项 B 符合语法。
3、执行float pi=3.1415926; printf("%.2f", pi);语句,输出结果是( )
A. 3.141593
B. 3.14
C. 3.1416
D. 3.1415926
【答案】B
【解析】.n修饰符用于指定实型数据的小数位数,%.2f表示保留 2 位小数,系统会自动对第三位四舍五入,因此输出 3.14。
4、以下关于 putchar 函数的描述,正确的是( )
A. 一次可以输出多个字符
B. 参数只能是字符型变量
C. 参数可以是字符常量或整型变量(对应 ASCII 码)
D. 需要包含头文件math.h
【答案】C
【解析】putchar 一次只能输出一个字符,参数可以是字符常量、字符变量或对应 ASCII 码的整型变量;选项 A 错误,选项 B 限制过严,选项 D 错误,putchar 属于 stdio.h 库函数。
5、执行int a,b; scanf("%d*%d", &a, &b);语句,若输入10*20,则变量 a 和 b 的值分别是( )
A. 10,20
B. 10,10
C. 20,10
D. 编译错误
【答案】A
【解析】scanf 的格式控制字符串中,*表示跳过对应输入项,输入10*20时,%d读取 10 赋值给 a,*跳过*,第二个%d读取 20 赋值给 b,因此 a=10,b=20。
6、执行int num=123; printf("%-5d*", num);语句,输出结果是( )
A. 123*
B. 123 *
C. 0123*
D. 123*
【答案】B
【解析】%-5d表示左对齐且占 5 个字符宽度,num=123 占 3 个字符,因此右侧补 2 个空格,输出为123 *。
7、关于 getchar 函数,以下说法正确的是( )
A. 函数有一个参数
B. 读取输入时会自动跳过空格和换行符
C. 返回值是读取到的字符的 ASCII 码值
D. 只能读取数字字符
【答案】C
【解析】getchar 无参数,读取时会包含空格、换行符等所有字符,返回值是字符对应的 ASCII 码,可赋值给字符或整型变量;选项 A、B、D 均错误。
8、以下 printf 语句中,格式符与输出项不匹配的是( )
A. printf ("% c", 'A');
B. printf ("% s", "Hello");
C. printf ("% d", 3.14);
D. printf ("% f", 3.14);
【答案】C
【解析】%d是整型格式符,输出项 3.14 是浮点型,格式不匹配会导致输出错误结果;其他选项格式符与输出项类型一致。
9、输入双精度浮点数时,scanf 应使用的格式符是( )
A. % f
B. % lf
C. % d
D. % e
【答案】B
【解析】%lf用于输入双精度(double)浮点数,%f用于输入单精度(float)浮点数,%d对应整型,%e用于指数形式输入浮点数但需配合 double 使用%le,因此选项 B 正确。
10、执行float x=314.159; printf("%g", x);语句,输出结果是( )
A. 314.159
B. 3.14159e+02
C. 314.16
D. 314
【答案】A
【解析】%g会自动选择%f或%e中宽度更小的格式,且不输出无意义的 0,314.159 用%f格式更短,因此输出原数。
二、判断题
1、使用 scanf 输入变量时,所有变量前都必须加取地址运算符&。( )
【答案】×
【解析】数组名本身代表数组的首地址,输入数组时不需要加&,例如scanf("%s", str);(str 是字符数组名)是合法的,因此该表述错误。
2、printf 的格式控制字符串中,格式符的数量少于输出项数量时,多出的输出项不会被输出。( )
【答案】√
【解析】printf 要求格式符与输出项一一对应,若输出项数量多于格式符,超出部分的输出项不会被处理和输出,符合函数的执行规则。
3、getchar 函数只能读取字母字符,无法读取数字字符和符号。( )
【答案】×
【解析】getchar 可以读取键盘输入的任意字符,包括数字、符号、空格等,读取的是字符的 ASCII 码值,后续可通过类型转换转为整型数字,因此表述错误。
4、printf 输出字符串时,必须使用格式符%s,且输出项为字符串常量或字符数组名。( )
【答案】√
【解析】%s是 printf 专用于输出字符串的格式符,输出项需指向字符串的首地址,字符串常量和字符数组名都符合要求,该表述正确。
3、 填空题
1、在 printf 中输出%本身,需要使用的格式声明是____。
【答案】%%
【解析】%是格式声明的起始符,若要输出%,需连续写两个%,系统会将其解析为普通字符%输出,这是 printf 的特殊语法规则。
2、使用 scanf 输入单个字符时,对应的格式符是____。
【答案】% c
【解析】%c是 scanf 用于读取单个字符的格式符,可读取包括空格、换行符在内的任意单个字符,是字符输入的核心格式符。
3、putchar 函数的参数可以是字符常量、字符变量或____(填数据类型)。
【答案】整型变量
【解析】字符在内存中以 ASCII 码存储,因此 putchar 的参数可以是对应 ASCII 码的整型变量,例如putchar(65);会输出字符 'A'。
4、使用 C 语言标准库中的平方根函数 sqrt () 时,需要在程序开头包含的头文件是____。
【答案】math.h
【解析】sqrt () 属于数学函数库,所有数学库函数的声明都在math.h头文件中,使用前必须通过#include <math.h>引入。
5、printf 中指定输出实型数据保留 3 位小数的格式声明是____。
【答案】%.3f
【解析】.n修饰符用于指定实型数据的小数位数,%.3f表示以小数形式输出浮点数,并保留 3 位小数,系统会自动对第四位四舍五入。
四、程序填空题
1、题目描述:以下程序用于实现身高预测系统,输入父母身高和孩子性别,根据公式计算并输出孩子的预测身高,需补充缺失代码。
#include <stdio.h>
int main() {
float father, mother, predict;
char gender;
printf("请输入父亲身高(cm):");
// 读取父亲身高
___(1)_;
printf("请输入母亲身高(cm):");
// 读取母亲身高
__(2)__;
printf("请输入孩子性别(M/m表示男,F/f表示女):");
// 读取孩子性别,跳过输入缓冲区的换行符
__(3) __;
if(gender == 'M' || gender == 'm') {
// 男孩身高公式:(父亲身高+母亲身高)*1.08/2
predict = __(4) __;
} else if(gender == 'F' || gender == 'f') {
// 女孩身高公式:(父亲身高+0.923*母亲身高)/2
predict = __(5)__;
} else {
printf("性别输入错误!
");
return 1;
}
// (6) 保留2位小数输出预测身高
printf("孩子的预测身高为:____ cm
", predict);
return 0;
}
【答案】
(1)scanf ("% f", &father);
(2) scanf ("% f", &mother);
(3) scanf ("% c", &gender);
(4) (father + mother) * 1.08 / 2;
(5) (father + 0.923 * mother) / 2; (6):%.2f
【解析】
(1) 使用%f格式符读取浮点型的父亲身高,&father获取变量的内存地址,符合 scanf 的输入规则。
(2) 同理,用%f读取母亲身高,确保输入数据存储到对应的浮点型变量中。
(3) scanf(" %c", &gender)中的空格用于跳过输入缓冲区中之前输入留下的换行符,避免读取到无效的换行字符。
(4) 严格按照题目给定的男孩身高公式编写表达式,保证计算逻辑的准确性。
(5) 代入女孩身高公式进行计算,确保预测结果符合遗传身高的统计规律。
(6) %.2f格式符用于将预测身高保留 2 位小数输出,提升结果的可读性和规范性。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$