問題重述:模擬圖書館管理系統。每名讀者只能借一本書,讀者可借書或還書。管理員可對圖書和讀者資訊進行錄入、修改和刪除。圖書資訊至少應包括:編號、書名、數量,讀者資訊至少應包括:編號、姓名、所借圖書。可根據圖書名稱或編號進行圖書資訊查詢,可查詢某本書現在被哪些讀者借走。
演算法描述:由於目標是乙個綜合系統,將其精簡成各個子程式,分別實現不同的功能,使用switch在主程式中,有好多功能在case中,每個功能都由子程式來實現。分別進行子程式中功能的實現,最終進行呼叫,形成乙個綜合系統。
源**:
#include
#include
#include
#define size 1000
//最多有1000首歌曲
struct mc
music[size]
;intjc(
char name[15]
)//點歌時檢查是否存在該歌曲,如果存在則返回1;並且輸出歌曲資訊
return0;
fclose
(fp);}
void
add(
)//新增歌曲部分
}fclose
(fp);}
void
del(
)/*刪除歌曲功能(把歌曲資訊從music.txt中刪除),這裡用到的乙個shan,該標誌定義在結構體中,shan初始是1;
如果刪除歌曲與歌曲資訊相同則shan變成0;有了這個標誌,可以選擇的把歌曲資訊重新錄入tmp.txt檔案中*/
//讀出歌曲資訊
k=i;
printf
("請輸入要刪除的歌曲名稱:\n");
gets
(name)
;int a=
jc(name);if
(a==0)
for(j=
0;j<
(k-1
);j++)}
//把原來的歌曲資訊從music.txt中刪除
for(j=
0;j<
(k-1
);j++)}
fclose
(fo)
;fclose
(fp)
;//選擇性重新錄入歌曲資訊
remove
("music.txt");
//刪除原檔案
rename
("tmp.txt"
,"music.txt");
//將臨時檔名改為原檔名
printf
("刪除成功\n");
}void
choose1()
//只有在music.txt裡面存了該歌曲才可以開啟該歌詞,否則就算歌詞存在也沒有用
//檢擦是否存在 該歌曲,若存在輸出歌曲資訊,若不存在printf("該歌曲不存在,請新增\n");結束該分支
strcat
(name,
".txt");
file* fp=
fopen
(name,
"r");if
(fp==
null
)//歌詞不存在時打不開
for(i=0;
!feof
(fp)
;i++
)//輸出歌詞
fclose
(fp);}
void
choose2()
//同理,copy del中的讀取,判斷情況
int i,j,k=0;
//k用來記是否有該歌手歌曲
for(i=0;
!feof
(fp)
;i++
)fread
(&music[i]
,sizeof
(struct mc),1
,fp)
;for
(j=0
;j(strcmp
(music[j]
.singer ,singer)==0
)if(k==0)
printf
("沒有該歌手的歌曲;\n");
else
choose1()
;//輸入歌手,輸出歌手所有的歌曲,然後跳到choose1;進行點歌
fclose
(fp);}
void
scan()
//瀏覽所有曲目
void
out(
)//退出系統
}int
main()
//主函式
}}
測試結果不予展示
(1)問題重述:程式自動生成乙個位於99內的隨機數,要求使用者猜這個數。使用者輸入乙個數後,程式有三種應答:too big,too small,you win。
演算法描述:系統產生乙個非偽隨機數,所以用srand函式,使用者輸入數字,數猜對則退出。
源**:
#include
#include
#include
intmain()
else
if(belse
if(b=a)
}return0;
}
(2)問題重述:產生一組隨機數,要求每個數字不能重複。例如:1,20,3,17,80,4,35,88符合要求, 3,20,1,17,80,3,35,88不符合要求。
演算法描述:計算機產生一組隨機數,使用者可以控制產生隨機數的數量和範圍,寫乙個函式判斷產生的隨機數是否與之前相同,在主函式中呼叫這個函式,判斷如果相同,則重新產生,直到產生夠使用者所需要的數目
源**:
#include
#include
#include
intpd
(int a,
int b)
//判斷前面是否有數字相等的數字
return0;
}int
main()
//判斷與之前是否相同
printf
("%d "
,a[i]);
}return0;
}
這次對當初c語言程式進行複習,發現自己有很多關於c的細節都已經記不清了,所以大部分參考了當初提交的實驗報告。同時感嘆python和c++的便利強大。
python天下第一(滑稽
C語言程式設計(2)
題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提10 利潤高 於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於10萬元的部分,可可提 成7.5 20萬到40萬之間時,高於20萬元的部分,可提成5 40萬到60萬之間時高於 40萬元的部分,可提成3 60萬到1...
《C 語言程式設計》(2)
1 程式設計工作主要包括資料結構和演算法的設計。演算法要由一系列控制結構組成 2 c語言已經不能滿足運用物件導向方法開發軟體的需要。c 比c更安全,c 的編譯系統能檢查出更多的型別錯誤 3 物件是程式的基本單位,物件的靜態屬性往往需要用某種型別的資料來表示,物件的動態屬性要由成員屬性來實現,而函式的...
c語言程式設計作業2
通過對迴圈控制這一章的學習,了解了相較於之前更為複雜的c語言結構,並且開始解決一生活中常見的問題,將c語言程式設計進一步推向了實際應用。c語言提供for while do while三種迴圈語句。其中while語句 for語句屬於當型迴圈結構,do while語句屬於直到型迴圈語句,這三種語句各有各...