1036?
输入时忽略某字符:
cin.ignore()
或者直接用scanf
1021 个位数统计
用一个计数器数组来统计每个数字出现的频率
1023 组个最小数
算法:用一个数组a存储出现的数字数,输入时同时获得非0的min
输出时先输出一个min,然后从头遍历存储数组——当a[i]>0时输出一个i并让a[i]–
1043 输出PATest
while scanf!=EOF——检测输入,当没有输入时跳出循环
算法:如果当前输入的字母是PATest其中之一的话则直接让字母对应的计数器变量+1
输出时依次输出PATest,每输出一个就让对应计数器减一
1009 说反话
while cin>>str自动按空格切分并输入到str
用一个stack储存放进来的str,对应头文件stack
1011 A+B和C
大整数直接用long long int
1004 成绩排名
使用一个class数组student,用first和Last记录当前的最大和最小编号,然后直接输出即可
1038 统计同成绩学生
用一个vector储存输入的成绩,然后用一个计数器数组储存对应每个数字出现的频率
1031 查验身份证
对输入的身份证号进行检查:
如果前十七位发现字母直接break,反之则按照权重计算出当前的数temp,加到checkCount中,算完之后对11取mod
用数组checkNum记录计数器i对应的输入ID是否合法,合法为1不合法为2
如果循环没跑完则直接记为0
跑完了则检验最后一位是否符合
1008 数组元素循环右移
写一个函数让数组整体右移一次,具体做法是从后往前处理以免造成覆盖
需要偏移shift位就让这个函数执行shift次
1017 A除以B
对于巨大的整数,作为string输入
从第一位开始,每次都执行temp=temp*10+下一位操作,然后每执行完一次直接取余数
1022 D进制
用stack做进制转换——连续取余,然后将mod推入stack
1027 输出沙漏
总星号数计算公式total=2*count^2-1
对于前count行,第i行输入i个空格和2count-1-2i个星号,注意结尾不要输入空格
反向输入同理
1032 挖掘机
用计数器数组计算各校得分,然后搜索得分最高的学校及其总分
1042 字符统计
写个函数判断是否为字母
使用map<char,int> frequency,如果s[i]是字母则frequency[s[i]]++
map<char,int>::iterator it
it->first为字母,it->second为出现个数
1029 旧键盘
首先全部转换为大写
用一个set来统计数字(去重)——set.insert返回的是一组pair,使用second返回插入成功与否的提示,如果插入成功则推入候补向量中
1007 素数对猜想
先生成素数列表,然后再检验素数对
1013 数素数
生成素数列表,然后输出即可——注意输出格式
1028 人口普查
定义一个类elder,建立一个函数成员too young,判断当前最年轻和最年长的
注意年龄计算公式是否合法
1005 3n+1继续
使用计数数组,把每一步产生的中间值tmp记录到计数数组中
f[tmp]=1
如果计数数组里没有,!f[input[i]],就是关键数,推入输出向量中
1019 数字黑洞
先把输入的数字每一位都保存到数组中,然后排序
按从小到大和从大到小分别还原得到big和small
输出方式printf(%04d-%04d=%04d\n)
1010
使用bool型标记变量flag
1030 完美数列
输入后排序,然后两层嵌套循环
maxlen=0,for i=0(for j=i+maxlen) if maxlen<j-i maxlen=j-i
1020 月饼
sort的比较函数cmp——return a<b为升序排列
输出保留两位小数printf %.2f
注意为了保证精度,全程使用double
1003 我要通过
对于xPATx形式,P的个数与A的个数乘积应该等于T的个数
1014 福尔摩斯
尽量用For循环,然后求星期的时候两个序列一起往前走(只考虑字符一一对应的情况)
1025 反转链表
用数组addr保存每个链表在向量中的位置,对应temp.address
int count=0
vinput.pushback temp
addr[temp.address]=count++
memset来自于memory.h
遍历时从初始地址进入,在input中找到对应链表后推入vector中
p=init
int pos=addr[p]
linknode.pushback vinput[pos]
p=vinput[pos].next
系统自带reverse函数,来自头文件algorithm
1045 快速排序
主元的条件:恰好位于正确的顺序上,且为当前最大元��
1015 德才论
重写sort cmp函数
1044 火星数字
getline(cin,input[i](字符串),‘\n’)注意第一个可能是废的
获取子字符串的方法:string.substr(begin,end)
另外注意高位为整数(恰好为26)低位为0时不要输出
1040 有几个PAT
从后往前数,PAT的数量等于P的数量乘A再乘T
if i=T numT++
if i=A numAT+=numT
if i=P numPAT+=numAT
1033 旧键盘打字
getline读取一行
定义一个判断函数notbad,对一个字符搜索bad字符串:
如果有大写,且+在bad里则返回false
全部转化为小写再一一判断
判断通过之后直接用putchar输出即可