数组
#include<stdio.h>int main()
{
int i,c;
char s={"8980","9198"};
for(i=3;i>=0;i--)
{
c=s+s-2*'0';请问这个'0'的值是0吧
s=c%10+'\0'; 这个第一次循环应该是s=8%10+'\0'这个'\0'是多少呢
}
for(i=0;i<=1;i++)
puts(s);
return 0;
} '0' 是字符 0,其 ASCII 码值为 48,所以,2 × '0' = 96
'\0' 这个字符对应的 ASCII 码值为 0,所以,'\0' 所代表的数值就是 0。 '0'的值不是0
'\0'的值才是0
用单引号括起来的都是字符。对字符进行纯数学运算会得到无价值的结果。 教你一个方法,看图。从图中,你应该能得到你想要的答案
风过无痕1989 发表于 2020-12-1 22:22
教你一个方法,看图。从图中,你应该能得到你想要的答案
那请问,第二次循环'\0'是多少呢,s=17%10+ 什么呢{:5_100:} 风过无痕1989 发表于 2020-12-1 22:22
教你一个方法,看图。从图中,你应该能得到你想要的答案
还有就是为什么输出9198不输出8888呢{:5_99:} 1447391641 发表于 2020-12-2 11:37
还有就是为什么输出9198不输出8888呢
你要输出的是 s[ i ],而不是 s[ i ],当然不会输出 8888 啦。至于程序中的 s[ i ] 这个数组,程序中既没有定义,更不可能赋初值,却能在循环中 i = 1 时成功地被赋值 9198 ,我步进运行了好几次,也没有看出个端倪来。
你结了此帖,另发求助帖子就问:为什么 s[ i ] 这个没有定义的数组,最后能输出 9198
我也帮你去其他的论坛发帖子询问,若我那边有了答案,我再回来告诉于你。你看如何? 风过无痕1989 发表于 2020-12-2 13:19
你要输出的是 s[ i ],而不是 s[ i ],当然不会输出 8888 啦。至于程序中的 s[ i ] 这个数组,程序 ...
那请问,第二次循环'\0'是多少呢,不应该是s=17%10+ 多少呢,我想了好久都没想出来'\0'是多少怎么就等于八了。{:5_94:} 本帖最后由 风过无痕1989 于 2020-12-5 09:28 编辑
1447391641 发表于 2020-12-2 14:17
那请问,第二次循环'\0'是多少呢,不应该是s=17%10+ 多少呢,我想了好久都没想出来'\0'是多少怎么 ...
i = 3 时
c = s + s - 2 * '0'
= 0 + 8 - 2 * '0'
= 0 - '0' + 8 -'0'
= 8
s = c % 10 + '\0'
= 8 % 10 + '\0'
= 8 + '\0'
= 8
i = 2 时
c = s + s - 2 * '0'
= 8 + 9 - 2 * '0'
= 8 - '0' + 9 -'0'
= 17
s = c % 10 + '\0'
= 17 % 10 + '\0'
= 7 + '\0'
= 7
i = 1 时
c = s + s - 2 * '0'
= 9 - '0' + 1 -'0'
= 9 + 1
= 10
s = c % 10 + '\0'
= 10 % 10 + '\0'
= 0 + '\0'
= 0
i = 0 时
c = s + s - 2 * '0'
= 8-'0' + 9-'0'
= 8 + 9
= 17
s = c % 10 + '\0'
= 17 % 10 + '\0'
= 7 + '\0'
= 7
#include<stdio.h>
int main()
{
int i, j, c;
char s = { "8980","9198" };
for (i = 3;i >= 0;i--)
{
c = s + s - 2 * '0';
s = c % 10 + '\0';
}
for (i = 0;i <= 1;i++)
{
puts(s);
}
printf("\n");
for (i = 0;i < 2;i++) // 输出 s 数组
{
for (j = 0;j < 4;j++)
{
printf("%.2d ", s);
}
printf("\n");
}
return 0;
}
*************************************************
9198
07 00 07 08
57 49 57 56 <- - - - - - 9 0 9 8 的 ASCII码
Press any key to continue . . .
朋友,不好意思,这道题我当时没有考虑清楚,就给出了“字符数字不参与数字运算”的错误结论,现已经将错误改正,你看一下,以免我那个错误影响了你
i = 3 时
c = s + s - 2 * '0'
= 0 + 8 - 2 * '0'
= 0 - '0' + 8 -'0'
= 8
s = c % 10 + '\0'
= 8 % 10 + '\0'
= 8 + '\0'
= 8 风过无痕1989 发表于 2020-12-5 09:32
朋友,不好意思,这道题我当时没有考虑清楚,就给出了“字符数字不参与数字运算”的错误结论,现已经将错误 ...
没事
页:
[1]