在實(shí)際問題中,一組數(shù)據(jù)往往具有不同的數(shù)據(jù)類型。例如,在學(xué)生登記表中,姓名應(yīng)為字符型;學(xué)號(hào)可為整型或字符型;年齡應(yīng)為整型;性別應(yīng)為字符型;成績可為整型或?qū)嵭汀?nbsp;
顯然不能用一個(gè)數(shù)組來存放這一組數(shù)據(jù)。因?yàn)?a href="http://www.niubm.net/tags/370/">數(shù)組中各元素的類型和長度都必須一致,以便于編譯系統(tǒng)處理。
【案例描述】
修改以下代碼中的錯(cuò)誤:
#include <stdio.h>;
struct Books{char name[50];int pages,year;}
main()
{ Books book;
scanf("%s%d%d",book.name,book.pages,book.year);
printf("%s,%d,%d\n",name,pages,year); }
【案例分析】
(1)預(yù)處理命令不是C語句,不能以分號(hào)結(jié)尾。
(2)定義結(jié)構(gòu)體類型的變量時(shí),struct關(guān)鍵字不能少。
(3)結(jié)構(gòu)體變量的成員也是變量。scanf函數(shù)需要這些變量的地址。
(4)引用結(jié)構(gòu)體變量的成員時(shí),結(jié)構(gòu)體變量的名稱不能缺省。
【參考代碼】
#include <stdio.h>
struct Books{char name[50];int pages,year;}
main()
{ struct Books book;
scanf("%s%d%d",book.name,&book.pages,&book.year);
printf("%s,%d,%d\n",book.name,book.pages,book.year); }