PAT L1-002 打印沙漏 (20 分)

刚开始学C语言时候做的题了,这个更像是一个数学问题,这两年的正赛中也很少碰到这类型的题目了

提示一些比我更萌的萌新,可以先不打印空格,先打印一些其他符号以观察自己规律的正确性

天梯赛中还发现了一个,如果想要读入一整行包含空格的字符串,如果开头就有空字符,需要在之前加一个getchar,之后用gets读,或者cin.getline读应该也差不多

题目链接

#include 
#include 
int main(void)
{
	//以下所有代码均为不等于1 的情况; 
	
	int v;
	char c;
	//输入环节 
	scanf("%d",&v);  
	getchar();
	scanf("%c",&c);
if(v  >= 7 ) { 
	//储存1000以内可能构成 
	int score;
	int n=1,i=0;
	int a[1000];
	while(score<=1000)
	{
		score = (2*n*n)+(4*n)+1;
		a[i] = score;
		n++;
		i++;
	}
	//for(i=0;i<50;i++)
	//{
	//	printf("%d\t",a[i]); 
	//}
	//数数剩余了几个字符没用 
	int last = 100;
	int t;
	for(i=0;i0)
		{
			if(t1){
		for(s=0;s0){
		printf("\n");}
	} 
	
	int g = 0;
	while(g<2*f+1)    
	{
		for(s=m;s>0;s--){
			printf(" ");
		}
		m--;
		for(b=0;b<=g;b++){
			printf("%c",c);
		}
		g += 2;
		printf("\n");
	 } 
	 // 如何能不输出第一行的* 
	 //if(last!=0){
	 printf("%d",last);//}
	 } 
	 else if(v<7){
	 
	 	printf("%c\n%d",c,v-1); 
	 } 
	 
 
} 

 

你可能感兴趣的:(数学思想)