當前位置:首頁 » 編程軟體 » 編程正三角

編程正三角

發布時間: 2023-02-15 02:45:50

『壹』 在c語言中怎樣列印一個正三角形

你是問圖形模式還是文本模式?

文本模式:(需計算:80/(25*n)!=sqrt(3),因此文本模式下的正三角形不嚴格)
下面僅為一示意圖

#include<stdio.h>
int main()
{
printf(" * ")
printf(" * * ")
printf(" * * ")
printf("* * * * * * *")
return(0);
}

圖形模式下可畫的更嚴格:

思路是:先寫一個程序解出(640,480)*(640,480)中正三角形的整數解,再用畫線函數,畫出。

/*此代碼有問題,運行最後的那個程序*/
#include<stdio.h>
#include<math.h>
#include<conio.h>
#define P(a,b,i,j) (pow((ai-aj),2)+pow((bi-bj),2))
int main()
{
int x1,y1,x2,y2,x3,y3;

for(x1=0,y1=0;x1<480;x1++)for(x2=479,y2=1,y2<480;y2++)for(x3=0,y3=479;y3>=0;y3--)if(P(x,y,1,2)==P(x,y,1,3)&&P(x,y,1,2)==P(x,y,2,3))printf("%6d%6d%6d%6d%6d%6d",x1,y1,x2,y2,x3,y3);

int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc201e\\bgi");
cleardevice();

setbkcolor(9); setcolor(4);

line(x1,y1,x2,y2);line(x2,y2,x3,y3);line(x3,y3,x1,y1);

getch();

return(0);
}

調試過程中發現那段解三點的代碼有問題,其實那是一個很簡化的演算法,你可以自己用窮舉發解;
下面實我 注掉那段代碼後的完整程序,運行結果已較理想

#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<graphics.h>
#define P(a,b,i,j) (pow((ai-aj),2)+pow((bi-bj),2))
int main()
{
int x1=219,y1=1,x2=531,y2=367,x3=0,y3=415;
/*
for(x1=0,y1=0;x1<480;x1++)for(x2=531,y2=1,y2<480;y2++)for(x3=0,y3=479;y3>=0;y3--)if(P(x,y,1,2)==P(x,y,1,3)&&P(x,y,1,2)==P(x,y,2,3)){printf("%6d%6d%6d%6d%6d%6d",x1,y1,x2,y2,x3,y3);break;}
getchar();getchar();
*/

int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc201e\\bgi");
cleardevice();

setbkcolor(9); setcolor(4);

line(x1,y1,x2,y2);line(x2,y2,x3,y3);line(x3,y3,x1,y1);

getch();

return(0);
}

『貳』 請問如何用C語言編程:輸入一個正整數,各輸出n行的正(倒)三角形寶塔圖案

#include <stdio.h>



main()


{


int i,j,k;


int n;


scanf("%d",&n);


//正三角


for(i=0;i<n;i++)


{


for(j=0;j<n-i;j++)


printf(" ");


for(k=0;k<=i;k++)


printf(" *");


printf(" ");


}



//倒三角


for(i=0;i<n;i++)


{


for(j=0;j<=i;j++)


printf(" ");


for(k=0;k<n-i;k++)


printf(" *");


printf(" ");


}


}

int i,j;


int n;


scanf("%d",&n);


for (i=1;i<=n;i++)


{


for (j=1;j<=n-i;j++)


printf(" ");


for (j=1;j<=2*i-1;j++)


printf("*"); //這里的"*"可以替換成任意字元


printf(" ");


}

//下面是倒三角


for (i=n;i>=1;i--)


{


for (j=1;j<=n-i;j++)


printf(" ");


for (j=1;j<=2*i-1;j++)


printf("*"); //這里的"*"可以替換成任意字元


printf(" ");


}

『叄』 請用C語言編程:輸入一個正整數,各輸出n行的正(倒)三角形寶塔圖案

正三角形:第幾行就是幾顆星

倒三角形:第幾行就是n-幾顆星

正寶塔:第幾行就是幾*2-1顆星,前面加n-幾個空格

用i循環控制行數,循環中用i值計算具體輸出幾個空格和星號

#include<stdio.h>
#defineKG(n-i)
#defineXH(i*2+1)
voidmain(){inti,j,n;
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<KG;j++)printf("");
for(j=0;j<XH;j++)printf("*");
printf(" ");
}
}

倒寶塔,修改程序中以下兩句即可

#defineKG(i)
#defineXH((n-i-1)*2+1)

『肆』 編程VB輸出數字正三角形

