当前位置:首页 » 编程语言 » c语言必须连接运行产生结果吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言必须连接运行产生结果吗

发布时间: 2022-03-30 12:41:23

‘壹’ 一个简单的c语言程序,编译连接时没有错误,运行时没结果。

scanf("%d,%d,%d\n",&x,&y,&z);
这句需要改掉 ,去掉\n

另外 你没有考虑 相等的时候 例如 输入 3 3 6 那种情况都不符合 就不会输出了

‘贰’ c语言为何需要编译和连接才能运行

代码编写的是代码,机器看不懂,需要翻译为机器能看懂的指令,这就是编译。机器看不懂代码,怎么执行?代码是给人看的。

‘叁’ 如何看出C语言程序的运行结果

自己慢慢算。既然有 scanf 那就肯定要键盘输入。输入才有结果嘛。要不然迩就自己代三个数进去。慢慢算。有些程序代码是必须从编辑器里面算出来的。

‘肆’ 求c语言编程,要有运行结果,谢谢

#include<iostream.h>
#include<stdlib.h>
#include<malloc.h>

#define max 20

typedef struct node //定义AOV网的邻接链表的边结点结构 有向图
{
int vex; //边结点
struct node *next; //边结点的指针
}edgenode;

typedef struct vnode //定义AOV网的邻接链表的边结点结构 有向图
{
int id; //入度
struct node *link; //顶点的指针
}vexnode;

typedef struct nodel //定义AOE网的邻接链表的边结点结构
{
int adgvex; //边结点
int t; //权值
struct nodel *next;//边结点指针
}edgenodel;

typedef struct vnodel //定义AOE网的邻接链表的边结点结构
{
int vertex; //顶点
int id; //入度
struct nodel *link;//顶点的指针
}vexnodel;

int na;
//函数的申明
int creatAOE(vexnodel dig[]);
int creatAOV(vexnode dig[]);
void toposort(vexnode dig[],int n);
void criticalpath(vexnodel dig[],int n);

void main()
{
vexnodel dig[max]; //AOV的顶点数组
vexnode dig2[max]; //AOE的顶点数组

int n=0;
int cord=1;

while(1)
{
cout<<"----主菜单----"<<endl;
cout<<"1.建立AOV邻接链表"<<endl;
cout<<"2.建立AOE邻接链表"<<endl;
cout<<"3.拓扑排序"<<endl;
cout<<"4.求关键路径"<<endl;
cout<<"0.退出"<<endl;
cout<<"输入你的选择:"<<endl;

cin>>cord;
switch(cord)
{
case 1:n=creatAOV(dig2);
break;
case 2:cout<<"输入边数:";
cin>>na; //AOE网的活动数
n=creatAOE(dig);
break;
case 3:toposort(dig2,n);
break;
case 4:criticalpath(dig,n); //求关键路径
break;
case 0:exit(0);
}
}
}

int creatAOE(vexnodel dig[])
{
int vextotal,j,a,b,c;
edgenodel *p;
cout<<"输入顶点数:";
cin>>vextotal; //输入顶点数
for(j=0;j<max;j++) //输入AOE邻接链表
{
dig[j].vertex=j; //初始化顶点数组
dig[j].id=0;
dig[j].link=NULL; //顶点的指针
}

for(j=1;j<=na;j++)
{
cout<<"输入边<i j>以及权值:";
cin>>a>>b>>c; //a为始顶点,b为终顶点,c为活动的权
dig[b].id++; //入度加一
p=(edgenodel*)malloc(sizeof(edgenodel));
p->adgvex=b;
p->t=c;
p->next=dig[a].link;
dig[a].link=p;
}
cout<<"输出邻接表"<<endl;
//输入AOV图的邻接链表
for(j=1;j<=vextotal;j++)
{
cout<<"顶点"<<j<<"入度为"<<dig[j].id<<"指向:";
p=dig[j].link; //顶点指针下移
while(p!=0)
{
cout<<"顶点"<<p->adgvex<<"权值为"<<p->t<<" ";
p=p->next;
}
cout<<endl;
}
return vextotal;
}

