pta二维数组与字符数组练习题
#include
int main()
{
int i=0,k;
char a[82];
for(i=0;a[i]!='\n'&&i<=80;i++) {scanf("%c",&a[i]);
if(a[i]>='A'&&a[i]<='Z') a[i]='A'+'Z'-a[i];}
for(k=0;a[k]!='\n';k++)
printf("%c",a[k]);
return 0;
}
只有当a[ ]里面的数字大于或等于82且第一个for循环中循环条件不能少{ i<=80(而且只能是80) },时才正常运行,否则要么 段错误 要么 不是满分
我想知道这是什么原因,恳求回答
修改如下,供参考:
#include <stdio.h>
int main()
{
int i=0;
char a[81];
scanf("%[^\n]", a);
for(i = 0; a[i]; i++)
{
if(a[i] >= 'A' && a[i] <= 'Z')
a[i] = ('A' - a[i] + 25) % 26 + 'A';
}
printf("%s", a);
return 0;
}