dim i as integer
dim j as integer
dim m as integer
dim n as integer
m= inputbox("輸入行數")
n=1
for i= 0 to m
for j = 0 to m/2-i/2
print " ";
next j
for j= 0 to i
print n;
n=(n+1) mod 10 +1
next j
print
next i

『伍』 c語言正三角形

LS仁兄至少應該把k=0和j=0放在for循環裡面吧。。。。都沒測試就拿出來。。。。
正三角形前面有空格吧。。。
#include
void main()
{
int i,j,N;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
for(j=1;j<=N+i-1;j++)
if(j<=N-i)printf(" ");
else printf("*");//輸出*
printf("\n");//換行
}
}

如果前面沒有空格則代碼如下
#include
void main()
{
int i,j,N;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
for(j=1;j<=2*i-1;j++)
printf("*");//輸出*
printf("\n");//換行
}
}
12
首先數學上知道三角形三邊長求面積的公式為:
已知三角形的三邊分別是a、b、c,
先算出周長的一半s=1/2(a+b+c)
則該三角形面積s=根號[s(s-a)(s-b)(s-c)]
這個公式叫海倫——秦九昭公式

然後用c語言:
#include
#include
main()
{
int a,b,c;
double s1,s2;
scanf("%d%d%d", &a, &b,&c);
s1=(a+b+c)/2;
s2=sqrt(s*(s-a)*(s-b)*(s-c));
printf("%d";s2);

『陸』 c語言中怎樣編程在屏幕上輸出具有7行的正三角形

#include<stdio.h>
intmain(intargc,char*argv[]){
chari,j,k;
for(i=1;i<=7;i++){
for(j=0;j<40-i;printf(""),j++);
for(j=0;j<i+i-1;printf("#"),j++);
printf(" ");
}
return0;
}

『柒』 超簡單的C語言程序題 輸出一個正三角形

1、打開visual C++ 6.0軟體,准備好一個空白的c語言文件,首先引入預處理命令和主函數:

『捌』 C語言中 正 倒等邊三角形的代碼

1、代碼如下

///////////////////////////////////////////////////
//正三角形
//*
//***
//*****
//////////////////////////////////////////////////
#include<iostream>

usingnamespacestd;

intCalcStarCount(intlayer)
{
return(2*layer-1);
}

voidDrawStar(intmaxLayer,intlayer)
{
intmaxStarCnt=CalcStarCount(maxLayer);//最大層*的個數
intstarCnt=CalcStarCount(layer);//當前層*的個數

intblankCnt=maxStarCnt-starCnt;//當前層空格的個數
intpointCnt=blankCnt/2;//兩端空格的個數

//先畫空格
for(inti=0;i<pointCnt;i++)
{
cout<<"";
}
//再畫*
for(inti=0;i<starCnt;i++)
{
cout<<"*";
}
//再畫空格
for(inti=0;i<pointCnt;i++)
{
cout<<"";
}
cout<<endl;
}

voidSleep(longtime)
{
for(inti=0;i<time;i++)
for(intj=0;j<100000;j++)
;
}
//版權聲明:轉載本文請引用https://blog.csdn.net/weixin_42346564/article/details/82190984
voidDrawStar2(intmaxLayer,intlayer,intdirc)
{
if(dirc)
{
if(layer>=1)
{
DrawStar2(maxLayer,--layer,dirc);
}
else
return;
}

//具體畫*的過程

if(layer&&layer!=maxLayer)
{
intstarCnt=layer;
intmaxRowCnt=maxLayer*2-1;
intpointCnt=(maxRowCnt-2*starCnt-1)/2;

//畫左端的空格
for(inti=0;i<pointCnt;i++)
{
cout<<"_";
Sleep(1000);
}

for(inti=0;i<layer;i++)
{
cout<<"*";
if(i==layer-1)
break;
else
cout<<"";
Sleep(1000);
}

//畫右端的空格
for(inti=0;i<pointCnt;i++)
{
cout<<"_";
Sleep(1000);
}

cout<<endl;
}

if(!dirc)
{
if(layer>=1)
{
DrawStar2(maxLayer,--layer,dirc);
}
else
return;
}
}

intmain()
{

intlayer=0;

cout<<"請輸入層數:";
cin>>layer;

#if0
for(inti=0;i<=layer;i++)
DrawStar(layer,i);

cout<<endl<<endl;

for(inti=layer;i>=0;i--)
DrawStar(layer,i);
#else
DrawStar2(layer+1,layer+1,1);
cout<<endl<<endl;
DrawStar2(layer+1,layer+1,0);
#endif

system("pause");
return0;
}
熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:748
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1012
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:718
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:878
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:774
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1127
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:351
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:229
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:911
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:875