当前位置:首页 » 编程语言 » c语言编程打印菱形
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言编程打印菱形

发布时间: 2022-06-27 05:04:54

c语言输出一个菱形图案(有程序)


菱形,就是如下所示的图形,总行数与总列数相等:
写一个程序,根据用户输入的总行数,打印出菱形。

这个题目主要是找出规律,考察读者的逻辑思维。

你可以从第一行开始,遍历所有的列,也可以从第一列开始,遍历所有的行。

下面的程序从第一行开始,遍历所有的列。

设菱形的总行数为line,总列数为column,当前行为i,当前列为j。上半部分与下半部分的规律不一样,应该分开讨论。

我们着眼于星号(*),思考什么条件下输出星号,总结出如下的规律。

1) 对于上半部分(包括中间一行),当前行与当前列满足如下关系输出星号:

  • j>=(column+1)/2-(i-1) (column+1)/2-(i-1)为第i行最左边的星号

  • j<=(column+1)/2+(i-1) (column+1)/2+(i-1)为第i行最右边的星号


  • 2) 对于下半部分,当前行与当前列满足如下关系输出星号:


  • j>=(column+1)/2-(line-i) (column+1)/2-(line-i)为第i行最左边的星号

  • j<=(column+1)/2+(line-i) (column+1)/2+(line-i)为第i行最右边的星号


  • 不满足上述条件,则输出空格。



  • 于是写出如下的代码:纯文本复制


  • #include <stdio.h>#include <stdlib.h>int main(){int line; // 菱形总行数int column; // 菱形总列数int i; // 当前行int j; // 当前列printf("请输入菱形的行数(奇数):");scanf("%d", &line);if(line%2==0){ // 判断是否是奇数printf("必须输入奇数! ");exit(1);}column = line; // 总行数和总列数相同for(i=1; i<=line; i++){ // 遍历所有行if(i<(line+1)/2+1){ // 上半部分(包括中间一行)for(j=1; j<=column; j++){ // 遍历上半部分的所有列if( (column+1)/2-(i-1)<=j && j<=(column+1)/2+(i-1) ){printf("*");}else{printf(" ");}}}else{ // 下半部分for(j=1; j<=column; j++){ // 遍历下半部分的所有列if( (column+1)/2-(line-i)<=j && j<=(column+1)/2+(line-i) ){printf("*");}else{printf(" ");}}}printf(" ");}return 0;}


㈡ 用C语言打印菱形图案的方法是什么

  1. 下面的程序是菱形打印的【终结者】,改变下设置,就基本可以满足所有菱形打印的题目。程序主体 for 语句只有9行,简单而强大 */#include <stdio.h>#include <stdlib.h>#include <string.h>// 这个小函数用来输出 repeatTimes 个字符

  2. #includevoid main(){printf(" * ");printf(" *** ");printf(" ***** ");printf(" *** ");printf(" * ");} 这是最简单的。下面一个稍微复杂一点。#includevoid main(){int i=0,j=0,k=0;for(i=0;i{for(j=6-i;j>=0;j--){putchar(' ')...

  3. 手机党输入#include"stdio.h"main(){printf(" * ");printf(" * * ");printf(" * * ");printf(" * * ");printf(" * ");}

㈢ C语言编程打印菱形的数字图表

#include "stdio.h"

int main() {

int n,i,j;

while(scanf("%d",&n)) {

for(i=1; i<=n; i++) {

for(j=1; j<=n-i; j++) //画空格

printf(" ");

for(j=1; j<=i; j++)

printf("%d",j);//输出从1到n

for(j=i-1; j>=1; j--)

printf("%d",j);//输出从n-1到1

printf(" ");

}

for(i=n-1; i>=1; i--) {

for(j=1; j<=n-i; j++) //画空格

printf(" ");

for(j=1; j<=i; j++)

printf("%d",j);//输出从1到n

for(j=i-1; j>=1; j--)

printf("%d",j);//输出从n-1到1

printf(" ");

}

}

return 0;

}

(3)c语言编程打印菱形扩展阅读:

书写规则

1、一个说明或一个语句占一行。

2、用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3、低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

网络-c语言

㈣ 用C语言编程输出菱形 图案

#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(" ");
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i;j++) //控制要打印的空格数
printf(" ");
for(k=1;k<=7-2*i;k++) //控制要打印的星号数
printf("*");
printf(" ");
}
}

(4)c语言编程打印菱形扩展阅读:

for循环

for循环结构是c语言中最具有特色的循环语句,使用最为灵活方便,它的一般形式为:

for(表达式1;表达式2;表达式3)循环体语句 。(其中;不能省略)

表达式

表达式1为初值表达式,用于在循环开始前为循环变量赋初值。

表达式2是循环控制逻辑表达式,它控制循环执行的条件,决定循环的次数。

表达式3为循环控制变量修改表达式,它使for循环趋向结束。

循环体语句是在循环控制条件成立的情况下被反复执行的语句。

但是在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次,也可能一次也不计算。循环体可能多次执行,也可能一次都不执行。

先执行表达式2,然后执行循环结构,最后表达式3,一直这样循环下去。

for循环语句是c语言种功能最为强大的语句,甚至在一定程度上可以代替其他的循环语句。

do

do循环结构,do 1 while⑵;的执行顺序是1->2->1...循环,2为循环条件。

while

while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件

以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

㈤ C语言打印菱形详细讲解

/*下面的程序是菱形打印的【终结者】,
改变下设置,就基本可以满足所有菱形打印的题目。
程序主体 for 语句只有9行,简单而强大
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 这个小函数用来输出 repeatTimes 个字符 c
void printChar(char c,int repeatTimes)
{
int i;
for(i=0;i<repeatTimes;i++)
printf("%c",c);
}
/*
特别的函数,获取当前要打印的下一个菱形图案
height : 菱形的高
shapeVariantStep : 变化的步数
baseShape : 菱形的基本图案
row : 当前打印的菱形图案的行坐标。
col : 当前打印的菱形图案的列坐标。
*/
char _buffer_[2]={0};
char* getShape(int height,int shapeVariantStep,char baseShape[],int row,int col)
{

int first = baseShape[0],last = first +(height-1)/2*shapeVariantStep;
if(shapeVariantStep==0 || strlen(baseShape)!=1)
return baseShape;
else
{
if( first>='0'&&first<='9'&&last<='9' ||
first>='a'&&first<='z'&&last<='z' ||
first>='A'&&first<='Z'&&last<='Z'
)
{
_buffer_[0] = first + ((height-2*abs(row)-1)/2 - abs(col))*shapeVariantStep;
_buffer_[1] = '\0';
return _buffer_;
}
else
{
return baseShape;
}
}
}

int main(int argc, char *argv[])
{
// 菱形的图案
char shape[]="*";
// 菱形图案间的空白图案
char space=' ';
// 每个图案之间的最小间隔(以一个字符为单位,不足用空白图案填充)
int interval=5;
// 菱形的高(要求是奇数)
int height=7;
// 菱形是否空心(只有边上的图案)。是:1,否 0
int isHollow=0;
/* 特别的参数:设定菱形的图案是变化。
只有指定 shape 为 :
"0","1",...,"9",
或者 "a","b",...,"z",
或者 "A","B",...,"Z" 其中之一,
并且要保证从指定图形开始,后面至少还有连续的:
(height-1)/2*shapevariantStep
个可选的图形,菱形的图形才会是可变的。

*/
int shapeVariantStep = 0;

int i,j,k,n;
interval = interval < strlen(shape)?strlen(shape):interval;
for(i=-(height-1)/2;i<=(height-1)/2;i++)
{
// 用来输出每行前的空白
printChar(space,abs(i)*interval);
// 这个 for(j) 语句用来输出每行的菱形图案
for(j=-(height-2*abs(i)-1)/2;j<=(height-2*abs(i)-1)/2;j++)
{
// 如果是非空心,输出所有图案;否则只输出两端的图案。
if(!isHollow || (isHollow && (j==0 || j==height-2*abs(i)-1)))
{
n=printf("%s",getShape(height,shapeVariantStep,shape,i,j));
// 补齐为到宽度为 interval
printChar(space,interval-n);
}
// 对于空心的菱形,在本应该输出图案的地方,输出空白。
else
{
printChar(space,interval);
}
}
// 这个 for(j) 语句用来输出每行后的空白
printChar(space,abs(i)*interval);
printf("\n");
}
return 0;
}
/*
运行结果:
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*

shape[]="**";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
**
** ** **
** ** ** ** **
** ** ** ** ** ** **
** ** ** ** **
** ** **
**

shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
...............*...................
..........*....*....*..............
.....*....*....*....*....*.........
*....*....*....*....*....*....*....
.....*....*....*....*....*.........
..........*....*....*..............
...............*...................

shape[]="*";
space[]=" ";
interval=0;
height=7;
isHollow=0;
shapevariantStep = 0
*
***
*****
*******
*****
***
*

shape[]="*";
space[]=" ";
interval=5;
height=11;
isHollow=0;
shapevariantStep = 0
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=1;
shapevariantStep = 0
*
* *
* *
* *
* *
* *
*

shape[]="A";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
shape[]="a";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
a
a b a
a b c b a
a b c d c b a
a b c d e d c b a
a b c d e f e d c b a
a b c d e f g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g h i h g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g f e d c b a
a b c d e f e d c b a
a b c d e d c b a
a b c d c b a
a b c b a
a b a
a

shape[]="1";
space[]=" ";
interval=5;
height=9;
isHollow=0;
shapevariantStep = 2
1
1 3 1
1 3 5 3 1
1 3 5 7 5 3 1
1 3 5 7 9 7 5 3 1
1 3 5 7 5 3 1
1 3 5 3 1
1 3 1
1

*/

㈥ C语言编程打印菱形的数字图表

摘要 您好,很高兴为您解答。#include

㈦ 如何用c语言显示菱形

  • 1

    运用C语言程序输出一个菱形:

    源代码为:

    #include<stdio.h>

    void main()

    {

    int n=6;

    int i,a,b;

    //前4行.上半部分

    for( i=1;i<=n;i++)//控制行数

    {

    for( a=n-1;a>=i;a--)//打印空格

    {

    printf(" ");

    }

    for( b=1;b<=2*i-1;b++)//打印*

    {

    printf("*");

    }

    printf(" ");

    }

    //后3行,下半部分

    for( i=n-1;i>=1;i--)

    {

    for( a=i;a<=n-1;a++)

    {

    printf(" ");

    }

    for( b=1;b<=2*i-1;b++)

    {

    printf("*");

    }

    printf(" ");

    }

    }

㈧ c语言怎么打印菱形

#include <stdio.h>
int main()
{
int i,j,m,n;
printf("请输入菱形的行数:");
//判断n是否符合正奇数的要求
while (scanf("%d", &n) != EOF && n % 2 == 1)
{ //对上半个菱形输出
for (i = 1; i <= (n + 1) / 2; i++)
{
//i控制行数,j控制每一行的位置
//输出空格
for (j = 1; j <= (n + 1) / 2 - i; j++)
printf(" ");
//输出*
for (j = 1; j <= 2 * i - 1; j++)
printf("*");
//输出换行
printf("\n");
}
//输出下一半
//i控制行数
for (i = 1; i <= n / 2; i++)
{
//j控制每一行的位置
//输出空格
for (j = 1; j <= i; j++)
printf(" ");
//输出*
for (j = 1; j <= n - 2 * i; j++)
printf("*");
//输出换行
printf("\n");
}
}
return 0;
}

㈨ c语言输出菱形

按照题目要求编写的C语言输出菱形的程序如下(其中abs()是求绝对值的函数)

#include<stdio.h>

#include<stdlib.h>

intmain()

{

inti,j,N,n;

scanf("%d",&N);

n=(N+1)/2;//计算菱形上层层数

for(i=1;i<=N;i++){

for(j=1;j<=abs(n-i);j++){

printf("");

}

for(j=1;j<=N-2*abs(i-n);j++){

printf("*");

}

printf(" ");

}

return0;

}

㈩ 如何用c语言编程题输出菱形图形

#include "stdio.h" void PrintDiamend(int n) { int i,j,k; if(n==0) n=1; for(i=1;i<=n;i++) { for(j=i;j<n;j++) printf(" "); for(k=1;k<i+1;k++) printf("*"); for(k=1;k<i;k++) printf("*"); printf("\n"); } for(i=1;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(k=i;k<n;k++) printf("*"); for(k=i;k<n-1;k++) printf("*"); printf("\n"); } } int main() { PrintDiamend(4); return 0; }