诸葛暗 发表于 2013-9-20 18:05:54

问题求助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:06

我想说 我和你的风格不同 我无法以你的风格改你的代码
有很多习惯 我都和你不同所以我看你的代码很累 你看我的 估计也很累 所以 你要不要我的代码??

诸葛暗 发表于 2013-9-20 18:37:55

牡丹花下死做鬼 发表于 2013-9-20 18:35 static/image/common/back.gif
我想说 我和你的风格不同 我无法以你的风格改你的代码
有很多习惯 我都和你不同所以我看你的代码很累 你看 ...

看下你的代码吧

牡丹花下死做鬼 发表于 2013-9-20 20:12:47

诸葛暗 发表于 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;
    }

}

[YES]ぐ單﹎調゛ 发表于 2013-9-20 22:13:16

看看 加学习

chenbb7 发表于 2013-9-21 21:22:08

本帖最后由 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");      
      
}

诸葛暗 发表于 2013-9-23 19:03:21

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:43

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-24 15:09:55

诸葛暗 发表于 2013-9-23 19:10 static/image/common/back.gif
刚才代码出现了小错误,更正一下
#include
int main()


输入什么status!=2    ?????

诸葛暗 发表于 2013-9-25 13:35:04

chenbb7 发表于 2013-9-24 15:09 static/image/common/back.gif
输入什么status!=2    ?????

你的意思我没有理解,你想问什么??

chenbb7 发表于 2013-9-25 14:50:55

诸葛暗 发表于 2013-9-25 13:35 static/image/common/back.gif
你的意思我没有理解,你想问什么??

我的意思是什么情况是 status ==2, 什么情况又是 status!=2。我所说的是逻辑上的问题

诸葛暗 发表于 2013-9-28 19:41:53

chenbb7 发表于 2013-9-25 14:50 static/image/common/back.gif
我的意思是什么情况是 status ==2, 什么情况又是 status!=2。我所说的是逻辑上的问题

当输入两个整数后,status就是2,其他情况下都是不为2的呀

chenbb7 发表于 2013-9-29 09:56:49

诸葛暗 发表于 2013-9-28 19:41 static/image/common/back.gif
当输入两个整数后,status就是2,其他情况下都是不为2的呀

你输入其他的,能运行???

诸葛暗 发表于 2013-9-30 09:31:48

chenbb7 发表于 2013-9-29 09:56 static/image/common/back.gif
你输入其他的,能运行???

可以,你自己运行下程序试试就知道了呗

chenbb7 发表于 2013-9-30 18:44:05

scanf("%d%d",&a,&b)你这个输入字母或者字符真能运行???

chenbb7 发表于 2013-9-30 18:48:42

本帖最后由 chenbb7 于 2013-9-30 18:50 编辑

诸葛暗 发表于 2013-9-30 09:31 static/image/common/back.gif
可以,你自己运行下程序试试就知道了呗
不好意思理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了

诸葛暗 发表于 2013-10-2 10:38:13

chenbb7 发表于 2013-9-30 18:48 static/image/common/back.gif
不好意思理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了

确实是这么个回事,当输入第二次数据后就退出了!!

诸葛暗 发表于 2013-10-2 10:49:58

本帖最后由 诸葛暗 于 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;
}


诸葛暗 发表于 2013-10-2 11:15:46

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

chenbb7 发表于 2013-10-5 12:56:54

诸葛暗 发表于 2013-10-2 11:15 static/image/common/back.gif
上一个代码标签位置加错了,你看下这个
#include
int main()


你没有判断 输入前后的大小,你这个代码就有缺陷,不信多试试,看结果是不是你所认为的一样
页: [1] 2
查看完整版本: 问题求助ing