『壹』 一個簡單的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]='