吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1584|回复: 28
收起左侧

[讨论] C语言-新手的作业,头发已经掉了一半了,大佬帮忙看看

[复制链接]
九州志 发表于 2022-5-7 16:12
本帖最后由 九州志 于 2022-5-7 16:23 编辑

自己看书自学太难了,还没入门就觉得开始掉发了,这么简单的一个练习题,我居然搞了2小时、、、、、
大佬们别喷,帮忙指点下,现在这代码是能跑对题目了。。。。



无标题.jpg
打印这样的图形,要根据用户输入的字母来决定。例如,上面的图形是
在用户输入E后的打印结果。
提示:用外层循环处理行,每行使用3个内层循环,分别处理空格、以升序打印字母、以降序打印字母。



[C] 纯文本查看 复制代码
#include <stdio.h>[/size]
int main()
{
        //先列出26个字符数组
        int A[26];
        int a;
        int b='A';
        int k = 0;
        for (a= 0; a < 26; a++,k++)
        {
                A[k] = 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[k]);
                }
                for (p = 0; p < i;p++,k--)
                {
                        printf("%c", A[k]);
                }
        printf("\n\n");
        }
        return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shuaier 发表于 2022-5-7 17:08
霸王洗发液程序员不错的选择!
快乐的小跳蛙 发表于 2022-5-7 17:21
减2是因为你循环是从1开始循环的少循环一次
c的值是你的循环次数也就是输入字母的值减去'A'的值
如果循环从0开始循环可以将上方计算循环次数的代码修改为
c = d - ‘A’ + 1;    //c等于循环次数
花边下丶情未央 发表于 2022-5-7 17:21
你是想问 如果输入A就输出一行,E的话就五行是吗?
云在天 发表于 2022-5-7 17:33
[C++] 纯文本查看 复制代码
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
endriver 发表于 2022-5-7 17:56
这种循环嵌套就是挺绕的。一般赋个小值跟上跑一圈,基本上就明白是个什么过程了。
hackerbob 发表于 2022-5-7 17:58
兄弟,再这么下去,是要秃顶的节奏呀
dbisee 发表于 2022-5-7 19:01
只学过简单的C,但是感觉是不是不用把26个字母列出来啊
[C] 纯文本查看 复制代码
#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;
}
kk159 发表于 2022-5-7 19:17
无聊写了下~
1.png
2.png
only998 发表于 2022-5-7 20:16
本帖最后由 only998 于 2022-5-7 20:18 编辑

[C++] 纯文本查看 复制代码
 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++;
	}

000.jpg
剪贴板-2.jpg
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 12:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表