#include <stdio.h>
int main()
{
int a,b,c,d,x;
char e;
scanf(“%c”,&e);
x=”e”-“a”;
for(a=0;a<=x;a++)
{
for(b=0;b<x-a;b++) printf(” “);
for(c=0;c<=x-b;c++) printf(“%c”,”A”+x-b-1);
for(d=0;d<c;d++) printf(“%c”,”A”+d-1);
printf(“\n”);
}
return 0;
}
题目是:让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:
A
ABA
ABCBA
ABCDCDA
ABCDEDCBA
这种图案要扩展到用户输入的字符。例如,前面的图案是在输入E时需要产生的。提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。假如您的系统不使用ASCII或相似的以严格数字顺序表示字母的编码,请参见在编程练习3中给出的建议。
请教哪里错误,刚开始学习C语言,请各高手指点。
int main()
{
int a,b,c,d,x;
char e;
scanf(“%c”,&e);
x=”e”-“a”;
for(a=0;a<=x;a++)
{
for(b=0;b<x-a;b++) printf(” “);
for(c=0;c<=x-b;c++) printf(“%c”,”A”+x-b-1);
for(d=0;d<c;d++) printf(“%c”,”A”+d-1);
printf(“\n”);
}
return 0;
}
题目是:让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:
A
ABA
ABCBA
ABCDCDA
ABCDEDCBA
这种图案要扩展到用户输入的字符。例如,前面的图案是在输入E时需要产生的。提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。假如您的系统不使用ASCII或相似的以严格数字顺序表示字母的编码,请参见在编程练习3中给出的建议。
请教哪里错误,刚开始学习C语言,请各高手指点。
解决方案
5
代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
15
1 #include <stdio.h> 1 int main() 2 { 3 int a,b,c,d,x; 4 char e; 5 scanf("%c",&e); 6 x = e - "a"+1; 7 for(a=0;a<=x;a++) 8 { 9 | for(b=0; b<x-a; b++) 10 | | printf(" "); 11 | for(c=0; c<=x-b; c++) 12 | | printf("%c","A" + c); 13 | for(d=0; d < c-1; d++) 14 | | printf("%c","A" + d); 15 | printf("\n"); 16 } 17 return 0; 18 }
找到行数和字母的规律吧,另外建议注意编写格式和变量命名:
1 #include <stdio.h> 1 2 int main() 3 { 4 int i, j, k, m, x; 5 int ch; >> 6 scanf("%c",&ch); 7 x = ch - "a"+1; 8 //printf("%d\n", x); 9 for(i = 0; i < x; i++) { 10 | for(j = 0; j < x-i; j++) 11 | | printf(" "); 12 | for(k=0; k <= x-j; k++) 13 | | //printf("%c","A"+x-j); 14 | | printf("%c", "A"+k); 15 | for(m = 0; m < k-1; m++) 16 | | printf("%c","A"+m); 17 | printf("\n"); 18 } 19 return 0; 20 }