本文目录一览:
- 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);
}
---“无界”回答---