最近在利用空閑時間跟Coursera上北京大學的程序設計與算法專項課程,一共7門課程,這是第一門課計算導論與C語言基礎。
編程題#1:年齡與疾病來源: POJ (Coursera聲明:在POJ上完成的習題將不會計入Coursera的最后成績。)注意: 總時間限制: 1000ms 內存限制: 65536kB描述某醫院想統計一下某項疾病的獲得與否與年齡是否有關,需要對以前的診斷記錄進行整理。輸入共2行,第一行為過往病人的數目n(0 < n <= 100),第二行為每個病人患病時的年齡。輸出每個年齡段(分四段:18以下,19-35,36-60,大于60注意看樣例輸出的格式)的患病人數占總患病人數的比例,以百分比的形式輸出,精確到小數點后兩位(double)。關于c++的格式化的輸入輸出,請參考:http://www.cplusplus.com/reference/iomanip。也可以在網上搜索一下,資料很多的。
//第七周//編程題#1:年齡與疾病#include <iostream>using namespace std;#include <iomanip>int main(){ int n,x; n = x = 0; double total1, total2, total3, total4; total1=total2=total3=total4=0; double result1, result2, result3, result4; result1 = result2 = result3 = result4 = 0; cin >> n; for (int i=0;i<n;i++) { cin >> x; if (x<=18) { total1++; } else if (x<=35) { total2++; } else if (x<=60) { total3++; } else { total4++; } } result1 = total1 / n; result2 = total2 / n; result3 = total3 / n; result4 = total4 / n; cout << "1-18: " << fixed<<setPRecision(2) << result1*100<<"%"<<endl; cout << "19-35: " << fixed << setprecision(2) << result2 * 100 << "%" << endl; cout << "36-60: " << fixed << setprecision(2) << result3 * 100 << "%" << endl; cout << "60-: " << fixed << setprecision(2) << result4 * 100 << "%" << endl; return 0;}編程題#2:成績判斷來源: POJ (Coursera聲明:在POJ上完成的習題將不會計入Coursera的最后成績。)注意: 總時間限制: 1000ms 內存限制: 6000kB描述輸入一個0--100的分數,判斷分數代表什么等級。95<=分數<=100, 輸出190<=分數<95,輸出285<=分數<90,輸出380<=分數<85,輸出470<=分數<80,輸出560<=分數<70輸出6分數 < 60;輸出7.輸入n輸出m
//編程題#2:成績判斷#include <iostream>using namespace std;int main(){ int n; cin >> n; if (95 <= n && n <= 100) { cout << "1" << endl; } else if (90<=n && n<95) { cout << "2" << endl; } else if (85 <= n && n < 90) { cout << "3" << endl; } else if (80 <= n && n < 85) { cout << "4" << endl; } else if (70 <= n && n < 80) { cout << "5" << endl; } else if (60 <= n && n < 70) { cout << "6" << endl; } else { cout << "7" << endl; } return 0;}
編程題#3:找出第k大的數來源: POJ (Coursera聲明:在POJ上完成的習題將不會計入Coursera的最后成績。)注意: 總時間限制: 1000ms 內存限制: 65536kB描述用戶輸入N和K,然后接著輸入N個正整數(無序的),程序在不對N個整數排序的情況下,找出第K大的數。注意,第K大的數意味著從大到小排在第K位的數。輸入NKa1 a2 a3 a4 ..... aN輸出b額,關于這道題,題目要求不對N個整數排序,我還是用了先排序的方法。不排序的方法暫時不會,會回過頭來再看。
//編程題#3:找出第k大的數#include <iostream>using namespace std;int main(){ int n ,pos; n = pos = 0; cin >> n; cin >> pos; int a[100] = { 0 }; for (int i = 0; i < n;i++) { int x = 0; cin >> x; a[i] = x; } for (int i = 0; i < n; i++) for (int j = i + 1; j < n;j++) { if (a[i] < a[j]) { int change = 0; change = a[i]; a[i] = a[j]; a[j] = change; } } cout << a[pos-1] << endl; return 0;}編程題#4:人民幣支付來源: POJ (Coursera聲明:在POJ上完成的習題將不會計入Coursera的最后成績。)注意: 總時間限制: 1000ms 內存限制: 65536kB描述從鍵盤輸入一指定金額(以元為單位,如345),然后輸出支付該金額的各種面額的人民幣數量,顯示100元,50元,20元,10元,5元,1元各多少張,要求盡量使用大面額的鈔票。輸入一個小于1000的正整數。輸出輸出分行,每行顯示一個整數,從上到下分別表示100元,50元,20元,10元,5元,1元人民幣的張數
//編程題#4:人民幣支付#include <iostream>using namespace std;int main(){ int n, num1, num2, num3, num4,num5,num6,remain; num1=num2= num3= num4= num5= num6=remain=0; cin >> n; num1 = n / 100; remain = n - 100 * num1; num2 = remain / 50; remain -= 50 * num2; num3 = remain / 20; remain -= 20 * num3; num4 = remain / 10; remain -= 10 * num4; num5 = remain / 5; remain -= 5* num5; num6 = remain; cout << num1 << endl; cout << num2 << endl; cout << num3 << endl; cout << num4 << endl; cout << num5 << endl; cout << num6 << endl; return 0;}
新聞熱點
疑難解答