


版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第 9 章 結構練習 9-1 】定義一個能夠表示復數(shù)的結構類型,一個復數(shù)包括實數(shù) 與虛數(shù)兩個部分。解答:struct complexfloat real;float imaginary;【練習 9-2 】人的出生日期由年、月、日組成,請在例 9-1 中的通 訊錄結構中增加一個成員: 出生日期, 用嵌套定義的方式重新定義該 結構類型。解答:struct dateint year;int month;int day;struct studentint num;char name10;struct date birthday;int computer,english,math;double aver
2、age;【練習 9-3】例 9-1 中,如果要計算的是三門課程的課程平均成績, 應該如何改寫程序?解答:#include<stdio.h>struct studentint num;char name10;int computer,english,math;double average;int main(void)int i, n;double math_sum,english_sum,computer_sum;struct student s1;printf("Input n:");scanf("%d", &n);printf(&q
3、uot;Input the student's number, name and course scores:n");math_sum=english_sum=computer_sum=0;for(i=1;i<=n;i+)printf("No.%d:",i);scanf("%d%s%d%d%d",&s1.num,,&s1.math,&s1.english ,&puter);math_sum+=s1.math;english_sum+=s1.english; computer_sum+=
4、puter;printf("math_ave:%.2lfnenglish_ave:%.2lfncomputer_ave :%.2lfn",math_sum/n,english_sum/n,computer_sum/n);return 0;【練習 9-4 】定義一個包含 5 名學生信息的結構數(shù)組,并對該結構 數(shù)組的所有元素進行初始化。解答:struct studentint num;char name10;int computer, english, math;struct student s5=30101, "張一",69,75,84 ,30132, &
5、quot;李二",80,85,90,40231, "王三",71,91,74,40754, "趙四",65,76,87,50426, " 劉五 ",81,92,73;【練習 9-5 】參考例 9-2 ,輸入并保存 10 個學生的成績信息,分別 輸出平均成績最高和最低的學生信息。解答:#include<stdio.h>struct studentint num;char name10;int computer,english,math;double average;int main(void)int i,n,max
6、,min;struct student students50;printf("Input n:");scanf("%d",&n);for(i=0;i<n;i+)printf("Input the info of No.%d:n",i+1);printf("number:");scanf("%d",&studentsi.num);printf("name:");scanf("%s",&);printf
7、("math score:");scanf("%d",&studentsi.math);printf("english score:");scanf("%d",&studentsi.english);printf("computer score:");scanf("%d",&puter);studentsi.average=(studentsi.math+studentsi.english+puter
8、)/3.0;max=min=0;for(i=1;i<n;i+)if(studentsmax.average<studentsi.average) max=i;if(studentsmin.average>studentsi.average) min=i;printf("max_average_infortmation:n");printf("number:%d,name:%s,math:%d,english:%d,computer:% d,average:%.2lfn",studentsmax.num,,
9、stu dentsmax.math,studentsmax.english,pute r,studentsmax.average);printf("min_average_information:n");printf("number:%d,name:%s,math:%d,english:%d,computer:% d,average:%.2lfn",studentsmin.num,,stu dentsmin.math,studentsmin.english, pu
10、ter, studentsmin.average);return 0;【練習 9-6 】定義一個 struct student 一個學生信息的輸入和輸出。解答:struct student/*/int num;/*char name10;/*int computer, english, math ; /* double average;/*s, *p;類型的結構指針,用其實現(xiàn)學生信息結構定義學號 */姓名 */ 三門課程成績 */ 個人平均成績 */p = &s;scanf("%d%s%d%d%d", &p->num, p->name, &
11、;p->math, &p->english, &p->computer);【練習 9-7 】改寫例 9-3 中的函數(shù) update_score( ) ,將第一個形 參改為結構數(shù)組形式。s,intn,int num,int解答:int update_score(struct studentcourse,int score)int i,pos;for(i=0;i<n;i+)if(si.num=num)break;if(i<n)switch(course)case 1:si.math=score; break;case 2:si.english=scor
12、e; break;case 3:puter=score; break;pos = i;elsepos = -1;return pos;習題 9一、選擇題1下面定義結構變量的語句中錯誤的是DA struct student int num; char name20; s;B struct int num; char name20; s;C struct student int num; char name20; ; struct students;D struct student int num; char name20; ; student s;2如果有定義語句:struct in
13、t x, y; s2 = 1, 3 , 2, 7 ;則語句: printf( “%dn”, s0.y/s1.x );輸出結果 為B 。A 0B 1C3根據(jù)下面的定義,能打印出字母struct person2M 的語句是DC3。char name10;int age; c10 = “John”, 17, “Paul ”, 19, “ Mary”, 18,“Adam”,16 ;Aprintf( “%c”, );B printf(“%c”,1);C printf( “%c”, 0);Dprintf(“%c”,1);4. 設有如下定義,則對dat
14、a中的a成員的正確引用是Bstruct sk int a; float b; data, *p 二&data;A. (*p).data.aB.(*P).aC. p->data.aD. 5. 對于以下結構定義,(*p)->str+中的+加在D <struct int len; char *str; *p;A.指針str 上B.指針p上C. str指向的內(nèi)容上D.語法錯誤 二、填空題1. “. ”稱為 成員_(分量)_運算符,“->”稱為指向_運算符2. 完成下列程序,該程序計算10名學生的平均成績。#in clude <stdio.h> #i nclu
15、de <stri ng.h> struct stude nt int num;char n ame20;int score;struct stude nt stud10; int main(v oid)int i , sum = 0 ;for(i = 0; i < 10; i+)scanf("%d%s%d ", studi.num,__, studi.score);sum += studi.score;printf("aver = %d n", sum/10);return 0;3. 下列程序讀入時間數(shù)值,將其加1秒
16、后輸出,時間格式為:hh: mm: ss,即小時:分鐘:秒,當小時等于 24小時,置為0。#include<stdio.h>struct int hour, minute, second; time;int main(void)scanf("%d:%d:%d",_&time.hour, &time.minute,&time.second_);time.second+;if( _time.second_ = 60)_time.minute+ _;time.second = 0;if(time.minute = 60)time.hour+;t
17、ime.minute = 0;if( _time.hour = 24_ )time.hour = 0;time.minute,printf ("%d: %d: %d n", time.hour, time.second );return 0;4寫出下面程序的運行結果 1 2 A B struct s1char c1, c2;int n;struct s2int n;struct s1 m; m = 1, A', 'B' , 2 ; int main(void)printf( “%return 0;n”5寫出下面程序的運行結果23, wang, 98.
18、5, wang。struct abcint a;float b;char *c; ;int main(void)struct abc x = 23,98.5,"wang"struct abc *px = &x;printf("%d, %s, %.1f, %s n", x.a, x.c, (*px).b, px->c );return 0;三、程序設計題1. 時間換算:用結構類型表示時間內(nèi)容(時間以時、分、秒表示) , 輸入一個時間數(shù)值,再輸入一個秒數(shù) n(n<60) ,以 h:m: s 的格式輸 出該時間再過 n 秒后的時間值 (超過
19、 24 點就從 0 開始計時)。試編寫 相應程序。解答:#include<stdio.h> struct timeint hour;int minute;int second;int main(void)int n;struct time tim;printf("Enter time:");scanf("%d%d%d",&tim.hour,&tim.minute,&tim.second); printf("Enter seconds:");scanf("%d",&n);t
20、im.hour=(tim.hour*60*60+tim.minute*60+tim.second+n)/3600%2 4;tim.minute=(tim.minute*60+tim.second+n)/60%60; tim.second=(n+tim.second)%60;printf("%d:%d:%d",tim.hour,tim.minute,tim.second);return 0;2.計算兩個復數(shù)之積: 編寫程序, 利用結構變量求解兩個復數(shù)之積(3+4i) x (5+6i )。提示:求解(a1+a2i) x(b1+b2i),乘積的實部為:aix bl - a2x b
21、2, 虛部為: a1x b2 + a2 x b1。解答:#include<stdio.h>struct complexint real,im;struct complex cmult(struct complex a,struct complex b);int main(void)struct complex a=3,4,b=5,6,c;c=cmult(a,b);printf("(%d+%di)(%d+%di)=%d+%din",a.real,a.im,b.real,b.im,c.real,c.im);return 0;struct complex cmult(
22、struct complex a,struct complex b)struct complex c;return c;3.平面向量加法:輸入兩個二維平面向量V1=(xl, y1)和V2=(x2,y2)的分量,計算并輸出兩個向量的和向量。試編寫相應程序。解答:#include<stdio.h>struct vectorfloat x,y;struct vector vec(struct vector v1,struct vector v2);int main(void)struct vector v1,v2,v;printf("x1 and y1:");scan
23、f("%f%f",&v1.x,&v1.y);printf("x2 and y2:");scanf("%f%f",&v2.x,&v2.y);v=vec(v1,v2);printf("v=(%f,%f)",v.x,v.y);return 0;struct vector vec(struct vector v1,struct vector v2)struct vector v;v.x=v1.x+v2.x;v.y=v1.y+v2.y;return v;4. 查找書籍:從鍵盤輸入 10 本書的
24、名稱和定價并存入結構數(shù)組中, 從中查找定價最高和最低的書的名稱和定價, 并輸出。 試編寫相應程 序。解答:#include<stdio.h>#define NUMBER 10struct bookchar name10;float price;int main(void)int i,maxl,minl,n;struct book testNUMBER;for(i=0;i<NUMBER;i+) scanf("%s%f",,&testi.price);maxl=minl=0;for(i=1;i<n;i+)if(testmaxl
25、.price<testi.price) maxl=i; if(testminl.price>testi.price) minl=i;printf("MaxPrice:%f,%sn",testmaxl.price,);printf("MinPrice:%f,%sn",testminl.price,);return 0;5通訊錄排序:建立一個通訊錄,通訊錄的結構包括:姓名、生日、 電話號碼;其中生日又包括三項:年、月、日。編寫程序,定一個嵌 套的結構類型,輸入n(n < 10)個聯(lián)系人信息
26、,再按照他們的年齡從大到小依次輸出其信息。試編寫相應程序。解答:#include<stdio.h>struct dateint year;int month;int day;struct friends_listchar name10;struct date birthday;char phone15;void sort(struct friends_list s,int n);int main(void)int i,n;struct friends_list friends10;printf("Input n:");scanf("%d",&
27、amp;n);printf("Input %d friends' name ,birthday and phone:",n);for(i=0;i<n;i+)scanf("%s%d%d%d%s",,&friendsi.birthday.year,&friendsi.birthday.month,&friendsi.birthday.day,&friendsi.phone);sort(friends,n);for(i=0;i<n;i+)printf("%s%d/%d/%d
28、%sn",,friendsi.birthday.year,friendsi.birthday.month,friendsi.birthday.day,friendsi.phone);return 0;void sort(struct friends_list s,int n)int i,j,index;struct friends_list temp;for(i=0;i<n-1;i+)index=i;for(j=i+1;j<n;j+)if(sindex.birthday.year>sj.birthday.year)index=j;else
29、if(sindex.birthday.year=sj.birthday.year)&&(sindex.birthday.month>sj.birthday.month)index=j;else if(sindex.birthday.year=sj.birthday.year) &&(sindex.birthday.month=sj.birthday.month)&&(sindex .birthday.day>sj.birthday.day)index=j;temp=si;si=sindex;sindex=temp;6按等級統(tǒng)計學生成績:輸入 10 個學生的學號、姓名和成績,輸 出學生的成績等級和不及格人數(shù)。每個學生的記錄包括學號、姓名、 成績和等級, 要求定義和調(diào)用函數(shù) set_grade() 根據(jù)學生成績設置其 等級,并統(tǒng)計不及格人數(shù),等級設置: 85
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范本有作用
- 烏市購房合同范本
- 墓地個人協(xié)議合同范本
- 合租鋪子轉讓合同范本
- 個人間合作合同范本
- 2025年防腐導靜電材料項目合作計劃書
- 危廢收購合同范例
- 勞改農(nóng)場收購合同范本
- 倉庫采購生產(chǎn)合同范本
- 出租電梯廣告合同范本
- 化工分離過程1緒論第1講ppt課件精選
- 陶板幕墻施工方法
- 設備管理培訓教材
- 財務報表分析財務報表分析課件
- T∕CCCMHPIE 1.2-2016 植物提取物 檳榔多糖多酚
- 局域網(wǎng)規(guī)劃設計_畢業(yè)論文
- 脛骨平臺骨折(課堂PPT)
- 冷室壓鑄機電腦操作控制部分操作說明
- 中考復習復分解反應類型方程式書寫訓練題(無答案)
- 病理學課程標準
- 通橋(2013)8388A常用跨度梁橋面附屬設施_圖文
評論
0/150
提交評論