循环小问题
本帖最后由 阿九。 于 2021-5-11 22:32 编辑只有一个问题
第 43 行为什么是 ch = ch - 2
我认为是 ch = ch - 1 (虽然答案不对)
上半部分的循环结束后不是到字母 D 了吗
要进行下半部分, 不是应该从 ch - 1, 即字母 C 开始吗?
(下方有 图, 和 代码)
请各位指点指点!
//Think Different !!!
/*
//程序功能:
*/
#include <stdio.h>
int main()
{
int n, i, j, m, k;
//n 为菱形高度,i 用于计算高度, j 用于控制空格数
char ch; //ch为起始字母;
k = 1;
scanf("%c %d", &ch, &n);
getchar();
//printf("%c %d", ch, n);
m = (n + 1)/2;
for(i = 0; i < m; i++)
{
for(j = 0; j < m-i-1; j++)
{
printf(" ");
}
printf("%c", ch);
if(i == 0)
{
ch++;
printf("\n");
continue;
}
for(j = 0; j < 2*i - 1; j++)
{
printf(" ");
}
printf("%c", ch++);
printf("\n");
}
ch = ch - 2;
for(i = n - m; i > 0; i--)
{
for(j = 0; j < k; j++)
printf(" ");
k++;
printf("%c", ch);
for(j = 0; j < 2*i - 3; j++)
printf(" ");
if(i == 1)
{
printf("\n");
break;
}
printf("%c\n", ch--);
}
return 0;
}
printf("%c", ch++);
你往上看 2 行,是不是有个 ch++ ?
它在退出循环之前又加了一次啊 yuxijian2020 发表于 2021-5-11 22:36
你往上看 2 行,是不是有个 ch++ ?
它在退出循环之前又加了一次啊
不太懂
我拿笔和纸一步一步运行下来 ,的确又加了一次,但是又多了一个问题
例如第二行,输出( _C_C)时,第 26 行打印出 C, 而接下来打印字母的是,39 行,而这时打印的是 ch++,那不是应该打印 D 了吗, 也就是第二行不是应该打印 (_C_D) 吗?
你是刚学没多久吧
++ 是个很神奇 也很扯淡的东西
假如int i = 1;
printf("%d\n", i++);
printf("%d\n", i);
结果是
1
2
后缀加加,会先赋值再++
前缀加加,会先++再赋值
yuxijian2020 发表于 2021-5-12 09:42
你是刚学没多久吧
++ 是个很神奇 也很扯淡的东西
我天 这给忘了 谢谢 谢谢 谢谢
页:
[1]