Ryoma 发表于 2014-4-14 16:49:36

小弟实在无法解决

#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;
}为什么无法清屏?

天使之约 发表于 2014-4-14 17:15:16

话说main函数只能有一个,下边那个貌似不合法

天使之约 发表于 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;
}

杨学子 发表于 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;
}

Ryoma 发表于 2014-4-14 21:40:28

杨学子 发表于 2014-4-14 21:36 static/image/common/back.gif
不知道lz是说全部清还是? #include
#include
int f()


把第一个输入前的内容保存其他的清空,实现程序循环使用

oggplay 发表于 2014-4-14 21:51:22

人人都说“一个shell脚本顶1万行代码”,果然没错:titter:

没心没肺的笑 发表于 2014-4-14 21:51:54

Ryoma 发表于 2014-4-14 21:40 static/image/common/back.gif
把第一个输入前的内容保存其他的清空,实现程序循环使用

试试这个整形版本~~!#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;
}

Ryoma 发表于 2014-4-15 18:04:23

oggplay 发表于 2014-4-14 21:51 static/image/common/back.gif
人人都说“一个shell脚本顶1万行代码”,果然没错

shell脚本是啥?

Ryoma 发表于 2014-4-15 18:31:01

没心没肺的笑 发表于 2014-4-14 21:51 static/image/common/back.gif
试试这个整形版本~~!

while(scanf("%c",&ch)!='\n')为什么加了这句,问题就解决了?

没心没肺的笑 发表于 2014-4-15 19:30:32

Ryoma 发表于 2014-4-15 18:31 static/image/common/back.gif
while(scanf("%c",&ch)!='\n')为什么加了这句,问题就解决了?

额~~在C语言里你输入ch的值的时候,你除了输入了ch,你还按了回车键啊~
所以要除按掉回车键产生的字符也就是'\n'

小甲鱼 发表于 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;
}

Ryoma 发表于 2014-4-15 22:56:34

小甲鱼 发表于 2014-4-15 20:19 static/image/common/back.gif
受第一次输入的回车影响导致,代码已改:

大师,我看了你好多视频,支持你呀~~

by024 发表于 2014-4-20 14:55:08

大师,我看了你好多视频,支持你呀~~
页: [1]
查看完整版本: 小弟实在无法解决