① 這個C語言簡單的文件操作代碼怎麼回事編譯沒有錯誤,但是運行就崩潰
編譯沒有錯誤只表示沒有最基礎的語法錯誤,但程序的邏輯錯誤是檢查不出來的,兩處有問題,一個是=NULL應該為==NULL,為啥就不解釋了吧,第二處是ch=getchar(); fputc(ch,fp);這兩行需要換下順序。
② 請C++高手指點,為什麼編譯時候沒有錯,但是執行的時候顯示有一個錯誤呢
1.
for(i=0,j=i+1;i<9;)
{
if(*(p+i)<*(p+j)) {min=*(p+i);x=i;j++;}
else {min=*(p+j);x=j;i=j;j++;}
}
如果p[0]最小,那麼都只執行if復合語句,結果i不變,j遞增,循環……
for循環修改為:
for(i=0,j=i+1;i<9, j<10;)
2.
for(i=0,j=i+1;i<9;)
{
if(*(p+i)>*(p+j)) {max=*(p+i);d=i;j++;}
else {max=*(p+j);d=j;i=j+1;i=j;j++;}
}
同1,如果p[0]最大……同樣修改下for
3.
for(p=a;p<(p+10);p++)
cout<<*p<<" ";
在最後的輸出中,你看看你的條件設為什麼了。
p < p+10
這條件在內存檢測完之前永久成立,檢測完幾乎是不可能的,現在內存都以G為單位!
修改for循環為:
for(p=a;p<(a+10);p++)
解決問題。
另外,這段代碼的功能似乎成了:
輸入10個數字,將其中最小及最大的數修改為第一個數。。。
強大!~~~
③ C語言,這個代碼編譯時候沒有錯誤,執行的時候總是說出錯。用的是VC++6.0
pre沒有初值,把h=NULL改為h=pre=NULL;應該沒問題了。
④ C語言問題(很急,我寫的程序編譯沒問題但執行出來卻什麼都沒有)
C語言判斷相等要兩個等號,改成i==j試試
⑤ C語言程序,編譯沒有錯誤,執行時出錯。問題在哪
#include<stdio.h>
intmax(inta,intb);
intmain(void)
{
inta,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("maxis%d ",c);
return0;
}
intmax(inta,intb)
{
returna>b?a:b;
}
max函數未定義
⑥ 代碼沒有錯誤為什麼編譯不出來
編譯器是一種翻譯程序,它用於將源語言(即用某種程序設計語言寫成的)程序翻譯為目標語言(即用二進制數表示的偽機器代碼寫成的)程序。後者在windows操作系統平台下,其文件的擴展名通常為.obj。該文件通常還要經過進一步的連接,生成可執行文件(機器代碼寫成的程序,文件擴展名為.exe)。通常有兩種方式進行這種翻譯,一種是編譯,另一種是解釋。後者並不生成可執行文件,只是翻譯一條語句、執行一條語句。這兩種方式相編譯比解釋運行的速度要快得多。
2、 編譯過程的5個階段:詞法分析;語法分析;語義分析與中間代碼產生;優化;目標代碼生成。
3、 在這五個階段中,詞法分析的任務是識別源程序中的單詞是否有誤,編譯程序中實現這種功能的部分一般稱為詞法分析器。在編譯器中,詞法分析器通常僅作為語法分析程序的一個子程序以便在它需要單詞符號時調用。在這一編譯階段中發現的源程序錯誤,稱為詞法錯誤。
4、 語法分析階段的目的是識別出源程序的語法結構(即語句或句子)是否錯誤,所以有時又常為句子分析。編譯程序中負責這一功能的程序稱為語法分析器或語法分析程序。在這一階段中發現的錯誤稱為語法錯誤。
5、 C語言的(源)程序必須經過編譯才能生成目標代碼,再經過鏈接才能運行。PASCAL語言、FORTRAN語言的源程序也要經過這樣的過程。通常將C、PASCAL、FORTRAN這樣的語言統稱為高級語言。而將最終的可執行程序稱為機器語言程序。
6、 在編譯C語言程序的過程中,發現源程序中的一個標識符過長,超過了編譯程序允許的范圍,這個錯誤應在詞法分析階段發現,這種錯誤通常被稱作詞法錯誤。
詞法分析器的任務是以詞法規則為依據對輸入的源程序進行單詞及其屬性的識別,識別出一個個單詞符號。
詞法分析的輸入是源程序,輸出是一個個單詞的特殊符號,稱為Token(標記或符號)。
語法分析器的類型有:自下而上、自上而下。常用的語法分析器有:遞歸下降分析方法是一種自上而下分析方法, 算符優先分析法屬於自下而上分析方法,LR分析法屬於自下而上分析方法等等。
通常用正規文法或正規式來描述程序設計語言的詞法規則,而使用上下文無關文法來描述程序設計語言的語法規則。
語法分析階段中,處理的輸入數據是來自詞法分析階段的單詞符號。它們是詞法分析。
⑦ C語言代碼沒有編譯沒有錯誤,但在運行程序看結果,結果卻顯示不全
輸出性別那行的 格式 應當用 %c 。
你用了 %s, 因 printf() 找不到 '\0', 輸出流就亂了。
⑧ 感覺代碼沒有錯呀,為什麼結果總是空白但當輸入的數相差很大時候結果就會顯示。
這是數組的問題。
數組可以用相同名字引用一系列變數,並用數字來識別它們。在許多場合,可用數組可以縮短和簡化程序,因為可以利用索引值設計一個循環,高效處理各種情況。數組有上界和下界,數組的元素在上下界內是連續的,因為Visual Basic對每一個索引值都分配空間,所以不要不切實際地聲明一個太大的數組。
一個數組中的所有元素應該具有相同的數據類型。當然,當數據類型為變體型時,各個元素能夠包含不同種類的數據(對象、字元串、數值等等),可以聲明任何基本數據類型的數組,包括用戶定義的類型和對象變數。
在Visual Basic中有兩種類型的數組,固定大小的數組和在運行中大小可以改變的動態數組。
有三種方法聲明固定大小的數組。
在模塊的聲明段,用Public語句聲明公用數組。
在模塊的聲明段,用Private語句聲明數組。
在過程中,用Private語句聲明局部數組。
希望我能幫助你解疑釋惑。
⑨ 請問以下C語言 代碼有什麼問題,為什麼編譯後執行什麼都沒有顯示
i 要設定一個初始值