鱼C论坛

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

小弟实在无法解决

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

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

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

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

  3. int f()
  4. {
  5.         int x;
  6.         double a,b;
  7.         printf("\n\n\n\n\n\t\t    **********欢迎使用简易运算系统**********\n");
  8.         printf("\t\t                    1. 加 法                \n");
  9.         printf("\t\t                    2. 减 法                \n");
  10.         printf("\t\t                    3. 乘 法                \n");
  11.         printf("\t\t                    4. 除 法                \n");
  12.         printf("\t\t                    0. 退 出                \n");
  13.         printf("\t\t    ****************************************\n");
  14.         printf("\t\t                请输入运算代码:");
  15.         scanf("%d",&x);
  16.         switch (x)
  17.         {
  18.                 case 1:
  19.                         {
  20.                                 printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
  21.                                 scanf("%lf,%lf",&a,&b);
  22.                                 printf("\t\t\t      %.2lf + %.2lf = %.2lf\n",a,b,a+b);
  23.                                 break;
  24.                         }
  25.                 case 2:
  26.                         {
  27.                                 printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
  28.                                 scanf("%lf,%lf",&a,&b);
  29.                                 printf("\t\t\t      %.2lf - %.2lf = %.2lf\n",a,b,a-b);
  30.                                 break;
  31.                         }
  32.                 case 3:
  33.                         {
  34.                                 printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
  35.                                 scanf("%lf,%lf",&a,&b);
  36.                                 printf("\t\t\t      %.2lf * %.2lf = %.2lf\n",a,b,a*b);
  37.                                 break;
  38.                         }
  39.                 case 4:
  40.                         {
  41.                                 printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
  42.                                 scanf("%lf,%lf",&a,&b);
  43.                                 b==0?printf("\t\t\t      除数为零,不合法!"):printf("\t\t\t      %.2lf / %.2lf = %.2lf\n",a,b,a/b);       
  44.                                 break;
  45.                         }
  46.                 case 0:
  47.                         printf("\t\t                    0. 退 出                \n\n\n\n");
  48.                         break;
  49.                 default:
  50.                         printf("\t\t                    输入错误                \n\n\n\n");
  51.         }
  52.         printf("\n\n\t\t\t         是否继续<Y/N>");

  53.         return 0;

  54. }
  55. int main()
  56. {
  57.         char ch;
  58.         f();
  59.         scanf("%c",&ch);
  60.         switch(ch)
  61.         {
  62.         case 'Y':
  63.                 {
  64.                         fflush(stdin);
  65.                         system("cls");
  66.                         main();
  67.                         break;
  68.                 }
  69.         case 'N':
  70.                 {
  71.                         printf("程序结束,按任意键返回.");
  72.                         break;
  73.                 }
  74.         }
  75.         getch();
  76.         return 0;
  77. }
复制代码
为什么无法清屏?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-4-14 17:15:16 | 显示全部楼层
话说main函数只能有一个,下边那个貌似不合法
小甲鱼最新课程 -> https://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;
}
小甲鱼最新课程 -> https://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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-14 21:40:28 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-14 21:51:22 | 显示全部楼层
人人都说“一个shell脚本顶1万行代码”,果然没错:titter:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  3. int d()
  4. {
  5.         int x;
  6.     int a,b;
  7.     printf("\n\n\n\n\n\t\t    **********欢迎使用简易运算系统**********\n");
  8.     printf("\t\t                    1. 加 法                \n");
  9.     printf("\t\t                    2. 减 法                \n");
  10.     printf("\t\t                    3. 乘 法                \n");
  11.     printf("\t\t                    4. 除 法                \n");
  12.     printf("\t\t                    0. 退 出                \n");
  13.     printf("\t\t    ****************************************\n");
  14.     printf("\t\t                请输入运算代码:");
  15.     scanf("%d",&x);
  16.     switch (x)
  17.     {
  18.             case 1:{
  19.             printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
  20.             scanf("%d,%d",&a,&b);
  21.             printf("\t\t\t      %d+ %d = %d\n",a,b,a+b);
  22.             break;
  23.             }
  24.         case 2:{
  25.             printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
  26.             scanf("%d,%d",&a,&b);
  27.                 printf("\t\t\t      %d - %d = %d\n",a,b,a-b);
  28.             break;
  29.             }
  30.         case 3: {
  31.             printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
  32.             scanf("%d,%d",&a,&b);
  33.             printf("\t\t\t      %d * %d = %d\n",a,b,a*b);
  34.             break;
  35.             }
  36.         case 4:{
  37.             printf("\n\t\t\t     请输入两个数,逗号隔开。\n\t\t\t\t      ");
  38.             scanf("%d,%d",&a,&b);
  39.             if(b==0){
  40.             printf("\t\t\t      除数为零,不合法!");
  41.                         }
  42.                         else{
  43.                         printf("\t\t\t      %d / %d = %d\n",a,b,a/b);     
  44.                         }
  45.             break;
  46.             }
  47.         case 0:{
  48.             printf("\t\t                    0. 退 出                \n\n\n\n");
  49.             break;
  50.         }
  51.         default:{
  52.                 printf("\t\t                    输入错误                \n\n\n\n");
  53.                 break;
  54.             }
  55.                
  56.     }
  57.     printf("\n\n\t\t\t         是否继续<Y/N>");
  58. }
  59. int main()
  60. {
  61.     char ch;
  62.     d();
  63.     while(scanf("%c",&ch)!='\n')
  64.     switch(ch){
  65.         case 'Y':
  66.         case 'y':{/*
  67.                 fflush(stdin);*/
  68.             system("cls");
  69.                            d();
  70.             break;
  71.         }
  72.         case 'N':
  73.         case 'n':{
  74.             printf("程序结束,按任意键返回.");
  75.             getch();
  76.             return 0;
  77.             break;
  78.         }

  79.         
  80.     }
  81.     getch();
  82.     return 0;
  83. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

shell脚本是啥?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

while(scanf("%c",&ch)!='\n')  为什么加了这句,问题就解决了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

额~~在C语言里你输入ch的值的时候,你除了输入了ch,你还按了回车键啊~
所以要除按掉回车键产生的字符也就是'\n'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-15 20:19:54 | 显示全部楼层
受第一次输入的回车影响导致,代码已改:
  1. int main()
  2. {
  3.         char ch;
  4.         f();
  5.                 fflush(stdin);
  6.         scanf("%c",&ch);
  7.         switch(ch)
  8.         {
  9.         case 'Y':
  10.                 {
  11.                         fflush(stdin);
  12.                         system("cls");
  13.                         main();
  14.                         break;
  15.                 }
  16.         case 'N':
  17.                 {
  18.                         printf("程序结束,按任意键返回.");
  19.                         break;
  20.                 }
  21.         }
  22.         getch();
  23.         return 0;
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

大师,我看了你好多视频,支持你呀~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-20 14:55:08 | 显示全部楼层
大师,我看了你好多视频,支持你呀~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-20 01:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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