定义一个包括年、月、日的结构体变量,读入年、月、日,计算该日在当年中是第几天。注意闰年问题。
请写一个函数days实现计算,将读入的结构体变量传递给days函数,计算后将答案返回给main函数进行输出。
没啥思维难度,模拟即可
需要注意一个就是如果当前年是闰年,那么二月的天数要加1
一个年是闰年,当且仅当这个数能被4整除并且不能被100整除或者当前数能被400整除
#include
using namespace std;
int M[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//提前存储每一个月份的天数
struct Da{
int y,m,d;
}a;//题目要求要用结构体,那就擦个边
bool f = 0;
bool isr(int x){
return (x%400 == 0 || (x%4 == 0 && x%100!=0));
}
int Days(){
int Sum = 0;
M[2]+=f;//如果是闰年,那么f=1,天数加一
for (int i = 1; i < a.m; i++) Sum+=M[i];
return Sum+a.d;//累加
}
int main(){
cin>>a.y>>a.m>>a.d;//输入
f = isr(a.y);//判断当前年是否是闰年
printf("%d",Days());
return 0;
}
完成一个对候选人得票的统计程序。假设有3个候选人,名字分别为Li,Zhang和Fun。使用结构体存储每一个候选人的名字和得票数。记录每一张选票的得票人名,输出每个候选人最终的得票数。
这道题可以暴力解决,平常做法不多说
这里介绍一个内置的stl模型—— m a p 映射 map映射 map映射
m a p map map其实就类似于一个数组,不过他的下标不局限于整数,而是可以是任何类型
我们这样定义一个map:
m a p < 类型 A , 类型 B > 数组名称 map < 类型A,类型B> 数组名称 map<类型A,类型B>数组名称
这个意思表示map下标类型是A,而他存储的值得类型是B
比如我们定义如下一个map:
m a p < c h a r , i n t > M map < char, int >M map<char,int>M
如果给我们一个只包含小写字母的字符串,我们想知道每个小写字母都出现了多少次,我们可以这样写:
for (int i = 0; i < s.size(); i++)
M[s[i]]++;
for (char i = 'a'; i <= 'z'; i++) cout<<M[i]<<' ';
这样我们就统计出了字符串s里面每一个小写字母的个数
那么这道题我们也可以用这种方法
注意map下标的类型是string用来存储每一个人的票数即可
#include
using namespace std;
struct Node{
string Name;
int cnt;
}a[3] = {"Li",0,"Zhang",0,"Fun",0};//擦个边
map < string , int > M;
int main(){
M["Li"] = 0;
M["Zhang"] = 0;
M["Fun"] = 0;//初始票数为0
int n;
cin>>n;
for (int i = 1; i <= n; i++){
string s;
cin>>s;
M[s]++;//累加票数
}
for (int i = 0; i < 3; i++)
cout<<a[i].Name<<':'<<M[a[i].Name]<<endl;//输出
return 0;
}