當前位置:首頁 » 編程語言 » c語言剛學都不知道頭腦亂輸代碼都是錯
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言剛學都不知道頭腦亂輸代碼都是錯

發布時間: 2022-04-16 10:19:11

Ⅰ 新手學c語言,有個程序越寫頭腦越亂,求幫助

//---------include&define
#include <stdio.h>
#include <stdlib.h>
#include <String.h>
#define MAX_STRING 128
#define INITIAL_SIZE 1
typedef char String[MAX_STRING];
//---------enum
typedef enum{
mammal=0,
insect,
bird,
fish
}Type;
//---------array of structure
typedef struct {
String name;
float size;
Type type;
}AnimalType;
typedef AnimalType AmazonType[INITIAL_SIZE];
//---------Initialize
void InitializeType(AnimalType *pAnimal){
strcpy(pAnimal->name,"name");
pAnimal->size = 0;
pAnimal->type = (Type)0;
}
void InitializeAnimal(AmazonType Amazon){
for(int Index=0;Index<INITIAL_SIZE;Index++){
InitializeType(&Amazon[Index]);
}
}
//---------Input
AnimalType GetInfo(void){
AnimalType Animal;
printf("Enter animal inforamtion ('exit' to exit) \n");
printf("What is the name :");
fflush(stdin);//!!!!!!!!!!!!!!清除鍵盤緩存
scanf("%s",Animal.name);
if(strcmp(Animal.name,"exit"))//<<<加這里 發現請求退出輸入狀態,就不再繼續輸入了
{//<<<
printf("What is the size :");
fflush(stdin);//!!!!!!!!!!!!!!清除鍵盤緩存

scanf("%f",&Animal.size);
printf("What is the type :");
fflush(stdin);//!!!!!!!!!!!!!!清除鍵盤緩存

scanf("%u",&Animal.type); //這種輸入法能搞出其它值來,其實就是當整數輸入處理 不能保證得到的是合法的枚舉值 上面枚舉定義了只有0 1 2 3
}//<<<
return (Animal); //這個傳值反回效率太低下
}
//---------Malloc
void* Malloc(size_t Size){
void * Memory;
if((Memory = malloc(Size))==NULL){
perror("Cannot malloc");
exit(EXIT_FAILURE);
}else{
return(Memory);
}
}
//---------Print
void PrintTypes(AnimalType Type){
printf("%s has size %lf and is a %d\n",Type.name,Type.size,Type.type);
}
//---------Main
int main(void){
AmazonType Amazon;//<<< 一個元素的數組真的需要麼??
AnimalType *Data;
int Size=INITIAL_SIZE;
int Index,LastIndex;
InitializeAnimal(Amazon);
//Data = &Amazon[Size];//<<< 無效的語句且是錯誤的指向
Data = (AnimalType*)Malloc(Size*sizeof(AnimalType));
if(Data==NULL){
printf("Error!");
exit(EXIT_FAILURE);
}
LastIndex=-1;
//while(strcmp(Amazon[Size].name,"exit")!=0){ //Amazon[Size].name越界訪問了,最多隻可訪問Amazon[Size-1]
while(1){
LastIndex++;
if(LastIndex == Size){
Size *= 2;
Data = (AnimalType*)realloc(Data,Size*sizeof(AnimalType));
}
Amazon[0]=GetInfo();
if(strcmp(Amazon[0].name,"exit")==0) break;//<<<退出加這里
Data[LastIndex] = Amazon[0];//<<<添加 這是結構體傳值,就是一個內存塊的整體拷貝了
};
printf("The following new species were found: \n");
//for(Index=0;Index<Size;Index++){ //<<<Size可能大於LastIndex LastIndex才是實際個數
for(Index=0; Index < LastIndex; Index++){
//PrintTypes(Amazon[Index]);
PrintTypes(Data[Index]);
}
free(Data);
return(EXIT_SUCCESS);
}
//盡量保持原樣
上面程序還可以大改進 完全沒必要AmazonType類型,一個元素的數組總是可以用一個元素來替掉還可以少寫那麼多的中括弧...

Ⅱ 剛學c語言 編寫的簡單的程序 為什麼總出錯呢 幫那你看看哪裡不對 謝謝

