问题求助ing
#include<stdio.h>int main()
{
int a,b,c,d;
char ch;
printf("enter two ingeters,");
printf("q to stop.");
while((ch=getchar())!='q'){
if(scanf("%d %d",&a,&b)!=2)
{
while((ch=getchar())!='\n');
printf(" please enter two ingeters,such as 1,2\n");
}
if (scanf("%d %d",&a,&b)==2)
{
c=a/b ;
d=a%b;
printf("二者的商为%d,余数为%d\n",c,d);
printf("enter another two ingeters,");
printf("q to stop."); }
}
printf("Bye!");
}
代码如上,我的目标是实现当用户输入q时结束,当没有输入两个整数时删除错误的输入,提示用户修改,当输入正确后计算,可循环,出现的问题在上面,请各位帮忙
我想说 我和你的风格不同 我无法以你的风格改你的代码
有很多习惯 我都和你不同所以我看你的代码很累 你看我的 估计也很累 所以 你要不要我的代码?? 牡丹花下死做鬼 发表于 2013-9-20 18:35 static/image/common/back.gif
我想说 我和你的风格不同 我无法以你的风格改你的代码
有很多习惯 我都和你不同所以我看你的代码很累 你看 ...
看下你的代码吧 诸葛暗 发表于 2013-9-20 18:37 static/image/common/back.gif
看下你的代码吧
sorry 刚刚不在 O(∩_∩)O#include<stdio.h>
int main()
{
int n1,n2,ys,s;
char ch;
s: setbuf(stdin,NULL);
n1 = -1;
n2 = -1;
printf("请输入被除数:");
scanf("%d",&n1);
printf("请输入除数:");
scanf("%d",&n2);
ch = getchar();
if(ch == 'q')
{
return 0;
}
else
{
ungetc(ch,stdin);
}
if(n1 > 0 && n1 < 65535 && n2 > 0 && n2 < 65535)
{
ys = n1 % n2;
s = n1 / n2;
printf("%d ÷ %d = %d ...... %d\n",n1, n2, s, ys);
goto s;
}
else
{
printf("您的输入有误请重新输入!\n");
goto s;
}
} 看看 加学习
本帖最后由 chenbb7 于 2013-9-25 14:51 编辑
牡丹花下死做鬼 发表于 2013-9-20 20:12 static/image/common/back.gif
sorry 刚刚不在 O(∩_∩)O
我也研究了下,很费脑筋#include <stdio.h>
int a,b,c,d;
char ch;
void input()//输入函数
{
scanf("%d %d",&a, &b);
while (a < b)
{
printf(" please enter two ingeters,such as 1 > 2\n");
setbuf(stdin, NULL);//清空标注输入流的缓冲区
scanf("%d %d",&a, &b);
};
}
void count()//运算函数
{
c=a/b;
d=a%b;
printf("二者的商为%d,余数为%d\n",c,d);
}
void main()
{
do
{
printf("enter two ingeters (Please enter the end of e) :\n");
input();
if((ch= getchar()) != 'e')
{
count();
}
else
{
break;
}
}while(1);
system("pause");
} chenbb7 发表于 2013-9-21 21:22 static/image/common/back.gif
我也研究了下,很费脑筋
你的代码不正确,我写了一个
#include<stdio.h>
int main()
{
int a,b;
int status;
printf("Enter two ingeters:");
status=scanf("%d%d",&a,&b);
if(status!=2)
{
int ch;
while((ch=getchar())!='\n')
{
if(ch=='q')
printf("Bye.");
return 0;
}
else{
putchar(ch);
printf("wrong.Please enter two ingeters,such as 1,2\n");
scanf("%d%d",&a,&b);
}
if(status==2)
{
int c,d;
c=a/b;
d=a%b;
printf("二者的商为%d,余数为%d.\n",c,d);
printf("Enter next values:");
scanf("%d%d",&a,&b);
}
return 0;
}
} chenbb7 发表于 2013-9-21 21:22 static/image/common/back.gif
我也研究了下,很费脑筋
刚才代码出现了小错误,更正一下
#include<stdio.h>
int main()
{
int a,b;
int status;
printf("Enter two ingeters:");
status=scanf("%d%d",&a,&b);
if(status!=2)
{
int ch;
while((ch=getchar())!='\n')
{
if(ch=='q')
{
printf("Bye.");
return 0;
}
else{
putchar(ch);
printf("wrong.Please enter two ingeters,such as 1,2\n");
scanf("%d%d",&a,&b);
}
}
}
if(status==2)
{
int c,d;
c=a/b;
d=a%b;
printf("二者的商为%d,余数为%d.\n",c,d);
printf("Enter next values:");
scanf("%d%d",&a,&b);
}
return 0;
}
诸葛暗 发表于 2013-9-23 19:10 static/image/common/back.gif
刚才代码出现了小错误,更正一下
#include
int main()
输入什么status!=2 ????? chenbb7 发表于 2013-9-24 15:09 static/image/common/back.gif
输入什么status!=2 ?????
你的意思我没有理解,你想问什么?? 诸葛暗 发表于 2013-9-25 13:35 static/image/common/back.gif
你的意思我没有理解,你想问什么??
我的意思是什么情况是 status ==2, 什么情况又是 status!=2。我所说的是逻辑上的问题 chenbb7 发表于 2013-9-25 14:50 static/image/common/back.gif
我的意思是什么情况是 status ==2, 什么情况又是 status!=2。我所说的是逻辑上的问题
当输入两个整数后,status就是2,其他情况下都是不为2的呀 诸葛暗 发表于 2013-9-28 19:41 static/image/common/back.gif
当输入两个整数后,status就是2,其他情况下都是不为2的呀
你输入其他的,能运行??? chenbb7 发表于 2013-9-29 09:56 static/image/common/back.gif
你输入其他的,能运行???
可以,你自己运行下程序试试就知道了呗 scanf("%d%d",&a,&b)你这个输入字母或者字符真能运行??? 本帖最后由 chenbb7 于 2013-9-30 18:50 编辑
诸葛暗 发表于 2013-9-30 09:31 static/image/common/back.gif
可以,你自己运行下程序试试就知道了呗
不好意思理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了
chenbb7 发表于 2013-9-30 18:48 static/image/common/back.gif
不好意思理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了
确实是这么个回事,当输入第二次数据后就退出了!! 本帖最后由 诸葛暗 于 2013-10-2 11:08 编辑
chenbb7 发表于 2013-9-30 18:48 static/image/common/back.gif
不好意思理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了
我忍不住加了个goto,改成这样,可又出现了一个问题,见图
#include<stdio.h>
int main()
{
int a,b;
int status;
printf("Enter two ingeters:");
status=scanf("%d%d",&a,&b);
if(status!=2)
{
int ch;
while((ch=getchar())!='\n')
{
if(ch=='q')
{
printf("Bye.");
return 0;
}
else{
putchar(ch);
printf("wrong.Please enter two ingeters,such as 1,2\n");
status=scanf("%d%d",&a,&b);
goto a;
a:if(status!=2);
}
}
}
if(status==2)
{
int c,d;
c=a/b;
d=a%b;
printf("二者的商为%d,余数为%d.\n",c,d);
printf("Enter next values:");
status=scanf("%d%d",&a,&b);
goto a;
}
return 0;
}
chenbb7 发表于 2013-9-30 18:48 static/image/common/back.gif
不好意思理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了
上一个代码标签位置加错了:lol:,你看下这个
#include<stdio.h>
int main()
{
int a,b;
int status;
printf("Enter two ingeters:");
status=scanf("%d%d",&a,&b);
a:if(status!=2)
{
int ch;
while((ch=getchar())!='\n')
{
if(ch=='q')
{
printf("Bye.");
return 0;
}
else{
putchar(ch);
printf("wrong.Please enter two ingeters,such as 1,2\n");
status=scanf("%d%d",&a,&b);
goto a;
}
}
}
if(status==2)
{
int c,d;
c=a/b;
d=a%b;
printf("二者的商为%d,余数为%d.\n",c,d);
printf("Enter next values:");
status=scanf("%d%d",&a,&b);
goto a;
}
return 0;
}
诸葛暗 发表于 2013-10-2 11:15 static/image/common/back.gif
上一个代码标签位置加错了,你看下这个
#include
int main()
你没有判断 输入前后的大小,你这个代码就有缺陷,不信多试试,看结果是不是你所认为的一样
页:
[1]
2