C语言-新手的作业,头发已经掉了一半了,大佬帮忙看看
本帖最后由 九州志 于 2022-5-7 16:23 编辑自己看书自学太难了,还没入门就觉得开始掉发了,这么简单的一个练习题,我居然搞了2小时、、、、、
大佬们别喷,帮忙指点下,现在这代码是能跑对题目了。。。。
打印这样的图形,要根据用户输入的字母来决定。例如,上面的图形是
在用户输入E后的打印结果。
提示:用外层循环处理行,每行使用3个内层循环,分别处理空格、以升序打印字母、以降序打印字母。
#include <stdio.h>
int main()
{
//先列出26个字符数组
int A;
int a;
int b='A';
int k = 0;
for (a= 0; a < 26; a++,k++)
{
A = b++;
}
//根据用户的输入,倒推前面个数(打印的行数)
char d;
int c;
printf("请输入一个大写字母:\n");
scanf("%c", &d);
while (d < 'A' || d>'Z')
{
printf("输入的内容不是一个大写字母,请重新输入:\n");
scanf("%cgetchar();", &d);
}
printf("\n");
c = d - (65-2);//为什么要减2不知道,debug试出来的。。。。。
//开始循环打印
int i,j,p;
for (i=1; i < c; i++)
{
for (j = 0,k=0; j < i-1; j++,k++)
{
printf("%c",A);
}
for (p = 0; p < i;p++,k--)
{
printf("%c", A);
}
printf("\n\n");
}
return 0;
} {:1_921:}霸王洗发液程序员不错的选择! 减2是因为你循环是从1开始循环的少循环一次
c的值是你的循环次数也就是输入字母的值减去'A'的值
如果循环从0开始循环可以将上方计算循环次数的代码修改为
c = d - ‘A’ + 1; //c等于循环次数
你是想问 如果输入A就输出一行,E的话就五行是吗? int main()
{
char ch = 'E';
int height = ch - 'A' + 1;
for(int i = 1; i <= height;i++)
{
for(int j = 0; j < i;j++)
{
char output = 'A' + j;
cout<<output;
}
for(int k = i - 1; k>0;k--)
{
char output = 'A' + k - 1;
cout<<output;
}
cout<<endl;
}
return 0;
}
其实你可以看成两部分,一部分就是顺序输出
1
12
123
1234
12345
另一部分是倒叙输出并往下移动一行
1
21
321
4321
这两个组合起来就是
1
121
12321
1234321
123454321
这种循环嵌套就是挺绕的。一般赋个小值跟上跑一圈,基本上就明白是个什么过程了。 兄弟,再这么下去,是要秃顶的节奏呀 只学过简单的C,但是感觉是不是不用把26个字母列出来啊
#include <stdio.h>
int main()
{
char d;
int c;
printf("请输入一个大写字母:\n");
scanf("%c", &d);
while (d < 'A' || d>'Z')
{
printf("输入的内容不是一个大写字母,请重新输入:\n");
scanf("%cgetchar();", &d);
}
printf("\n");
c = d - 65+2;
//开始循环打印
for (int i=1; i < c; i++)
{
int j=0;
for (; j < i; j++)
{
printf("%c",'A'+j);
}
j--;
while(j>0)
{
j--;
printf("%c",'A'+j);
}
printf("\n\n");
}
return 0;
} 无聊写了下~
本帖最后由 only998 于 2022-5-7 20:18 编辑
int val = 0;
while (val < 'A' || val > 'Z') {
printf("请输入大写字母:\n");
val = _getch();
}
printf("---> %c\n", val);
//直到显示的最大值达到val
int maxshow = 'A';
while (maxshow <= val) {
int step = 1;
for (int out = 'A'; out <= maxshow; out++) printf("%c", out);
for (int out = maxshow - 1; out >= 'A'; out--) printf("%c", out);
printf("\n\n");
maxshow++;
}