1. c語言重新運行程序,文件讀取不了,怎麼解決
可能是因為文件打開著呢,你需要做的就是關閉這個文件,然後在重新啟動程序,應該就可以了
2. 計算機是如何識別C語言的
計算機是不能直接識別C語言的,它需要經過特殊的編譯器,編譯之後的二進制才能被計算機識別,計算機只能識別二進制代碼。
整個程序的編譯過程中有三個角色:程序員——編譯器——計算機。
程序員和編譯器之間的交流是C語言,同時編譯器也能把C語言經過翻譯成二進制指令。編譯器相當於程序員和計算機之間的翻譯官。
一個C語言程序的過程有以下步驟:
一、程序員使用C語言編寫代碼;
二、編譯把代碼翻譯成二進制指令;這里也有四個步驟:
a.預處理,這里主要處理頭文件,和程序中的一些宏代碼;
b.編譯,主要是把每個C語言文件編譯成二進制目標代碼;
c.鏈接,把上一步生成的目標代碼和庫文件進行鏈接,最終生成可執行程序。
以上就是C語言到計算機可識別代碼的轉換過程。
3. C語言頭文件里定義過的東西為什麼編譯時提示不能識別
一定提示你:AT89X51.H:No such file......
把頭文件保存到安裝根目錄下的include文件夾
4. 為什麼C語言無法識別返回值
//已為你改好
/*
輸入輸出樣例:
請輸入10個數字:
88 88 88 25 25 50 100 25 99 1001
25 25 25 50 88 88 88 99 100 1001
25 50 88 99 100 1001
*/
#include<iostream>
using namespace std;
void Sort_array(int* p) ;
int remove_repeat(int *a, int l) ;
int main()
{
int i,a[10],len;
cout<<"請輸入10個數字:"<<endl;
for(int i=0;i<10;i++)
{
cin>>a[i];
}
Sort_array(a);
for(i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
len=remove_repeat(a, 10) ;
for(i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
//排序
void Sort_array(int* p)
{
int i,j,val;
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(p[i]>p[j])
{
val=p[i];
p[i]=p[j];
p[j]=val;
}
}
}
}
//刪除重復
int remove_repeat(int *a, int l)
{
int i,j,k;
for(i = 0; i < l; i ++)
{
for(j = i+1; j <l; )
{
if(a[j] == a[i])
{
for(k = j+1; k<l; k ++)
a[k-1] = a[k];
l--;
}
else
j++;
}
}
return l;
}
5. 為什麼c語言明明打了英文;就是識別不出來
兩個問題:
1) C語言規定變數定義必須出現在可執行代碼前面,所以不能在printf之後再定義變數
2)你要確保沒有中文全形字元,雖然看起來像英文,但是是完全不同字元,例如printf後面的(看起來就是中文字元
而且很多早期軟體對中文支持不好,盡量避免用中文文件名
6. C語言中system函數括弧中有了兩個「」就無法識別請問應該怎麼辦
不是很明白你的意思。()也是一種運算符。就像數學裡面的()是一個道理。比如:3*(1+2);就是一樣道理。(3,5)是沒有意義的。在有宏定義或函數的情況下才有意義。比如:define
sum(x,y)
(
x+y)程序中僅僅進行x,y的簡單替換。如果硬要對(x,y)取值,那麼應該去y的值。
7. 用c語言編寫的程序不能被計算機直接識別
是的。c語言程序需要經過編譯成機器語言程序,才能被計算機直接運行。