ubuntu+vim+gcc
首先,输入预处理指令#include <stdio.h>与函数原型void print(int n)。
其中,n表示行数。
然后,对输入的n进行提前判断,若小于0或为偶数,则结束打印。
接着对上半个菱形进行输出(包括最长的行)。使用两层循环进行输出,分别控制行数与行内的位置。
接着对下半个菱形进行输出(包括最长的行)。也使用两层循环进行输出,分别控制行数与行内的位置。
对n=5与n=7进行输出测试,代码如下。
编译运行后的结果如下
以下是所有的代码:
#include <stdio.h>
void print(int n)
{
//判断n是否符合正奇数的要求
if(n < 0 || n % 2 == 0)
//不符合则直接退出
return;
//对上半个菱形输出
int i = 1,j = 1;
//i控制行数
for(i = 1; i <= (n + 1) / 2; 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");
}
}
//测试函数,测试n=5和n=7
int main()
{
printf("5\n");
print(5);
printf("7\n");
print(7);
return 0;
}
用C语言编写程序输出菱形
C语言的功能十分强大,编写操作系统、应用软件、驱动程序,所有的一切都从基本C语句开始的,下面就是一个C语言编写的小程序,也能够反映出C语言的程序特点。希望对㢇爱好者有所启发和帮助。这是我很喜欢的一个C程序。
这是用C语言编写的一个输出"菱形"的程序。
这个程序主要是用循环结构,来输出打印星号组成的图形。
整个图形由9行星组成,(由一个循环来控制完成)。
每个行星号的个数,(由一个循环来控制完成)。
每行星号的输出位置,是由前面的空格决定的(由一个循环来控制完成)。
整个程序语句如下:
#include<stdio.h>
int main()
{
int a,b,c;
for(a=-4;a<=4;a )
{
for(b=1;b<=abs(a);b )
printf(" ");
for(c=1;c<=9-2*abs(a);c )
printf("*");
printf("\n");
}
return 0;
}
程序体的解释说明如下:
#include<stdio.h> include 称为文件包含命令,其意义是把尖括号<>内指定的文件包含到本程序中,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为.h而stdio为standard input output的缩写,意为"标准输入输出"。
int main()是一个整形的主函数。
int a,b,c;是定义了a,b,c三个整型变量。
for(a=-4;a<=4;a )是控制行数的循环,从-4到4共9行,行数不是从1到9,而是从-4到4,是为了该变量在后续的循环中帮助解决空格数和星号的个数有所用途。
for(b=1;b<=abs(a);b )原则上是输出空格的个数,实质上通过空格的个数来确定星号输出的位置。abs(a)是绝对值函数,其结果是4,就是空4个空格,从第5列开始输出下个循环的星号。
printf(" ");是输出空格。
for(c=1;c<=9-2*abs(a);c )是用来控制星号的个数,由于1到9行星号的个数是1、3、5、7、9、7、5、3、1。9-2*abs(a)是每行应输出星号的个数。这是实际应用中总结出来的算法,属于技巧。
printf("*");是输出星号。
printf("\n");是换行。
return 0; 返回主函数的值0。
请各C爱好者提出宝贵意见!