鱼C论坛

 找回密码
 立即注册
查看: 2150|回复: 12

小弟实在无法解决

[复制链接]
发表于 2014-4-14 16:49:36 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
#include<stdlib.h>

int f()
{
        int x;
        double a,b;
        printf("\n\n\n\n\n\t\t    **********欢迎使用简易运算系统**********\n");
        printf("\t\t                    1. 加 法                \n");
        printf("\t\t                    2. 减 法                \n");
        printf("\t\t                    3. 乘 法                \n");
        printf("\t\t                    4. 除 法                \n");
        printf("\t\t                    0. 退 出                \n");
        printf("\t\t    ****************************************\n");
        printf("\t\t                请输入运算代码:");
        scanf("%d",&x);
        switch (x)
        {
                case 1:
                        {
                                printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                printf("\t\t\t      %.2lf + %.2lf = %.2lf\n",a,b,a+b);
                                break;
                        }
                case 2:
                        {
                                printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                printf("\t\t\t      %.2lf - %.2lf = %.2lf\n",a,b,a-b);
                                break;
                        }
                case 3:
                        {
                                printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                printf("\t\t\t      %.2lf * %.2lf = %.2lf\n",a,b,a*b);
                                break;
                        }
                case 4:
                        {
                                printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                b==0?printf("\t\t\t      除数为零,不合法!"):printf("\t\t\t      %.2lf / %.2lf = %.2lf\n",a,b,a/b);        
                                break;
                        }
                case 0:
                        printf("\t\t                    0. 退 出                \n\n\n\n");
                        break;
                default:
                        printf("\t\t                    输入错误                \n\n\n\n"); 
        }
        printf("\n\n\t\t\t         是否继续<Y/N>");

        return 0;

}
int main()
{
        char ch;
        f();
        scanf("%c",&ch);
        switch(ch)
        {
        case 'Y':
                {
                        fflush(stdin);
                        system("cls");
                        main();
                        break;
                }
        case 'N':
                {
                        printf("程序结束,按任意键返回.");
                        break;
                }
        }
        getch();
        return 0;
}
为什么无法清屏?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-14 17:15:16 | 显示全部楼层
话说main函数只能有一个,下边那个貌似不合法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-14 17:33:43 | 显示全部楼层
还有些细节我没时间帮你处理,见谅


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
int f()
{
        int x;
        double a,b;
        char ch;
        printf("*******************欢迎*****************\n");
        printf("                    1. 加法               \n");
        printf("                    2. 减法               \n");
        printf("                    3. 乘法               \n");
        printf("                    4. 除法               \n");
        printf("                    0. 退出               \n");
        printf("****************************************\n");
        printf("                请输入操作序号:\n");
        scanf("%d",&x);
        switch (x)
        {
                case 1:
                        {
                                printf("\n\t\t\t     请输入两个数\t\t\t\t      ");
                                scanf("%lf%lf",&a,&b);
                                printf("\t\t\t      %.2lf + %.2lf = %.2lf\n",a,b,a+b);
                                
                                break;
                        }
                case 2:
                        {
                                printf("\n\t\t\t     请输入两个数\t\t\t\t      ");
                                scanf("%lf%lf",&a,&b);
                                printf("\t\t\t      %.2lf - %.2lf = %.2lf\n",a,b,a-b);
                                break;
                        }
                case 3:
                        {
                                printf("\n\t\t\t     请输入两个数\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                printf("\t\t\t      %.2lf * %.2lf = %.2lf\n",a,b,a*b);
                                break;
                        }
                case 4:
                        {
                                printf("\n\t\t\t     请输入两个数\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                b==0?printf("\t\t\t      ERROR:被除数为0!\n"):printf("\t\t\t      %.2lf / %.2lf = %.2lf\n",a,b,a/b);        
                                break;
                        }
                case 0:
                        printf("\t\t                    0. 退出               \n\n\n\n");
                        break;
                default:
                        printf("\t\t                    输入错误                \n\n\n\n");
        }
        printf("\n\n\t\t\t        是否继续<Y/N>");

        return 0;

}
int main()
{
        char ch;
    f();
               
        ch = getch();
    while(ch=='Y')
    {

        fflush(stdin);
        system("cls");
        f();
                ch = getch();
    }   
         
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-14 21:36:37 | 显示全部楼层
不知道lz是说全部清还是? #include<stdio.h>
#include<stdlib.h>
int f()
{
        int x;
        double a,b;
        printf("\n\n\n\n\n\t\t    **********欢迎使用简易运算系统**********\n");
        printf("\t\t                    1. 加 法                \n");
        printf("\t\t                    2. 减 法                \n");
        printf("\t\t                    3. 乘 法                \n");
        printf("\t\t                    4. 除 法                \n");
        printf("\t\t                    0. 退 出                \n");
        printf("\t\t    ****************************************\n");
        printf("\t\t                请输入运算代码:");
        scanf("%d",&x);
        switch (x)
        {
                case 1:
                        {
                                printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                printf("\t\t\t      %.2lf + %.2lf = %.2lf\n",a,b,a+b);
                                break;
                        }
                case 2:
                        {
                                printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                printf("\t\t\t      %.2lf - %.2lf = %.2lf\n",a,b,a-b);
                                break;
                        }
                case 3:
                        {
                                printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                printf("\t\t\t      %.2lf * %.2lf = %.2lf\n",a,b,a*b);
                                break;
                        }
                case 4:
                        {
                                printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
                                scanf("%lf,%lf",&a,&b);
                                b==0?printf("\t\t\t      除数为零,不合法!"):printf("\t\t\t      %.2lf / %.2lf = %.2lf\n",a,b,a/b);        
                                break;
                        }
                case 0:
                        printf("\t\t                    0. 退 出                \n\n\n\n");
                        break;
                default:
                        printf("\t\t                    输入错误                \n\n\n\n");
        }
        printf("\n\n\t\t\t         是否继续<Y/N>\n");

        return 0;

}
int main()
{
        int ch;
        f();
        scanf("%d",&ch);
        switch(ch)
        {
        case 1:
                {
                        fflush(stdin);
                        system("CLS");
                        main();
                        break;
                }
        case 0:
                {
                        printf("程序结束,按任意键返回.");
                                                exit(0);
                        break;
                }
        }
        getchar();
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-14 21:40:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-14 21:51:22 | 显示全部楼层
人人都说“一个shell脚本顶1万行代码”,果然没错:titter:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-14 21:51:54 | 显示全部楼层
Ryoma 发表于 2014-4-14 21:40
把第一个输入前的内容保存其他的清空,实现程序循环使用

试试这个整形版本~~!
#include<stdio.h>
#include<stdlib.h>

int d()
{
        int x;
    int a,b;
    printf("\n\n\n\n\n\t\t    **********欢迎使用简易运算系统**********\n");
    printf("\t\t                    1. 加 法                \n");
    printf("\t\t                    2. 减 法                \n");
    printf("\t\t                    3. 乘 法                \n");
    printf("\t\t                    4. 除 法                \n");
    printf("\t\t                    0. 退 出                \n");
    printf("\t\t    ****************************************\n");
    printf("\t\t                请输入运算代码:");
    scanf("%d",&x);
    switch (x)
    {
            case 1:{
            printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
            scanf("%d,%d",&a,&b);
            printf("\t\t\t      %d+ %d = %d\n",a,b,a+b);
            break;
            }
        case 2:{
            printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
            scanf("%d,%d",&a,&b);
                printf("\t\t\t      %d - %d = %d\n",a,b,a-b);
            break;
            }
        case 3: {
            printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
            scanf("%d,%d",&a,&b);
            printf("\t\t\t      %d * %d = %d\n",a,b,a*b);
            break;
            }
        case 4:{
            printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
            scanf("%d,%d",&a,&b);
            if(b==0){
            printf("\t\t\t      除数为零,不合法!");
                        }
                        else{
                        printf("\t\t\t      %d / %d = %d\n",a,b,a/b);     
                        }
            break;
            }
        case 0:{
            printf("\t\t                    0. 退 出                \n\n\n\n");
            break;
        }
        default:{
                printf("\t\t                    输入错误                \n\n\n\n"); 
                break;
            }
                
    }
    printf("\n\n\t\t\t         是否继续<Y/N>");
}
int main()
{
    char ch;
    d();
    while(scanf("%c",&ch)!='\n')
    switch(ch){
        case 'Y':
        case 'y':{/*
                fflush(stdin);*/
            system("cls");
                           d();
            break;
        }
        case 'N':
        case 'n':{
            printf("程序结束,按任意键返回.");
            getch();
            return 0;
            break;
        }
 
        
    }
    getch();
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-15 18:04:23 | 显示全部楼层
oggplay 发表于 2014-4-14 21:51
人人都说“一个shell脚本顶1万行代码”,果然没错

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

使用道具 举报

 楼主| 发表于 2014-4-15 18:31:01 | 显示全部楼层
没心没肺的笑 发表于 2014-4-14 21:51
试试这个整形版本~~!

while(scanf("%c",&ch)!='\n')  为什么加了这句,问题就解决了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-15 19:30:32 | 显示全部楼层
Ryoma 发表于 2014-4-15 18:31
while(scanf("%c",&ch)!='\n')  为什么加了这句,问题就解决了?

额~~在C语言里你输入ch的值的时候,你除了输入了ch,你还按了回车键啊~
所以要除按掉回车键产生的字符也就是'\n'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-15 20:19:54 | 显示全部楼层
受第一次输入的回车影响导致,代码已改:
int main()
{
        char ch;
        f();
                fflush(stdin);
        scanf("%c",&ch);
        switch(ch)
        {
        case 'Y':
                {
                        fflush(stdin);
                        system("cls");
                        main();
                        break;
                }
        case 'N':
                {
                        printf("程序结束,按任意键返回.");
                        break;
                }
        }
        getch();
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-15 22:56:34 | 显示全部楼层
小甲鱼 发表于 2014-4-15 20:19
受第一次输入的回车影响导致,代码已改:

大师,我看了你好多视频,支持你呀~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-20 14:55:08 | 显示全部楼层
大师,我看了你好多视频,支持你呀~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 02:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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