int creatAOV(vexnode dig[])
{
int vextotal,arcnumber,j,a,b;
edgenode *p; //边结点结构

cout<<"输入边数:";
cin>>arcnumber;
cout<<"输入顶点数:";
cin>>vextotal;

//输入AOV图的邻接链表
for(j=0;j<max;j++) //初始化
{
dig[j].id=0;
dig[j].link=NULL; //顶点指针为空
}

for(j=1;j<=arcnumber;j++)
{
cout<<"输入两个顶点表示的边:"<<endl;
cin>>a>>b; //输入边信息,a为始顶点,b为终顶点
p=(edgenode*)malloc(sizeof(edgenode));
p->vex=b;
p->next=dig[a].link;
dig[a].link=p;
dig[b].id++; // 入度加1
}

cout<<"输出邻接表"<<endl; //输入AOV图的邻接链表
for(j=1;j<=vextotal;j++)
{
cout<<"顶点"<<j<<"入度"<<dig[j].id<<"邻接";
p=dig[j].link; //指针下移
while(p!=NULL)
{
cout<<"顶点"<<p->vex<<" ";
p=p->next;
}
cout<<endl;
}
return vextotal;
}

void toposort(vexnode dig[],int n) //拓扑排序
{
edgenode *p;
int i,j,k,top,m;
top=0;
m=0;
// cout<<"ssss"<<n;
for(i=1;i<=n;i++)
if(dig[i].id==0) //把入度为0的顶点链成链
{
dig[i].id=top;
top=i;
}

while(top>0)
{
j=top;
top=dig[top].id;
cout<<j<<" "; //输出入度为0的顶点
m++; // 计算入度为零的顶点
p=dig[j].link;

while(p!=NULL)
{
k=p->vex;
dig[k].id--;
if(dig[k].id==0)
{
dig[k].id=top;
top=k;
}
p=p->next;
}
}
cout<<endl;
if(m<n)
cout<<"the network has acycle"<<endl;
}

void criticalpath(vexnodel dig[],int n) //求关键路径
{
//ve和vl是顶点事件的最早和最晚时间
//e 和l 是活动的最早和最晚时间
int front=0,rear=0;
int tpord[20],vl[20],ve[20];
int l[20],e[20],i,j,k,m;
edgenodel *p;

for(i=1;i<=n;i++)
ve[i]=0; //把时间的最早发生时间赋初值

for(i=1;i<=n;i++) // 把入度为0的全部入队
if(dig[i].id==0)
tpord[++rear]=i;

m=0;
while(front!=rear)
{
front++;
j=tpord[front];
m++; // 用来判断有无有向环的
p=dig[j].link; //指针下移

while(p)
{
k=p->adgvex;
dig[k].id--; //顶点的入度减1
if(ve[j]+p->t>ve[k]) //最早时间取最大值,ve[]初始为0,如果有多条则比较
ve[k]=ve[j]+p->t;

if(dig[k].id==0)
tpord[++rear]=k;
p=p->next;
}
}

if(m<n) //判断有没有有向环
cout<<"the AOE network has acycle"<<endl;

for(i=1;i<=n;i++) // 对时间最晚发生时间赋初值
vl[i]=ve[n];

for(i=n-1;i>=1;i--) // 计算最晚发生时间
{
j=tpord[i];
p=dig[j].link; //求vl[]数组的值
while(p)
{
k=p->adgvex;
if((vl[k]-p->t)<vl[j]) //最晚时间去最小值或初始值
vl[j]=vl[k]-p->t;
p=p->next;
}
}

cout<<"输出最早和最晚时间"<<endl; //输出每个事件的最早发生时间和最晚发生时间
for(i=1;i<=n;i++)
cout<<"最早"<<ve[i]<<"最晚"<<vl[i]<<endl;

for(j=1,i=1;j<=n;j++,i++) //计算活动的最早发生时间和最晚发生时间
{
p=dig[j].link;
while(p)
{
k=p->adgvex;
e[i]=ve[j];
l[i]=vl[k]-p->t;
cout<<"顶点"<<dig[j].vertex<<"顶点"<<dig[k].vertex<<"最早"<<e[i]<<"最晚"<<l[i]<<"可推迟时间"<<l[i]-e[i];
if(l[i]==e[i])
cout<<"是关键活动"<<endl;
else
cout<<endl;
p=p->next;
}
}
cout<<"关键路径:";
for(j=1,i=1;j<=n;j++,i++) //计算活动的最早发生时间和最晚发生时间
{
p=dig[j].link;
while(p)
{
k=p->adgvex;
e[i]=ve[j];
l[i]=vl[k]-p->t;
if(l[i]==e[i])
cout<<dig[i].vertex<<" ";
p=p->next;
}
}
cout<<n;
cout<<endl;
}

