❶ 哪位高手能幫我看看下面這段程序,編譯和鏈接都沒錯,但是執行的時候會出錯,彈出一個程序終止的對話框
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
typedef struct Node
{
int Data; // 數據域;
struct Node * pNext; // 指針域,指向下一個節點;
}QNODE, * PQNODE;
typedef struct Queue
{
PQNODE rear; // 隊尾指針;
}LinkQueue;
/盯笑/ 前置聲明;
void init_Queue(LinkQueue *); // 初始化循環鏈隊列;
bool is_empty(LinkQueue); // 判斷隊列是否為空;
void en_Queue(LinkQueue,int); // 入隊;
int main(void)
{
LinkQueue Q;
Q.rear = NULL;
init_Queue(&Q);
en_Queue(Q, 1);
return 0;
}
void init_Queue(LinkQueue *Q)
{
Q->rear = (PQNODE)malloc(sizeof(QNODE));
if (NULL == Q->rear)
{
printf("內存不足,初始化循環鏈隊列失敗!程序終止!\n");
exit(-1);
}
Q->rear->pNext = Q->rear; // 構建循環鏈隊列;
printf("創建循環鏈隊列成功!\n");
return;
}
bool is_empty(LinkQueue Q)
{
if (Q.rear == Q.rear->pNext)
return true;
else
return false;
}
void en_Queue(LinkQueue Q, int val)
{
PQNODE p = (PQNODE)malloc(sizeof(QNODE));
if (NULL == p)
{
printf("內存不足,入隊失敗!\n");
exit(-1);
}
p->Data = val;
p->pNext = Q.rear->pNext; // 倒數第7行;
Q.rear->pNext = p;
Q.rear = p;
printf("元素%d入隊成功!\n", val);
return;
}
你參數傳遞的是變凱譽含量的值,在init_Queue修改不了Q的值,當init_Queue返回後,Q.rear仍然為NULL。以上是修改後虛碰的代碼
❷ 為什麼我的軟體vc6.0編譯時沒什麼問題,到運行時輸入數據反應很慢,然後就自己跳出已停止工作的對話框
int *a=(int *)malloc(Q*sizeof(int));
int *b=(int *)malloc(Q*sizeof(int));
你的Q還沒初始化 就使用 這個數很大 所以分配的空間很大。
❸ c++編程,在編譯時沒問題,運行時,輸入數據之後,程序就會彈出對話框「程序已停止工作」,為什麼
if(head==NULL)
{
head=p;
}
錯在雙等號表示等於判斷爛族,以後寫NULL與變數的判斷,NULL寫在前面,NULL =head 這樣就會報錯,能夠找到自孝頃己巧歷陸出錯的地方,head =NULL 邏輯上錯了,語法上正確,不易查找到出錯點
❹ 剛學C語言,編譯沒顯示錯誤,彈出來黑框了,為什麼黑框上沒東西。。。
#include <檔旦stdio.h>余改
int max (int x,int y)
{
int z;
if(x>y) {z=x;}
else {z=y;}
return z;
}
main()
{
int a,b,c;
scanf("%d %d",&a,&b);
c=max(a,b);
printf("\nmax is:%d\n",c);
}
改正了一些你豎蠢判的錯誤
❺ 程序編譯鏈接都沒有報錯,運行的時候可以運行處正確答案但是會彈出一個對話框說出現一個問題導致程序停止
定義數組不要一行定義一個元素,不然數據太多的話估計光一個數組就得幾頁了。
int a[5]={1,2,3,4,5};
int i;
for(i=0;i<5;++i)
printf("%d\n",a[i]);
❻ vs2010 程序沒有錯誤,但運行時出現下面的對話框,腫么辦啊~~
貌似以前用vc6.0寫程雹仿序都是先編譯後執行,ctrl
+
F7
再
ctrl
+F5。換用vs,他編譯的必要性已經快被我遺忘了,鑒於
IntelliSense
引擎相當給力,現在橋汪都在後台分析和處理文件。那基本上不會出現低級錯誤,同時為避免控制台的自動退出,就直接按ctrl+F5,開始執行不調試。似乎以前也犯過這種小狀況,出現這樣的問題時,可能是代碼一直輸入,直到寫完,也未曾編譯執行過,導致debug里連基本的exe原型也沒有,可能想一次運行成功比較費力,就卡了吧,編譯是生成cpp,運行時生成exe,為何不在已經用過的解決方案裡面處理程序呢?如果曾經應用敏肆仔過,肯定有齊全的預處理文件,至於exe,只要重新運行一下,自然會覆蓋過期的解決方案。總之,建議,在代碼有程序基本模型時(有頭文件,有主函數)就運行一下,生成exe,很可能避免這種小問題,把cpp載入到其他的解決方案里大概也行。
❼ 我在c++中編譯正確,為何連接又彈出另一個程序對話框
你看一下你搜高游項目中包含的文件。比如你希望編譯的是11.cpp,但如果只是打開 11.cpp,而沒有把它添加到當前項目,當前項目包含的是 22.cpp,那世銷么編譯和鏈接的都是 22.cpp,運行念仔的也是 22.exe。
❽ DevC++ 在編譯後調試時卻彈出對話框「源文件未編譯」或"工程未編譯"是怎麼回事
(關於銀杏秋色的回答)工具>編譯選項>目錄>二進位檔:加入 C:Dev-Cpplibexecgccmingw323.4.2
(是編譯選項不是編譯器,自己試過的,2沒試
而且我試過1之後貌似並沒有用,大概雖然情況一樣但是根本問題不同吧)
2.我自己的問題是這樣解決的:(嗯我就是沒有設置編譯器,)
工具>編譯選項>設定編譯器配製>然後隨便選一種編譯器
❾ C語言,編譯沒問題,但彈出對話框時有警告。
scanf("%s",c);