【第七章作业】题解

T1:计算天数

题目分析:

定义一个包括年、月、日的结构体变量,读入年、月、日,计算该日在当年中是第几天。注意闰年问题。

请写一个函数days实现计算,将读入的结构体变量传递给days函数,计算后将答案返回给main函数进行输出。


分析:

没啥思维难度,模拟即可
需要注意一个就是如果当前年是闰年,那么二月的天数要加1

一个年是闰年,当且仅当这个数能被4整除并且不能被100整除或者当前数能被400整除


Code

#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;
}

T2:计票程序

题目描述:

完成一个对候选人得票的统计程序。假设有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用来存储每一个人的票数即可


Code

#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;
}

你可能感兴趣的:(题解,算法)