永发信息网

scanf输如的问题

答案:5  悬赏:80  手机版
解决时间 2021-12-18 23:53
用C语言写个程序,输入三个数字,比如可能是123,也可以是带连字符1-2-3.但输出都必须是 1-2-3。不能用数组,输入只能用scanf或者getchar。小弟初学c,希望各高手不吝赐教

我自己写的如下
main(){
char a1,a2,a3,a4,a5;
char b= '-';
scanf("%c%c%c%c%c",&a1,&a2,&a3,&a4,&a5);
if (a4==10){
printf("%c%c%c%c%c",a1,b,a2,b,a3);
}
else{printf("%c%c%c%c%c",a1,a2,a3,a4,a5);}
}
如果输入123后回车总是多个空行,需要再回车才停,怎样避免这种情况
最佳答案
你调试,在if(a4==10)那儿设置个断点,会看到a4,a5均为10 (如果空那一行你再按回车).
输入123,回车会产生两个字符一个是10(换行)一个是13(回车),10保存到a4中,而13是用作scanf函数判断是否输入完成,并没有保存到a5中。现在a5还没有从输入流中得到值,所以会出现你的那种情况,让你继续输入。我给你的代码改了下:
void main()
{
char a1,a2,a3,a4,a5;
char b= '-';
scanf("%c%c%c%c",&a1,&a2,&a3,&a4);
if (a4==10){
printf("%c%c%c%c%c",a1,b,a2,b,a3);
}
else{
scanf("%c",&a5);
printf("%c%c%c%c%c",a1,a2,a3,a4,a5);}
}
全部回答
这是因为语句 scanf("%c%c%c%c%c",&a1,&a2,&a3,&a4,&a5); 需要输入的是五个字符,而你输入123回车(转义字符回车被复制给a4),此时仍有a5尚未赋值,再次回车,这时a5被赋值为回车,scanf语句结束。当然也可以在第一个回车后输入任意其他字符再回车,此时a5 将接受那个任意的字符。由于a4 接受的是回车,回车的ASCII值为10,if 判断语句为真。程序仍然会执行 printf("%c%c%c%c%c",a1,b,a2,b,a3);语句。 输入:1-2-3

# include<stdio.h>

# define n 10

main()

{int i;

float b[n];

for(i=0;i<n;i++)

{scanf("%f",&b[i]);

printf("%f ",b[i]);

if(i%5==4)

printf("\n");

}

printf("\n");

}

这是我随便写的一个程序,你参考下,下图为运行结果

//declear i to index postion 2 and 4. int i=0; while((a=getchar())!=EOF) { if(a>='0'&&a<='9'&&(i==2||i==4)) { putchar('-'); putchar(a); } else if(a>='0'&&a<='9') { putchar(a); } else if(a=='-') { putchar(a); } i++; }
#include int main() { char a1, a2, a3, c; int i = 0; while((c = getchar()) != '\n') { if(c == '-') continue; else switch(i) { case 0: a1 = c; break; case 1: a2 = c; break; case 2: a3 = c; } if(++i == 3) break; } printf("%c-%c-%c\n", a1,a2,a3); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我想发一条说说简短搞笑的!容易逗大家乐的!
ae怎么输出
单选题下列关于植物水分代谢的叙述,正确的是
华池县民政局办公地址在什么地方?我要处理点
Excel2003中,输入公式时必须先输入什么符号
单选题珠江三角洲是A.钢铁、机械为主的重工业
铁生锈,实际上是________、________和______
王者荣耀送的英雄有哪些
单选题2011年,杭州西湖申遗成功,成为我国第
已知集合A={x|x-a<0},B={x|-2<x<4}.(Ⅰ
I don’t believe you can do today’s job w
有人认为十一届三中全会是中国法制崛起的起点
气候具有相似性的地区是A.印度半岛与澳大利亚
如何运用互联网思维来创业创新
单选题歌曲《敖包相会》反映了哪一个民族的生
推荐资讯
南京大行宫地铁站有免费停车地方么
罚球球员受伤不能罚球,那怎么办?
单选题下面那一个物体是利用空气的浮力停留在
上下文衔接得最好的一项教育目的是对所有受教
龙湖区民政局在什么地方啊,我要处理点事
The teacher was satisfied the progress he
单选题______, in spite of
elsx表格怎样做到输入产品名称后自动在下一格
请问:铁路临客是不是很破,很慢?回答好的话
Little wonder up their hands in dismay.A.
云龙区出入境接待大厅地址在哪?我要去那里办
银行卡卡号忘了怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?