该程序只是简单地迭代一个字符数组,并用初始数组中的值填充另一个二维字符数组。但是程序在运行时没有显示任何输出,控制台只是在等待。
有人可以帮我解决这个问题吗?我知道这应该很简单,但我错过了!
int main()
{
int i,j;
char arr1[26][26]={{""}};
char arr[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for(int i=0;i<26;i++)
{
int j=i;
do
{
arr1[i][j]=arr[j];
j=(i+1)%26;
}
while(j!=i);
}
for(int i=0;i<26;i++)
{
printf("{ ");
for(int j=0;j<26;j++)
{
printf("%c, ",arr1[i][j]);
}
printf(" }\n");
}
return 0;
}
if i = 0;
int j=0;
do
{
arr1[0][0]=arr[0];
j=1%26; // 1 % 26 == 1
}
while(j!=i); // j ==1, i == 0, 1 !=0 Loop forever
使用
arr1
初始化
{{""}}
2D 字符数组的方式对于字符数组来说是不正确的,您应该将其留空或使用默认字符(如空格 ' '
)初始化它。
并且您在内循环中存在循环条件问题,您正在使用将
do-while
设置为j
的(i+1)%26
循环。这意味着循环将始终至少运行一次,但您可能希望使用具有不同条件的常规 while
循环来正确填充 2D 数组。
试试这个方法:
#include <stdio.h>
int main() {
char arr1[26][26];
char arr[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for (int i = 0; i < 26; i++) {
int j = i;
while (arr[j] != '\0') {
arr1[i][j] = arr[j];
j = (j + 1) % 26;
}
}
for (int i = 0; i < 26; i++) {
printf("{ ");
for (int j = 0; j < 26; j++) {
printf("%c, ", arr1[i][j]);
}
printf(" }\n");
}
return 0;
}