你的格式是錯的,一行只能有一條預處理指令,代碼改成如下:
#include <math.h>
#include <stdio.h>
int main(void)
{
double x,s;
printf("input number:\n");
scanf("%lf",&x);
s=sin(x);
printf("sine of %lf is %lf\n",x,s);
return 0;
}

Ⅲ C語言初學者:很多代碼都看不明白怎麼辦

多看看書
是對的
看書不要死看
先把基本的語法
看懂

要看他的演算法
掌握這兩點
就不會很吃力了
有的剛開始看不怎麼明白
你一定要堅持
等看到後面
有時你就會豁然開然
前面為什麼不怎麼懂了

Ⅳ 求助 C語言 ····剛開始學 完全摸不著頭腦啊 ···

#include<stdio.h>
#include<math.h>

double main(void)
{
float weight=0.0;
float pounds;

while(weight>=0.0)
{
printf("Enter your weight in kilograms: ");
scanf("%f",&weight);
if(weight<0.0)
{
break;
}

pounds=weight*2.2046;
printf("Oh,you weight %f pounds\n",pounds);

pounds=ceil(pounds*100-0.5);
pounds=pounds/100.0;
printf("approximately %.2f pounds\n",pounds);

pounds=0;

printf("\n");

}
printf("***End of program***\n");
return 0.0;
}

學校出的題目怎麼這么繁瑣。。

Ⅳ C語言編程的時候總是出錯,而且無論什麼程序所出的錯誤提示都是一樣的,怎麼解決

先把源程序復制,關掉環境,重開環境,再重新新建一個文件,把代碼復制在裡面

新建文件的存儲位置重新放在一個地方,然後把文件名重新命名一個就行了(要和以前的那個名字不一樣)

Ⅵ c語言初學者不知道代碼哪錯了

你操作了空指針

main()
{
btop,p;
top=(b)malloc(sizeof(structa));
top->next=NULL;
p=top;
intt=1;
while(t!=0)
{
scanf("%d",&t);
p->n=t;
//這里你應該要給p->next這個指針malloc空間出來
//否則下次循環的時候p的值為NULL,為空指針
//你再p->n這樣對p解引用就會報錯
p=p->next;
}
//這里要加一句把p的值置為NULL
p=top;
//這里的判斷條件應該直接用p,當p為空指針的時候結束循環
while(p->n!=0)
{
printf("%d",p->n);
p=p->next;
}
}

Ⅶ C語言初學者,用codeblocks練習代碼,可以不管敲什麼都總是報錯怎麼回事。錯誤也看不懂

初步看是使用了全形符號造成的,疑似是括弧

請務必在英文輸入模式下輸入代碼

初學者括弧往往會輸錯,是因為括弧需要按住shift和9/0來組合,而按住shift這個操作不熟練的話,會變成單擊shift,這會切換中英文輸入狀態

建議是將輸入法切換到英文鍵盤,而不是中文鍵盤的英文狀態,這倆是完全不同的

切換到英文鍵盤,shift不會切回中文。

Ⅷ 我今天剛學習了c語言,感覺是一點聽不懂,我該怎麼辦呢

