c语言如何输出图案

作者&投稿:路咱 (若有异议请与网页底部的电邮联系)
c语言输出菱形图案~


下面对代码进行解释:
首先定义两个宏用MIDDLE值得第一个*在40列出输出,而STAR则代表多个“*”或“0”的字符,11行输入n值,则输出的行数为和中间最宽的那一行均为2*n-1,第一个for循环用于输出上三角,第二个则输出下三角。相对应的输出sp-1个空白符的时候,同时输出2*i-1个“*”或“0”字符,这个有我们自己定,这里有必要解释一下,关于17行语言的代码:
printf("%*c %.*s
", sp - 1, ' ', 2*i-1, STAR);
首先说一下关于%*中的*号,在这里叫做赋值抑制符。他的作用是:标准说法:星号(赋值抑制符)对赢的输入项按要求被扫视输入,但结果不存贮,带星号的说明不对应输入数据存贮地址,用它来跳出一个输入数据项(这是向对于scanf输入来说的),
在这里,对于printf来说,以11行代码为例,%*c字符“*”表示输出域由对应的输出项来确定,上述“*”对应的输出项是sp-1(假设sp-1等于4),那么%*c就相当于%4c,那么他就以%4c的格式输出' ' (空格)。 同样的对应%.*s也相类似,但这里注意了为%.*s而非%*s
(里面有点'.'),如果你误写成后者,这样会得不到正确的结果哦!那么%.*s 和%*s到底有什么区别呢?%*s用法类似于%*c,
c输出元值为其ASCII码的字符,而s则代表输出的一个字符串,
(1)用格式符“%c”输入或输出一个字符,即逐个字符输入输出。
(2)用“%s”,则将整个字符串一次输入或输出。
举例:如果S = ABCDEF
那么对于printf("%3s, %4.2s, %-7.4s, %.5s", s, s, s, s);则输出
ABCDEF, AB,ABCD ,ABCDE
如果懂了这个,相信大家也就知道%.*s怎么用了吧!
这里值得一提的是,对于宏STAR的定义里面的字符数必须做够多,否则当我们把n输入很多后,可能自得不到我们预期的结果,即输出的可能就不会是菱形了,这个大家可以验证一下,那么这是为什么了,因为%.*s的输出总要依赖于STAR,当前要求输入很大时,而STAR有不够提供,那么当然会出现问题了,利用STAR的字符数多少,我们还可以相应的变换输出的图案,可以实现多种不同的图形哦,有兴趣不妨试一下。

输出苹果图案程序如下:
#include
int t;//定义全局变量,用于循环
char tab[] = {//储存用于输出图形的数组
0,1,1,0,0,1,1,0,
1,0,0,1,1,0,0,1,
1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,1,
0,1,0,1,1,0,1,0,
0,0,1,0,0,1,0,0,
};
void main()
{
for (t = 0; t < 49; t++)
{
if (t % 8 == 0)//上面数组每8个一行,则在此处每8个换行
printf("
");
if (tab[t] == 0)//数组元素为0,则输出空格
printf(" ");
else//数组元素不为零,则输出*号
printf("*");
}
}
输出结果如下:


扩展资料:
此程序能达到上述程序同样效果,但是自行设定循环次数来打印图片
#include
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("
");
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i;j++) //控制要打印的空格数
printf(" ");
for(k=1;k<=7-2*i;k++) //控制要打印的星号数
printf("*");
printf("
");
}
return 0;
}

在C语言中要输出一个图案还是比较方便的,主要要看清楚它是由多少行组成的,然后外循环就循环多少次。在每一次的外循环中完成一行的输出,这时要看清楚他有没有几个空格,然后再输出指定的若干个字符。等到这一行输出完成以后就换行。

用C语言输出一个五角星图案
答:我用VC6实现了。关键代码如下:1、获得五个外顶点的坐标:int m_xw[5]; //5个X外顶点坐标 int m_yw[5]; //5个Y外顶点坐标 void CMyTestView::getCoord(){ int c = 360 / 5; //角度 int r = 150;for (int i = 0; i < 5; i++){ m_xw[i] = (int) (cos(i ...

如何用C语言输出一下图案?
答:include<stdio.h> int main(){ int i,n;scanf("%d",&n);for(i=1; i<n; i++)printf("%*d%*d\n",2*i,i,4*(n-i),i);printf("%*d\n",2*i,i);return 0;}

c语言输出菱形图案
答:相对应的输出sp-1个空白符的时候,同时输出2*i-1个“*”或“0”字符,这个有我们自己定,这里有必要解释一下,关于17行语言的代码:printf("%*c %.*s\n", sp - 1, ' ', 2*i-1, STAR);首先说一下关于%*中的*号,在这里叫做赋值抑制符。他的作用是:标准说法:星号(赋值...

如何用c语言打印图案M
答:include<stdio.h> int main(){int i,j,n;scanf("%d",&n);for(i=0;i<=n;i++){for(j=0;j<=n+n;j++)printf("%c",j==0||j==n+n||j==i||j==n+n-i?'#':' ');printf("\n");} return 0;}

c语言输出星号图案
答:输出星号,主要是锻炼我们使用循环语句的能力。根据图形的规律,研究出循环方法和控制条件,进而编写代码,输出结果,参考代码和运行结果如下:本代码,可以输出任意高度的图形 do {} while();循环是用来控制测试笔数的,当输入数值小于等于0时,结束测试 ...

C语言编程:输入高度H(表示图案行数),输出下面图案。
答:include<stdio.h> int main(){int i,j,H;scanf("%d",&H);for(i=0;i<H;i++){for(j=-2;j<i;j++)printf(" ");for(j=0;j<H-i;j++)printf("*");printf("\n");} return 0;}

c语言如何打印V形图案
答:include<stdio.h>int main(){int n,i; scanf("%d",&n); for(i=1;i<n;i++) printf("%*s%*s\n",i,"V",2*(n-i),"V"); printf("%*s\n",n,"V"); return 0;}

c语言图案输出
答:第一个:include<iostream> using namespace std;int main (){ int i,j;for (i=1;i<=5;i++){ for(j=1;j<=i;j++){ cout<<"*";} cout<<endl;} cout<<endl;cin.get();//用于停顿...return 0;} 第二个:include<iostream> using namespace std;int main (){ int i,j;for...

C语言编程,输出一下图案
答:提供2个 include<stdio.h> void 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++){ fo...

怎么用C语言的循环语句输出钻石图案?
答://ok啦,如果有疑问,欢迎交流#include<stdio.h>int main(){int i,j;for(i = 0; i<4;i++)putchar(' ');for(i = 0; i<9; i++)putchar('*');putchar('\n');for(i = 1; i <=13; i+=4){for(j = 0; j<(i/4+1) * 2; j++)putchar(' ');for(j = 0; j...