c语言求高手解答,让程序要求用户输入一个大写字母,使用嵌套循环产生下面这样的金字塔图案。
#include
int
main()
{
printf("请输入行数和起始字母(以空格分隔):");
int
nlay=0;
char
ch;
char
chsave;
scanf("%d
%c",&nlay,&ch);
chsave=ch;
for(int
n=0;n<nlay;n++)
{
for(int
k=0;k<nlay-n;k++)
{printf("
");}
for(int
i=0;i<2*n+1;i++)
{
if(i<n)
printf("%c",ch++);
else
if(i==n)
printf("%c",ch);
else
printf("%c",--ch);
}
ch=chsave;
printf("
");
}
return
1;
}
很简单的原理:处理好每一行才能处理好多行。最外层的循环用于打印层数,这是最简单的,里面的循环就要处理好每一行了。首先,每一行由两个元素组成:空格和字母。也就是打印空格的多少最终控制了图形的基本样子。由于空格的多少在每一行都是不同的,因此它和行数有直接的关系。k=nlay-n
:借助于层数,测算出该层空格的个数。接下来关注字母的个数:同样,找出他和层数的关系:i=2*n+1
。这样基本的图形就出来了。最后,关注字母变化的规律:由于字母打印的个数总是为奇数,所以设计三个条件语句,分别控制。这样,随着每一层的打印,所有的元素都以层数为参考,就能互不干扰的工作。而ch=chsave这样的语句是为了保证每行打印的首字母都是你所输入的首字母。整个程序结构清晰,思路明确,楼主,给分吧!O(∩_∩)O~
见下面的程序:
#include
#include
int main(){
char c, p;
int n, i, j;
scanf("%c", &c);
n = c -'A' + 1 ;
for( i=0; i<n; i++)
{
for(j=0; j<2*n - 2*i -1 ; j++)
printf(" ");
for(p = 'A'; p< 'A'+ i; p++)
printf("%c", p);
while(p>='A') printf("%c", p--);
printf("
");
}
system("pause");
return 0;
}
双重循环
#include <stdio.h>
#include<stdlib.h>
void PrintPyramid(char c);
main()
{
char n;
printf("Please input a capital:
");
scanf("%c",&n);
PrintPyramid(n);
system("pause");
}
//函数功能:输出金字塔
void PrintPyramid(char c)
{
int i=65 , j ;
//第一重循环 :控制行的数量
for(;i<=c;i++)
{
//第二重循环1:控制顺序输出ABC(即前n位字母)
for(j=65;j<=i;j++)
printf("%c",j);
//第二重循环2:控制逆序输出BA(即后n-1位字母)
for(j=i-1;j>=65;j--)
printf("%c",j);
printf("
");
}
}
等腰三角形的程序
#include<stdio.h>
#define N 10
#include<stdio.h>
void main()
{
int i,j,n=13;
printf("N=");
while(n>12)
scanf("%d",&n); /*控制输入正确的值以保证屏幕显示的图形正确*/
for(i=0;i<=n;i++) /*控制输出N行*/
{
for(j=0;j<24-2*i;j++) printf(" "); /*控制输出第i行前面的空格*/
for(j=1;j<i+2;j++) printf("%4d",c(i,j)); /*输出第i行的第j个值*/
printf("\n");
}
}
int c(int x,int y) /*求杨辉三角形中第x行第y列的值*/
{
int z;
if((y==1)||(y==x+1)) return 1; /*若为x行的第1或第x+1列,则输出1*/
z=c(x-1,y-1)+c(x-1,y); /*否则,其值为前一行中第y-1列与第y列值之和*/
return z;
}
这个问题与杨辉三角的求法相似,你可以参考一下这个程序。
#include <stdio.h>
char c;
int main()
{
scanf("%c",&c);
for (int i=1;i<=c-'A'+1;i++)
{
for (int j=0;j<i;j++) printf("%c",'A'+j);
for (int j=i-1;j;j--) printf("%c",'A'+j-1);
printf("
");
}
}
你看看是不是这个意思
#include<stdio.h>
void f(char *a, char *b)
{
while(*a++);
a--;
while(*a++=*b++);
}
void main()
{
int i, j;
char c, x;
scanf("%c", &c);
for(i=1; i<=c-'A'+1; i++)
{
x = 'A';
for(j=1; j<=(2*i-1)/2; j++)
printf("%c", x++);
for(;j<=2*i-1; j++)
printf("%c", x--);
printf("
");
}
}
#include <stdio.h>
int main()
{
int i,m,n;
char t,letter;
printf("请输入大写字母A—Z\n");
scanf("%c",&letter);
printf("您所要的金字塔如下:\n");
for(i=0;i<letter-64;i++)
{
for(t='A',m=letter-64;t<66+i;t++)
{
printf("%*c",m-i,t);
if(t==65) break;
}
for(t='A';t<65+i;t++) printf("%c",t+1);
for(t='A',n=1;t<65+i;t++,n++) printf("%c",65+i-n);
printf("\n");
}
}
C语言菜鸟求高手解答...
1. 第一个问题似乎是一个关于C语言条件判断的疑问。你需要明确表达你的问题,以便得到具体的解答。2. 在C语言中,`m++` 表示先使用变量 `m` 的值,然后将 `m` 的值加1。所以,表达式 `m++ > 5` 首先将 `m` 的值(初始为5)用于比较,然后 `m` 自增。3. 由于 `m` 的初始值是5,...
c语言编程问题,求高手解答(高分)
你的程序没有大的问题,可以执行,只是以下几个小问题:一、第一行包含的文件不存在,这一行应该删除。二、定义了argc、argv两个变量没有使用,编译会有警告,可以删除他们或者不管,最好改为:int main()三、scanf输入n和k的时候,中间有个逗号分隔,这样输入的时候会麻烦,最好改为:scanf("%d%d...
[急求助]C语言程序编程题,请高手帮忙解答下!
按照题目要求编写的程序如下(见图)
C语言编程问题 求高手解答
程序运行输入65回车后,不会输出结果 因为,scanf("%c",&c1);要求以字符的形式输出进去,输入65的时候,c1接收的是字符6 接下来,while后的条件表达式的值为逻辑真,会让你继续输入,直到输入大写字母的时候,才会结束 输出大写字母的大写形式,小写形式 ...
关于C语言的几道习题 急求高手解答!
{ int arr[N];int i,j,t,f;printf("输入数组:\\n");for(i=0;i<N;i++)scanf("%d",arr+i);for(i=0;i<N-1;i++)for(j=i+1;j<N;j++)if(arr[i]<arr[j]){t=arr[i];arr[i]=arr[j];arr[j]=t;} for(i=0;i<N;i++)printf("%5d",arr[i]);printf("输入要找...
跪求高手解答C语言 请编写2×3×4…×15的程序。
这个还用c语言写么?这么简单用计算器不行么?int result = 1;for(int i = 2 ; i < 16; i ++ ){ result *= i;} return result;
C语言菜鸟求高手解答...
第一个问题只能说是一个判定条件,不知道你要的结果是什么。。2.m++>5这个判定是先取值后运算,m=5>5这个是不成立的,所以结果为假,然后m自增m=6,接着运行else printf("%d\\",m--);同样先取值运行,m=6所以输出6,之后再自减m=5但这是没有输出的,如果运行这个 main(){ int m=5;i...
C语言编程问题,求高手解答遇到输入非法字符时,怎么处理。
include<stdio.h> include include <stdlib.h> include "regex.h"const int MAX_LEN = 1000;\/*去掉字符串两端的空格*\/ char * trimString(char guessString[]){ int head = 0 ,rear = strlen(guessString)-1;char result[MAX_LEN];int i,k;\/*开头空格*\/ while( guessString[head...
阅读以下程序,当输入数据的形式是:25,13,10<CR>,正确的输出结果是( D...
先说一点需要的知识 scanf:① 遇空格、“回车”、“跳格”键,结束当前输入 ② 遇宽度结束,结束当前输入 ③ 遇非法输入,结束所有输入 scanf的返回值表示输入成功的数的个数,若遇到输入意外返回EOF 你的这个程序,输入逗号是遇到非法字符,scanf结束所有输入同时返回1(因为第一个值是正确的)也就是...
C语言考试速度求解啊!!速度
4.求10到40之间的所有素数。5.假设今天是星期天,编写一程序,求123456天后是星期几。6.编写一程序,输出1-99之间不能被2和3整除的数,按10个数一行的格式排列。7.编写一个程序实现累加器功能,把用户输入的数据累加,直到输入0为止,输出累加的结果。8.从三个红球五个白球六个黑球中任意取出8个...