沙漏c++、python、java、c题解

说明

赵老师最近在编一个操作系统,正好编到鼠标的繁忙状态,需要一个沙漏符号,正好大家都在学C++,你的任务就是帮赵老师编一个程序打印一个沙漏符号。

输入格式

一个整数n,符号的行数(保证n是大于1的奇数)

输出格式

沙漏符号,使用“*”打印

样例

输入数据 1

5

输出数据 1

*****
 ***
  *
 ***
*****

AC代码 :c++(O2优化)

#include<iostream>
using namespace std;

int main(){
	int i,j,n,y,x;
	cin>>n;
	n=(n+1)/2;
	//ÕýÈý½Ç 
	for(i=n;i>=1;i--){
		if(i==1){
			
		}else{
			for(j=1;j<=n-i;j++){
			cout<<" ";
			
		    } 
		}
		
		if(i==1){
			
		}else{
			for(j=1;j<=2*i-1;j++){
			cout<<"*";
		    }
		}
		
		if(i==1){
			
		}else{
			cout<<endl;
		}
		
		
	} 
	for(i=1;i<=n;i++){
		for(j=1;j<=n-i;j++){
			cout<<" ";
			
		}
		for(j=1;j<=2*i-1;j++){
			cout<<"*";
		}
		cout<<endl;
	}
	
} 

AC代码 :C(OJ)

#include<stdio.h> 


int main(){ 
	int n,i,j,z;
	scanf("%d",&n);
	//控制输出的行数 
	for(i = n;i >= 1;i-=2){
		//控制每行输出空格量 
		for(j = 0;j < (n-i) / 2;j++){
			printf(" "); 
		}
		//控住输出的*
		for(z=1;z <= i;z++){
			printf("*");
		} 
		//负责换行 
		printf("\n");
	}
	
	for(i = 3;i <= n;i+=2){
		//控制每行输出空格量 
		for(j = 0;j < (n-i) / 2;j++){
			printf(" "); 
		}
		//控住输出的*
		for(z=1;z <= i;z++){
			printf("*");
		} 
		//负责换行 
		printf("\n");		
	} 

	
	return n; 
} 

AC代码:Java 

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		int k=0;
		if(n%2==1){
			k=n/2+1;
		}else{
			k=n/2;
		}
		for(int i=1;i<=k;i++){	
			for(int j=1;j<i;j++){
				System.out.print(" ");
			}
			for(int j=1;j<=n-2*i+2;j++){
				System.out.print("*");
			}		
			System.out.println();
		}
		for(int i=1;i<=k-1;i++){	
			for(int j=1;j<k-i;j++){
				System.out.print(" ");
			}
			for(int j=1;j<=2*i+1;j++){
				System.out.print("*");
			}		
			System.out.println();
		}
	}
}

AC代码:Python 

n = int(input());  
for i in range(1, n//2 +1 ):
    for k in range(1, i):
      print(end=' ')
    for x in range(1 ,n - (i -1)*2+1):
        print('*', end = '')
    print()
for a in range (1, n//2 + 2 ):
    for b in range (1, n // 2 +1 - a + 1 ):
        print('',end=' ')
    for c in range (1, 2*a ):
        print('*' ,end='')
    print()
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值