程序不能正常运行。第1个 scanf()语句只读取用户输入的名,而用户输入的姓仍留在输入缓冲区中(缓冲区是用于储存输入的临时存储区)。下一条 scanf()语句在输入缓冲区查找重量时,从上次读入结束的地方开始读取。这样就把留在缓冲区的姓作为体重来读取,导致 scanf()读取失败。另一方面,如果在要求输入姓名时输入 Lasha144,那么程序会把144作为用户的体重(虽然用户是在程序提示输入体重之前输入了144)。
2. 假设下列示例都是完整程序中的一部分,它们打印的结果分别是什么?a. printf(“He sold the painting for $%2.2f.n”, 2.345e2);
b. printf(%c%c%cn", ‘H’, 105, ‘41’);
c. #define Q “His Hamlet was funny without being vulgar.”
printf(“%snhas %d characters.n”, Q, strlen(Q));
d. printf(“ls %2.2e the same as %2.2f?n”, 1201.0, 1201.0);
a.He sold the painting for $234.50.
b.Hi!
c.His Hamlet was funny without being vulgar.
has 42 characters.
d.Is 1.20e+003 the same as 1201.00?
printf(" " %s " nhas %d characters.n", Q, strlen(Q))
4. 找出下面程序中的错误define B booboo define X 10 main(int) { int age; char name; printf("Please enter your first name."); scanf("%s", name); printf("All right, %c, what's your age?n", name); scanf("%f", age); xp = age + X; printf("That's a %s! You must be at least %d.n", B, xp); rerun 0; } 1234567891011121314
答:
#include <stdio.h>//别忘了要包含合适的头文件 #define B "booboo"//添加#和双引号 #define X 10//添加# int main(void) { int age; char name[20];//把name声明为数组 int xp;//声明所有变量 printf("Please enter your first name.n");//添加n,提高可读性 scanf("%s", name); printf("All right, %s, what's your age?n", name);//%s 用于打印字符串 scanf("%d", &age);//把%f改成%d,把age改成&age xp = age + X; printf("That's a %s! You must be at least %d.n", B, xp); return 0;//不是rerun }
12345678910111213141516 5. 假设一个程序的开头是这样:#define BOOK “War and Peace”
int main(void) {
float cost =12.99;
float percent = 80.0;
请构造一个使用BOOK,cost和percent的printf()语句,打印以下内容:
This copy of “War and Peace” sells for $12.99.
That is 80% of list.
printf("This copy of "%s" sells for $%0.2f.n", Book, cost); printf("This is %0.0f%% of listn", percent); 12 6. 打印下列各项内容要分别使用什么转换说明?
a. 一个字段宽度与位数相同的十进制整数 %d
b. 一个形如8A、字段宽度为4的十六进制整数 %4x
c. 一个形如232.346、字段宽度为10的浮点数 %10.3f
d. 一个形如2.33e+002、字段宽度为12的浮点数 %12.2e
e. 一个字段宽度为30、左对齐的字符串 %-30s
a. 一个字段宽度为15的unsigned long整数 %15lu
b. 一个形如0x8a、字段宽度为4的十六进制整数 %4x
c. 一个形如2.33E+02、字段宽度为12、左对齐的浮点数 %-12.2E
d. 一个形如+232.346、字段宽度为10的浮点数 %+10.3f
e. 一个字符串的前8个字符,字段宽度为8字符 %8.8s
a. 一个字段宽度为6、最少有4位数字的十进制整数 %6.4d
b. 一个在参数列表中给定字段宽度的八进制整数 % * o
c. 一个字段宽度为2的字符 %2c
d. 一个形如+3.13、字段宽度等于数字中字符数的浮点数 %+0.2f
e. 一个字段宽度为7、左对齐字符串中的前5个字符 %-7.5s
a. 101
b. 22.32 8.34E-09
c. linguini
d. catch 22
e. catch 22(但是跳过catch)
a.
int a;
scanf(“%d”, &a)
b.
float a, b;
scanf(“%f %f”, &a, &b);
c.
char name[20];
scanf(“%s”, name)
d.
char zifu[20];
int value;
scanf(“%s %d”, zifu, &d);
e.
int value;
scanf(“%*s %d”, &value);
包括:空格、制表符和换行符。
C语言用空白分隔记号。
scanf()使用空格分隔连续的输入项。
11. printf(“The double type is %z bytes…n”, sizeof(double));这个语句有什么问题?如何修正?%z中的z是修饰符,不是转换字符,所以要在修饰符后面加上一个它修饰的转换字符。可以使用%zd打印十进制数,或用不同的说明符打印不同进制的数,例如,%zx打印十六进制的数。
12. 假设要在程序中用圆括号代替花括号,以下方法是否可行?#define ( {
#define ) }
可以,但是预编译器无法区分哪些该换哪些不该换,所有的()都会被替换为{}
#include<stdio.h> int main(void) {char name[20];char surname[20];printf("输入名和姓:");scanf("%s %s", name, surname);printf("%s,%s",name,surname);return 0; } 123456789101112
运行结果:
a. 打印名字,包括双引号
b. 在宽度为20的字段右端打印名和姓,包括双引号
c. 在宽度为20的字段左端打印名和姓,包括双引号
d. 在比姓名宽度宽3的字段中打印名字。
#include<stdio.h> #include<string.h> //包含strlen()函数的头文件 int main(void) {char name[20];int nameLength;printf("输入名和姓:");scanf("%[^n]", name); getchar();nameLength = strlen(name);printf(""%s"n",name);//a. 打印名字,包括双引号printf(""%20s"n",name);//b. 在宽度为20的字段右端打印名和姓,包括双引号printf(""%-20s"n",name);//c. 在宽度为20的字段左端打印名和姓,包括双引号printf(""%*s"n",nameLength+3,name);//d. 在比姓名宽度宽3的字段中打印名字。return 0; }
1234567891011121314151617181920运行结果:
a. The input is 21.3 or 2.1e+001.
b. The input is +21.290 or 2.129E+001.
#include <stdio.h> int main(void) {float count;printf("输入一个浮点数:");scanf("%f", &count);printf("The input is %.1f or %.1e.n", count, count);printf("The input is %+.3f or %.3E.n", count, count);return 0; } 12345678910
运行结果:
#include <stdio.h> int main(void) {float height;char name[20];printf("输入身高(单位:英寸)和姓名:");scanf("%f %s",&height,name);printf("%s, you are %.3f feet talln",name,height);float cmheight;char cmname[20];printf("输入身高(单位:厘米)和姓名:");scanf("%f %s",&cmheight,cmname);printf("%s, you are %.3f metre talln",cmname,cmheight/100);return 0; }
123456789101112131415161718运行结果:
At 18.12 megabits per second, a file of 2.20 megabytes
downloads in 0.97 seconds.
#include <stdio.h> int main(void) {float speed, size, time;printf("输入下载速度(Mb/s)和文件大小(MB):");scanf("%f %f",&speed,&size);time = size/(speed/8);printf("At %.2f megabits per second, a file of %.2f megabytesn",speed,size);printf("downloads in %.2f seconds.n",time);return 0; } 123456789101112
运行结果:
Melissa Honeybee
7 8
接下来,再打印相同的信息,但是字母个数与相应名和姓的开头对齐,如下所示:
Melissa Honeybee
7 8
#include <stdio.h> #include <string.h> int main(void){char first_name[20], last_name[20];int first_count, last_count; printf("先输入名,后输入姓:n");scanf("%s %s",first_name,last_name);first_count = strlen(first_name);last_count = strlen(last_name);printf("打印用户输入的名和姓:n"); printf("%s %sn",first_name,last_name);printf("字母数要与相应名和姓的结尾对齐:n"); printf("%*d %*dn",first_count,first_count,last_count,last_count); printf("字母数要与相应名和姓的开头对齐:n"); printf("%d %*dn",first_count,first_count,last_count);return 0; }
1234567891011121314151617181920运行结果:
#include <stdio.h> #include <float.h> int main(void) {double a = 1.0/3.0;float b = 1.0/3.0;printf("%.6f %.6fn",a,b);printf("%.12f %.12fn",a,b);printf("%.16f %.16fn",a,b);printf("FLT_DIG=%d DBL_DIG=%d",FLT_DIG,DBL_DIG); //float类型、double类型最少有效数字位数return 0; } 1234567891011121314'
运行结果:
#include <stdio.h> #define distance_CONVERT 1.609 #define Gasoline_CONVERT 3.785 int main(void) {float distance, Gasoline_quantity;printf("请输入旅行的里程(英里)和消耗的汽油量(加仑):");scanf("%f %f",&distance,&Gasoline_quantity);printf("显示消耗每加仑汽油行驶的英里数:%.1fn",distance/Gasoline_quantity);printf("把单位是英里/加仑的值转换为升/100公里:%.1fn",(Gasoline_quantity*Gasoline_CONVERT)/(distance*distance_CONVERT)*100);return 0; } 12345678910111213
运行结果:
在单位转换软件上,验证了一下运行结果:
相关知识
花卉装饰技术题库复习题及答案
花卉园艺师复习题
《花卉栽培技术》复习题及答案.DOC
园艺遗传学复习题及答案解析
花卉园艺工高级理论知识复习题答案[精品].doc
园艺设施复习题答案
花卉园艺工理论复习题及答案
2022年《园林植物病虫害防治》复习题(附答案).docx
一个简单的C语言程序(详解)
农业环境保护复习题(答案).doc
网址: C Primer Plus 第四章 复习题&编程练习 答案 https://m.huajiangbk.com/newsview893406.html
上一篇: 4830型 PCR专用微量可调移 |
下一篇: verilog编程题 |