循环的一个课后题,求解答
这种模式的题一直都不会,期待大家帮我写一下源码,题目不难,如下:让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:
A
ABA
ABCBA
ABCDCDA
ABCDEDCABA
这种图案要求扩展到用户输入的字符。例如,前面的图案是在输入E时需要产生的。
题目里还有提示,也发上来:使用一个外部循环来处理行, 在每一行中使用三个内部循环, 一个处理空格, 一个升序打印字母,一个降序打印字母。
最近有点卡在这里了,急需谁来点拨一二,不胜感激。
#include <stdio.h>
intmain()
{
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;
} 本帖最后由 swsm 于 2014-2-22 13:13 编辑
#include <stdio.h>
intmain()
{
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码表) 不好意思啊代码很乱 O(∩_∩)O~ 作业做了一半临时写的 O(∩_∩)O~ 有不懂得可以追问 本帖最后由 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]