帮我详细解释一下这个c程序

来源:百度知道 编辑:UC知道 时间:2024/05/11 17:30:41
#include <stdio.h>
main()
{
int i,line=5;
for (i=0;i<line;i++){
printf("%*s",line-i,"");
printf("*%*s\n",i*2,(i!=0)?"*":"");
}
for (i=line-2;i>=0;i--){
printf("%*s",line-i,"");
printf("*%*s\n",i*2,(i!=0)?"*":"");
}getch();
}

include <stdio.h>
main()
{
int i,line=5;
for (i=0;i<line;i++){
printf("%*s",line-i,"");输line-1空格
printf("*%*s\n",i*2,(i!=0)?"*":""); 输一个*,之后输i*2空格,再之后当i不等于0时,输一个*,当i=0时,输一个个空格,之后换行
}
for (i=line-2;i>=0;i--){
printf("%*s",line-i,"");
printf("*%*s\n",i*2,(i!=0)?"*":"");
}getch();
}

第二个for循环差不多.

这里你要明白的是下面两句话的意思:
printf("%*s",line-i,"");
printf("*%*s\n",i*2,(i!=0)?"*":"");

%*s其中的*是抑制符,是跳过多少字符的意思,即空多少格,s是字符串,printf("%*s",line-i,"");即表示跳过line-1格之后输出空格"".

printf("*%*s\n",i*2,(i!=0)?"*":""); 第一个*直接输出,之后的%*s与刚刚上面讲的一样,只是它在跳过i*2格之后要判断输出的字符串是空格还是*,(i!=0)?"*":"")是一个条件运算,当i不等于0时,输出*,当i=0时.输出空格"".

不知