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 #include 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;}
运行结果:请输入菱形的行数(奇数):11*************************************************************

#includeint main(void){ int i,j,k,n; printf("n="); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n+1-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) printf("%c",64+i); printf("
"); } for(i=1;i<=n-1;i++) { for(j=1;j<=i+1;j++) printf(" "); for(k=1;k<=2*(n-i)-1;k++) printf("%c",65+n-i-1); printf("
"); } return 0;}

此题解法,我将这个菱形放在了一个二维数组中,因为用二维数组可以界定X的边界,比较方便一点。 循环输出的时候,特别注意循环跳出的条件,你画个二维数组,体会一下里面的数学关系,多上机改改代码,呵呵。要特别注意 q 的用途哦。

#include<stdio.h>

 void main()

 {

 #define N 7    //定义二维数组的行和列

 int i,j;

 char a[N][N];

  int q=N/2;   //找到数组的中间列

  char t,p;   // 定义输出字符,t代表X,p代表Y

 printf("qing shu ru X,Y:
");

  scanf("%c,%c",&t,&p);  // 注意此处输入的时候,不要忘记“,”了哦

 for(i=0;i<N;i++)     //将二维数组的值全部先赋值为“空格”

 for(j=0;j<N;j++)

  a[i][j]=' ';

  for(i=0;i<q;i++)     //将菱形一分两半,这个是上半部分的输出,以中间列

  {

                       //为开始,向两边扩展,为了输出X ,注意i循环到q-1

    a[i][q-i]=t;

    a[i][q+i]=t;

   for(j=(q-i+1);j<(q+i);j++ )      //以两边的X列为边界,输出Y

   a[i][j]=p;

   }

   for(i=q;i<N;i++)          //这个是下半部分的输出,i从q开始循环到最后

   {

    a[i][q-(N-1-i)]=t;      //仍然是从中间列开始向两边扩散,输出X

    a[i][q+(N-1-i)]=t;

    for(j=(q-(N-1-i)+1);j<(q+(N-1-i));j++ ) //从X边界开始从做到右输出Y

   a[i][j]=p;

   }

  for(i=0;i<N;i++)

 {

   {for(j=0;j<N;j++)

    printf("%c",a[i][j]);}

     printf("
");

       }

    } 

我这里输出的是标准的菱形,中间的Y的个数和你给的不一样,如果你想要你的那种结果,只需要在输出Y的时候,将循环的边界再减一个,就可以了,不过图形是会变形,不会是菱形了。

上机运行的时候,把这些汉字清理了吧,要不可能编译出问题,好运~



字母的输出位置是不是对齐的?把原题目说清楚点?

#include <stdio.h>
#include <math.h>

#define ROW 3//这里的数值你可以改,自己试试就明白了

int main(void)
{
int i, j;
char X, Y;

printf("input X and Y:");
scanf("%c %c", &X, &Y);

for (i=-ROW; i<=ROW; i++)
{
for (j=0; j<=2*ROW-abs(i); j++)
{
if (abs(i) > j)
printf(" ");
else if ((abs(i) == j) || (2*ROW-abs(i) == j))
printf("%c", X);
else
printf("%c", Y);
}
printf("\n");
}

return 0;
}

题目是不是错了,你这个不是标准的菱形


VFP编程:输出星号构成的菱形。
for j=1 to abs(i)。Visual FoxPro 6.0 支持具有对象的链接与嵌入(OLE)拖放,可以在 Visual FoxPro 6.0 和其他应用程序之间,或在 Visual FoxPro 6.0 应用程序内部移动数据。Visual FoxPro 6.0 增加了面向对象的语言和方式。借助 Visual FoxPro 6.0 的对象模型,可以充分使用面向对象程序设计的...

VB编程,数字菱形以及字符菱形
Dim n%, st$ 'st为控制所显示字符或数字变量n = InputBox("请输入数字菱形行数,必须为奇数", "数字菱形")m = (n + 1) \/ 2For i = 1 To m st = Chr(Asc(i)) Print Tab(m + 1 - i); String(2 * i - 1, st),NextFor i = m + 1 To n st = Chr(Asc(i...

使用流程图表示算法时用什么表示判断
在实际的算法设计中,流程图是一种非常有用的工具。通过绘制流程图,我们可以清晰地了解算法的执行过程,发现可能存在的问题,并进行优化。此外,流程图还可以作为算法的文档,方便其他程序员进行理解和维护。因此,在学习算法设计的过程中,掌握流程图的绘制方法是非常重要的一步。

C语言程序设计教程答案~有追加悬赏100分!
1 【C语言】《C语言程序设计教程(第二版)》习题答案 说明1. 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理 工大学出版社出版的,绿皮。2第1章 程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面...

C语言 菱形字母塔设计
要是贴代码的话,查看方便,修改方便,还能调试。现在,花时,费力,还不能保证正确:

c语言程序设计基础题求语句执行结果
10,34567,-134.56,A 10,a,12 (你上面2那里表达有错误,三个格式化,但对应四个XXXXX,哎悲哀啊)我学一年都没有见过第三的那种情况,错误!e是以指数形式输出(3.45670e+004)do_while是先运行一次在判断 下面是一个菱形有两个出口假的向下真的回到上面 上面是正方形 (完)...

用C语言制作一个简单实用菜单的程序。
include <iostream>#include <stdlib.h>#include <conio.h>#include <ctype.h>using namespace std; void xuanzepaixu() \/\/选择排序函数 { printf("待添加,请按任意键继续..."); getchar(); } void erfenpaixu() \/\/二分查找函数 { printf("待添加,请按任意键继续..."); ...

c语言中数据处理的过程用图标怎样表示?
计算机语言只是一种工具。光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法。有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作。因此,设计算法是程序设计的核心。用图表示的算法就是流程图。流程图是用一些图框来表示各种类型的...

C++课程设计的流程图怎么写?
判断逻辑呗,就是不断的if else 比如下图:首先说下流程图的各个部分的意思,其中椭圆形的START和END代表程序的起止部分,是不对应代码的;方形和菱形的部分是程序的具体运行过程,方形代表顺序操作,菱形代表判断语句;下面是该流程图对应的代码,各个部分对应的代码都有注释,该程序用于计算两个...

程序流程图中的箭头代表
1. 控制流:箭头用于显示程序中的各个步骤或操作是如何顺序执行的。例如,在一个简单的流程图中,一个箭头可能从一个代表“输入数据”的矩形指向一个代表“处理数据”的矩形,然后再指向一个代表“输出结果”的矩形。这表明程序首先接收输入,然后处理这些数据,最后输出...

攀枝花市15125906631: 如何用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

攀枝花市15125906631: C语言程序设计,做一个菱形图案 -
越博佐科: #include <stdio.h> #include <math.h>void PrintStar(int n) {int i, j;int h = n/2 + 1;for(i = 1; i <= n; ++i){for(j = 1; j <= abs(h-i); ++j)putchar(' ');for(j = 1; j <= -abs(2*(i-h))+n; ++j)putchar('*');putchar('\n');} }int main() {int n;printf("请输出菱形...

攀枝花市15125906631: C语言基础题,输出一个菱形图! -
越博佐科: #include <stdio.h> int main() { char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};//char diamond[5][5] int i,j; for(i=0;i<5;i++)//5次循环 { for(j=0;j<5;j++)//5次循环 printf("%c",diamond[i][j]);//因为是二重循环,此语句执行25次,j增加5次i增加1次 printf("\n");//菱形一共5行,每输出一行换行一次 } return 0; }

攀枝花市15125906631: *菱形怎样用c语言编程输出?
越博佐科: void four()//菱形 { int x; printf("\t\t\t**\t菱形\t**\n"); printf("\t\t\t请您输入需要的尺寸:"); scanf("%d",&x); for(int i=1;i<=x;i++) { for(int j=1;j<=x-i;j++) printf(" "); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); } for(i=1;i<=x-1;i++) { for(int j=1;j<...

攀枝花市15125906631: 用c语言怎么弄*输出菱形啊
越博佐科: #include <stdio.h> void print_diamond(int n) {for (int i=1; i<=n; i++) { // top row 1~nfor (int j=1; j<=n-i; j++) printf(" "); // blank spacefor (int j=1; j<=2*i-1; j++) printf("*"); // mark *printf("\n");}for (int i=n-1; i>=1; i--) { // bottom row n-1~2*n-1...

攀枝花市15125906631: 用c语言编写一个函数,按照给定的行数打印菱形图案 -
越博佐科: #include <stdio.h> void print(int k) {int i,j,n;n = k/2+1; for(i = 0;i<n;i++){for(j=0;j<n-i; j ++)putchar(' ');for(j = 0; j<2*i+1; j++)putchar('*');putchar('\n');}for(i = n-2; i>=0; i --){for(j=0;j<n-i; j ++)putchar(' ');for(j = 0; j<2*i+1; j++)putchar('*');...

攀枝花市15125906631: 怎么用C语言编程输出空心菱形 -
越博佐科: /*用*输出一个菱形的标志*/ #includeint main(void) { int N = 0; printf("请输入行数(必须为单数):"); scanf("%d", &N); if(N%2 == 0) { return ; } int i; int j; int k; for(i = N / 2 * (-1); i

攀枝花市15125906631: 用C语言编程输出*排成的菱形是怎么编? -
越博佐科: #include"stdio.h" int main() { for(int i=-3;ifor(int j=0;j0?i:-i);j++) printf(" "); for(j=0;j0?-2*i+7:2*i+7);j++) printf("*"); printf("\n"); } return 0; }

攀枝花市15125906631: C语言输出如下图形菱形 * *** ***** ******* ***** *** * -
越博佐科: 刚才我发现楼上的也不对 应该是#include<stdio.h>#include<math.h> main() { int i,j,k; for(i=-3;i<=3;i++) { for(j=0;j<fabs(i);j++) printf(" "); for(k=0;k<7-2*fabs(i);k++) printf("*"); printf("\n"); } return 0; }

攀枝花市15125906631: c语言输出菱形图案:在屏幕上显示下列菱形图案. A A A -
越博佐科: 1 2 3printf(" A"); printf("A A"); printf(" A");

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