c/c++练习--02
2016-09-19 22:20
148 查看
c/c++练习–02
习题来源:C语言经典编程282例11. 阳阳买水果
阳阳买苹果,每个苹果0.8元,阳阳第一天买两个苹果,第二天开始每天买前一天的两倍,直至购买的苹果个数总数不超过100个的最大值,求阳阳平均每天买多少钱。#include <iostream> using namespace std; int main(void){ int sum=2, i=2, m=1; while(sum<100) { i *= 2; sum += i; m++; } cout<<"阳阳平均每天买:"<<sum*0.8/m<<endl; return(0); }
12. 任意次方后的最后三位
#include <iostream> using namespace std; int main(void){ int x,y,num=1; cout<<"请输入两个整数:"; cin >>x>>y; x %= 10000; for (int i=0; i<y; i++){ num *= x; num %=10000; } cout<<"x^y的后三位数为:"<<num<<endl; return(0); }
13. 计算某日是该年的第几天
#include <iostream> using namespace std; int main(void){ int LeapYear[12]={0,31,29,31,30,31,30,31,31,30,31,30}; int ComYear[12]={0,31,28,31,30,31,30,31,31,30,31,30}; int year,mon,day,sum=0; cout<<"请输入年月日:"; cin>>year>>mon>>day; if((year%4==0 && year%100!=0) || year%400==0){ for (int i=0;i<mon;i++) sum += LeapYear[i]; }else{ for (int i=0;i<mon;i++) sum += ComYear[i]; } sum += day; cout<<"这是一年的第" <<sum<<"天"<<endl; return(0); }
14. 婚礼上的谎言
3对情侣参加婚礼,3个新郎为A,B,C,3个新娘为X,Y,Z,有人想知道究竟谁与谁结婚,于是就问新人中的三位,得到如下结果:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚,这人事后知道他们在开玩笑,说的全是假话,那么究竟谁与谁结婚。#include <iostream> using namespace std; int main(void){ int i,j,k; for(i=1;i<=3;i++){ for (j=1;j<=3;j++){ for (k=1;k<=3;k++){ if(i!=1 && k!=3 && k!=1 && i!=j && j!=k && k!=i){ printf("%c 将嫁给 A\n",'X'+i-1); printf("%c 将嫁给 B\n",'X'+j-1); printf("%c 将嫁给 C\n",'X'+k-1); } } } } return(0); }
15. 百元买百鸡
中国古代数学家张邱健在他的《算经》中提出了一个著名的问题,鸡翁一,值五钱,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁,母。雏各几何?#include <iostream> using namespace std; int main(void){ for(int i=0;i<=20;i++){ for(int j=0;j<=33;j++){ if(i+j+(100-5*i-3*j)*3 == 100) printf("翁:%d,母:%d,雏:%d\n",i,j,100-i-j); } } return(0); }
16. 打渔晒网
如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,求解输入2011年1月1日以后的任一天,输出该渔夫是在打渔还是在晒网。#include <iostream> using namespace std; bool LeapYear(int year){ if((year%4==0)&&(year%100!=0) || year%400) return(true); return(false); } int num(int year,int month, int day){ int LeapMonth[]={0,31,29,31,30,31,30,31,31,30,31,30}; int Month[]={0,31,28,31,30,31,30,31,31,30,31,30}; int sum=0; if(LeapYear(year)){ for(int i=0;i<month;i++) sum+= LeapMonth[i]; }else for(int i=0;i<month;i++) sum += Month[i]; sum+=day; sum+= (year-2011)/4; return(sum); } int main(void){ int year,month,day; cout<<"Please input date:"<<endl; cin>>year>>month>>day; if(num(year,month,day)%5<3) cout<<"打渔"<<endl; else cout<<"晒网"<<endl; return(0); }
17. 判断三角形的类型
根据输入的三角形三条边判断三角形类型,并输出类型及面积。#include <iostream> #include <cmath> #define CHANGE(a,b,c) (a)=(b),(b)=(c),(c)=(a) using namespace std; void max_num(int& a,int& b,int& c){ int tmp; if(a>b)CHANGE(tmp,a,b); if(b>c)CHANGE(tmp,b,c); if(a>c)CHANGE(tmp,a,c); } bool IsTra(int a,int b,int c){ if(a<b+c && b<a+c && c <a+b) return(true); return(false); } int main(void){ int a,b,c,s; float area; cout<<"请输入三条边长:"<<endl; cin>>a>>b>>c; if(IsTra(a,b,c)){ s=(a+b+c)/2; area = sqrt((float)s*(s-a)*(s-b)*(s-c)); if(a*a+b*b<c*c) cout<<"这是钝角三角形"<<endl; if(a*a+b*b==c*c) cout<<"这是直角三角形"<<endl; if(a*a+b*b>c*c) cout<<"这是锐角三角形"<<endl; cout<<"面积为:"<<area<<endl; }else cout<<"这不是三角形"<<endl; return(0); }
18. 选择排序
#include <iostream> using namespace std; void SelectSort(int a[],int size){ int key,tmp; for(int i=0;i<size;i++){ key = i; for (int j=i+1;j<size;j++){ if(a[key]>a[j]) key = j; } if(key !=i){ tmp=a[key]; a[key]=a[i]; a[i]=tmp; } } } int main(void){ int a[]={5,4,3,2,1}; SelectSort(a,5); for(int i=0;i<5;i++) cout<<a[i]<<endl; return(0); }
19. 冒泡排序
#include <iostream> using namespace std; void BubbleSort(int a[],int size){ int tmp; for(int i=0;i<size;i++){ for (int j=i+1;j<size;j++){ if(a[j]<a[i]) { tmp=a[j]; a[j]=a[i]; a[i]=tmp; } } } } int main(void){ int a[]={5,4,3,2,1}; BubbleSort(a,5); for(int i=0;i<5;i++) cout<<a[i]<<endl; return(0); }
20. 直接插入排序
#include <iostream> using namespace std; void InseartSort(int a[],int size){ int tmp,j,flag=0; for(int i=1;i<size;i++){ tmp = a[i]; for ( j=i-1;j>=0;j--){ if(a[j]<=tmp)break; a[j+1] = a[j]; flag=1; } if(flag){ a[j+1]=tmp; flag=0; } } } int main(void){ int a[]={5,4,3,2,1}; InseartSort(a,5); for(int i=0;i<5;i++) cout<<a[i]<<endl; return(0); }
相关文章推荐
- C++ 练习02 ---- 魔术师发牌问题
- 算法笔记_092:蓝桥杯练习 c++_ch04_02_修正版(Java)
- 纯纯的课本C++练习
- 重新再学习C++的练习
- C++ Primer Plus 第五版 第六章 编程练习 7
- c/c++练习002
- 多继承练习(MI)《c++ primer plus》 p536-5
- c++练习004之数据结构(顺序表操作)
- C++ Primer Plus 第五版 第七章 编程练习 5 6
- 我练习C/C++程序的方法
- c/c++练习001
- 练习C/C++基本功(列表和迭代器的实现和测试)
- C++练习:一个具有深拷贝功能的字符串类
- c++ 选择排序 练习
- C++ Primer Plus 第五版中文版 第六章 编程练习6
- C++ 冒泡算法 练习
- C++练习:已知三点,求过这三点的圆
- C++ 练习及点评(2)
- C++基础练习一
- 类多继承及包含练习(c++primer plus)