| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1443 人关注过本帖
标题:关于多个函数定义
只看楼主 加入收藏
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 10楼 林月儿
改了那,没看出来
2015-06-05 23:18
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 11楼 hjx1120
case 'c':
                divide();

改成case 'c':
                multiply();

while(!divide2){
        printf("被除数不能为0请重新输入:");
        scanf("%lf",&divide2);
    }
解决BUG_2
额,你就不能认为我是复制你的吗?其实不想发的,还有电影没看完呢。

剑栈风樯各苦辛,别时冰雪到时春
2015-06-05 23:23
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 12楼 林月儿
其实我想知道BUG_1是怎么回事~! 最新的电影《赤道》还不错
2015-06-05 23:31
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
好吧bug1就把get_first函数里的ch和主函数里的ch数据类型改为char就好啦…但是,好像改不改也没啥

剑栈风樯各苦辛,别时冰雪到时春
2015-06-05 23:52
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 14楼 林月儿
最后一个版本
BUG_1:get_first();函数去‘\n’while loop 与 ch=getchar();
应该上下一样,都要 while loop
BUG_2:引用版主大人林月儿的解决方案
程序代码:
#include<stdio.h>
#include<ctype.h>
char get_choice(void);
char get_first(void);
int get_int(void);
void pluse(void);
void minus(void);
void multiply(void);
void divide(void);

int main(void)
{
    int choice;
   

    while((choice=get_choice()) != 'q' )
    {
        switch(choice)
        {
            case 'a':
                pluse();
                break;
            case 'b':
                minus();
                break;
            case 'c':
                divide();
                break;
            case 'd':
                divide();
        }
    }
}

char get_choice(void)
{
    char ch;
    printf("*****************************\n");
    printf("a. 加法        b. 减法\n");
    printf("c. 乘法        d. 除法\n");
    printf("q. 退出\n");
    printf("*****************************\n");
    ch=get_first();
    while((ch<'a' || ch>'d')&& ch != 'q')
    {
        printf("请输入a,b,c,d or q\n");
        ch=get_first();
    }
   

    return ch;
}

char get_first(void)
{
    char ch;
   

    while(isspace(ch=getchar()));
    while(getchar() != '\n');
   

    return ch;
}

void pluse(void)
{
    double plusen;
    double pluse1;
    double pluse2;
   

    printf("请输入第一个数:\n");
    scanf("%lf",&pluse1);
    printf("请输入第二个数:\n");
    scanf("%lf",&pluse2);
    plusen=pluse1+pluse2;
    printf("\n%g+%g=%g\n",pluse1,pluse2,plusen);
   

    system("pause");
    system("CLS");
}

void minus(void)
{
    double minusn;
    double minus1;
    double minus2;
   

    printf("请输入第一个数:\n");
    scanf("%lf",&minus1);
    printf("请输入第二个数:\n");
    scanf("%lf",&minus2);
    minusn=minus1-minus2;
    printf("\n%g-%g=%g\n",minus1,minus2,minusn);
   

    system("pause");
    system("CLS");
}

void multiply(void)
{
    double multiplyn;
    double multiply1;
    double multiply2;
   

    printf("请输入第一个数:\n");
    scanf("%lf",&multiply1);
    printf("请输入第二个数:\n");
    scanf("%lf",&multiply2);
    multiplyn=multiply1*multiply2;
    printf("\n%g*%g=%g\n",multiply1,multiply2,multiplyn);
   

    system("pause");
    system("CLS");
}

void divide(void)
{
    double dividen;
    double divide1;
    double divide2;
   

    printf("请输入第一个数:\n");
    scanf("%lf",&divide1);
    printf("请输入第二个数:\n");
    scanf("%lf",&divide2);
    while(!divide2)
    {
        printf("被除数不能为0请重新输入:\n");
        scanf("%lf",&divide2);
    }
    dividen=divide1/divide2;
    printf("\n%g/%g=%g",divide1,divide2,dividen);
   

    system("pause");
    system("CLS");
}

