请C语言高手回答

来源:百度知道 编辑:UC知道 时间:2024/09/23 03:53:52
题目要求打印这样一个图案:
*****
*****
*****
*****
*****
我的解答:
main()
{ char a[5]={'*','*','*','*','*'};
int i,j;
for(i=0;i<5;i++)
{ for(j=1;j<=i;j++) printf(" ");
printf("%s",a);
printf("\n");
}
}
为什么最后显示的结果是:
*****有乱码
*****有乱码
*****有乱码
*****有乱码
*****有乱码

char a[5]={'*','*','*','*','*'};
改为 char a[6]={'*','*','*','*','*','\0'};

#include <stdio.h>
main()
{
char a[6]={'*','*','*','*','*','\0'};// 加个这个试试
int i,j;
for(i=0;i<5;i++)
{ for(j=1;j<=i;j++) printf(" ");
printf("%s",a);
printf("\n");
}
}

char a[5]={'*','*','*','*','*'};
改成 char a[]={'*','*','*','*','*','\0'};

数组大小可以不指定,长度由右端的初始值的长度决定。

printf("%s",a); 是以字符串格式输出a,但原先定义的a[5]不是字符串。 需要加上'\0'。

学习了

#include<stdio.h>
#include<stdlib.h>

int main()
{ char a[5]={'*','*','*','*','*'};
int i,j;
for(i