求助如何用C语言打印星号组成的高和底相等的空心等腰梯形

作者&投稿:於疫 (若有异议请与网页底部的电邮联系)
用C语言编出:一个用星号组成的等腰梯形。~

你这里有哪些是活的,就是有变量控制的,如果就是象你这所这个梯形上下边长是固定的,5和11吗,那把每一行定义成一个字符串,整个梯形弄成一个数组,循环输出就行了。
但如果梯形不是固定,有变量动态改变就要有个算法。
我觉得你可以这么考虑:
先算出长宽和窄宽之差。比如:11-5=6
然后确定梯形有多高,你这里是4
那么就可以算出从上到下每一行缩进几个字符
因为两边同时缩进,所以你这里(6/2)/4=0.75
0.75不是整个,这样画出来的梯形就不是规范的梯形
你举的例子就不规范,因为最小的刻度就是一个字符,不能在拆分了
如果你这里一共三行就是规范的梯形
如果长短相同就是矩形

#include
#include
void main ()
{
int i,j,k;
for(i=-2;i<3;i++ )/*i初始值赋为-2是因为输出空格数与i的绝对值有关*/
{ /*这个for循环(第一个)控制输出*号的行数*/
for(k=1;k<=abs(i);k++)/*abs()函数作用就是求绝对值,用此函数要包含math.h头文件*/
{/*这个for循环(第二个)控制输出的空格数*/
printf(" ");/*此处是两个空格,因为每个*号后跟了一个空格,故要打两个空格*/
}
for(j=1;j<=5-abs(2*i);j++)/*这个for循环(第三个)控制输出*号个数*/
{
printf("* ");/*此处是一个*号加一个空格*/
}
printf("
");/*输出完一行后,换行*/
}
}
/* 行数(对应的i值) 打空格次数 *号个数
1(-2) 2 (k<=abs(i))1(j<=5-abs(2*i)
2(-1) 1 3
3( 0) 0 5
4( 1) 1 3
5( 2) 2 1
(取绝对值 (输出两个
就是方便计算) 空格算一次)
*/不清楚的地方可以hi我,望采纳!
PS:楼上的第二个程序就是最后少了一个花括号

楼主,可以不用循环控制语句也可以实现的,直接用printf函数就行。

谢谢上面的各位,这个程序我自己应经会了,#include "stdio.h"main(){int a,b,c,d,e;scanf("%d",&a);b=a;for(c=1;c<=a;c++){for(d=1;d<=a-c;d++)printf(" ");for(e=1;e<=b;e++)if(c==1||c==a) printf("*");else if(e==1||e==b) printf("*");else printf(" ");b=b+2;printf("\n");}}

不用被问题复杂化,顶一个三楼


C++基础教程,比较全面,适合小白
通过向导,确保选择C ++作为语言。给你的项目一个名字,并指定一个文件夹来保存它。确保选择了编译器,然后单击完成。GNU GCC是可用于Code :: Blocks的流行编译器之一。在左侧边栏中,展开"Sources"。您会看到您的项目及其源文件。Code :: Blocks自动创建一个main.cpp文件,其中包含一个基本的Hello Wo...

c语言中getch()怎么用
1. getch函数的基本用法:getch函数可以直接从键盘获取一个字符,无需等待用户输入整行或按下回车键。这使得它在需要实时响应键盘输入的程序中非常有用。例如,在编写字符模式游戏或菜单时,可能会使用到getch函数。2. 使用getch的步骤:要使用getch,首先需要在程序的开头包含conio.h头文件。然后,可以直...

c语言中能不能用printf函数直接输出数组?如printf("%d",a[3][3...
限制在C语言中,利用printf直接输出数组是不可以的。但是你的做法是可以的。只是问题出在你数组使用越界了。解释一下:printf不能直接用来输出数组。例如:include<stdio.h>int main(){int a[3]={1,2,3};int i;for(i=0;i<3;i++)printf("%d",a);}是错误的 所以要是输出数组的话,必须要...

c语言中的flush函数怎样用
int fflush;其中,`stream`参数是一个指向要刷新的流的指针。对于标准输出流`stdout`,可以使用以下方式调用`fflush`:c fflush;这会将所有尚未输出的数据发送到屏幕。2. 使用场景 在编程中,当你希望立即看到输出而不是等待缓冲区填满时,可以使用`fflush`。例如,在调试过程中,实时查看程序的输出有助...

c语言,有没有乐于助人的大神帮忙解答一下。
break; if(a>10||a<b||b<0)printf("Error\\n"); else printf("%f\\n",fac(a)\/(fac(b)*fac(a-b))); } return 0; }===#include<stdio.h>int sum1(int n){int i,s=0; for(i=1;i<=n;i+=2) s+=i; return s; }int main(){int n,...

C语言怎么用
理论上就足够了。事实上,提供的标准函数效率都很高,使用很频繁,没有自己实现的必要,所以掌握常用函数是非常必要的,但是要注意函数的适用范围。继续学习因人而异,应该可以独立选择了。第三:如何学习。强调多实践,C语言的学习要经常上机,多写程序才能逐步提高。推荐书籍:C Programming Languge ...

用c语言编写一程序实现如下功能:输入1、2、3、4、5、6、70(分别对应星 ...
C语言实现输入1到7的数字,输出对应是星期几,参考代码如下: #include "stdio.h" int main() { int d; const char wd[7][3]= {"一","二","三","四","五","六","日"}; scanf("%d",&d); printf("星期%s",wd[d-1]); return 0; } 本回答被网友采纳 已赞过 已踩过< 你对这个回答的...

关于C语言的
Ctrl+KP 块文件打印 Ctrl+F1 如果光标所在处为Turbo C 2.0库函数,则获得有关该函数的帮助信息 Ctrl+Q[ 查找Turbo C 2.0双界符的后匹配符 Ctrl+Q] 查找Turbo C 2.0双界符的前匹配符 说明: (1). Turbo C 2.0的双界符包括以下几种符号: 花括符 {和} 尖括符 <和> 圆括符 (和) 方...

用c语言编程从键盘输入任意10个正整数?
× 个人、企业类侵权投诉 违法有害信息,请在下方选择后提交 类别 色情低俗 涉嫌违法犯罪 时政信息不实 垃圾广告 低质灌水 我们会通过消息、邮箱等方式尽快将举报结果通知您。 说明 0\/200 提交 取消 领取奖励 我的财富值 -- 去登录 我的现金 -- 去登录 做任务开宝箱 累计完成 0 个任务 10任务 略略...

c语言程序中包含助记符吗
c语言程序中包含助记符。c语言程序一个主函数。即main函数。main函数是程序的入口,不管它在程序头文件下面的任何地方,程序执行时都是先调用main函数,再用main函数调用各个函数,举个形象的例子,有个“做菜”程序。c语言程序在主函数中,根据情况,可能还需要调用“买菜,切菜,炒菜”等子函数。但是...

秀峰区13567931910: c语言问题:打印出下面由星号组成图形 -
佐苗青霉: 第一个 main() { int i, j;//定义变量 for (i = 1; i <= 4; i++) { for (j = 1; j <= i; j++) printf(" "); printf("*******"); printf("\n"); } } 第二题 main() { int i,j; for (i = 1; i <= 4; i++) { for (j = 1; j <= 4 - i; j++) printf(" "); printf("*******"); printf("\n"); } } 第三...

秀峰区13567931910: 打印星号 c语言 -
佐苗青霉: # include <stdio.h> main() {int hang,i,j; pintf("首行星号个数为:"); scanf("%d",&hang); printf("\n"); for(i=1;i<=hang;i++) {for(a=1;a<=i;a++){ printf(" ");}for(b=hang;b>=i;b--){printf("*");}printf("\n"); } }

秀峰区13567931910: 输入N值,输出由*组成的高为你N的等腰三角形 * ** *** **** *****(用c语言) -
佐苗青霉: #include<stdio.h> void main() { int i,j,k,n; scanf("%d",&n); for(i=1;i<n;i++) { for(j=i;j<n-1;j++) printf(" "); for(k=1;k<i;k++) printf("* "); } }

秀峰区13567931910: 用C语言 输出 一组“ * ”号 要求结果为 * *** ***** *** * -
佐苗青霉: #include "stdio.h"#include "conio.h" main() { int i,j,k; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(" "); for(k=1;k<2*i;k++) printf("*"); printf("\n"); } for(i=3;i>0;i--) { for(j=3;j>=i;j--) printf(" "); for(k=1;k<2*i;k++) printf("*"); printf("\n"); } getch(); }

秀峰区13567931910: 分析c语言中用for打印出星号金字塔 -
佐苗青霉: 你的程序不对.如果你只打印4行金字塔的话,程序如下: #include"stdio.h" main() {int i,j,k;for(i=0;i<=3;i++)//控制打印4行{for(j=0;j<=2-i;j++)//每一行先打印2-i+1个空格printf(" ");for(k=0;k<2*i+1;k++)//再打印2i+1个*号printf("*");printf("\n");//打完一行换行} }

秀峰区13567931910: 用C语言程序输出用6颗星构成的等边三角形. -
佐苗青霉: 你是想用for 循环打印吗?代码如下:#include main(){ // 控制打印行数 for (int r = 0; r < 3; r ++) { // 打印空格 for (int i = 3; i > r; i --) /** 当r = 0 时,打印 i - r 个空格,每次打印的次数都是 i - r .*/ { printf(" "); } // 打印星号 for (int j = 0; j <= r; ...

秀峰区13567931910: C语言输出5行*成倒三角 -
佐苗青霉: #include"stdio.h" #include"stdlib.h" main() {int i,j;//循环变量for(i=1;i<=5;i++){for(j=1;j<=i-1;j++){printf(" ");//打印每行前面的空格}for(j=1;j<=11-i*2;j++){printf("*");//打印每行的星号}printf("\n");//每打印完一行后换行} }

秀峰区13567931910: 用c语言编写程序 在屏幕上输出******,新人表示不会 求帮助 -
佐苗青霉: 如果是 * ** *** 的话,是这样考虑的: #一共3行,用循环实现:for ( i=0;i<3;i++ ) { /*循环体中i分别等于0,1,2*/ } #每行需要换行: for ( i=0;i<3;i++ ) { //这里输出每行的星号而printf("*");能打印一个*printf("\n"); } #每行星号个数由循环变...

秀峰区13567931910: 求教大佬c语言用for循环打印星钻应该怎么打,关于空格和*的双重循环怎么理解,谢谢谢谢谢 -
佐苗青霉: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35//另外一种思路,分别用两个变量来标记*号开始的位置(start)和*号结束的位置(end), 只要适当变化这两个位置就可以打印出 #include <stdio...

秀峰区13567931910: 编写一个c程序,输出以下图案* *** ***** -
佐苗青霉: 程序如下: #include<stdio.h> int main() { int i,j,k; for(i=1;i<=4;i++) //先打印上边的四行 { for(j=1;j<=4-i;j++) //控制要打印的空格数量 printf(" "); for(k=1;k<=2*i-1;k++) //控制要打印的星号数 printf("*"); printf("\n"); } for(i=1;i<=3;i++) { for(j=1;j<...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网