c1-第二周
- 9月-技能
- 1.一個島上有兩種神奇動物,其中神奇鳥類2個頭3只腳,神奇獸類3個頭8只腳。游客在濃霧中看到一群動物,共看到35個頭和110只腳,求可能的鳥類和獸類的只數
- 2.構建一個長度為5的數組,并且實現下列要求
- 3.構建一個結構體student,要求成員有
- 10月-技能
- 1.排序
- 2.編程實現以下功能:
- 3.有三個學生組隊參加某比賽,每個學生信息包含準考證號,姓名,個人成績,另團隊有一總成績。編寫主程序模擬生成三個學生給其賦值、完成相關信息的輸出。
- 12月-技能
- 1.編寫程序,從鍵盤上輸入三個整數,找出最大值,找出最小值,實現由小到大排序
- 2.判斷是否存在一個三位數abc,滿足abc=(a*a+b*b+c*c)*3,若存在則輸出abc,不存在則提示不存在
- 3.輸出一個1,兩個2,三個3···九個9排列成的上小下大的金字塔
- 4.由鍵盤任意輸入3個整數a、b、c做邊長,判斷能否組成一個三角形(三角形要求任意兩邊的和大于第三邊),若可以組成三角形,判斷是否可以組成直角三角形(直角三角形是某兩邊的平方和等于第三邊的平方)
- 5.完成注冊與登錄功能:
- 1月-技能
- 1.編寫程序,求和sum=2^0+2^1+2^2+...2^n,sum>10000時停止,并輸出最后一項
- 2.求e=1+1/1!+1/2!+1/3!+...的結果,要求最后一項小于0.000001時停止,并輸出最后一項階乘表示的值
- 3.編程實現輸入月份(1-12),電腦輸出季節
- 4.求PI值,PI/4?=?1? -?1/3?+?1/5?-?1/7?+?...,精度要求1e-6'
- 5.編程實現以下功能:
- 2月-技能
- 4.有一個7層燈塔,每層所點燈數都等于該層上一層的兩倍,燈的總數是381盞:
9月-技能
1.一個島上有兩種神奇動物,其中神奇鳥類2個頭3只腳,神奇獸類3個頭8只腳。游客在濃霧中看到一群動物,共看到35個頭和110只腳,求可能的鳥類和獸類的只數
要求1:main函數中,頭和腳的數量(35,110)通過鍵盤輸入
要求2:合理使用for循環
要求3:輸出計算后的結果
要求4:有合理注釋
void week2_9_1(){int tou,jiao;cin >> tou >>jiao;for(int i = 0;i<=tou;i++){ //鳥for(int j = 0;j<=tou;j++){ //獸if(i+j == tou && i*3+j*8 == jiao){cout << i << " " << j << endl;}}}
}
2.構建一個長度為5的數組,并且實現下列要求
要求1:從鍵盤依次輸入5個正整數,并顯示一次初始順序
要求2:按照數字從大到小的順序重新排列其順序。
方法1:調用函數,直接傳值交換法
方法2:調用函數,傳指針交換法
要求3:輸出排列后的順序
void sort1(int arr[],int size){for(int i = 0;i<4;i++){for(int j = 0;j<4-i-1;j++){if(arr[j] > arr[j+1]){int temp = arr[j]; //值交換位置arr[j] = arr[j+1];arr[j+1] = temp;}}}for(int i = 0;i<4;i++){cout << arr[i] << endl;}
}void sort2(int *p,int size){for(int i = 0;i<4;i++){for(int j = 0;j<4-i-1;j++){if(p[j] < p[j+1]){int temp = p[j]; //指針換位置p[j] = p[j+1];p[j+1] = temp;}}}for(int i = 0;i<4;i++){cout << p[i] << endl;}
}
3.構建一個結構體student,要求成員有
①長度20的char型數組 (name)
②int型常量(stu_num)
③長度2的char型數組(sex)
依據該結構,初始化兩個同結構不同名的實體,并打印其信息
struct student{char name[20];const int stu_num = 1; //常量char sex[2];
};int main() {student stu1 ={{'a','c','b'},1,{'a','b'}};cout << stu1.name <<endl;cout << stu1.stu_num << endl;for(int i = 0;i<2;i++){cout<< stu1.sex[i]<< endl;}student stu2 = {}; //這里自己補齊,同上}
10月-技能
1.排序
按照商品價格降序輸出商品信息
struct Goods {//定義結構體int id;string name;int price;int number;
};//重寫排序方式
bool compare(Goods g1,Goods g2){return g1.price > g2.price; //我要按照價錢排序
}int main(){Goods arr[4]={{1,"手機",2000,1},{2,"電腦",5000,3},{3,"水杯",500,6},{4,"椅子",10000,9}};sort(arr,arr+4, compare); //排序for(int i = 0;i<4;i++){cout << arr[i].id <<" " << arr[i].name <<" "<< arr[i].price <<" "<< arr[i].number <<" "<< endl;}
}
2.編程實現以下功能:
(1)定義函數mySort,實現對接收過來的一組數據進行升序排序,參數使用數組
(2)定義函數myPrint,實現對接收過來的一組數據進行輸出,參數使用指針
(3)主函數中:
定義數組保存學生的成績
輸入學生人數n,
輸入n個學生的成績
調用函數mySort,實現對成績升序排序
調用函數myPrint,實現打印輸出排序后的數琚
void mySort(int arr[],int size){sort(arr,arr+size); //排序
}//(2)定義函數myPrint,實現對接收過來的一組數據進行輸出,參數使用指針
void myPrint(int arr[],int size){int *p = arr;for(int i = 0;i<size;i++){cout << *p << endl;p++;}
}
int main(){cout << "請輸入學生的數量"<< endl;int n;cin >> n;int arr[n];for(int i = 0;i<n;i++){cin >> arr[i];}mySort(arr,n); //排序myPrint(arr,n); //打印
}
3.有三個學生組隊參加某比賽,每個學生信息包含準考證號,姓名,個人成績,另團隊有一總成績。編寫主程序模擬生成三個學生給其賦值、完成相關信息的輸出。
定義學生類Student
私有數據成員:學生準考證號(exam_number),學生姓名(stu_name )
公有數據成員:團隊成績 (team_grade)
公有成員函數:ScanStuInfo函數實現功能為輸入三個學生的姓名和準考證號,輸 入團隊成績PrintStuInfo函數實現輸出所有學生信息以及團隊成績
主函數中創建一個Student對象,分別調用兩個成員函數,實現相應的效果
#include <iostream>
using namespace std;
//無參構造
class Student{
private: //私有int exam_number[3]; //號 1 2 3string stu_name[3]; //學生 zsb shh zj
public:int team_grade;//團隊成績void ScanStuInfo(){ //錄入學生的成績for(int i = 0;i<3;i++){cout <<"輸入第"<<(i+1)<<"準考證號:";cin >> exam_number[i];cout <<"輸入第"<<(i+1)<<"學生姓名:";cin >> stu_name[i] ;}cout <<"輸入團隊成績:";cin >> team_grade;}void PrintStuInfo(){ //打印學生的信息for(int i = 0;i<3;i++){cout << "學生的號:" << exam_number[i] <<" " << "學生的名字:" << stu_name[i] <<" " <<endl;}cout << "團隊成績是:" << team_grade << endl;}
};
int main(){Student stu1; //創建對象,無參構造stu1.ScanStuInfo(); //用對象調用函數stu1.PrintStuInfo();
}
12月-技能
1.編寫程序,從鍵盤上輸入三個整數,找出最大值,找出最小值,實現由小到大排序
大佬自己補齊,你可以的~~~~
2.判斷是否存在一個三位數abc,滿足abc=(aa+bb+c*c)*3,若存在則輸出abc,不存在則提示不存在
void test12_2(){for(int abc=100;abc<=999;abc++){int a = abc/100%10;int b = abc/10%10;int c = abc%10;if((a*a+b*b+c*c)*3== abc){cout << abc << endl;}}
}
答案:267
3.輸出一個1,兩個2,三個3···九個9排列成的上小下大的金字塔
void test12_3(){for(int i = 1;i<=9;i++){for(int k = 9;k>=i;k--){cout << " ";}for(int j = 1;j<=i;j++){cout << i << " " ;}cout << endl;}
}
4.由鍵盤任意輸入3個整數a、b、c做邊長,判斷能否組成一個三角形(三角形要求任意兩邊的和大于第三邊),若可以組成三角形,判斷是否可以組成直角三角形(直角三角形是某兩邊的平方和等于第三邊的平方)
void test12_4(){int a,b,c;cin >> a >> b>> c;if(a+b > c && a+c > b && b+c>a){if(a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b){cout << "是直角三角形" << endl;} else{cout << "是三角形" << endl;}} else{cout << "不是三角形" << endl;}
}
5.完成注冊與登錄功能:
完成注冊功能:要求用戶名輸入賬號a1,密碼k1。
完成登錄功能:如果用戶名輸入賬號a2和注冊賬號a1一致,密碼k2與k1一致,提示登陸成功。
否則提示“輸入錯誤,請重新輸入!您還有*次機會”。
三次輸入錯誤后將無法再輸入,提示“對不起,你的賬號已被鎖定!”
void test12_5(){cout << "請輸入注冊信息:" << endl;string name,pwd;cin >> name >> pwd;string name1,pwd1; //登錄int error_num =0; //錯誤次數while (true){ //死循環cout << "請輸入登錄信息:" << endl;cin >> name1 >> pwd1;if(name == name1 && pwd == pwd1){cout << "登錄成功" << endl;break;} else{error_num++; //1cout << "輸入錯誤,請重新輸入!您還有" << 3-error_num <<"次機會" << endl;if(error_num >= 3){cout<< "對不起,你的賬號已被鎖定!" << endl;break;}}}
}
1月-技能
1.編寫程序,求和sum=20+21+22+…2n,sum>10000時停止,并輸出最后一項
的2^n中n的值是多少 !階乘 ^平方
void month1_1(){int sum = 0;for(int n = 0;;n++){sum += pow(2,n); //pow用平算平方if(sum>10000){cout << n << endl;break;}}cout << sum << endl;
}
2.求e=1+1/1!+1/2!+1/3!+…的結果,要求最后一項小于0.000001時停止,并輸出最后一項階乘表示的值
void month1_2(){double e = 1;double sum = 1;for(int i = 1;;i++){sum*=i; //階乘1*1 1*1*2 1*1*2*3e+=(1/sum);if(1/sum < 0.000001){cout << "數字是"<< i <<"階乘:" << sum << endl;break;}}
}
3.編程實現輸入月份(1-12),電腦輸出季節
春季為3、4、5月份,夏季為6、7、8月份,秋季為9、10、11月份,冬季為12、1、2月份, 例: 輸入月份:12 電腦輸出:冬季
自己來吧,著實有點簡單了~~~是不是。。。。
4.求PI值,PI/4?=?1? -?1/3?+?1/5?-?1/7?+?…,精度要求1e-6’
void month1_3(){double Pi = 0; //1double f = 1; //用來換符號- +for(double i = 1;;i+=2){Pi+=f/i;f*=-1;if(1/i < 1e-6){break;}}cout << Pi*4 << endl;
}
5.編程實現以下功能:
(1)定義函數fsort,實現對接收的一組數據進行升序(由小到大)排序,參數使用數組
(2)定義函數frint,實現對接收的一組數據進行輸出
(3)主函數中:
定義數組保存學生的成績
輸入學生的成績
調用函數fsort,實現對成績升序(由小到大)排序
調用函數fprint,實現打印輸出排序后的數據
void fsort(int score[],int size){//排序sort(score,score+size);
}//形參(名字任意)
void frint(int arr[],int size){//遍歷for(int i = 0;i<size;i++){ //0 1 2 3 4cout << arr[i] <<endl;}
}int main(){int score[5];cout << "輸入學生的成績:" << endl;for(int i = 0;i<5;i++){cin >> score[i];}fsort(score,5);//實參 (實際的參數)frint(score,5);
}
2月-技能
4.有一個7層燈塔,每層所點燈數都等于該層上一層的兩倍,燈的總數是381盞:
(1)要求使用for循環實現
(2)要求使用數組保存每層所點燈數
(3)計算塔底燈數
(4)計算塔頂燈數
(5)第幾層的燈數為48
(6)遍歷輸出每層燈數,要求由上至下輸出
6. 命名規范,有注釋。
7. 運行無錯誤 。
void dt2(){int m = 1; //假設第1層是1個int sum = 0; //計算7層有多少個燈塔for(int i =1;i<=7;i++){sum+=m;m*=2;}int a = 381/sum; //得到塔頂3cout << "塔頂(第1層)是" << a << endl;for(int i = 2;i<=7;i++){a*=2;cout << "第"<<i << "層的燈是" << a <<"個" << endl;}
}