題干是這樣的:
本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印
*****
***
*
***
*****
所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。
給定任意N個符號,不一定能正好組成一個沙漏。要求列印出的沙漏能用掉盡可能多的符號。
輸入格式:
輸入在一行給出1個正整數N(≤1000)和一個符號,中間以空格分隔。
輸出格式:
首先列印出由給定符號組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號數。
輸入樣例:
19 *
輸出樣例:
*****
***
*
***
*****
2
而我的代碼是
#include "stdio.h"
int main()
{
int n,i,u=0,j,sum=1,count=0,len;
char c;
scanf("%d %c",&n,&c);
if(n==1)
{
printf("*\n0");
goto EX;
}
if(n==2)
{
printf("*\n1");
goto EX;
}
if(n>1000||n<=0) return 0;
for(i=3;sum<=n;)
{
sum=sum+2*i;
i=i+2;
count++;
}
j=n-(sum-2*(i-2));
len=i-4;
for(i=0;i<count;i++)
{
for(n=0;n<u;n++) printf(" ");
for(n=0;n<len;n++) printf("%c",c);
printf("\n");
len=len-2;u++;
}
len=len+4;u=u-2;
for(i=1;i<count;i++)
{
for(n=0;n<u;n++) printf(" ");
for(n=0;n<len;n++) printf("%c",c);
printf("\n");
len=len+2;u--;
}
printf("%d",j);
EX:
return 0;
}
為什么答案出來是部分正確啊,求助
uj5u.com熱心網友回復:
供你參考void test(int n,char *c)
{
int x = n /2;
int num = sqrt(x);
int i=0,j=0,k=0;
//part 1
for(i=num;i>0;i--)
{
//space
for(k=0;k<num-i;k++)
{
printf(" ");
}
for(j=2*i-1;j>0;j--)
{
printf("%c",c);
}
printf("\n");
}
//part 2
for(i=1;i<num;i++)
{
for(k=i;k<num-1;k++)
{
printf(" ");
}
for(j=0;j<2*i+1;j++)
{
printf("%c",c);
}
printf("\n");
}
}
這樣呼叫
test(99,'*');
uj5u.com熱心網友回復:
供參考:#include "stdio.h"
int main()
{
int n,i,j,sum=0,count=1;//,len; ,u=0
char c;
scanf("%d %c",&n,&c);
/*if(n==1)
{
printf("*\n0");
goto EX;
}
if(n==2)
{
printf("*\n1");
goto EX;
}*/
if(n>1000||n<=0) return 0;
for(i=3;sum<=n;)
{
sum=sum+2*i;
i=i+2;
count++;
}
count =count-1;
//j=n-(sum-2*(i-2));
//len=i-4;
for(i=count;i>=1;i--) //上半部
{
for(j=0;j<count-i;j++)printf(" ");
for(j=0;j<2*i-1;j++) printf("%c",c);
printf("\n");
//len=len-2;u++;
}
//len=len+4;u=u-2;
for(i=i+2;i<=count;i++)//下半部
{
for(j=0;j<count-i;j++) printf(" ");
for(j=0;j<2*i-1;j++) printf("%c",c);
printf("\n");
//len=len+2;u--;
}
printf("%d",n-(2*count*count-1));
//printf("%d",j);
//EX:
return 0;
}
//35 *
//*******
// *****
// ***
// *
// ***
// *****
//*******
//4請按任意鍵繼續. . .
uj5u.com熱心網友回復:
我去PTA上試運行了一下,還是和原來的一樣,部分答案錯誤。好像是某種特殊情況不適用uj5u.com熱心網友回復:
最后一個printf沒帶\n ?uj5u.com熱心網友回復:
只能琢磨格式和特殊情況了。一個可以試試最后要有換行。
二可以試試最后如果是0就不輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268937.html
標籤:C語言
上一篇:二階互補濾波器原理是什么啊??
下一篇:求助malloc創建字串并賦值!
