Excelsior Li 2022-09-17 18:15 采纳率: 93.9%
浏览 180
已结题

c程序入门基础pta遇到疑惑

几个问题:

  1. 【若变量定义为int x, y; ,则x + y = 22是符合C语言语法的表达式。】为什么错
  2. ret是什么东西
  3. 【 printf("%04d-%02d-%02d",year,month,day)】d前的04是什么意思
  4. 【编程】
    逆序三位数
    程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:
每个测试是一个3位的正整数。

输出格式:
输出按位逆序的数。

我的代码是:

#include<stdio.h>
int main(void)
{
    int x,a,b,c;
    scanf("%d",&x);
    a=x/100;
    b=x/10%10;
    c=x%10;

     if (c!=0)
    {
     printf("%d%d%d",c,b,a);
    }
    else if(c==0&&b==0)
    {
    printf("%d",a);    
    }
    else if(c==0&&b!=0)
    {
    printf("%d%d",b,a);
    }   
    return 0;

我的疑问是:为什么 scanf("%d",&x)不可以写成


scanf("%d%d%d",&a,&b,&c)
  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-09-17 18:19
    关注

    每个测试是一个3位的正整数。
    如果写成scanf("%d%d%d",&a,&b,&c),那么这个正整数会被a接收掉的。b和c还会等着你输入
    反之你可以将3位正整数看作三个字符
    char a,b,c;
    scanf("%c%c%c",&a,&b,&c);这样a,b,c就是三个数字字符了。
    分别减去'0',就是拆分出来的三个数字

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日

悬赏问题

  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器