首页 / C++ / C++复习(六)——进制转换&日期操作
C++复习(六)——进制转换&日期操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++复习(六)——进制转换&日期操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2763字,纯文字阅读大概需要4分钟。
内容图文
![C++复习(六)——进制转换&日期操作](/upload/InfoBanner/zyjiaocheng/840/131a5f238f9c462bb474e6abee63b2a6.jpg)
题目八:实现十进制向其他进制转换,实现其他进制向十进制转换
题目九:判断 1990.01.01到指定日期一共有多少天
/*
题目八:实现十进制向其他进制转换,实现其他进制向十进制转换
分析:十进制向其他进制转换可以使用栈先进后出的特性不断取余得到
进制转换, 其余进制向十进制转换 则可以通过字符串逐级乘出
另外C++中也支持直接输出相应进制数字 ,例如:
cout << std::oct <<189<< endl;
cout << std::dec <<189<< endl;
cout << std::hex <<189<< endl;
cout << bitset<8>(189) << endl;//<8>:表示保留8位输出
stack:
1.入栈:如s.push(x);
2.出栈:如 s.pop().注意:出栈操作只是删除栈顶的元素,并不返回该元素。
3.访问栈顶:如s.top();
4.判断栈空:如s.empty().当栈空时返回true。
5.访问栈中的元素个数,如s.size();
题目九:判断 1990.01.01到指定日期一共有多少天
分析: 需考虑闰年
能被4除尽且不能被100除尽,能被400除尽的为闰年
考虑月份
闰年二月29天,平年闰月28天
结构体三种定义方式:
//声明了结构体变量s1
struct
{
} s1;
//此结构体的标签被命名为SIMPLE,用SIMPLE标签的结构体,另外声明了变量t1, t2[20], *t3
struct SIMPLE
{
};
SIMPLE t1, t2[20], *t3;
//可以用typedef创建新类型,结构体的标签被命名为Simple2,用Simple2作为类型声明新的结构体变量u1, u2[20], *u3
typedef struct
{
} Simple2;
Simple2 u1, u2[20], *u3;
*/
#include <bitset>
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<stack>
#include<cstring>
#include<cmath>
using namespace std;
void other_to_ten(string number,int other) {
int i,sum = 0,a;
for(i = 0;number.size()!=i;i++){
a = number[number.size()-i-1] - '0';
sum += pow(other,i) * a;
//cout<<i<<" "<<a<<" "<<sum<<" "<<pow(other,i)<<endl;
//cout<<number[i] - '0'<<endl;
}
cout<<sum<<endl;
}
void ten_to_other(int number,int other){
stack<int> s;
if(number == 0){
cout<<0<<endl;
}
for(;number != 0;number/=other){
s.push(number%other);
}
while(!s.empty()){
cout<<s.top()<<" ";
s.pop();
}
cout<<endl;
}
struct date{
int year = 1990;
int month = 1;
int day = 1;
};
int Year(int year){
if((year%4 == 0 && year%100 != 0)||(year%400 == 0)){
return 366;
}else{
return 365;
}
}
int Month(int year,int month){
if(month != 2){
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
return 31;
break;
case 4:case 6:case 9:case 11:
return 30;
break;
}
}else{
if(Year(year)==366){
return 29;
}else{
return 28;
}
}
}
int main(){
//第八题
/*
ten_to_other(123,16);
other_to_ten("10011",2);
*/
//第九题
struct date today,first;
cin>>today.year>>today.month>>today.day;
//cout<<first.year<<" "<<today.year;
int i,j,total_day = 0;
for (i = first.year;i<=today.year;i++){
if(i<today.year){
if(Year(i)==366){
total_day += 366;
}else{
total_day += 365;
}
}else{
for (j = first.month;j<today.month;j++){
total_day += Month(i,j);
}
total_day += today.day-first.day;
}
}
cout<<total_day<<endl;
return 0;
}
这其中有不合适或者不正确的地方欢迎指正,我的QQ号码:2867221444(乔金明),谢谢,也可以相互交流下,备注信息随意,只要能看得出是开发者或者学习者即可。
内容总结
以上是互联网集市为您收集整理的C++复习(六)——进制转换&日期操作全部内容,希望文章能够帮你解决C++复习(六)——进制转换&日期操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。