凉城听暖305 2023-10-02 17:29 采纳率: 0%
浏览 5

关于#c语言#的问题:我写的代码是这样的:#include <stdio.h>(相关搜索:水仙花数|水仙花)

有一个关于水仙花的题目:
输入一个3位数整数,判断它是否为水仙花数,当输入数据不正确的时候,要求给出错误提示。说明水仙花数是一个3位数,其各位数的立方和等于该数本身,如153=1^3+5^3+3^3。
我写的代码是这样的:

#include<stdio.h>
int main()
{
    int num,a,b,c;
    scanf("%d",&num);
    a=num%10;
    b=num/10%10;
    c=num/100%10;
    if(num<=99 || num>=1000)
        printf("%d是一个不符合范围的数,请重新输入一个三位数\n",num);
    else if(num>=100 && num <=999 && num==a*a*a+b*b*b+c*c*c)
        printf("%d是一个水仙花数\n",num);
    else if(num>=100 && num <=999 && num!=a*a*a+b*b*b+c*c*c)
        printf("%d不是一个水仙花数\n",num);
    return 0;
}


如果要是再添加一个条件“如果输入的是非数字,那么给出错误提示”。
这样该怎么改啊?

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-10-02 18:46
    关注
    int ret = scanf("%d",&num);
    if (ret != 1) 
    {
    printf("非数字");
    return 0;
    }
    
    

    下面的代码可以简化:

    
        if(num<=99 || num>=1000)
            printf("%d是一个不符合范围的数,请重新输入一个三位数\n",num);
        else if(num==a*a*a+b*b*b+c*c*c)
            printf("%d是一个水仙花数\n",num);
        else
            printf("%d不是一个水仙花数\n",num);
        return 0;
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月2日

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)