鱼C论坛

 找回密码
 立即注册
查看: 1296|回复: 10

[已解决]数组

[复制链接]
发表于 2020-12-1 21:43:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int i,c;
        char s[2][5]={"8980","9198"};
        for(i=3;i>=0;i--)            
        {
                c=s[0][i]+s[1][i]-2*'0';  请问这个'0'的值是0吧
                s[0][i]=c%10+'\0';          这个第一次循环应该是s[0][3]=8%10+'\0'这个'\0'是多少呢
        }
        for(i=0;i<=1;i++)
        puts(s[i]);
        return 0;
}
最佳答案
2020-12-2 15:25:06
本帖最后由 风过无痕1989 于 2020-12-5 09:28 编辑
1447391641 发表于 2020-12-2 14:17
那请问,第二次循环'\0'是多少呢,不应该是s[0][2]=17%10+ 多少呢,我想了好久都没想出来'\0'是多少怎么 ...

i = 3 时
    c = s[0][3] + s[1][3] - 2 * '0'
       = 0 + 8 - 2 * '0'
       = 0 - '0' + 8 -  '0'
       = 8
               
    s[0][3] = c % 10 + '\0'
               = 8 % 10 + '\0'
               = 8 + '\0'
               = 8

i = 2 时
    c = s[0][2] + s[1][2] - 2 * '0'
       = 8 + 9 - 2 * '0'
       = 8 - '0' + 9 -  '0'
       = 17
               
    s[0][3] = c % 10 + '\0'
               = 17 % 10 + '\0'
               = 7 + '\0'
               = 7

i = 1 时
    c = s[0][1] + s[1][1] - 2 * '0'
       = 9 - '0' + 1 -  '0'
       = 9 + 1
       = 10
               
    s[0][3] = c % 10 + '\0'
               = 10 % 10 + '\0'
               = 0 + '\0'
               = 0

i = 0 时
    c = s[0][0] + s[1][0] - 2 * '0'
       = 8  -  '0' + 9  -  '0'
       = 8 + 9
       = 17
               
    s[0][3] = c % 10 + '\0'
               = 17 % 10 + '\0'
               = 7 + '\0'
               = 7

  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i, j, c;
  5.         char s[2][5] = { "8980","9198" };

  6.         for (i = 3;i >= 0;i--)
  7.         {
  8.                 c = s[0][i] + s[1][i] - 2 * '0';
  9.                 s[0][i] = c % 10 + '\0';
  10.         }
  11.         for (i = 0;i <= 1;i++)
  12.         {
  13.                 puts(s[i]);
  14.         }
  15.         printf("\n");
  16.        
  17.         for (i = 0;i < 2;i++)             // 输出 s[2][5] 数组
  18.         {
  19.                 for (j = 0;j < 4;j++)
  20.                 {
  21.                         printf("%.2d ", s[i][j]);
  22.                 }
  23.                 printf("\n");
  24.         }
  25.         return 0;
  26. }
复制代码


*************************************************
9198

07 00 07 08
57 49 57 56          <- - - - - -     9 0 9 8 的 ASCII码
Press any key to continue . . .

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-1 21:54:44 | 显示全部楼层
    '0' 是字符 0,其 ASCII 码值为 48,所以,2 × '0' = 96
    '\0' 这个字符对应的 ASCII 码值为 0,所以,'\0' 所代表的数值就是 0。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-1 21:57:28 | 显示全部楼层
'0'的值不是0
'\0'的值才是0
用单引号括起来的都是字符。对字符进行纯数学运算会得到无价值的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-1 22:22:53 | 显示全部楼层
教你一个方法,看图。从图中,你应该能得到你想要的答案
数组.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-2 11:35:32 | 显示全部楼层
风过无痕1989 发表于 2020-12-1 22:22
教你一个方法,看图。从图中,你应该能得到你想要的答案

那请问,第二次循环'\0'是多少呢,s[0][2]=17%10+ 什么呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-2 11:37:57 | 显示全部楼层
风过无痕1989 发表于 2020-12-1 22:22
教你一个方法,看图。从图中,你应该能得到你想要的答案

还有就是为什么输出9198不输出8888呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-2 13:19:39 | 显示全部楼层
1447391641 发表于 2020-12-2 11:37
还有就是为什么输出9198不输出8888呢


