C语言打印字母三角形printTriangle函数运行异常求助
代码问题排查与修复
- 格式符使用错误:你用
%s输出单个char类型字符,%s对应的参数应为字符串首地址,直接传ch[j]会把字符值当成内存地址访问,触发未定义行为,需要更换为%c格式符。 - 三角形逻辑错误:当前内层循环固定遍历
size次,所有字符会输出为矩形而非逐行递增的三角形,第i行(从0开始计数)仅需输出i+1个字符即可。 - 缺失换行逻辑:每行字符输出完成后没有添加换行操作,所有内容会挤在同一行显示。
修复后的
printTriangle函数代码 void printTriangle(int size, char ch[5]) { int i,j; // 外层循环控制行数,共size行 for(i=0;i<size;i++) { // 内层循环控制每行字符数,第i行输出i+1个字符 for(j=0;j <= i;j++) { if(j <= 4) { // 单个字符使用%c格式符输出 printf("%c ",ch[j]); } else { printf("# "); } } // 每行输出完成后换行 printf("\n"); } }
修改后输入对应size即可得到前5位为a/e/i/o/u、超出部分补#的直角三角形输出。
内容的提问来源于stack exchange,提问作者WWoPPoWW
相关产品推荐
相关产品推荐

