输入输出小问题

时间:2021-07-08 19:31:48
#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);
}
问题都在图里,不仅输入不能完成,输出也不符合要求。

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); 
  }

#4


输入输出的格式之间没有用空格隔开
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里面的格式对应,另外写程序要注意格式。

#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哪去了?

#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。到此,你的读取操作已经全部完结,后面的都舍弃了。

#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); 
  }

#4


输入输出的格式之间没有用空格隔开
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里面的格式对应,另外写程序要注意格式。

#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哪去了?

#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。到此,你的读取操作已经全部完结,后面的都舍弃了。

#11


输入输出的格式控制问题 

#12


zhm8818,非常感谢,我一直以为只是输入设定的位数,而剩下的则被舍弃了,没想到剩下的被当成下一个要输入的数据放进对应的变量里,而这部分知识教材里并没有提及,难怪让人摸不着头脑。