鱼C论坛

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

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

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

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

最近有点卡在这里了,急需谁来点拨一二,不胜感激。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  2. int  main()
  3. {
  4.         int i,j,k,l,m,q,i2;
  5.         char t;
  6.         printf("请输入一个大写字母:");
  7.         scanf("%c",&t);
  8.         i = t - 'A'+1;
  9.         if(i<0 || i>26)
  10.         {
  11.                 printf("输入有误!\n");
  12.                 return 0;
  13.         }
  14.         else
  15.         {
  16.                 i2=i*2-1;
  17.                 q = (i2-1)/2;
  18.                 for(j = 0;j<i;j++)
  19.                 {
  20.                         k = q - j;
  21.                        
  22.                         for(l = 0;l<k;++l)
  23.                         {
  24.                                 printf(" ");
  25.                         }
  26.                        
  27.                         for(l = 0;l<=j;++l)
  28.                         {
  29.                                 printf("%c",65+l);
  30.                         }
  31.                        
  32.                         m = l-2;

  33.                         for(l = m;l>=0;--l)
  34.                         {
  35.                                 printf("%c",65+l);
  36.                         }

  37.                         printf("\n");
  38.                 }
  39.         }

  40.         return 0;
  41. }
复制代码
小甲鱼最新课程 -> https://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 我看明白啦,非常感谢回答,但是只能给出一.

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2014-2-22 23:08:50 | 显示全部楼层
本帖最后由 machimilk 于 2014-2-22 23:10 编辑

  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <iostream>
  4. using namespace std;
  5. int main()
  6. {        
  7.         char charKey;
  8.         printf("请输入一个大写字母"A--Z":\n");
  9.         scanf("%c",&charKey);
  10.     int Pos=charKey-'A';//算出输入字符和A的差距以决定循环次数
  11.     for (int i=0;i<=Pos;i++)//循环的行数决定了
  12.     {
  13.                 for (int j=0;j<Pos*2+1;j++)//决定每行循环次数
  14.                 {
  15.                         if (j<Pos-i||j>Pos+i)//如果不在要打印的范围就打印空格
  16.                         {
  17.                                 printf(" ");
  18.                         }
  19.                         else
  20.                         {
  21.                                 if (j<=Pos)//判断升序打印
  22.                                 {
  23.                                printf("%c",'A'+j+i-Pos);
  24.                                  }else//降序打印
  25.                                 {
  26.                    printf("%c",'A'+Pos+i-j);
  27.                                 }
  28.                         }
  29.                 }
  30.                 printf("\n");
  31.     }
  32.     system("pause");
  33.         return(0);
  34. }

复制代码
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-18 18:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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