main()
{
int i,j;
float x,y;
char c;
scanf("%2d%f%f%c%d",&i,&x,&y,&c,&j);
printf("%2d%f%f%c%d",i,x,y,c,j);
}
问题都在图里,不仅输入不能完成,输出也不符合要求。
12 个解决方案
#1
你的程序必须是连续输入的
#2
各变量之间不能空格或者换行
#3
#include<stdio.h>
void main()
{
int i,j;
float x,y;
char c;
scanf( "%d%f%f%c%d ",&i,&x,&y,&c,&j);
printf( "%d%f%f%c%d ",i,x,y,c,j);
}
void main()
{
int i,j;
float x,y;
char c;
scanf( "%d%f%f%c%d ",&i,&x,&y,&c,&j);
printf( "%d%f%f%c%d ",i,x,y,c,j);
}
#4
输入输出的格式之间没有用空格隔开
scanf( "%2d %f %f %c %d ",&i,&x,&y,&c,&j);
printf( "%2d %f %f %c %d ",i,x,y,c,j
scanf( "%2d %f %f %c %d ",&i,&x,&y,&c,&j);
printf( "%2d %f %f %c %d ",i,x,y,c,j
#5
#include <stdio.h>
void main()
{
int i,j;
float x,y;
char c;
scanf( "%d %f %f %c %d",&i,&x,&y,&c,&j);
printf( "%d %f %f %c %d",i,x,y,c,j);
}
输入时要与scanf里面的格式对应,另外写程序要注意格式。
void main()
{
int i,j;
float x,y;
char c;
scanf( "%d %f %f %c %d",&i,&x,&y,&c,&j);
printf( "%d %f %f %c %d",i,x,y,c,j);
}
输入时要与scanf里面的格式对应,另外写程序要注意格式。
#6
#include "stdio.h "
main()
{
int i,j;
float x,y;
char c;
scanf("%2d %f %f %c %d",&i,&x,&y,&c,&j);
printf("%2d %f %f %c %d",i,x,y,c,j);
}
按照各位提示修改程序如上,输入:
56789 0.123 45 a 72回车后得:
56 789.000000 0.123000 4 5
这可不是想要的结果啊,第一个56没错,可789.000000从哪来的呢?0.123000也没错,可45怎么被拆成4和5了?另外a和72哪去了?
main()
{
int i,j;
float x,y;
char c;
scanf("%2d %f %f %c %d",&i,&x,&y,&c,&j);
printf("%2d %f %f %c %d",i,x,y,c,j);
}
按照各位提示修改程序如上,输入:
56789 0.123 45 a 72回车后得:
56 789.000000 0.123000 4 5
这可不是想要的结果啊,第一个56没错,可789.000000从哪来的呢?0.123000也没错,可45怎么被拆成4和5了?另外a和72哪去了?
#7
改成scanf( "%d %f %f %c %d",&i,&x,&y,&c,&j);
即为正确结果
即为正确结果
#8
输入完成了
输出也没什么错误,只是你就是让程序这样输出的
怪得谁来?
#9
发现就是这个2在作怪,如果是scanf( "%2d.............则输出就有问题,如果没有这个2,那么输出就无问题,这是怎么回事?
#10
发现就是这个2在作怪,如果是scanf( "%2d.............则输出就有问题,如果没有这个2,那么输出就无问题,这是怎么回事?
=================================================================================================
这里的2是一个输入控制,表示只读取2位数,因此你在输入56789的时候,程序只给你读取56,而后面的789则作为下一个数的输入了!
=================================================================================================
scanf( "%2d %f %f %c %d ",&i,&x,&y,&c,&j);
printf( "%2d %f %f %c %d ",i,x,y,c,j);
输入:
56789 0.123 45 a 72回车后得:
56 789.000000 0.123000 4 5
这可不是想要的结果啊,第一个56没错,可789.000000从哪来的呢?0.123000也没错,可45怎么被拆成4和5了?另外a和72哪去了?
=================================================================================================
789.0000是把你的789作为后面的%f输入了,因为你前面只定义了读取2位数,多出去的一部门就作为后面的输入了!因此,789作为x的值输入了,而输出是用%f控制的,因此输出就作为浮点数来操作了。再看你的45,scanf函数它只读取一个字符!因此,就和前面的56789一样,你的45只读入了一个4,而5就作为后面的j的输入来操作了%d。到此,你的读取操作已经全部完结,后面的都舍弃了。
=================================================================================================
这里的2是一个输入控制,表示只读取2位数,因此你在输入56789的时候,程序只给你读取56,而后面的789则作为下一个数的输入了!
=================================================================================================
scanf( "%2d %f %f %c %d ",&i,&x,&y,&c,&j);
printf( "%2d %f %f %c %d ",i,x,y,c,j);
输入:
56789 0.123 45 a 72回车后得:
56 789.000000 0.123000 4 5
这可不是想要的结果啊,第一个56没错,可789.000000从哪来的呢?0.123000也没错,可45怎么被拆成4和5了?另外a和72哪去了?
=================================================================================================
789.0000是把你的789作为后面的%f输入了,因为你前面只定义了读取2位数,多出去的一部门就作为后面的输入了!因此,789作为x的值输入了,而输出是用%f控制的,因此输出就作为浮点数来操作了。再看你的45,scanf函数它只读取一个字符!因此,就和前面的56789一样,你的45只读入了一个4,而5就作为后面的j的输入来操作了%d。到此,你的读取操作已经全部完结,后面的都舍弃了。
#11
输入输出的格式控制问题
#12
zhm8818,非常感谢,我一直以为只是输入设定的位数,而剩下的则被舍弃了,没想到剩下的被当成下一个要输入的数据放进对应的变量里,而这部分知识教材里并没有提及,难怪让人摸不着头脑。
#1
你的程序必须是连续输入的
#2
各变量之间不能空格或者换行
#3
#include<stdio.h>
void main()
{
int i,j;
float x,y;
char c;
scanf( "%d%f%f%c%d ",&i,&x,&y,&c,&j);
printf( "%d%f%f%c%d ",i,x,y,c,j);
}
void main()
{
int i,j;
float x,y;
char c;
scanf( "%d%f%f%c%d ",&i,&x,&y,&c,&j);
printf( "%d%f%f%c%d ",i,x,y,c,j);
}
#4
输入输出的格式之间没有用空格隔开
scanf( "%2d %f %f %c %d ",&i,&x,&y,&c,&j);
printf( "%2d %f %f %c %d ",i,x,y,c,j
scanf( "%2d %f %f %c %d ",&i,&x,&y,&c,&j);
printf( "%2d %f %f %c %d ",i,x,y,c,j
#5
#include <stdio.h>
void main()
{
int i,j;
float x,y;
char c;
scanf( "%d %f %f %c %d",&i,&x,&y,&c,&j);
printf( "%d %f %f %c %d",i,x,y,c,j);
}
输入时要与scanf里面的格式对应,另外写程序要注意格式。
void main()
{
int i,j;
float x,y;
char c;
scanf( "%d %f %f %c %d",&i,&x,&y,&c,&j);
printf( "%d %f %f %c %d",i,x,y,c,j);
}
输入时要与scanf里面的格式对应,另外写程序要注意格式。
#6
#include "stdio.h "
main()
{
int i,j;
float x,y;
char c;
scanf("%2d %f %f %c %d",&i,&x,&y,&c,&j);
printf("%2d %f %f %c %d",i,x,y,c,j);
}
按照各位提示修改程序如上,输入:
56789 0.123 45 a 72回车后得:
56 789.000000 0.123000 4 5
这可不是想要的结果啊,第一个56没错,可789.000000从哪来的呢?0.123000也没错,可45怎么被拆成4和5了?另外a和72哪去了?
main()
{
int i,j;
float x,y;
char c;
scanf("%2d %f %f %c %d",&i,&x,&y,&c,&j);
printf("%2d %f %f %c %d",i,x,y,c,j);
}
按照各位提示修改程序如上,输入:
56789 0.123 45 a 72回车后得:
56 789.000000 0.123000 4 5
这可不是想要的结果啊,第一个56没错,可789.000000从哪来的呢?0.123000也没错,可45怎么被拆成4和5了?另外a和72哪去了?
#7
改成scanf( "%d %f %f %c %d",&i,&x,&y,&c,&j);
即为正确结果
即为正确结果
#8
输入完成了
输出也没什么错误,只是你就是让程序这样输出的
怪得谁来?
#9
发现就是这个2在作怪,如果是scanf( "%2d.............则输出就有问题,如果没有这个2,那么输出就无问题,这是怎么回事?
#10
发现就是这个2在作怪,如果是scanf( "%2d.............则输出就有问题,如果没有这个2,那么输出就无问题,这是怎么回事?
=================================================================================================
这里的2是一个输入控制,表示只读取2位数,因此你在输入56789的时候,程序只给你读取56,而后面的789则作为下一个数的输入了!
=================================================================================================
scanf( "%2d %f %f %c %d ",&i,&x,&y,&c,&j);
printf( "%2d %f %f %c %d ",i,x,y,c,j);
输入:
56789 0.123 45 a 72回车后得:
56 789.000000 0.123000 4 5
这可不是想要的结果啊,第一个56没错,可789.000000从哪来的呢?0.123000也没错,可45怎么被拆成4和5了?另外a和72哪去了?
=================================================================================================
789.0000是把你的789作为后面的%f输入了,因为你前面只定义了读取2位数,多出去的一部门就作为后面的输入了!因此,789作为x的值输入了,而输出是用%f控制的,因此输出就作为浮点数来操作了。再看你的45,scanf函数它只读取一个字符!因此,就和前面的56789一样,你的45只读入了一个4,而5就作为后面的j的输入来操作了%d。到此,你的读取操作已经全部完结,后面的都舍弃了。
=================================================================================================
这里的2是一个输入控制,表示只读取2位数,因此你在输入56789的时候,程序只给你读取56,而后面的789则作为下一个数的输入了!
=================================================================================================
scanf( "%2d %f %f %c %d ",&i,&x,&y,&c,&j);
printf( "%2d %f %f %c %d ",i,x,y,c,j);
输入:
56789 0.123 45 a 72回车后得:
56 789.000000 0.123000 4 5
这可不是想要的结果啊,第一个56没错,可789.000000从哪来的呢?0.123000也没错,可45怎么被拆成4和5了?另外a和72哪去了?
=================================================================================================
789.0000是把你的789作为后面的%f输入了,因为你前面只定义了读取2位数,多出去的一部门就作为后面的输入了!因此,789作为x的值输入了,而输出是用%f控制的,因此输出就作为浮点数来操作了。再看你的45,scanf函数它只读取一个字符!因此,就和前面的56789一样,你的45只读入了一个4,而5就作为后面的j的输入来操作了%d。到此,你的读取操作已经全部完结,后面的都舍弃了。
#11
输入输出的格式控制问题
#12
zhm8818,非常感谢,我一直以为只是输入设定的位数,而剩下的则被舍弃了,没想到剩下的被当成下一个要输入的数据放进对应的变量里,而这部分知识教材里并没有提及,难怪让人摸不着头脑。