2015-06-06 01:58
学学霸
Rank: 2
等 级:论坛游民
帖 子:41
专家分:24
注 册:2015-5-16
收藏
得分:0 
谢谢大家
2015-06-06 07:40
学学霸
Rank: 2
等 级:论坛游民
帖 子:41
专家分:24
注 册:2015-5-16
收藏
得分:0 
但是while(!divide2)
    {

不懂,
2015-06-06 07:44
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 15楼 hjx1120
1.我才当斑竹你不要这样
2.你喜欢的Allmans优点是很明显,代码布局清晰,可读性
但当代码量加大优点变成缺点,该编程风格导致代码左半部分左右大括号聚集
这时改用Kernighan风格再合适不过了。
3.程序的正确性是最低要求,算法可以不完美(那是code art),
但是目的都实现不了,就违背了初衷,是为解决问题而编程的,不是为了编程而编程
程序代码:
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h> 
char get_choice(void);
char get_first(void);
int get_int(void);
void pluse(void);
void minus(void);
void multiply(void);
void divide(void);

int main(void){
    int choice;
    while((choice=get_choice()) != 'q' ){
        switch(choice){
            case 'a':
                pluse();
                break;
            case 'b':
                minus();
                break;
            case 'c':
                multiply();              //依旧不改 
                break;
            case 'd':
                divide();
        }
    }
}

char get_choice(void)
{
    char ch;
    printf("*****************************\n");
    printf("a. 加法        b. 减法\n");
    printf("c. 乘法        d. 除法\n");
    printf("q. 退出\n");
    printf("*****************************\n");
    ch=get_first();
    while((ch<'a' || ch>'d')&& ch != 'q'){
        printf("请输入a,b,c,d or q\n");
        ch=get_first();
    }
   

    return ch;
}

char get_first(void){
    char ch;

    while(isspace(ch=getchar()));
    while(getchar() != '\n');
    
    return ch;
}

void pluse(void){
    double plusen;
    double pluse1;
    double pluse2;

    printf("请输入第一个数:\n");
    scanf("%lf",&pluse1);
    printf("请输入第二个数:\n");
    scanf("%lf",&pluse2);
    plusen=pluse1+pluse2;
    printf("\n%g+%g=%g\n",pluse1,pluse2,plusen);
       
    system("pause");
    system("CLS");
}

void minus(void){
    double minusn;
    double minus1;
    double minus2;
   
    printf("请输入第一个数:\n");
    scanf("%lf",&minus1);
    printf("请输入第二个数:\n");
    scanf("%lf",&minus2);
    minusn=minus1-minus2;
    printf("\n%g-%g=%g\n",minus1,minus2,minusn); 

    system("pause");
    system("CLS");
}

void multiply(void){
    double multiplyn;
    double multiply1;
    double multiply2;
   
    printf("请输入第一个数:\n");
    scanf("%lf",&multiply1);
    printf("请输入第二个数:\n");
    scanf("%lf",&multiply2);
    multiplyn=multiply1*multiply2;
    printf("\n%g*%g=%g\n",multiply1,multiply2,multiplyn);
   

    system("pause");
    system("CLS");
}

void divide(void){
    double dividen;
    double divide1;
    double divide2;

    printf("请输入第一个数:\n");
    scanf("%lf",&divide1);
    printf("请输入第二个数:\n");
    scanf("%lf",&divide2);
    while(!divide2){
        printf("被除数不能为0请重新输入:\n");
        scanf("%lf",&divide2);
    }
    dividen=divide1/divide2;
    printf("\n%g/%g=%g",divide1,divide2,dividen);
   
    system("pause");
    system("CLS");
}

剑栈风樯各苦辛,别时冰雪到时春
2015-06-06 07:48
学学霸
Rank: 2
等 级:论坛游民
帖 子:41
专家分:24
注 册:2015-5-16
收藏
得分:0 
根据大家的回答,我改正了,可是还是不行,请大家看看,帮帮忙


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void pluse(void);
void minus(void);
void multiply(void);
void divide(void);
char get_choice(void);
char get_first(void);
int main()
{
    int choice;
    void pluse(void);
    void minus(void);
    void multiply(void);
    void divide(void);
    while((choice=get_choice())!='q')
    {
     switch(choice)
     {
      case 'a':pluse();
             break;
      case 'b':minus();
             break;
      case 'c':multiply();
             break;
      case 'd':divide();
             break;
      default:printf("擦亮你的眼,只有a,b,c,d选项,按q退出");
              break;
     }
    }         
    printf("欢迎使用凛冬计算器\n");
    printf("如果好就推荐给别人");
                           
    system("pause");
    return 0;
}
    char get_coice()
    {
     int ch;
     printf("请输入您要进行的运算");
     printf("a加法    b减法");
     printf("c乘法    d除法");
     printf("q退出");
     ch=get_first();
     while((ch<'a'||ch>'d')&&ch!='q')
     {
      printf("擦亮你的眼睛,只有a,b,c,d选项,按q退出");
      ch=get_first();
     }
     return ch;
    }
   
    char get_first(void)
    {
     int ch;
     ch=getchar();
     while(getchar()!='\n')
          continue;
     return ch;
    }
              

    void pluse(void)
    {
     float plusen;
     float pluse1;
     float pluse2;
     printf("请输入第一个数");
     scanf("%f",&pluse1);
     printf("请输入第二个数");
     scanf("%f",&pluse2);
     plusen=pluse1+pluse2;
     printf("%f+%f=%f",pluse1,pluse2,plusen);
    }
   
    void minus(void)
    {
     float minusn;
     float minus1;
     float minus2;
     printf("请输入第一个数");
     scanf("%f",&minus1);
     printf("请输入第一个数");
     scanf("%f",&minus2);
     minusn=minus1-minus2;
     printf("%f-%f=%f",minus1,minus2,minusn);
    }
   
    void multiply(void)
    {
     float multiplyn;
     float multiply1;
     float multiply2;
     printf("请输入第一个数");
     scanf("%f",&multiply1);
     printf("请输入第一个数");
     scanf("%f",&multiply2);
     multiplyn=multiply1+multiply2;
     printf("%fX%f=%f",multiply1,multiply2,multiplyn);
    }
   
    void dinide(void)
    {
     float dividen;
     float divide1;
     float divide2;
     printf("请输入第一个数");
     scanf("%f",&divide1);
     printf("请输入第一个数");
     scanf("%f",&divide2);
     while(!divide2)
     {
      printf("你的数学老师要哭了,你尽然让分母为0");
      scanf("%f",&divide2);
     }
     dividen=divide1/divide2;
     printf("%f/%f=%f",divide1,divide2,dividen);
    }
2015-06-06 08:07
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
反省一下为啥你的代码被改了这么多遍还是解决不了你的问题!
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void pluse(void);
void minus(void);
void multiply(void);
void divide(void);
char get_choice(void);
char get_first(void);
int main()
{
    int choice;
//    void pluse(void);                                 //定义两遍的问题不知道几楼已经说过,听了吗? 
//    void minus(void);
//    void multiply(void);
//    void divide(void);             
    while((choice=get_choice())!='q')
    {
     switch(choice)
     {
      case 'a':pluse();
             break;
      case 'b':minus();
             break;
      case 'c':multiply();
             break;
      case 'd':divide();
             break;
      default:printf("擦亮你的眼,只有a,b,c,d选项,按q退出");
              break;
     }
    }          
    printf("欢迎使用凛冬计算器\n");
    printf("如果好就推荐给别人");
                           
    system("pause");
    return 0;
}
    char get_choice()                                                     //这种拼写问题,就不说了 
    {
     char ch;                                                                     //依旧不改 
     printf("请输入您要进行的运算");
     printf("a加法    b减法");
     printf("c乘法    d除法");
     printf("q退出");
     ch=get_first();
     while((ch<'a'||ch>'d')&&ch!='q')
     {
      printf("擦亮你的眼睛,只有a,b,c,d选项,按q退出");
      ch=get_first();                                                         //get_first(void)返回类型是int型? 
     }
     return ch;
    }
    
    char get_first(void)
    {
     char ch;                                                                     //依旧不改 
     ch=getchar();
     while(getchar()!='\n')
          continue;
     return ch;
    }
              

    void pluse(void)
    {
     float plusen;
     float pluse1;
     float pluse2;
     printf("请输入第一个数");
     scanf("%f",&pluse1);
     printf("请输入第二个数");
     scanf("%f",&pluse2);
     plusen=pluse1+pluse2;
     printf("%f+%f=%f",pluse1,pluse2,plusen);
    } 
    
    void minus(void)
    {
     float minusn;
     float minus1;
     float minus2;
     printf("请输入第一个数");
     scanf("%f",&minus1);
     printf("请输入第一个数");
     scanf("%f",&minus2);
     minusn=minus1-minus2;
     printf("%f-%f=%f",minus1,minus2,minusn);
    } 
    
    void multiply(void)
    {
     float multiplyn;
     float multiply1;
     float multiply2;
     printf("请输入第一个数");
     scanf("%f",&multiply1);
     printf("请输入第一个数");
     scanf("%f",&multiply2);
     multiplyn=multiply1*multiply2;                           //依旧不改 
     printf("%fX%f=%f",multiply1,multiply2,multiplyn);
    }
    
    void divide(void)                                         //依旧不改 
    {
     float dividen;
     float divide1;
     float divide2;
     printf("请输入第一个数");
     scanf("%f",&divide1);
     printf("请输入第一个数");
     scanf("%f",&divide2);
     while(!divide2)
     {
      printf("你的数学老师要哭了,你尽然让分母为0");
      scanf("%f",&divide2);
     } 
     dividen=divide1/divide2;
     printf("%f/%f=%f",divide1,divide2,dividen);
    }

剑栈风樯各苦辛,别时冰雪到时春
2015-06-06 08:25
快速回复:关于多个函数定义
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054587 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved