c语言输出一个菱形

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.hint main(){int line;  // 菱形总行数int column;  // 菱形总列数int i;  // 当前行int j;  // 当前列printf(“请输入菱形的行数(奇数):”);scanf(“%d”, line);if(line%2==0){  // 判断是否是奇数printf(“必须输入奇数!\n”);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(“\n”);}return 0;}

运行结果:请输入菱形的行数(奇数):11

*

***

*****

*******

*********

***********

*********

*******

*****

***

*

c语言输出一个菱形

用得着6个FOR循环码?

//打印棱形字母

//注意abs(i)+abs(j)=k

//用数学的角度分析(假设k为2)

//|x|+|y|=k

//y=  2 – x

//y=  x + 2

//y= -x – 2

//y=  x – 2

#include stdio.h

#include math.h

int main(void)

{

int i,j,k;

char ch;

printf(“请输入一个代写字母:”);

scanf(“%c”,ch);

k=ch-‘A’;

for(i=-k;i=k;i++)

{

for(j=-k;j=k;j++)

printf(abs(i)+abs(j)=k ? “*” : ” “);

printf(“\n”);

}

return 0;

}

不懂追问我

学过数学,自己画个图你就明白了

c语言输出一个菱形

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

int main()

{

 int i,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(“\n”);

 }

 return 0;

}

怎么用C语言输出一个菱形

上面画一个三角,下面画一个反三角。就是菱形了

这里的高度指的是三角行的高度

#include “stdio.h”

void main()

{

int h;

printf(“输入高度-》 “);

scanf(“%d”,h);

for(int i=1;i=h;i++)

{

for(int a=1;a=(h-i);a++)

{

printf(” “);

}

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

{

printf(“*”);

}

printf(“\n”);

}

for(int j=h-1;j=1;j–)

{

for(int a=1;a=(h-j);a++)

{

printf(” “);

}

for(int b=1;b=(j*2-1);b++)

{

printf(“*”);

}

printf(“\n”);

}

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月26日 10:12:09
下一篇 2024年3月26日 10:21:22

相关推荐

  • c语言weekday,char是什么意思C语言

    用c语言用户输入一个数字,你输入的数字XX代表X月X周X天。 “请输入年月日(XXXX,XX,XX)”运行后输出:XXXX年XX月XX日是星期X,是否继续查询(Y/N)?如果输入Y,则重新显示 “请输入年月日(XXXX,XX,XX)”,否则回到主菜单。 void main(){ int y,m,d,a;scanf(%d%d%d,&y,&m,&…

    2024年5月19日
    4600
  • 游戏学c语言,猜数游戏c语言

    我想要做游戏的话,我应该学java还是C语言好呢 1、综合以上几点考虑,我们得出结论:无论学习Java还是C语言都有其优势和适用场景,具体选择需根据自身情况进行判断。 2、不管你是要学习哪种语言,在学习上还是要看你个人的,你自已还是最主要的,不管你是学习哪种语言,只有当你对于这门语言有兴趣的时候,你才会有学习的想法,如果是一点都不感兴趣,真的要你来学,你也肯…

    2024年5月19日
    4300
  • 讨论c语言函数传递的几种形式,c语言中函数传递方式

    请教c语言 第一个不合法,c语言中不能用逗号做整数的分隔符,但可以加括号形成逗号表达式。如(1,234)是合法的。第二个是合法的,\x7是ASCII中BEL,控制发出响声, 并在屏幕上打印G。 如果希望看到正确的结果,你必须用dos时代的C语言编译器“TurboC0”来编译运行,而且必须用 Alt+回车 把屏幕转换成全屏模式,这样你就能看到正确的结果了,如我…

    2024年5月19日
    4000
  • 职工工资程序c语言,职工工资程序c语言编程

    C语言编程,输入n个职工的编号、姓名、基本工资、职务工资 1、//职工的工作证号,姓名,年龄,参加工作时间,//文化程度,工资等项内容。输出单位职工的平均年龄,平均工龄和平均工资,各年龄段职工人数。 2、该程序输入职工工号和应发工资,由系统对其完成的实发工资实现计算。其中职工信息包括职工号、姓名、性别、应发工资、税金、实发工资等(职工号不重复)。 C语言程序…

    2024年5月19日
    4300
  • c语言二维动态数组,c语言二维动态数组malloc

    C语言:键盘输入M和N,动态生成MxN二维数组,随机赋3位十进制整数,按行输… 1、for(j=0;j=m;j++)for(k=0;k=m;k++){ nums=getNum3(nums,i,j,k);if(!nums)return 1;printf(第%d个数字%d已记录。 2、题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析…

    2024年5月19日
    4200
  • 北理c语言乐学,c语言北京理工大学乐学

    程序调试,北理c语言乐学作业 1、打开我们的程序,点击菜单栏右侧的start/stopdebug..按钮,进入调试模式,如下图。左侧为寄存器窗口,右上方是汇编窗口,我们可以看到各个寄存器的数值和c语言对应的汇编代码,如下图。 2、优化程序代码:检查程序中是否存在冗余、重复计算或者低效算法等因素,对代码进行优化和精简,以提高程序的运行效率。延迟加载数据:考虑将…

    2024年5月19日
    3200
  • c语言数组拼接,c语言两数组拼接

    C语言中如何将两个二维数组合并为一个二维数组中。希望高手可以帮我把… 建立一个足够容纳两个数组所有元素的目标数组。如果规则规定将一个数组合并到另一个之中,那么需要保证目标数组有可以容纳两个数组的空间,否则会出现越界。2 遍历其中一个数组,并赋值到目标数组中。 请问如何使用C语言把两个数组合并在一个数组里?%d\n, buflen);strcpy(…

    2024年5月19日
    3400
  • c语言二维数组对角线求和,c语言二维数组输出对角线上的元素

    用c语言键盘输入二维数组a[3][3]元素,使用子函数(要求实参使用数组名… 1、第四然后用for语句进行循环。再用scanf语句进行接收输入到二维数组。5 /6 第五然后用两个for语言循环。再输出二维数组的数值。6 /6 第六然后用printf语句进行数据输出分格。这样一个二维数组就创建成功了。 2、还有就是数组的下表是从0开始,如果有3个元…

    2024年5月19日
    3900
  • 翻转二叉树c语言,二叉树翻转伪代码

    二叉树(C语言) 1、您好,想要实现一个二叉树,需要用到结构体来存储每个节点的信息,并使用指针来存储每个节点的左右子节点的地址。 2、在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。 3、只有一个根,没有…

    2024年5月19日
    3200
  • java判断输入回车,c语言判断输入回车

    Java:Scanner(System.in)获取的输入为什么带回车符? 当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。 因为Scanner类默认的分隔符就是空格,…

    2024年5月19日
    3300

发表回复

登录后才能评论



关注微信