输出图形(循环程序,任意字符) 三角形、矩形、平行四边形、菱形_c语言编程pta显示矩形while循环-程序员宅基地

技术标签: 三角形 矩形 平行四边形 菱形  

接触C有一段时间了,看多好次输出各种图形的练习题,自己也曾经编写过,今天整理在一起,为了给自己留下记录,也为了跟同样在学习路上的朋友们一起交流;

代码采用主函数、分函数结构

实现以下功能

1、选择性输出 想要的图形 以及 图形大小

2、循环功能,主动选择退出

3、键盘任意输入,只有符合要求的输入(0~4)被执行,其他均为非法输入,返回程序,重新选择

4、屏蔽输入结束时的“回车”,用函数 fflush(stdin);   这个函数的作用是清除缓存,为下一次输入做准备

部分截图:

以下是代码:供参考

/*输出图形小程序*/
#include "stdio.h"
#include "stdlib.h"
//声明函数,三角形、矩形、平行四边形、菱形 
int sanj();
int juxi();
int pinx();
int ling();
void main()
{
	int a;
	printf("*******输出图形小程序*******\n\n\t【1】三角形\n\t【2】矩形\n\t【3】平行四边形\n\t【4】菱形\n\t【0】退出\n\n");
	printf("请选择要执行代号: ");
	//scanf("%d",&a); 			//这种取值方法只能取数值 
	a=getchar();				//键盘获取任意字符 
	printf("\n\n");
	a=a-'0';				   //将字符转换为ASCII码 ,并与 ’0‘ 比较大小 
	if(!(a>=0&&a<=4))  a=5;    //对于比值不是 0-4 之间的的数统一赋值为 5 (不是0~4的都可以) 
	switch(a)				   //进入对应的函数	
	{
		case 1: sanj();break;
		case 2: juxi();break;
		case 3: pinx();break;
		case 4: ling();break;
		case 0: exit(0);
		default: printf("选择错误,返回主程序\n\n");
				 fflush(stdin);		//这个函数的作用是清除缓存,返回主函数之前使用, 为下一次取值做准备
				 main();			//返回主函数 
	}
}

int sanj()			//输出三角形 函数 
{	int s1,s2,s3,s;
	printf("【1】三角形  行数:  ");
	scanf("%d",&s);
	printf("\n\n ");
	s3=s*2-1;
	printf("\n");
	for(s1=1;s1<=s;s1++)
	{	printf("\t");
		for(s2=1;s2<=s-s1;s2++)printf("  ");
		for(s3=1;s3<=s1*2-1;s3++)printf("* ");
		printf("\n");
	}
	printf("\n\n");
	fflush(stdin);		//这个函数的作用是清除缓存,返回主函数之前使用, 为下一次取值做准备
	main();			//返回主函数 ;
}

int juxi()		//输出矩形 函数 
{	int s1,s2,s;
	printf("【2】矩形 行数:  ");
	scanf("%d",&s);
	printf("\n\n");
	for(s1=1;s1<=s;s1++)
	{	printf("\t");
		for(s2=1;s2<=s;s2++)printf("* ");
			printf("\n");
	}
	printf("\n\n");
	fflush(stdin);		//这个函数的作用是清除缓存,返回主函数之前使用, 为下一次取值做准备
	main();			//返回主函数 
}

int pinx()		//输出平行四边形 函数 
{	int s1,s2,s3,s;
	printf("【3】平行四边形 行数:  ");
	scanf("%d",&s);
	printf("\n\n");
	for(s3=1;s3<=s;s3++)
	{
		printf("\t");
		for(s1=1;s1<=s-s3;s1++)printf(" ");
			for(s2=1;s2<=s;s2++)printf("* ");
				printf("\n");
	}
	printf("\n\n");
	fflush(stdin);		//这个函数的作用是清除缓存,返回主函数之前使用, 为下一次取值做准备
	main();			//返回主函数 
}
int ling()		//输出菱形 函数 
{	int s1,s2,s3,s4,s5,s,row;
	printf("【4】菱形 行数:  ");
	scanf("%d",&s);
	printf("\n\n");
	row=s/2;
	if(s%2==0)		//输出行数为 偶数 
	{
		for(s1=1;s1<=s;s1++)
		{
			if(s1<=row)
	        {printf("\t");
			for(s2=1;s2<=row-s1;s2++)printf("  ");
				for(s3=1;s3<=s1*2-1;s3++)printf("* ");
					printf("\n");
			}
	        else
			{
				printf("\t");
				for(s4=1;s4<=s1-row-1;s4++)printf("  ");
					for(s5=1;s5<=(s-s1)*2+1;s5++)printf("* ");
						printf("\n");
			}
	}
	}
	else		//输出行数为 奇数 
	{   row++;
		for(s1=1;s1<=s;s1++)
		{
			if(s1<=row)
	        {printf("\t");
			for(s2=1;s2<=row-s1;s2++)printf("  ");
				for(s3=1;s3<=s1*2-1;s3++)printf("* ");
					printf("\n");
			}
	        else
			{
				printf("\t");
				for(s4=1;s4<=s1-row;s4++)printf("  ");
					for(s5=1;s5<=(s-s1)*2+1;s5++)printf("* ");
						printf("\n");
			}
		}
	}
	printf("\n\n");
	fflush(stdin);		//这个函数的作用是清除缓存,返回主函数之前使用, 为下一次取值做准备
	main();			//返回主函数 
}

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/songbai220/article/details/95724841

智能推荐

javaweb系统oracle锁表,java+oracle+web(第八天) java 基础课程(一) 线程同步和死锁...-程序员宅基地

