黑马程序员技术交流社区

标题: 分享帖--由作业0726中编程题引发的拓展与困惑---共勉! [打印本页]

作者: zero-xiao    时间: 2015-3-12 22:28
标题: 分享帖--由作业0726中编程题引发的拓展与困惑---共勉!
    发表此帖主要是因为作业过程中,引发的一点点小思路,觉得可以和大家分享下下,当然大神级的可以忽略了哦,刚开始看,可能到后面会有更精简的方法,受知识的局限,还望见谅,如果和我一样是初学者的话,看了此贴也许会有幸会为你解开一些小疑惑,可以在自己拓展思维的道路上,避免话费更多的时间,代码亲测,请放心,时间是宝贵的嘛。:)
上题:
/*
题目:程序运行的时候提示下列信息
请输入相应数字选择需要执行的运算:
1 加法
2 减法

用户选择运算后,再提示用户输入两个需要进行运算的整数,输入完毕后就输出运算结果
*/
#include <stdio.h>

int main()
{
    // 1. 提示用户选择计算类型
    printf("请输入相应数字选择需要执行的运算:\n");
    printf("1 加法\n");
    printf("2 减法\n");

    // 2. 定义变量存储用户选择的计算类型
    int type = 0;

    // 3. 让用户输入计算类型
    scanf("%d", &type);

    if (type!=1 && type!=2)
    {
        // type值输入不合理,就直接退出程序
        printf("非法选择\n");
        return 0;
    }

    // 4.提示用户输入两个计算的数值
    printf("请连续输入两个需要进行运算的整数,并且以空格隔开\n");

    // 5.定义2个变量存储数值
    int num1, num2;
    scanf("%d %d", &num1, &num2);

    // 6.计算
    int result;
    if (type == 1) {
        result = num1 + num2;
        printf("%d + %d = %d\n", num1, num2, result);
    } else if (type == 2) {
        result = num1 - num2;
        printf("%d - %d = %d\n", num1, num2, result);
    }
    return 0;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

                                :lol没错,这个是老师的答案,虽然自己也写出来了,不过,大家都看过答案,所以看这个可以更快的想起来,个人觉得,算一个加减法,先输入符号不爽,1 + 2 = 3 ,就输入1 + 2 = 3,先输入+,就感觉不爽了,所以就有了以下的变形

#include<stdio.h>
int main ()
{
    printf("请输入一个算术表达式:\n");
    int a  = 0 ; char c = 0;int b = 0;//变量初始化。定义一个字符变量存储符号


    while  (c !='+' && c !='-')
    {
        //让用户输入表达式
        scanf("%d%c%d",&a ,&c ,&b  );
        printf("请重新输入:\n");

    }
    //加法
    if(c =='+')
    {
        int i =a + b ;
        printf(" %d + %d = %d",a,b,i );
    }

    //减法
    if(c =='-')
    {
        int i =a - b ;
        printf(" %d - %d = %d\n",a,b,i );
    }

    return 0;

}
  、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

    这样输入的话,就是输入的表达式了,但是感觉还是有些不爽,因为只能算加减法,不能算乘除,但是要加上乘除法的话,就成了四个条件了,所以想尝试证明下,关系运算&&的连用情况,于是就有了下面的变形



#include<stdio.h>
int main ()
{
    printf("请输入一个算术表达式:\n");
    int a  = 0 ; char c = 0;int b = 0;//变量初始化。
    while  (c !='+' && c !='-' && c !='*' && c !='/')//判断输入符号的正确性
    {
        //让用户输入表达式
        scanf("%d%c%d",&a ,&c ,&b  );
        printf("请重新输入:\n");

    }


            //让用户输入表达式
     //   scanf("%d%c%d",&a ,&c ,&b  );
    //加法
    if(c =='+')
    {
        int i =a + b ;
        printf(" %d + %d = %d",a,b,i );
    }

    //减法
    else if(c =='-')
    {
        int i =a - b ;
        printf(" %d - %d = %d\n",a,b,i );
    }
    //乘法
    else if(c =='*')
    {
        int i =a * b ;
        printf(" %d * %d = %d\n",a,b,i );
    }
    //除法
    else if(c =='/')
    {
        int i =a / b ;
        printf(" %d / %d = %d\n",a,b,i );
    }

    return 0;

}
                到此,四则运算算齐全了,也表明 条件1 && 条件2 && 条件3  这样的使用方式是可行的,||应该也是可以的吧,暂未亲测,但想来是同理的
    局限性:
         只能是两个数的四则运算,如果是三个数的四则运算就算不了了,还有四位 五位、、等等等等,有兴趣的朋友可以尝试下,或许学了后面后,会有更好的方法了。

一点点小小的心得,分享给需要的朋友。over。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2