C Primer Plus第4章编程题

本文介绍了C Primer Plus第4章的编程练习,涉及printf()和scanf()的*修饰符使用,以及多个编程题的解决方案。编程题目涵盖姓名格式化输出、浮点数的多种表示、字符串长度对齐、下载速度与文件大小计算、浮点数精度显示以及英里与油耗转换等。
摘要由CSDN通过智能技术生成

文章目录

  • printf()和scanf()的*修饰符
  • C Primer Plus第4章编程题


1.printf()和scanf()的*修饰符

        printf()和scanf()都可以用*修饰符来修改转换说明的含义。

        printf()的*修饰符:如果你不想预先指定字段宽度,希望通过程序来指定,那么可以使用*修饰符代替字段宽度但还是要用一个参数告诉函数,字段宽度应该是多少。也就是说,如果转换说明是%*d,那么参数列表中应该包含*和 d对应的值。

#include<stdio.h>
int main(void)
{
	unsigned width,precision;
	int number=256;
	double weight=242.5;

	printf("Enter a field width:\n");
	scanf("%d,&width");
	printf("The number is:%*d:\n",width,number);
	printf("Now enter a width and a precision:\n");
	scanf("%d %d",&width,&precision);
	printf("Weight=%*.*f\n",width,precision,weight);
	printf("Done!\n");

	return 0;
}

        变量width提供字段宽度,number是待打印的数字。因为转换说明中*在d的前面,所以在printf()的参数列表中,width在number的前面。

        结果,用户首先输入6,因此6是程序使用的字段宽度。接下来,用户输入8和3,说明字段宽度是8,小数点后面显示第3委数字。一般而言,程序应该根据weight的值来决定这些变量。

        scanf()中*的用法有所不同。把*放在%和转换字符之间,会使得scanf()跳过相应的输出项。

#include<stdio.h>
int main(void)
{
	int  n;
	
	printf("Please enter three integers:\n");
	scanf("%*d%*d%d",&n);
	printf("The last integer was %d\n",n);
	
	return 0;
}

运行结果: 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值