1樓:古神孤鴻
#include
struct date;
struct car;
int main(void)
};printf ("車牌號\t載客量\t顏色\t出廠日期\n");
printf ("%d\t%d\t%s\t%d/%d/%d", vehicle.license, vehicle.busload, vehicle.
color, vehicle.date.year, vehicle.
date.month, vehicle.date.
day);
return 0;}
c語言結構體程式設計題,求大神!
c語言結構體題目 120
2樓:水裡風
主要是題目有點煩,因為%d%s%d這個地方字串的接收遇到乙個空格可能就接收完了,但是第二組資料pencial box本身就是帶空格的,跑了一下發現這組資料生成了兩個結構體變數,乙個是pencial,另乙個是pen,pencial裡的另外兩個資料是亂碼的。考慮到所有的商品名稱都有可能是多個單詞組合成的,而本身又無法提前知道會有多少個空格進來,所以這裡的輸入可能得考慮直接用%s接收,然後從陣列最後往前割出需要的數字,再用 atof()將字串轉換為小數,atoi()將字串轉換為整數,能弄出來的但是太麻煩了= =或者有什麼更好的scanf接收格式,暫時也沒找到。。。
3樓:匿名使用者
這種情況,不能使用scanf,而是應該一次讀入一行資料,然後再對讀入資料進行解析,分離各個資料。
用fgets, 或getline
並且,既然你的name有英式風格(允許空格),那麼就應該使用其它符號做間隔符,如逗號。
或者這樣,把輸入分開來寫。
scanf("%[^\n]", a[i].name);
輸入的時候,name獨立一行輸入, num, price可以一行輸入。
4樓:秦思
scanf("%s%d%f"
中間加空格
scanf("%s %d %f"
最後那個sum
列印printf("%f",sum);
for迴圈i從0開始
5樓:匿名使用者
scanf中的"%s%d%f"改為"\n%[^0-9]%d%f"
6樓:匿名使用者
有兩個問題:1. 有越界問題,而且a[0]浪費了
2. 為什麼不初始化呢?
關於c語言的題目:用結構體定義乙個複數,並實現複數的加法、減法和乘法。
7樓:你愛我媽呀
#include
struct complex
int re;
int im;
void add(struct complex a, struct complex b, struct complex *c)
c->re=a.re+b.re;
c->im=a.im+b.im;
void minus(struct complex a, struct complex b, struct complex *c)
c->re=a.re-b.re;
c->im=a.im-b.im;
int main()
struct complex x,y,s,p;
scanf("%d%d",&x.re,&x.im);
scanf("%d%d",&y.re,&y.im);
add(x,y,&s);
minus(x,y,&p);
8樓:匿名使用者
#include
#include
typedef struct mycomplexmc;mc plus(mc a,mc b)mc sub(mc a,mc b)
mc multi(mc a,mc b)
void show(mc a)
}int main()
按照a+bi這樣的格式輸入就可以了
c語言程式設計程式設計題目:請 :編寫完成對學生相關資訊的要求:1.定義乙個結構體型別student,其中包括三個成
9樓:匿名使用者
c語言課程設計任務書
一、題目: 學生成績管理
二、目的與要求
1. 目的:
(1)基本掌握面向過程程式設計的基本思路和方法;
(2)達到熟練掌握c語言的基本知識和技能;
(3)能夠利用所學的基本知識和技能,解決簡單的程式設計問題
2. 要求
基本要求:
1. 要求利用c語言面向過程的程式設計思想來完成系統的設計;
2. 突出c語言的函式特徵,以多個函式實現每乙個子功能;
3. 畫出功能模組圖;
4. 進行簡單介面設計,能夠實現友好的互動;
5. 具有清晰的程式流程圖和資料結構的詳細定義;
6. 熟練掌握c語言對檔案的各種操作。
創新要求:
在基本要求達到後,可進行創新設計,如系統使用者功能控制,對管理員級和一般級別的使用者系統功能操作不同
三、資訊描述
輸入乙個班10個學生的學號和每個學生考試三門功課(數學、英語、計算機基礎)的成績。程式設計計算出每個學生的總分和平均分,並按學生成績優劣排序,最後列印一張按高分到低分名次排序的成績單。要求:
1)排序用乙個函式實現。
2)列印的成績單表項包括:序號,學號、數學、英語、計算機、總分、平均分。
3)按實驗報告電子模板格式填寫實驗內容。
四、功能描述
1. 學生基本資訊及成績所選科目成績的錄入。
2. 基本資訊的查詢(分系、班級;分科目)與修改。
3. 對每系或每班各科成績進行分析(即求單科平均成績、及格率和優秀率);
4. 對所開課程的成績分析(求其平均成績,最高分和最低分);
5. 對學生考試成績進行排名(單科按系別或班級進行排名,對每乙個班級,同一學期學生總體成績進行排名,並顯示各科成績資訊)
五、解決方案
1. 分析程式的功能要求,劃分程式功能模組。
2. 畫出系統流程圖。
3. **的編寫。定義資料結構和各個功能子函式。
4. 程式的功能除錯。
5. 完成系統總結報告以及使用說明書
六、進度安排
此次課程設計時間為兩周,分四個階段完成:
1. 分析設計階段。指導教師應積極引導學生自主學習和鑽研問題,明確設計要求,找出實現方法,按照需求分析、總體設計、詳細設計這幾個步驟進行。
2. 編碼除錯階段:根據設計分析方案編寫c**,然後除錯該**,實現課題要求的功能。
3. 總結報告階段:總結設計工作,寫出課程設計說明書,要求學生寫出需求分析、總體設計、詳細設計、編碼、測試的步驟和內容。
4. 考核階段。
#include
#include
#define stu_num 10 /*巨集定義學生的數量*/
struct student /*定義乙個結構體用來存放學生學號、三門課成績、總分及平均成績*/
; /*排序用乙個函式來實現*/
void sortscore(student *stu,int n) }
} int main( )
c語言規定:定義時用a[10],表示a陣列有10個元素。其下標值由0開始,所以陣列元素a[10]是不存在的。
16.初始化陣列時,未使用靜態儲存。
int a[3]=;
這樣初始化陣列是不對的。c語言規定只有靜態儲存(static)陣列和外部儲存(exterm)陣列才能初始化。應改為:
static int a[3]=;
17.在不應加位址運算子&的位置加了位址運算子。
scanf("%s",&str);
c語言編譯系統對陣列名的處理是:陣列名代表該陣列的起始位址,且scanf函式中的輸入項是字元陣列名,不必要再加位址符&。應改為:
scanf("%s",str);
18.同時定義了形參和函式中的區域性變數。
int max(x,y)
int x,y,z;
形參應該在函式體外定義,而區域性變數應該在函式體內定義。應改為:
int max(x,y)
int x,y;
c語言心得體會
通過這次實訓,增加了我學習軟體技術的興趣,雖然還不明確軟體技術包含的具體內容,但從c語言這門課程開始,已發現程式設計的樂趣,在學習c語言的過程中也學到了許多計算機應用基礎知識,對計算機的機體也有了乙個大體的了解。
這次實訓是老師給了範例程式,經過自己的改寫,實現要求。先做簡單的輸出,一步步的再做其它圖案,在實際操作過程中犯的一些錯誤還會有意外的收穫,感覺實訓很有意思。在具體操作中對這學期所學的c語言的理論知識得到鞏固,達到實訓的基本目的,也發現自己的不足之出,在以後的上機中應更加注意,同時體會到c語言具有的語句簡潔,使用靈活,執行效率高等特點。
發現上機實訓的重要作用,特別是對陣列和迴圈有了深刻的理解。
通過實際操作,學會 c語言程式程式設計的基本步驟、基本方法,開發了自己的邏輯思維能力,培養了分析問題、解決問題的能力。深刻體會到「沒有做不到的,只有想不到的」,「團結就是力量」,「實踐是檢驗真理的標準」,「不恥下問」……的寓意。
計時在此希望以後應多進行這樣的實訓,加長設間,培養學生獨立思考問題的能力,提高實際操作水平。
八、參考資料 :《c語言程式設計教程》
幫忙用c語言寫個簡單的小程式,題目如下:利用結構體資料型別程式設計
10樓:蔓延人散
這個題好做 但是利用結構體資料型別程式設計是什麼呀? 只要實現就行麼?
用c語言編寫學生基本資訊(最好用結構體)拜託啦,急求!
11樓:匿名使用者
在c語言中,可以使用結構體(struct)來存放一組不同型別的資料。結構體的定義形式為:
struct 結構體名;
結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員(member)。請看下面的乙個例子:
struct stu;
stu 為結構體名,它包含了 5 個成員,分別是 name、num、age、group、score。結構體成員的定義方式與變數和陣列的定義方式相同,只是不能初始化。
注意大括號後面的分號;不能少,這是一條完整的語句。
結構體也是一種資料型別,它由程式設計師自己定義,可以包含多個其他型別的資料。
像 int、float、char 等是由c語言本身提供的資料型別,不能再進行分拆,我們稱之為基本資料型別;而結構體可以包含多個基本型別的資料,也可以包含其他的結構體,我們將它稱為複雜資料型別或構造資料型別。
結構體變數
既然結構體是一種資料型別,那麼就可以用它來定義變數。例如:
struct stu stu1, stu2;
定義了兩個變數 stu1 和 stu2,它們都是 stu 型別,都由 5 個成員組成。注意關鍵字struct不能少。
stu 就像乙個「模板」,定義出來的變數都具有相同的性質。也可以將結構體比作「圖紙」,將結構體變數比作「零件」,根據同一張圖紙生產出來的零件的特性都是一樣的。
你也可以在定義結構體的同時定義結構體變數:
struct stu stu1, stu2;
將變數放在結構體定義的最後即可。
如果只需要 stu1、stu2 兩個變數,後面不需要再使用結構體名定義其他變數,那麼在定義時也可以不給出結構體名,如下所示:
struct stu1, stu2;
這樣做書寫簡單,但是因為沒有結構體名,後面就沒法用該結構體定義新的變數。
理論上講結構體的各個成員在記憶體中是連續儲存的,和陣列非常類似,例如上面的結構體變數 stu1、stu2 的記憶體分布如下圖所示,共占用 4+4+4+1+4 = 17 個位元組。
但是在編譯器的具體實現中,各個成員之間可能會存在縫隙,對於 stu1、stu2,成員變數 group 和 score 之間就存在 3 個位元組的空白填充(見下圖)。這樣算來,stu1、stu2 其實占用了 17 + 3 = 20 個位元組。
關於成員變數之間存在「裂縫」的原因,我們將在《c語言和記憶體》專題中的《c語言記憶體對齊,提高定址效率》一節中詳細講解。
成員的獲取和賦值
結構體和陣列類似,也是一組資料的集合,整體使用沒有太大的意義。陣列使用下標[ ]獲取單個元素,結構體使用點號.獲取單個成員。獲取結構體成員的一般格式為:
結構體變數名.成員名;
通過這種方式可以獲取成員的值,也可以給成員賦值:
#include
int main() stu1;
//給結構體成員賦值
stu1.name = "tom";
stu1.num = 12;
stu1.age = 18;
stu1.group = 'a';
stu1.score = 136.5;
//讀取結構體成員的值
printf("%s的學號是%d,年齡是%d,在%c組,今年的成績是%.1f!\n", stu1.
name, stu1.num, stu1.age, stu1.
group, stu1.score);
return 0;
}執行結果:
tom的學號是12,年齡是18,在a組,今年的成績是136.5!
除了可以對成員進行逐一賦值,也可以在定義時整體賦值,例如:
struct stu1, stu2 = ;
不過整體賦值僅限於定義結構體變數的時候,在使用過程中只能對成員逐一賦值,這和陣列的賦值非常類似。
c語言定義結構體變數,C語言 定義結構體變數
樂跑小子 首先,定義一個結構的一般形式為 struct結構名 成員表由若干個成員組成,每個成員都是該結構的一個組成部分。對每個成員也必須作型別說明,其形式為 型別說明符 成員名 成員名的命名應符合識別符號的書寫規定。例如 struct stu 在這個結構定義中,結構名為stu,該結構由4個成員組成。...
C語言結構體選單問題,C語言結構體實現多級選單的困惑,請高手解答
首先struct menuitem menupoint main menu 1f 這沒錯,但一般不會這麼用,加括號只是在必要時,如定義行指標獲函式指標時 typedef重定義型別更好 至於為什麼會出現error c230 menuitem unknown struct union enum tag ...
c語言結構體定義了,C語言結構體 定義了typedef struct int key element 能否在main函式裡定義element x
bai。太強大了。翻譯過du來是這樣zhi的。定義 型別dao 型別名。簡單說。int是整型內。容那element 就相當於int a中的a,struct相當於int。理解麼?不理解。換個,陣列名。就是element,陣列就是 struct key就是陣列裡面的 i。這樣該懂了吧。沒有名稱的結構體就...