测试数据
12
9
1 2 4
1 3 2
1 4 5
2 5 2
2 8 6
3 5 5
4 6 4
5 6 3
5 7 2
6 7 4
7 9 5
8 9 3
12
9
1 2
1 3
1 4
2 5
2 8
3 5
4 6
5 6
5 7
6 7
7 9
8 9
很简单的可以自己运行
可以追问我

‘伍’ c语言中的源程序必须经过编译连接生成可执行程序才能运行,这句话是对不对

哥们,这么理解是对的,不过感觉有点表面。
建议看看计算机一些原理,像你说的这个问题我会想到,计算机最终只能识别二进制码,
所以其实不管我们一切啥语言,最终都是通过编译器编译成二进制码,计算机才能识别
而去运行,而c语言编写的程序,肯定是要经过一系列的编译,链接,生成可执行的文件。
在windows系统中,执行文件都是.exe为扩展名的。不过在linux系统中就不一样了,linux
系统并不区分扩展名,所以也就无所谓什么.exe之类的文件,只要知道最终生成可执行的
二进制文件就可以了。

‘陆’ c语言在什么情况下运行需要输入数据才能得出运行结果

当程序设计者设计了需要外部输入设计接口时,需要输入数据才能得出运行结果;

例如:scanf()函数,gets()函数等

示例:

int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d+%d=%d ",a,b,a+b);
return 0;
}

运行结果:

‘柒’ c语言 要运行出这个结果 怎么写代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
float b;
cout << "请输入小明的成绩和学号" << endl;
cin >> a >> b;
printf("小明同学的学号是&d,成绩是&.1f",a,b);
return 0;
}

‘捌’ C语言运行无结果急.......急!!!!!

对着呢 可能是你没有运行对 要到相关目录然后在运行
比如你生成的可执行文件(假设可执行文件名是file.exe)在D:\tc下
那么在运行中输入cmd 然后回车
再输入D: 再回车
然后输入CD 然后按Tab键找到tc然后回车
再输入file display what you enter后回车
就会显示
display
what
you
enter

‘玖’ c语言,怎么运行不出结果呢

你这个程序问题很多:

首先:对于你的问题“为什么不输出”答案是你这里的判断

if(strcmp(dic[m],word)==0)break;

问题成立的,因为你的if……else……后面总是

j=0;
然后在进入else的时候
word[j]='';

这样word中一直都是空字符串,你把 j=0这句放到 strcpy(dic[m++],word);后面就可以输出了。


其次,即使这样改,你的逻辑还是有问题的,因为for循环的结束条件是s[i]!='';拿 aaa_bbb这个字符串来说,你的程序只能输出aaa,因为最终字符串循环完的时候,for循环直接结束了,你的bbb没有加到dic中去。

你这里用do{……}while(s[i]!='');去循环就没有问题了,这个循环比for循环多一次,正好把你漏掉的加进来了。


最后,刚开始编程最好养成好的编码习惯,你程序中很多变量没有用到,比如,你的inword变量一直是0,没有必要定义,编码格式也要规范些,这些小习惯其实挺重要的。