Ⅰ c語言不知道為什麼運行不了
編譯期錯誤。這是指在程序的編譯過程中由編譯程序識別或檢查出來的錯誤,常稱之為"語法錯誤"。諸如不符合規定的語句格式、對象說明與使用不一致、不正確的分隔符、不存在的標號、不正確的初始化數據、不恰當的循環嵌套等等。在編譯期發現一個錯誤後,編譯工作並不立即停止,而是盡可能多地找出源程序中的全部錯誤。
第二類,連接錯誤。這是指連接程序在裝配目標程序時發現的錯誤,通常由於函數名書寫錯誤、缺少包含文件或包含文件的路徑錯誤等原因引起的。
第三類,運行期錯誤。這是指可執行程序執行過程中發現的錯誤。如在計算過程中遇到了除數為零的錯誤、求一個負數的平方根等等。編譯系統發現這類錯誤後如無特殊指示通常告知一些適當信息,然後立即停止程序的執行。當然,為阻止這類錯誤的出現,程序設計者可在程序中編入一些由自己來檢查這類錯誤的程序段,這可能更適合於自己的處理要求。
第四類,邏輯性錯誤。這類錯誤是在編譯期、連接期和運行期都不能發現的錯誤。如程序中把log寫成了log10,把x+y寫成了x-y等。顯然編譯系統是無法查出這類錯誤的。
第五類,警告性錯誤。這類錯誤是指編譯系統在編譯階段發現程序中有一些可疑的或含混不清的地方,如源程序中發現了一個定義過但從未使用過的變數。這類情況從語法上講是正確的,因此一般不會停止編譯,在大多數情況下不會阻止目標程序與可執行程序的生成、連接和運行。但是對這類錯誤不應掉以輕心,應仔細檢查程序,這往往存在著某種潛在的運行期錯誤。
Ⅱ C語言編譯好後為什麼運行不出結果呢
這段代碼有問題:while(1){printf ("Hello/n");}循環語句沒有終止條件,循環會一直進行下去,得不到結果。
當前階段,在編程領域中,C語言的運用非常之多,它兼顧了高級語言和匯編語言的優點,相較於其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。
C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%-20%。因此,C語言可以編寫系統軟體。
Ⅲ C語言程序,沒有錯誤,但是運行不出來
指針開辟空間的方法有問題
變數用錯,current沒有賦值就用在循環里了。
scanf讀入時的後面是加指針,字元串名本來就是指針,不需要&符號。
冒泡排序方法有問題。
正確的代碼如下:
#include<stdio.h>
#include<stdlib.h>
#define N 100
int current;
typedef struct student
{
char *num;
char *nam;
float chinese;
float english;
float math;
double average;
float sum;
}STU;
STU stu[N]; //定義結構體數組
void bubbleSort(STU *arr, int n)
{
int i,j;
STU m;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(arr[j].sum < arr[j+1].sum)
{
m=arr[j];
arr[j]=arr[j+1];
arr[j+1]=m;
}
}
}
return;
}
int main(){
int i,t;
printf("請輸入學生人數 : ");
scanf("%d",&t);
for(i=0; i<t; i++){
printf("請輸入學生的學號: ");
stu[i].num = (char *)malloc(sizeof(char)*10);
scanf("%s",stu[i].num);
printf("請輸入學生的姓名: ");
stu[i].nam = (char *)malloc(sizeof(char)*10);
scanf("%s",stu[i].nam);
printf("請輸入學生的語文成績: ");
scanf("%f",&stu[i].chinese);
printf("請輸入學生的數學成績: ");
scanf("%f",&stu[i].math);
printf("請輸入學生的英語成績: ");
scanf("%f",&stu[i].english);
//輸出每個學生的平均成績
stu[i].average=(stu[i].chinese + stu[i].math + stu[i].english)/3.0;
printf("學生%s的平均成績為:%.2f ",stu[i].nam,stu[i].average);
//輸出每個學生的總成績
stu[i].sum=(stu[i].chinese + stu[i].math + stu[i].english);
printf("學生%s的總成績為:%f ",stu[i].nam,stu[i].sum);
} //錄入學生成績
bubbleSort(stu, t);
printf("按總分由高到低輸出學生的信息為: ");
for(i=0; i<t; i++){
printf("學生姓名:%s 學生學號:%s 語文:%f 英語:%f 數學:%f 總分:%.2lf 平均分:%f ",
stu[i].nam,stu[i].num,stu[i].chinese,stu[i].english,stu[i].math,stu[i].sum,stu[i].average);
}
for(i=0; i<t; i++){
free(stu[i].num);
free(stu[i].nam);
}
return 0;
}
Ⅳ C語言程序沒有錯誤,但是運行不了。
你的代碼是錯了,所以才會這樣。錯誤的地點在輸出上,也就是
最後一句
printf("%d %c %s", ss.age, ss.name, ss.sex);你定義的name是字元串,而sex是字元。所以應該改成
printf("%d %s %c", ss.age, ss.name, ss.sex);
Ⅳ C語言程序,運行不出來結果
如圖中1處,沒有輸出的豬腰子問題在這里,p的初始值應為a.而不是0,因為之前已經定義了p=a這里可以改成for(;p<a+5;p++)。
另外第二處經過for循環,p已經指向數組的下一個地址,此時輸出值不確定。這里沒有語法錯誤。需要注意就是。
Ⅵ 我的c語言程序為什麼會執行不了
程序語法上沒有問題。如果你的編譯器不支持漢字編碼,則用 英文 ASCII 字元為好。
另外,注意輸入數據 的 格式,格式不對會執行不了。
假定用英文:
#include <stdio.h>
int main(void)
{
char cType=0,dType=0;
float amount=0,rate=0;
printf("input c f c\n");
scanf("%c %f %c",&cType,&amount,&dType);
switch(dType)
{ case '1': rate = 1.5; break;
case '2': rate = 2; break;
case '3': rate = 3; break;
case '4': rate = 3.2; break;
case '5': rate = 3.5; break;
default: printf("no such dType\n"); return -1;
}
if(cType=='V') rate = rate *1.1;
if(amount>=100000) rate = rate *1.2;
printf("rate:%.2f%%\n",rate);
return 0;
}
輸入: V 12345 3
輸出: rate:3.30%
輸入: 3 12345 3
輸出: rate:3.00%
Ⅶ C語言新手,為啥程序運行不了
程序中變數定義的第二行上sum=0後面不能是逗號,而應該是分號。主要的編譯錯誤,就在於這里。另外在輸出數據的時候就是再返回語句上面一行輸出數組元素j時,後面應該加一個空格,不然的話,所有的數據都連到一起,變成一個數字就分不清了。