你要输出的是 s[ i ],而不是 s[0][ i ],当然不会输出 8888 啦。至于程序中的 s[ i ] 这个数组,程序中既没有定义,更不可能赋初值,却能在循环中 i = 1 时成功地被赋值 9198 ,我步进运行了好几次,也没有看出个端倪来。

你结了此帖,另发求助帖子就问:为什么 s[ i ] 这个没有定义的数组,最后能输出 9198

我也帮你去其他的论坛发帖子询问,若我那边有了答案,我再回来告诉于你。你看如何?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-2 14:17:02 | 显示全部楼层
风过无痕1989 发表于 2020-12-2 13:19
你要输出的是 s[ i ],而不是 s[0][ i ],当然不会输出 8888 啦。至于程序中的 s[ i ] 这个数组,程序 ...

那请问,第二次循环'\0'是多少呢,不应该是s[0][2]=17%10+ 多少呢,我想了好久都没想出来'\0'是多少怎么就等于八了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-2 15:25:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-12-5 09:28 编辑
1447391641 发表于 2020-12-2 14:17
那请问,第二次循环'\0'是多少呢,不应该是s[0][2]=17%10+ 多少呢,我想了好久都没想出来'\0'是多少怎么 ...

i = 3 时
    c = s[0][3] + s[1][3] - 2 * '0'
       = 0 + 8 - 2 * '0'
       = 0 - '0' + 8 -  '0'
       = 8
               
    s[0][3] = c % 10 + '\0'
               = 8 % 10 + '\0'
               = 8 + '\0'
               = 8

i = 2 时
    c = s[0][2] + s[1][2] - 2 * '0'
       = 8 + 9 - 2 * '0'
       = 8 - '0' + 9 -  '0'
       = 17
               
    s[0][3] = c % 10 + '\0'
               = 17 % 10 + '\0'
               = 7 + '\0'
               = 7

i = 1 时
    c = s[0][1] + s[1][1] - 2 * '0'
       = 9 - '0' + 1 -  '0'
       = 9 + 1
       = 10
               
    s[0][3] = c % 10 + '\0'
               = 10 % 10 + '\0'
               = 0 + '\0'
               = 0

i = 0 时
    c = s[0][0] + s[1][0] - 2 * '0'
       = 8  -  '0' + 9  -  '0'
       = 8 + 9
       = 17
               
    s[0][3] = c % 10 + '\0'
               = 17 % 10 + '\0'
               = 7 + '\0'
               = 7

  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i, j, c;
  5.         char s[2][5] = { "8980","9198" };

  6.         for (i = 3;i >= 0;i--)
  7.         {
  8.                 c = s[0][i] + s[1][i] - 2 * '0';
  9.                 s[0][i] = c % 10 + '\0';
  10.         }
  11.         for (i = 0;i <= 1;i++)
  12.         {
  13.                 puts(s[i]);
  14.         }
  15.         printf("\n");
  16.        
  17.         for (i = 0;i < 2;i++)             // 输出 s[2][5] 数组
  18.         {
  19.                 for (j = 0;j < 4;j++)
  20.                 {
  21.                         printf("%.2d ", s[i][j]);
  22.                 }
  23.                 printf("\n");
  24.         }
  25.         return 0;
  26. }
复制代码


*************************************************
9198

07 00 07 08
57 49 57 56          <- - - - - -     9 0 9 8 的 ASCII码
Press any key to continue . . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-5 09:32:24 | 显示全部楼层
朋友,不好意思,这道题我当时没有考虑清楚,就给出了“字符数字不参与数字运算”的错误结论,现已经将错误改正,你看一下,以免我那个错误影响了你

i = 3 时
    c = s[0][3] + s[1][3] - 2 * '0'
       = 0 + 8 - 2 * '0'
       = 0 - '0' + 8 -  '0'
       = 8
               
    s[0][3] = c % 10 + '\0'
               = 8 % 10 + '\0'
               = 8 + '\0'
               = 8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-5 14:05:50 | 显示全部楼层
风过无痕1989 发表于 2020-12-5 09:32
朋友,不好意思,这道题我当时没有考虑清楚,就给出了“字符数字不参与数字运算”的错误结论,现已经将错误 ...

没事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-14 03:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表