ArLo182317 2022-03-08 16:28 采纳率: 86.7%
浏览 23
已结题

一个不太理解的C语言问题


1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     char s[100];
 6     char name[][10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
 7     int sum = 0;
 8     scanf("%s",s);
 9     for(int i=0; s[i] != '\0'; i++)
10     {
11         sum = sum + (s[i] - '0');
12     }
13     int asum[5];    //存储sum中的每个数
14     int j;
15     for(j=0; sum >= 10; j++)
16     {
17         asum[j] = sum % 10;
18         sum /= 10;
19      } 
20      asum[j] = sum;    //记录将sum中第一位数 
21      while(j>=0)
22      {
23          if(j != 0)
24              printf("%s ", name[asum[j]]);
25          else
26              printf("%s\n",name[asum[j]]);
27          j--;
28       } 
29     return 0;
30 }

img


这两个乡间是什么意思,为什么可以这样写?

  • 写回答

2条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-03-08 16:39
    关注

    这个'0' 是一个字符'0' 对应ASII码表上的字符'0' 字符'0'对应的十进制值为48 '1':49 '2':50 ......
    拿S[i]-'0' 是为了转换成十进制的数值
    例如: s[i]为 字符'1'
    s[i] - '0' 就是十进制 的 1

    希望对题主有所帮助,可以的话,帮忙点个采纳!

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题