划线的几处不知道为什么这么编,目的是什么?谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/02 06:21:03
#include《stdio.h》
main()
{
int n,i,j,k;
char ch;
printf("Enter a number\n");
scanf("%d"&n);
for(i=1;i<=n;i++)
{
ch='A';
k=i*(i-1)/2;
for(j=1;j<=n-i+1;j++)
{
ch+=k;
printf("%c",ch);
k=i+j;
}
printf("\n")
}
}
本题的目的 编程实现输入任意整数n后,可打印出n行三角字阵列图形。例如输入整数5时
程序运行结果是:
A C F J K
B E I N
D H M
G L
K
问题:ch+=k(在程序中这么写是什么意思)
k=i+j(k不是用来表示第i行首字母和第1行首字母的间隔,为什么用来表示这个?)
ch='A'(为什么打入一个A就输出了ABCD.....)

CH+=K 就是指CH=CH+K
k=i+j 没什么意义 可以不要 编译通过
ch='A' 那是因为CH 是 CHAR 字符型 如果你打入A 就相当于
for(i=1;i<=A;i++) 但i是INT型 你说会出现什么结果 乱码 死循环了
正确的如下:
#include<stdio.h>
main()
{
int n,i,j,k;
char ch;
printf("Enter a number\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ch='A';
k=i*(i-1)/2;
for(j=1;j<=n-i+1;j++)
{
ch+=k;
printf("%c",ch);
}
printf("\n");
}
}

划线在哪?
还有,第一个错误就是#include《stdio.h》==》#include<stdio.h>

ch='A'(为什么打入一个A就输出了ABCD.....)
应为A是等于65的,可以差ASCII码表得到
所以程序会得到65行的三角阵列
ASCII码表 http://www.weste.net/tools/ASCII.asp

ch+=k(在程序中这么写是什么意思)
ch = ch + k;
比如ch = 'A'的
ch = ch + k = 'A' + k = 65 + k
ch对应的字符你可以查看ASCII码表