2022/11/14 8:23,刚坐到电脑前,先把昨天的历史遗留问题解决一下,看一下看不懂的程序
遗留1:
解答:在scanf函数中,把*放到放在%与转换字符中间会使得scanf跳过相应的输入项。
拓展:在printf函数中,如果希望程序指定字符的宽度,则用*修饰符代替字符宽度。
示例:
#include <stdio.h>
int main()
{
int width, precision;
int a = 256;
float b = 2225.38;
printf("输入一个字符长度:");
scanf("%d", &width);
printf("\nnumber是%*d", width, a);
printf("\n输入b的长度以及小数的位数:");
scanf("%d %d", &width, &precision);
printf(" % *.*f\n", width,precision,b);
printf("Done!");
return 0;
}
运行结果:
这叼玩意儿类似将width与precision的值赋值给*(自己的理解)
遗留问题2:在比姓名宽度长3的字段中打字:
解:
#include <stdio.h>
#include <string.h>
int main()
{
char name[40];
int width;
printf("输入你的名字:");
scanf("%s", name);
width = strlen(name);
printf("%*s",(width+3),name);
return 0;
}
昨晚没做出来纯纯是因为没明白*的用法
注意:用了数组就要用%s!,然后是为啥width+3要加括号,不懂(后来试了以下,不加括号也能运行0.0)(又试了一下,中文也可以运行的诶0.0)
遗留问题解决,开始坐今天的牢!
4.8编程练习(p87)
题目3:编写一个程序,读取一个浮点数,首先以小数点计数法打印。用下面的格式进行输出:
a:The input is 21.3 or .1e+001.
b:The input is +21.290 or 2.129E+001.
解:
#include <stdio.h>
int main()
{
float a;
printf("输入一个数字\n");
scanf("%f", &a);
printf("The input is %.3f or %.3e", a, a);
return 0;
}
跟答案大差不差,送走下一位
题目4:编写一个程序,提醒用户输入身高和姓名,然后以下面的格式显示用户刚输入的信息:
Dabney,you are 6.208 feet tall
使用float类型,并用/作为除号,要求用户以厘米为单位输入,以米为单位输出:
#include <stdio.h>
#define M_CM 100
int main()
{
char name[40];
float a;
printf("输入你的名字以及身高(以m为单位):");
scanf("%s %f",name,&a);
a = a * 100;
printf("\n%s,you are %f cm tall", name, a);
return 0;
}
用的厘米和米,可以把最后两行代码改成这样的形式:
printf("\n%s,you are %f cm tall", name, a*100);
题目五:编写一个程序,提醒用户输入以兆每秒(Mb/s)为单位的下载速度和以兆字节(MB)为单位的文件大小。程序中应计算文件的下载时间。注意,这里1字节等于8位。使用float类型,并用/作为除号。该程序要以下面的格式打印3个变量的值(下载速度,文件大小和下载时间),显示小数点后面两位数字。
AT 18.12 megabits per second,a file of 2.20 megabytes
downloads in 0.97 second.
解:
#include <stdio.h>
int main()
{
float sd, dx;
printf("输入下载速度(以MB/s为单位):");
scanf("%f", &sd);
printf("你文件有多大(以MB为单位) :");
scanf("%f",&dx);
printf("AT %.2f megabits per second, a file of %.2f megabytes", sd, dx);
printf("\ndowloads in %.2f second", 8*dx/sd);
return 0;
}
跟答案大差不差,但是最后一行代码的结尾不是很懂,主要是不太懂换算的关系。
19:34,刚打完球吃完饭,下午做了五百个俯卧撑,麻了,不知道明天还有没有精神坐牢。
题目6:编写一个程序,先提示用户输入名,再提示用户输入姓。在一行打印用户输入的名和姓,下一行分别打印名和姓的字母数。字母书要与相应名和姓结尾对其:
Melissa Honeybee
7 8
解:明早做,撤了