鱼C论坛

 找回密码
 立即注册
查看: 7338|回复: 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时结束,当没有输入两个整数时删除错误的输入,提示用户修改,当输入正确后计算,可循环,出现的问题在上面,请各位帮忙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

看下你的代码吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-20 22:13:16 | 显示全部楼层
看看 加学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-21 21:22:08 | 显示全部楼层
本帖最后由 chenbb7 于 2013-9-25 14:51 编辑
牡丹花下死做鬼 发表于 2013-9-20 20:12
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");        
        
}
想知道小甲鱼最近在做啥?请访问 -> 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;
        }
}
想知道小甲鱼最近在做啥?请访问 -> 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

输入什么  status!=2    ?????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你的意思我没有理解,你想问什么??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我的意思是什么情况是 status ==2, 什么情况又是 status  !=  2。我所说的是逻辑上的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

当输入两个整数后,status就是2,其他情况下都是不为2的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你输入其他的,能运行???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可以,你自己运行下程序试试就知道了呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-30 18:44:05 | 显示全部楼层
scanf("%d%d",&a,&b)  你这个输入字母或者字符真能运行???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不好意思  理解失误,是能运行按照你给我的代码,输入 6 ,5能运行,输入 5, 6 就退出了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

确实是这么个回事,当输入第二次数据后就退出了!!
想知道小甲鱼最近在做啥?请访问 -> 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;
}


想知道小甲鱼最近在做啥?请访问 -> 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你没有判断 输入前后的大小,你这个代码就有缺陷,不信多试试,看结果是不是你所认为的一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-22 09:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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