7-5 输入输出控制 (10 分)
编写程序,最多可读入5个数,它们依次是:字符,无符号短整数,整数,单精度浮点数和双精度浮点数,值均在它们的许可范围内,但数据间的分隔符可能有:空格,分号,逗号,换行符等等,然后,在第一行输出成功读取到的数的数量(正确读取到多少个数),第二行依次输出上述五个数(逗号分隔,浮点数均保留三位小数),第三行输出在上行的输出中共占用多少个字符位置。第四行输出前述读入五个变量占用的字节数。
输入格式:
最多五个数,它们依次是:字符,无符号短整数,整数,单精度浮点数和双精度浮点数,值均在它们的许可范围内,但数据间的分隔符可能有:空格,分号,逗号,换行符等等,你可以假设,若数据数量不够读取,缺少的一般是后边的几个。
输出格式:
第一行输出成功读取到的数的数量(正确读取到多少个数)。 第二行依次输出上述五个数(逗号分隔,浮点数均保留三位小数)。 第三行输出在上一行的输出中共占用多少个字符位置。 第四行输出前述读入五个变量占用的字节数。
输入样例:
a,34567;-399999
3.1415926
输出样例:
本例中成功读入四个数据,第二行输出占27个字符宽度。字符占1个字节,无符号短整数占2个字节,两种浮点数均占8个字节(PTA使用的系统),共19个字节。
4
a,34567,-399999,3.142,0.000
27
19
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
#include <stdio.h>
void main()
{
char a = 0;
unsigned short b = 0;
int c = 0;
float d = 0.0;
double e = 0.0;
int n,m;
n = scanf("%c%*c%hu%*c%d%*c%f%*c%lf",&a,&b,&c,&d,&e);
printf("%d\n", n);
m = printf("%c,%hu,%d,%.3f,%.3lf\n", a,b,c,d,e);
printf("%d\n",m-1);
printf("%d\n", sizeof(a) + sizeof(b) + sizeof(c) + sizeof(d) + sizeof(e));
}
题目开始要求:最多可读入5个数,它们依次是:字符,无符号短整数,整数,单精度浮点数和双精度浮点数,但是下面例子中,输入了4个数,这四个数应该是字符,无符号整数,整数,单精度浮点数这四个类型吧,这个结果27不对吧。而且,换行符都作为分割符了,如果只输入3个数,三个数之间都用换行符分割,程序是不知道什么时候结束录入数据的,自相矛盾的题目