蓝笑一 2023-03-19 13:56 采纳率: 100%
浏览 26
已结题

C语言的设计计算菜单问题

问一下,case:5 里面的 t=1 是什么意思,为什么要加上去这个,好像不加 t=1;
直接if(n==0);也一样。不明白有人能帮忙解答一下吗?

#include <stdio.h>
void main()
{
    int oper1,oper2,choice ,s=0,x,i,n,t=1;
    int sum,sub,mul;
    double div;
    char opnd;
    printf("高级计算机\n");
    printf("1.加法   2.减法");
    printf("3.乘法   4.除非");
    printf("5.累加和 6.阶乘\n"); 
    scanf("%d",&choice);
    if(choice>=1&&choice<=4)
    {
        printf("输入第一个操作数\n");
        scanf("%d",&oper1);
        printf("输入第二个操作数\n");
        scanf("%d",&oper2);
    }
    switch(choice)
        {
            case 1:sum=oper1+oper2;
            printf("%d+%d=%d\n",oper1,oper2,sum);
                break;
            case 2: sub=oper1-oper2;
            printf("%d-%d=%d\n",oper1,oper2,sub);
                break;
            case 3: mul=oper1 * oper2;
            printf("%d*%d=%d\n",oper1,oper2,mul);
                break;
            case 4: if(oper2!=0)
            {
                div=oper1/oper2;
            printf("%d/%d=%d\n",oper1,oper2,div);
                break;
            }
            else
            printf("除数不能为0\n");
            case 5:    printf("输入求累计和的个数:\n");
            scanf("%d",&n);
            printf("请输入%d个数:\n",n);
            if(n==0) t=1;
            for(i=0;i<n;i++)
            {
                scanf("%d",&x);
                s=s+x;
            }
            printf("%d个数的累计和=%d\n",n,s);    
                break;
            case 6:    printf("输入所求阶乘的数:\n");
            scanf("%d",&n);
            for(i=1;i<=n;i++)
            t=t*i;
            printf("%d!=%d\n",n,t);
            break;
            default:printf("选择错误!\n");
    
        }

}
  • 写回答

2条回答 默认 最新

  • 追cium 2023-03-19 14:00
    关注

    参考GPT和自己的思路:

    在这个代码中,case 5 是用来求一组数字的累加和的。t=1 是为了存储计算阶乘时的结果。

    在语句 if(n==0) t=1; 中,当输入的个数 n 为 0 时,如果没有 t=1; 的话,t 会被初始化为0,然后后面计算阶乘时会造成错误的结果。

    另外,直接 if(n==0); 语句是无用的,因为代码中没有针对这种情况的处理,如果只是想判断 n 是否为 0 的话,应该写成 if(n==0) {}。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染