c语言输出空心菱形

目描述向标准输出上打印一些用ASCII字符组成的图形。输入输入为多个奇数n,1<n<100,至文件尾结束。输出输出为多个n层的空心菱形,任意两个图形之间有一个空行分隔,格... 目描述
向标准输出上打印一些用ASCII字符组成的图形。

输入
输入为多个奇数n,1<n<100,至文件尾结束。

输出
输出为多个n层的空心菱形,任意两个图形之间有一个空行分隔,格式见sample。

样例输入
3
7

样例输出
*
* *
*

*
* *
* *
* *
* *
* *
*
展开
 我来答
刺友互
高粉答主

2019-07-11 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:72.9万
展开全部

1、首先,输入预处理指令#include <stdio.h>与函数原型void print(int n)。其中,n表示行数。

2、然后,对输入的n进行提前判断,若小于0或为偶数,则结束打印。

3、接着对上半个菱形进行输出(包括最长的行)。使用两层循环进行输出,分别控制行数与行内的位置。

4、接着对下半个菱形进行输出(包括最长的行)。也使用两层循环进行输出,分别控制行数与行内的位置。

5、对n=5与n=7进行输出测试。

6、得到最后结果。

爽朗的晓星尘
2018-12-25
知道答主
回答量:22
采纳率:0%
帮助的人:1.6万
展开全部
用最简单的方法,好理解,但是代码多了一点:
public static void main(String[] args) {
//空心菱形上部分
for (int hui = 0; hui < 7; hui++) {
for (int shou = 0; shou < 6 - hui; shou++) {
System.out.print(" ");//菱形外空部分(上面)
}
for (int tuo = 0; tuo < 1; tuo++) {
System.out.print("*");
}
if (hui != 0) {//等于0时不运行,比前面的“*”上少一个
for (int hu = 0; hu < hui * 2 - 1; hu++) {
System.out.print(" ");//菱形内空部分(上面)
}

for (int hu = 0; hu < 1; hu++) {
System.out.print("*");
}
}
System.out.println();
}

//空心菱形下部分
for (int soso = 0; soso < 7; soso++) {
for (int sos = 0; sos < soso; sos++) {
System.out.print(" ");//菱形外空部分(下面)
}
for (int so = 0; so < 1; so++) {
System.out.print("*");
}
if (soso != 6) {//等于6时不运行,减掉最后请多余的“*”
for (int so = 0; so < (7 - soso) * 2 - 3; so++) {
System.out.print(" ");//菱形内空部分(下面)
}
for (int so = 0; so < 1; so++) {
System.out.print("*");
}
}
System.out.println();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华下儿女
2013-12-12 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:93.5万
展开全部
void main()
{
//输入任意一个100以内奇数n,输出一个n层菱形
int i, j;
int row; //输入的奇数(菱形的行数)
int leftcol;//左边空格的列数;
int center;//奇数的平均值
//此例以21为例
row = 21;
center = row/2;
leftcol = center;
//菱形上半部分
for (i=0; i<center+1; i++)
{
for (j=0; j<center-i; j++)
{
printf(" ");
}
for (j=0; j<=2*i; j++)
{
printf("*");
}
printf("\n");
}
//菱形下半部分
for (i=center; i>0; i--)
{
for (j=center-i+1; j>0; j--)
{
printf(" ");
}
for (j=2*i-1; j>0; j--)
{
printf("*");
}
printf("\n");
}
return;
}
测试成功了,直接编译运行即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2013-12-12 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6645万
展开全部
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void main(void){
char i,ci,j,cj,n,x,a[20];
printf("Enter some odd(0<n<100,0 end)...\n");
i=0;
while(1){
scanf("%d",a+i);
if(a[i++]==0) break;
}
printf("\n\n");
for(n=0;a[n];n++){
for(x=a[n]/2+1,i=1,ci=0;i;++ci<x ? i++ : i--){
printf("%*.*s",48-i,1,"");
for(j=1,cj=i;j;--cj>0 ? j++ : j--)
printf("%c",j==1 ? '*' : ' ');
printf("\n");
}
printf("\n");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓉雪球
推荐于2017-09-01 · TA获得超过8998个赞
知道大有可为答主
回答量:2846
采纳率:79%
帮助的人:714万
展开全部
#include<stdio.h>
int main()
{
int i,j,k,line,m;
printf("请输入行数:");
scanf("%d",&line);
m=(line+1)/2;
for(i=1;i<=m;i++)
{
for(k=0;k<m-i;k++)
{
printf(" ");
}
printf("*");
if(i==1){printf("\n");continue;}
for(j=0;j<2*i-3;j++)
{
printf(" ");
}
printf("*");
printf("\n");
}
for(i=m-1;i>0;i--)
{
for(k=0;k<m-i;k++)
{
printf(" ");
}
printf("*");
if(i==1){printf("\n");continue;}
for(j=0;j<2*i-3;j++)
{
printf(" ");
}
printf("*");
printf("\n");
}
return 0;
}

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式