本文目錄一覽:
- 1、用C語言編寫以下算法: 一個5個節點的有向圖,有向線段上有權重即T[i][j],它表示節點i對節點j的信任度。
- 2、C語言 關於權重的 問題
- 3、c語言 要為產生的隨機數加上權重 如在6-18內產生100個隨機數,6-9出現頻率為25%,10-14為50%,15-18為25%
- 4、C語言寫權重的問題
- 5、C語言中,每位上都有一定的“權”是什麼意思?
- 6、用C語言計算加權分數
用C語言編寫以下算法: 一個5個節點的有向圖,有向線段上有權重即T[i][j],它表示節點i對節點j的信任度。
寫C程序,隨機給出n*n的鄰接矩陣,並打印輸出鄰接矩陣,以及有向圖的邊的個數,每個頂點的度,並判斷該圖中是否存在Euler迴路: (1)如果為n階,則隨機產生一個n*n的鄰接矩陣; (2)輸出鄰接矩陣,邊的個數,每個頂點的度以及圖中是否存在Euler迴路。 這個題目涉及到了兩個主要的知識點,一個是數據結構中的有向圖的鄰接矩陣的創建,還有就是離散數學中的Euler迴路的判定定理。
#includestdio.h
#includestdlib.h
#includetime.h
#includemath.h
#define n 5 //定義矩陣的階數n
typedef int ver;
typedef int edg; //定義有向圖的頂點和邊值為整形
typedef struct{
ver v[n]; //頂點
edg e[n][n]; //邊權
}graph; //定義鄰接矩陣的數據結構
void printgraph (graph G) //打印輸出鄰接矩陣
{
int i,j;
printf(“頂點”);
for(i=0;in;i++)
printf(“%3d”,i);
printf(“\n”);
for(i=0;in;i++)
{
printf(“%4d”,i);
for(j=0;jn;j++)
printf(“%3d”,G.e[i][j]);
printf(“\n”);
}
}
void countD (graph G) //判斷有向圖的頂點的度,並判斷Euler迴路
{
int i,j,l;
int e=0,count=0;
int k; //計數器賦0
int c[n],d[n];
for (i=0;in;i++){
c[i]=0;
for (j=0;jn;j++){
if (G.e[i][j]!=0)
c[i]=c[i]+1;
}
printf(“頂點 %d 的出度為: %d \n”,i,c[i]); //有向圖的任意頂點i的出度為鄰接矩陣中第i行不為0的數的個數
}
printf(“\n”);
for (j=0;jn;j++){
d[j]=0;
for (i=0;in;i++){
if (G.e[i][j]!=0)
d[j]=d[j]+1;
}
printf(“頂點 %d 的入度為: %d \n”,j,d[j]); //有向圖的任意頂點j的入度為鄰接矩陣中第j列不為0的數的個數
}
for (l=0;ln;l++){
if (c[l]==d[l])
count++;
else {
if (c[l]-d[l]==1)
e++;
else{
if (d[l]-c[l]==1)
e++;
}
}
}
k=0;
if (count==n) //判斷Euler迴路: 1:所有頂點的出度等於入度;
//2:有且僅有兩個點度數為奇數,且一個出度比入度大一
k=1; //另一個入度比出度大一,其他的頂點出度等於入度
else {
if (e==2 count==n-2)
k=1;
}
if (k==1)
printf(“有向圖中存在Euler迴路\n”);
else
printf(“有向圖中不存在Euler迴路\n”);
}
void main() //主函數
{
int i,j,temp;
graph G;
srand(time (NULL)); //隨機種子
for (i=0;in;i++){
for (j=0;jn;j++)
G.e[i][j]=0;
}
for (i=0;in;i++)
G.v[i]=0;
for (i=0;in;i++){
for (j=0;jn;j++){
do
{
temp = rand()%n; //隨機建造鄰接矩陣
if (G.v[i]n)
{
G.e[i][j] = temp;
G.v[i]++;
break;
}
}
while (1);
}
}
printf(“生成的有向圖鄰接矩陣為: \n”);
printgraph(G);
countD (G); //調用子函數
printf(“有向圖的邊數為:%d\n”,n*(n-1)/2);
}
另外,團IDC網上有許多產品團購,便宜有口碑
C語言 關於權重的 問題
唉,你這錯誤也太多了吧。
/****考生在以下空白處寫入執行語句******/
for(i=0;in;i++)
{
a[i] = (i+1) * ((int)s[i]);
printf(“%d\n”,a[i]);
}
/****考生在以上空白處寫入執行語句******/
c語言 要為產生的隨機數加上權重 如在6-18內產生100個隨機數,6-9出現頻率為25%,10-14為50%,15-18為25%
這樣改吧:
#includestdlib.h
#includestdio.h
#includetime.h
void main()
{
int i,j;
srand((unsigned)time(NULL));
for(i=0;i100;i++)
{
j=rand()%100;
if(j25) //6到10的25%
{
j=rand()%10;
while(j6)
j=rand()%10;
}
else if(j75) //11到14的50%
{
j=rand()%15;
while(j10)
j=rand()%15;
}
else //15到18的25%
{
j=rand()%19;
while(j15)
j=rand()%19;
}
printf(“%d\t”,j);
}
}
C語言寫權重的問題
int A[100]
for(int i=0;i<100;i++)
{
if(i<3||i>96)//判斷前後夠不夠3個 不夠輸出權值為0
{
printf(“a[%d]=%d的元素權值為0\n”,i,a[i]);
}
else
{
int b=abv(a[i]-a[i-1]);//找出差的絕對值最小的
if(abv(a[i]-a[i-2])b) b=abv(a[i]-a[i-2]);
if(abv(a[i]-a[i-3])b) b=abv(a[i]-a[i-3]);
if(abv(a[i]-a[i+1])b) b=abv(a[i]-a[i+1]);
if(abv(a[i]-a[i+2])b) b=abv(a[i]-a[i+2]);
if(abv(a[i]-a[i+3])b) b=abv(a[i]-a[i+3]);
printf(“a[%d]=%d的元素權值為%d\n”,i,a[i],b);
}
C語言中,每位上都有一定的“權”是什麼意思?
簡單地講,每一位的“權”就是這1位表示多少個基本單位,比如:123456,
6是個位,基本單位是1,它表示6個1;
5是十位,基本單位是10,它表示5個10;
4是百位,基本單位是100,它表示4個100;
……
用C語言計算加權分數
本人(無界)用C-Free親手編寫的,親測可運行
# include stdio.h
struct stu{ //用結構體數組儲存學生的成績和學分
float score; //成績
float credit; //學分
}Stu[100];
int main()
{
unsigned int x=1,y=0;
//y用於結構體數組Stu,同時用於循環計算該學生成績
double sxcsum=0,csum=0,sum;
//sxcsum記錄所有成績乘以學分之和
//csum學分之和
//sum加權成績
printf(“提示:輸入完後按回車鍵結束,輸入負數代表學生成績輸入完成\n”);
while(1) //循環用戶輸入成績,直到用戶輸入完成後結束
{
printf(“請輸入第%d門課程的成績:”,x);
scanf(“%f”,Stu[y].score);
getchar(); //吸收回車鍵字符
if(Stu[y].score0) break; //輸入負數結束循環,結束學生輸入成績操作
printf(“請輸入第%d門課程的學分:”,x++);
scanf(“%f”,Stu[y++].credit);
getchar();
if(Stu[y-1].credit0) break;
}
printf(“—輸入成績結束—\n”);
for(x=0;xy;x++) //循環計算成績,直到算完所有課程 ,y變量儲存共有多少門課程
{
sxcsum+=Stu[x].score*Stu[x].credit;
csum+=Stu[x].credit;
}
sum=sxcsum/csum;
printf(“該學生的加權成績為:%g\n”,sum);
return(0);
}
—“無界”回答—
原創文章,作者:AEDV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/139888.html