C语言二维字符数组填充程序无输出,请求技术排查修复
问题排查与修复
核心问题:死循环导致程序无响应
你的程序卡在第一个嵌套的do-while循环里,完全没机会执行到后续的输出逻辑。问题出在j的更新语句上:
j=(i+1)%26;
每次循环j都会被固定设置为(i+1)%26,永远无法回到初始值i,导致while(j!=i)的条件永远成立,循环无限执行。
修复方案
把j的更新逻辑改成基于当前值递增,也就是:
j=(j+1)%26;
这样每次循环j都会往后移动一位,经过26次循环后会回到初始的i,从而正常退出循环。
修正后的完整代码
#include <stdio.h> 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=(j+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; }
补充说明
修正后,二维数组arr1的第i行会从arr[i]开始,依次填充arr[i], arr[i+1], ..., arr[25], arr[0], arr[1], ..., arr[i-1],符合你“遍历一维数组填充二维数组”的需求,程序也能正常输出结果。
内容的提问来源于stack exchange,提问作者Rakesh Prasanna R
相关产品推荐
相关产品推荐