文章浏览阅读65次。synchronizedsynchronized同步代码块同步函数两种方式。/*死锁,共享资源自有自己的锁,然后相互访问都要解锁,如果相互拿不到对方的锁,可能产生死锁synchronized例子说明:两个锁中锁,A和B,然后A有资源,然后B锁在A中锁了一个资源。然后两个线程来访问。引起死锁。在开发中要避免死锁。*/classLockTest implements Runnable{private ..._oracle两个线程同时锁一张表

中英文输入_鼠标复制英文加数字 site:blog.csdn.net-程序员宅基地

文章浏览阅读355次。一、键盘分为那几个部分: 1.功能区 2.指示灯区 3.打字键盘区 4.编辑区 5.数字键盘区 二、规范打字: 1.食指:(左边)45 rt fg vb (右边)67 yu hj nm 2.中指:(左边)3edc (右边)8ik, 3.无名指:(左边)2w..._鼠标复制英文加数字 site:blog.csdn.net

Pico四通道汽车诊断示波器高级套装(型号:PQ180)-程序员宅基地

文章浏览阅读993次。Pico汽车诊断示波器把你的PC电脑变成一台功能强大的汽车诊断工具,快速查找现代车辆上日益增加的传感器,执行器和电路的故障。12位高分辨率的PC示波器模块连接到你的电脑的USB接口上,并且能够采集达250M样本,使它能够捕捉复杂的汽车波形,包括CAN总线和FlexRay信号;然后放大可疑区域。由于基于PC,这些波形可以存储到你的PC电脑内用于以后参考,打印或发e-mail。强大的、容易使用的PicoScope汽车软件。整套套装里的一个重要组件就是功能强大的PicoScope汽车诊断软件。使用Pico_pq180

通过Java反射获得对象里面的所有字段名以及字段对应的值_java 通过对象 反射获取 对象的所有字段值-程序员宅基地

文章浏览阅读2.2w次,点赞4次,收藏9次。首先我们有一个对象类package com.xuzihui.ref;public class Student { public Student() { } private int id; private String name; private int math; private int english; public int getId() { retur..._java 通过对象 反射获取 对象的所有字段值

微信小程序开发笔记⑪——数据缓存、数据传输方式、罗盘、wifi、性能监控、加速计和剪切板_微信小程序监控缓存内容-程序员宅基地

文章浏览阅读334次。数据缓存官方描述https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.setStorageSync.html每个微信小程序都可以有自己的本地缓存,可以通过wx.setStorage/wx.setStorageSync、wx.getStorage/wx.getStorageSync、wx.clearStorage/w..._微信小程序监控缓存内容

#HDU By Recognizing These Guys, We Find Social Networks Useful (割边 + 链式前向星)_hduby-程序员宅基地

文章浏览阅读345次。By Recognizing These Guys, We Find Social Networks UsefulTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 125536/65536 K (Java/Others)Total Submission(s): 4200Accepted Submission(s): 108..._hduby

随便推点

异构计算技术分析_异构计算对神经网络的影响-程序员宅基地

文章浏览阅读1.2k次,点赞3次,收藏8次。异构计算技术分析_异构计算对神经网络的影响

vsport 虚拟串口 控件 Virtual Serial Port ActiveX注册码_virtual serial port driver注册码-程序员宅基地

文章浏览阅读2.4w次,点赞2次,收藏4次。使用VSport.dll 开发了虚拟串口工具 在开发电脑上 安装好驱动后 可以运行 正常创建虚拟串口 Virtual Serial Port ActiveX提供 vsport注册码,该注册码可以正常注册使用,注册码没有任何限制,但仅供测试使用,谢谢virtual Serial Port ActiveX Control Installation Here is a step-by-step inst..._virtual serial port driver注册码

Qt之Windows使用openssl(RSA加密)_qt openssl windows-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏14次。抄袭:大佬openssl下载和qt例程:链接:https://pan.baidu.com/s/15avdzMeHgmB1qiWXB63Qow提取码:ulja代码:.pro文件添加了外部库#-------------------------------------------------## Project created by QtCreator 2022-04-14T10:20:16##---------------------------------------------._qt openssl windows

springboot 解析前端传来的时间字符串后端LocalDateTime解析失败 could not be parsed, unparsed text found at index 10-程序员宅基地

文章浏览阅读5.5k次。springboot 解析前端传来的时间字符串后端LocalDateTime解析失败 could not be parsed, unparsed text found at index 10_could not be parsed, unparsed text found at index 10

Chrome教程之NetWork面板分析网络请求-程序员宅基地

文章浏览阅读511次。官方文档:https://developers.google.com/web/tools/chrome-devtools/network/最近打算写一写Chrome教程文档,不知道大家最感兴趣的是什么内容呢?1.如何打开无论是在Windows还是Mac,都可以使用(FN)+F12键打开Chrome的Network面板。2.面板组成如图所示,Chrome的Network面板主要由5个部..._chrom network选择多个类型

HTTPS面试常问全解析,在线面试指南-程序员宅基地

文章浏览阅读156次。kafka面试基础[17]1.Kafka的用途有哪些?使用场景如何?2.Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么3.Kafka中的HW、LEO、LSO、LW等分别代表什么?4.Kafka中是怎么体现消息顺序性的?5.Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?6.Kafka生产者客户端的整体结构是什么样子的?7.Kafka生产者客户端中使用了几个线程来处理?分别是什么?8.Kafka的旧版Scala的消费者客户端的设计有什么缺陷?9.“消费组

推荐文章

热门文章

相关标签