请教大佬们关于scanf输入的一个问题

小泽不偷懒 2020-10-13 11:01:38
如何用这个代码
scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);

使得a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=67.8

应该在键盘上如何输入
学校布置的作业,试了很久后面的z总是输不出来,求大佬帮忙,谢谢!
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2020-10-15
  • 打赏
  • 举报
回复
引用 5 楼 Justkillhers. 的回复:
[quote=引用 2 楼 赵4老师 的回复:]
#include <stdio.h>
int main() {
    char *s="00010 00020Aa 1.5 -3.75 0,67.8";
    int a,b;
    char c1,c2;
    float x,y,z;
    sscanf(s,"%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
    printf("a=%d\n",a);
    printf("b=%d\n",b);
    printf("c1='%c'\n",c1);
    printf("c2='%c'\n",c2);
    printf("x=%g\n",x);
    printf("y=%g\n",y);
    printf("z=%g\n",z);
    return 0;
}
//a=10
//b=20
//c1='A'
//c2='a'
//x=1.5
//y=-3.75
//z=67.8

解决了,十分感谢!但为什么我输出的时候会输出67.800003,就是末尾会出现一个3?[/quote] printf("z=%g\n",z); 改为 printf("z=%4.1f\n",z); 浮点数格式 http://bbs.csdn.net/topics/390676437
lin5161678 2020-10-15
  • 打赏
  • 举报
回复
引用 1 楼 qybao的回复:
试试输入 00010 00020Aa 1.5 -3.75, 67.5
10前面的000没有必要 空格分割 printf还是能认出来的 因为%c要输入A 所以 20前面的000也是没必要 %d不会处理A
棉猴 2020-10-14
  • 打赏
  • 举报
回复
scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
代码中的5表示输入的宽度,请参考《C++中printf()函数的用法10-8》,希望能够帮到您!
赵4老师 2020-10-14
  • 打赏
  • 举报
回复
#include <stdio.h>
int main() {
    char *s="00010 00020Aa 1.5 -3.75 0,67.8";
    int a,b;
    char c1,c2;
    float x,y,z;
    sscanf(s,"%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
    printf("a=%d\n",a);
    printf("b=%d\n",b);
    printf("c1='%c'\n",c1);
    printf("c2='%c'\n",c2);
    printf("x=%g\n",x);
    printf("y=%g\n",y);
    printf("z=%g\n",z);
    return 0;
}
//a=10
//b=20
//c1='A'
//c2='a'
//x=1.5
//y=-3.75
//z=67.8

小泽不偷懒 2020-10-14
  • 打赏
  • 举报
回复
引用 2 楼 赵4老师 的回复:
#include <stdio.h>
int main() {
    char *s="00010 00020Aa 1.5 -3.75 0,67.8";
    int a,b;
    char c1,c2;
    float x,y,z;
    sscanf(s,"%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
    printf("a=%d\n",a);
    printf("b=%d\n",b);
    printf("c1='%c'\n",c1);
    printf("c2='%c'\n",c2);
    printf("x=%g\n",x);
    printf("y=%g\n",y);
    printf("z=%g\n",z);
    return 0;
}
//a=10
//b=20
//c1='A'
//c2='a'
//x=1.5
//y=-3.75
//z=67.8

解决了,十分感谢!但为什么我输出的时候会输出67.800003,就是末尾会出现一个3?
自信男孩 2020-10-14
  • 打赏
  • 举报
回复
scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);

格式应该和""里面的一致,没有,逗号的数据间隔用空格(或\t, \n),有逗号的要保持有逗号~
qybao 2020-10-13
  • 打赏
  • 举报
回复
试试输入 00010 00020Aa 1.5 -3.75, 67.5

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