C Primer Plus NO.5

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

解:明早做,撤了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值