鱼C论坛

 找回密码
 立即注册
查看: 8632|回复: 22

问题求助ing

[复制链接]
发表于 2013-9-20 18:05:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
3.jpg 2.jpg 1.jpg #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时结束,当没有输入两个整数时删除错误的输入,提示用户修改,当输入正确后计算,可循环,出现的问题在上面,请各位帮忙
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-9-20 18:35:06 | 显示全部楼层
我想说 我和你的风格不同 我无法以你的风格改你的代码
有很多习惯 我都和你不同所以我看你的代码很累 你看我的 估计也很累 所以 你要不要我的代码??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-20 18:37:55 | 显示全部楼层

看下你的代码吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-20 20:12:47 | 显示全部楼层
诸葛暗 发表于 2013-9-20 18:37
看下你的代码吧

sorry 刚刚不在 O(∩_∩)O
  1. #include<stdio.h>

  2. int main()
  3. {
  4.     int n1,n2,ys,s;
  5.     char ch;
  6. s: setbuf(stdin,NULL);
  7.     n1 = -1;
  8.     n2 = -1;
  9.     printf("请输入被除数:");
  10.     scanf("%d",&n1);
  11.     printf("请输入除数:");
  12.     scanf("%d",&n2);
  13.     ch = getchar();
  14.     if(ch == 'q')
  15.     {
  16.         return 0;
  17.     }
  18.     else
  19.     {
  20.         ungetc(ch,stdin);
  21.     }
  22.     if(n1 > 0 && n1 < 65535 && n2 > 0 && n2 < 65535)
  23.     {
  24.         ys = n1 % n2;
  25.         s = n1 / n2;
  26.         printf("%d ÷ %d = %d ...... %d\n",n1, n2, s, ys);
  27.         goto s;
  28.     }
  29.     else
  30.     {
  31.         printf("您的输入有误请重新输入!\n");
  32.         goto s;
  33.     }

  34. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-20 22:13:16 | 显示全部楼层
看看 加学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-21 21:22:08 | 显示全部楼层
本帖最后由 chenbb7 于 2013-9-25 14:51 编辑
牡丹花下死做鬼 发表于 2013-9-20 20:12
sorry 刚刚不在 O(∩_∩)O

我也研究了下,很费脑筋
  1. #include <stdio.h>

  2. int a,b,c,d;
  3. char ch;

  4. void input()//输入函数
  5. {
  6.         scanf("%d %d",&a, &b);
  7.         while (a < b)
  8.         {
  9.                
  10.                 printf(" please enter two ingeters,such as 1 > 2\n");
  11.                 setbuf(stdin, NULL);//清空标注输入流的缓冲区
  12.                 scanf("%d %d",&a, &b);
  13.                
  14.         };
  15. }

  16. void count()//运算函数
  17. {
  18.         c=a/b;
  19.         d=a%b;
  20.         printf("二者的商为%d,余数为%d\n",c,d);
  21. }

  22. void main()
  23. {
  24.         do
  25.         {
  26.                 printf("enter two ingeters (Please enter the end of e) :\n");
  27.                
  28.                         input();               
  29.                 if((ch= getchar()) != 'e')
  30.                 {
  31.                         count();               
  32.                 }
  33.                 else
  34.                 {
  35.                         break;
  36.                 }

  37.         }while(1);
  38.         
  39.         system("pause");        
  40.         
  41. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-23 19:03:21 | 显示全部楼层
chenbb7 发表于 2013-9-21 21:22
我也研究了下,很费脑筋

你的代码不正确,我写了一个
#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;
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-23 19:10:43 | 显示全部楼层
chenbb7 发表于 2013-9-21 21:22
我也研究了下,很费脑筋

刚才代码出现了小错误,更正一下
#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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-24 15:09:55 | 显示全部楼层
诸葛暗 发表于 2013-9-23 19:10
刚才代码出现了小错误,更正一下
#include
int main()

输入什么  status!=2    ?????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-25 13:35:04 | 显示全部楼层
chenbb7 发表于 2013-9-24 15:09
输入什么  status!=2    ?????

你的意思我没有理解,你想问什么??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-25 14:50:55 | 显示全部楼层
诸葛暗 发表于 2013-9-25 13:35
你的意思我没有理解,你想问什么??

我的意思是什么情况是 status ==2, 什么情况又是 status  !=  2。我所说的是逻辑上的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-28 19:41:53 | 显示全部楼层
chenbb7 发表于 2013-9-25 14:50
我的意思是什么情况是 status ==2, 什么情况又是 status  !=  2。我所说的是逻辑上的问题

当输入两个整数后,status就是2,其他情况下都是不为2的呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-29 09:56:49 | 显示全部楼层
诸葛暗 发表于 2013-9-28 19:41
当输入两个整数后,status就是2,其他情况下都是不为2的呀

你输入其他的,能运行???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-30 09:31:48 | 显示全部楼层
chenbb7 发表于 2013-9-29 09:56
你输入其他的,能运行???

可以,你自己运行下程序试试就知道了呗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-30 18:44:05 | 显示全部楼层
scanf("%d%d",&a,&b)  你这个输入字母或者字符真能运行???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-30 18:48:42 | 显示全部楼层
本帖最后由 chenbb7 于 2013-9-30 18:50 编辑
诸葛暗 发表于 2013-9-30 09:31
可以,你自己运行下程序试试就知道了呗

不好意思  理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-2 10:38:13 | 显示全部楼层
chenbb7 发表于 2013-9-30 18:48
不好意思  理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了

确实是这么个回事,当输入第二次数据后就退出了!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-2 10:49:58 | 显示全部楼层
本帖最后由 诸葛暗 于 2013-10-2 11:08 编辑
chenbb7 发表于 2013-9-30 18:48
不好意思  理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了

我忍不住加了个goto,改成这样,可又出现了一个问题,见图 2.jpg
#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;
}


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-2 11:15:46 | 显示全部楼层
chenbb7 发表于 2013-9-30 18:48
不好意思  理解失误,是能运行按照你给我的代码,输入 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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-5 12:56:54 | 显示全部楼层
诸葛暗 发表于 2013-10-2 11:15
上一个代码标签位置加错了,你看下这个
#include
int main()

你没有判断 输入前后的大小,你这个代码就有缺陷,不信多试试,看结果是不是你所认为的一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-10 20:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表