鱼C论坛

 找回密码
 立即注册
查看: 2879|回复: 4

循环的一个课后题,求解答

[复制链接]
发表于 2014-2-22 11:57:25 | 显示全部楼层 |阅读模式
40鱼币
这种模式的题一直都不会,期待大家帮我写一下源码,题目不难,如下:

让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:
                 A
               ABA
             ABCBA
           ABCDCDA
        ABCDEDCABA
这种图案要求扩展到用户输入的字符。例如,前面的图案是在输入E时需要产生的。
题目里还有提示,也发上来:使用一个外部循环来处理行, 在每一行中使用三个内部循环, 一个处理空格, 一个升序打印字母,一个降序打印字母。

最近有点卡在这里了,急需谁来点拨一二,不胜感激。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 11:57:26 | 显示全部楼层
#include <stdio.h>

int  main()
{
        int i,j,k,l,m,q,i2;
        char t;
        printf("请输入一个大写字母:");
        scanf("%c",&t);
        i = t - 'A'+1;
        if(i<0 || i>26)
        {
                printf("输入有误!\n");
                return 0;
        }
        else
        {
                i2=i*2-1;
                q = (i2-1)/2;
                for(j = 0;j<i;j++)
                {
                        k = q - j;
                        
                        for(l = 0;l<k;++l)
                        {
                                printf(" ");
                        }
                        
                        for(l = 0;l<=j;++l)
                        {
                                printf("%c",65+l);
                        }
                        
                        m = l-2;

                        for(l = m;l>=0;--l)
                        {
                                printf("%c",65+l);
                        }

                        printf("\n");
                }
        }

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 13:10:46 | 显示全部楼层
本帖最后由 swsm 于 2014-2-22 13:13 编辑

#include <stdio.h>

int  main()
{
        int i,j,k,l;        //循环所用的计数
        int cj;        //用户输入的字符与A字符的差距

        char zifu;                //用户输入的字符所存放之处
        
        printf("\n");
        printf("*****************************************************************");
        printf("\n");
        printf("用户输入一个字符,然后打印出该字符到'A'字符(包括两者字符),排列成金字塔状况的程序");

        printf("           注意:用户输入的字符要在'A'字符之后或就是'A' !!!!");
        printf("\n");
        printf("****************************************************************");
        printf("\n");
        printf("请输入一个字符: ");
        scanf("%c",&zifu);
        
        cj=zifu-'A';        //求出差距
        if(cj<0)                //判断用户输入的字符是否比'A'大
        {
                printf("用户输入的字符比'A'小!!!");
                printf("\n");
                return 0;
        }

        for(i=0;i<cj+1;i++)
        {
                for(j=0;j<cj-i;j++)                        //解决空格
                        printf(" ");               
                                
                for(k=0;k<i+1;k++)                        //解决升序
                        printf("%c",'A'+k);

                for(l=0;l<i;l++)                        //解决降序
                        printf("%c",'A'+k-l-2);

                printf("\n");
               



        }
        
}
//注释写的很详细,有问题再沟通!(差距指的是ascii码表)

评分

参与人数 1鱼币 +3 收起 理由
谓我心忧 + 3 我看明白啦,非常感谢回答,但是只能给出一.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 15:51:06 | 显示全部楼层
不好意思啊代码很乱 O(∩_∩)O~ 作业做了一半临时写的 O(∩_∩)O~ 有不懂得可以追问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 23:08:50 | 显示全部楼层
本帖最后由 machimilk 于 2014-2-22 23:10 编辑
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{        
        char charKey;
        printf("请输入一个大写字母"A--Z":\n");
        scanf("%c",&charKey);
    int Pos=charKey-'A';//算出输入字符和A的差距以决定循环次数
    for (int i=0;i<=Pos;i++)//循环的行数决定了
    {
                for (int j=0;j<Pos*2+1;j++)//决定每行循环次数
                {
                        if (j<Pos-i||j>Pos+i)//如果不在要打印的范围就打印空格
                        {
                                printf(" ");
                        }
                        else
                        {
                                if (j<=Pos)//判断升序打印
                                {
                               printf("%c",'A'+j+i-Pos);
                                 }else//降序打印
                                {
                   printf("%c",'A'+Pos+i-j);
                                }
                        }
                }
                printf("\n");
    }
    system("pause");
        return(0);
} 
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 18:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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