編程正三角
『壹』 在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;
}