如果剛開始接觸c語言,聽不懂也正常,不要有畏懼的心理,有些小夥伴可能看到部分同學什麼都會,自己就很氣餒,因為這部分同學很可能接觸編程比較早,即使小孩學走路也有一個過程,剛開始有走路慾望->學會站立,腿部有力量->嘗試走路,不斷練習->學會走路。所以不要慌。
學C語言與走路一樣,剛開始一定要有學習的慾望,然後,再制定計劃,不斷練習,量變會引起質變,堅持下去就發現原來這么簡單。
1、學習資料
書本推薦:《c primer plus》難得的好書。老譚的書可看可不看,但是這本藍皮的c primer plus是我案頭必備的參考書,後面還有完整的c99標准庫,所以適合當個參考書。注意區分一下《c++ primer》和《c primer plus》
如果覺得這幾本書還是有點難,那就先看《C語言程序設計》
有了經驗後要去看看,例子很經典。後來進階可以看看三劍客《c和指針》《c陷阱與缺陷》《c專家編程》
剛學C語言的話可以結合看下C語言編程經典100例;
編譯器:VS,DevC++,VC++,CodeBlocks,C-Free,Turbo C。關於它們的特點網上介紹很多了,就不贅述了。講真,入門和基礎階段你用哪個無所謂,還是選自己喜歡的,不過對於初學者我們推薦Dev C++。可能現在大學課堂用的還是VC++,剛入門自己習慣就行。
視頻推薦:有同學曾經說過,視頻這么好,上課就不用聽講了,這個是完全錯誤的,視頻是課堂補充,上課還是一定要好好聽講的,視頻可以查缺補漏,系統的學習一下。b站找
學習方法:
1、過:學習一門新的語言,第一步就是把它所涉及的基礎知識大體過一點,不求深解,只求了解——第一遍:無需了解太過深入的理論,大體知道這門語言是什麼樣的,主要面向哪些場合,一些基本的語法格式是什麼樣的就可以了。
2、抄代碼:剛開始寫代碼,沒有多少人一上來就能立刻自己寫一個很完善很強大的代碼,甚至連基本的語法都會寫錯,這時候抄代碼就很關鍵了,從書上抄,從例子里抄,邊抄邊想,邊想邊回憶語法。
3、模仿改:自己會抄寫一些簡單的代碼,熟悉了一遍此語言的簡單語法後,但還不太清楚怎樣下手寫一個完整的代碼模塊,所以這一步要仿寫了,仿照給出的代碼寫一個屬於自己的代碼
4、勤調試:沒有人能一下子寫出完全正確的代碼,自己試著寫一些代碼,通過不斷調試來驗證自己的一些想法,繼續思考,再次驗證,來回折騰。熟悉一些基本的調試工具以及調試方法。
5、看n遍:出錯或遇到問題時,將代碼從頭看到尾,看了一遍又一遍,直到快全部記住時,總能找出問題原因,相信方法總會比問題多
6、練重復2-5步三遍以上,不解釋。
7、創新拿出一個完全沒有寫過的代碼,根據要求,一步步的寫出來。如果寫不出來,或者中間一堆錯誤,請參考第六步。
8、悟:主動找到寫代碼的感覺和成就感,並保持下去,世界上最難的語言就掌握了,將成為你軟體生涯永遠的工具。

Ⅸ 剛開始學C語言,煩死了!!寫個代碼就出錯

一般情況下查不出來錯誤很大幾率是因為符號的問題,就是漢語使用的全形符號和英文使用的半形符號搞混出錯,因為編程語言是無法識別中文使用的全形符號的。
其次vc++編譯出錯後會告訴你哪個文件第幾行出錯的,錯誤就在那行找就行,英文寫得很簡單,大概看下就能懂。
最後建議你安裝一個vc++編程助手,有這玩意小的錯誤在敲代碼的時候就可以直接幫你指出來,很方便。
你的代碼可能是符號有問題,自己檢查下,我給你復寫一遍代碼:
#include <stdio.h>
void main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}

Ⅹ c語言不知道如何學啊剛開始學根本找不到頭腦,編那些程序根本不會,請介紹學的方法,謝謝了!

一開始就從C學編程是一種對學生非常粗暴的方式

作為一個過來人,先推薦你看《編碼的奧秘》這個非常淺顯而深入的講解了計算機體系原理

而且趣味性非常強,可以當散文看的,網路文檔上就有這個的電子版。

至於編程,建議從相對簡單的語言培養興趣,比如Scheme

麻省理工有套非常出名的Scheme教程HTDP , How to Design Programs(如何設計程序)

可以訪問其網站有免費的在線電子版不過是E文的 (網站www.htdp.org)

人民郵電出版社也翻譯過這本書,它採用Scheme語言教學,從很簡單的程序開始,一步一步學

習。它並不專注於語言本身,而是教你如何編程,開始的寫的程序可能會非常簡單,簡單到你都

想笑。隨著課程深入,會慢慢變難,一定要扎實的循序而學,不要因為簡單而跳過章節。

到後來你發現已經可以寫出很復雜的東西,游戲、web伺服器、網站後台等。

這時你倒回來學C什麼的,輕松加愉快,因為你已經不拘於語言,你學到的是如何編程。

雖然我從事C\C++編程6年,但是當我看到這本HTDP並抱著興趣的想法,學習完了它,

我真的覺得,如果當初我學編程的第一本書就是看的它,而且認真的學了,估計我要少走很多

彎路。C對初學者太不友好了,它讓你被語法和一堆不熟悉的東西蒙住而不容易接觸到編程的本

質,雖然我們以前就是從C學編程,也就那麼過來了,但是其中的辛苦各人自知。