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. 控制流:箭头用于显示程序中的各个步骤或操作是如何顺序执行的。例如,在一个简单的流程图中,一个箭头可能从一个代表“输入数据”的矩形指向一个代表“处理数据”的矩形,然后再指向一个代表“输出结果”的矩形。这表明程序首先接收输入,然后处理这些数据,最后输出...
越博佐科: #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");