❶ 用c語言編程:從鍵盤輸入N,輸出一個由*組成的邊長為n的正六邊形,我要空心和實心的兩個,編2個程序。謝!
#include <stdio.h>
void print(int space, int num, int type)
{
while (space--) putchar(' ');
if (type)
{
while (num--) putchar('*');
putchar('\n');
}
else
{
putchar('*');
num = (num > 2)? num - 2: 0;
while (num--) putchar(' ');
putchar('*');
putchar('\n');
}
}
void solid(int n) //空心
{
int i;
for (i = 0; i < 2 * n - 1; i++)
print(abs(n - i - 1), 3 * n - 2 - 2 * abs(n - i - 1), 1);
}
void hollow(int n) //實心
{
int i;
print(n - 1, n, 1);
for (i = 1; i < 2 * n - 2; i++)
print(abs(n - i - 1), 3 * n - 2 - 2 * abs(n - i - 1), 0);
print(n - 1, n, 1);
}
int main()
{
hollow(4);
return 0;
}
❷ c語言編程 輸入兩個數字n(n的取值范圍為[3,6])和m 在屏幕上輸出一個正n邊形 其中m為正n邊形的邊長。
請問這段是什麼意思呀? 謝謝
if(p)
{
p--;
num[x - p - 1] = m;
for(i = m + 1; i < n; i++)
{
print(n, i, p, x);
num[x - p -1] = i;
}
}
❸ c語言,輸入一個正整數n,輸出一個以n為邊長的菱形,要初學者能看懂的。謝
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inti,j,n;
scanf("%d",&n);
for(i=0;i<2*n-1;i++)
{
if(i<n)
{
for(j=0;j<=n-i-2;j++)
{
printf("");
}
for(j=0;j<=2*i;j++)
{
printf("*");
}
}
else
{
for(j=0;j<i-n+1;j++)
{
printf("");
}
for(j=0;j<=4*n-2*i-4;j++)
{
printf("*");
}
}
printf(" ");
}
return0;
}
❹ 有n條邊讓你選3條邊湊成一個三角形,問有多少種可能 (C語言)
#include<stdio.h>
intmain()
{
intbian[10000];
printf("Pleaseinputthebianshu. ");
intn,i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&bian[i]);
}
intj,k,answer=0;
for(i=0;i<n-2;i++)
for(j=i+1;j<n-1;j++)
for(k=j+1;k<n;k++)
if(bian[i]+bian[j]>bian[k])answer++;
printf("Theansweris%d. ",answer);
return0;
}
枚舉每一種可能性就好了,不排除輸入時有重復的數據.望採納.
❺ 速求 c語言編程 給定n個點的坐標,這n個點依次圍成一閉合多邊形,再給一點(x,y),判斷它是否在多邊形中
程序代碼如下(直接套用函數pnpoly):
int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
int i, j, c = 0;
for (i = 0, j = nvert-1; i < nvert; j = i++) {
if ( ((verty[i]>testy) != (verty[j]>testy)) &&
(testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
c = !c;
}
return c;
}
參數說明:
nvert: 多邊形的頂點數
vertx, verty: 頂點X坐標和Y坐標分別組成的數組
testx, testy: 需要測試的點的X坐標和Y坐標
(5)演算法n邊形c語言擴展閱讀:
判定一個點是否在多邊形內部最簡單的方法是使用射線法,因為它能適用於所有類型的多邊形,不用考慮特殊的情況而且速度也比較快。
該演算法的思想很簡單:在多邊形外面任意一點畫一條虛擬的射線到p(x,y)然後計算該射線與多邊形上的邊相交的次數。如果該次數是偶數,說明p(x,y)在多邊形外,如果是奇數,則在多邊形內。
❻ C語言編程:「編寫程序,求半徑為r的圓的內接正n邊形的面積.r和n由用戶輸入.」怎麼做啊求解。。。。
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
void main()
{
double s, r; //s表示面積,r表示半徑
int n; //n表示正n邊形的邊數
printf("請輸入圓的半徑r:");
scanf("%lf",&r);
printf("請輸入正n邊形的邊數n:");
scanf("%d",&n);
s = n * r * r * sin(2 * PI / n) / 2;
printf("圓的內接正%d邊形的面積是%lf\n",n,s);
}
ps:這個是比較簡單點的了,執行一次就自動退出程序了。。。沒有加循環執行,而且對輸入的數據類型,范圍沒有進行判斷,所以要盡量減少輸入的錯誤。。樓主也可以自己加上,不是很難的。。
❼ C語言編程題 用內接正N邊形法求PI的值(取6位有效數字)謝謝
懸賞分太少了,呵呵,我的一道VB的程序懸110分都沒有人做,你這才10分,還是比VB難的C語言....
❽ c語言問題:如何編寫一個程序,輸入一個正整數N,在屏幕上用『*』列印以N為邊長的正六邊形。
a ?
正六邊形 你們老師學過數學么?
你可以告訴他 在數學上實現不了這個演算法,因為會出現非整數無法在屏幕上實現。
支持樓上的說法,但有一點需要修正,控制台如果用星號的話應該大於45度 因為字元的縱橫比不是正方形的,但是絕對到不了120度
我只能做一個類似六邊形。不是很正的
#include "stdafx.h"
#include "math.h"
main()
{
int n,cont,cont2,conts;
scanf("%d",&n);
for(cont = 1;cont < 2*n ; cont++)
{
for(cont2=1;cont2<= abs(n-cont);cont2++)
putchar(' ');
for(cont2=1;cont2< 2*n-abs(n-cont);cont2++)
{
printf("* ");
}
putchar('\n');
}
getchar();getchar()
}
❾ 用C語言編寫:輸入半徑R,求圓的面積和內接正n邊形的面積
對於單位圓的內接正n邊形,將它們每一個頂點和圓心相連,那麼就將該n邊形分成了n個面積相同的等腰三角形,每個三角形的頂角就為(360/n)度,那麼
每個三角形的面積 = (1/2)R*R*sin(360/n)
所以:
內接正n邊形總面積 = (n/2)(R^2)sin(360/n)
❿ 初學C語言,輸出N形圖形,求解~~~
#include<stdio.h>
void main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(i==1||i==n)
for(j=1;j<=n;j++)
{
if(j==1||j==n)
printf("*");
else printf(" ");
}
//printf("\n");去掉
if(i>1&&i<n)
for(j=1;j<=n;j++)
{
if(i==j||j==1||j==n)
printf("*");
else printf(" ");
}
printf("\n");
}
}