一、转为下一个字母
给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数
void Stringchang(const char*input,char*output)
其中input是输入字符串,output是输出字符串
二、判断数字中有无相同的部分
求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。
函数为 int same(int num),其中num是输入的整型数字
#include <iostream>
#include <vector>
using namespace std;
int same(int num){
vector<int> temp;
while (num != 0)
{
int tempNum = num % 10;
temp.push_back(tempNum);
num = num / 10;
}
if (temp.size() <= 1)
{
return 0;
}
for (auto begin = temp.rbegin(), end = temp.rend(), ahead = begin + 1; begin != end; begin++)
{
while (ahead + 1 != end)
{
if (*ahead != *begin)
{
ahead++;
continue;
}
if (*(ahead + 1) == *(begin + 1))
{
return 1;
}
ahead++;
}
}
return 0;
}
int main()
{
int num;
cin >> num;
cout << same(num) << endl;
system(“pause”);
return 0;
}
三、字符串乘积
#include <stdio.h>
#include <iostream>
using namespace std;
void mul(char *input1, int n, char *input2, int m, char *output){
long long num1 = 0, num2 = 0;
for (int i = 0; i < n; i++)
{
num1 += (input1[i] – ‘0’) * pow(10, n – i – 1);
}
for (int i = 0; i < m; i++)
{
num2 += (input2[i] – ‘0’) * pow(10, m – i – 1);
}
long long num3 = num1 * num2;
char *p = output;
while (num3 != 0)
{
*p++ = num3 % 10 + ‘0’;
num3 /= 10;
}
*p = ‘ ’;
int length = strlen(output);
for (int i = 0; i < length / 2; i++)
{
int temp = output[i];
output[i] = output[length – i – 1];
output[length – i – 1] = temp;
}
}
int main()
{
char in1[10], in2[10], out[10];
cin >> in1 >> in2;
mul(in1, strlen(in1), in2, strlen(in2), out);
cout << out << endl;
system(“pause”);
return 0;
}
四、麻将番数
麻将游戏越来越受到大家喜爱,也在 络上盛行。本题目是给定一组已经和牌的麻将,编写一个函数计算这组麻将的番数。为简化题目,假设麻将只有筒子和条子两种花型,能翻番的规则也只有以下三种,当一组牌中没有下述三种情况中的一种或多种,则这组牌为0番,每种番数是加的关系,例如一组牌既有卡2条又有四归一,则番数为3番。
1.卡2条为一番,即有一局牌是 1条2条3条;
2.四归一为两番,即有4张一样的牌(花色和数字都一样);
3.巧七对为两番,即一组牌恰好是7对牌;
一些约定:
1.一组已经和牌的麻将由多局牌组成,一局牌可以是一对牌、3张连续同样花色的牌、3张一样的牌、4张一样的牌。
2.一组已经和牌一般有14张牌,最多可以有18张牌(当有四归一的时候)。
一字符串表示已经和牌的麻将(由输入者保证,编程人员无需考虑没有和牌),如1T2T3T,4T5T6T,7T8T9T,1D2D3D,4D4D.
说明:
1.”1T”表示1条,T表示条子,前面跟数字几表示几条,数据范围1~9,输入者保证,编程无需考虑输入规范性;
2.”4D”表示4筒,D表示筒子,前面跟数字几表示几筒,数据范围是1~9, 输入者保证,编程无需考虑输入规范性;
3.每局牌之间由’,’隔开,输入者保证每局牌都是正确的且按照数字由小到大排序,编程人员无需判断每局牌的正确性;
4.一组牌以’.’ 结束,由输入者保证,编程人员无需考虑是否有”.” 。
5.输入保证有番数的牌在一局中,编程人员无需考虑排序,即有番数的牌不会分散在多局牌中。
输出:
麻将的番数,整型类型。
样例输入: 1T2T3T,4T5T6T,7T8T9T,1D2D3D,4D4D.
样例输出: 1
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ch[42];
int gang_count = 0;
int three_same_count = 0;
int ka_2_tiao_count = 0;
int fan_count = 0;
while (cin >> ch)
{
int length = strlen(ch);
for (int i = 0; i < length; i++)
{
if (ch[i] <= ‘9’ && ch[i] >= ‘1’)
{
if (ch[i] == ch[i + 2] && ch[i + 2] == ch[i + 4] && ch[i + 4] == ch[i + 6] && (ch[i + 8] == ‘,’ || ch[i + 8] == ‘.’))
gang_count++;
else if ((ch[i] == ch[0] || ch[i – 1] == ‘,’) && ch[i] == ch[i + 2] && ch[i + 2] == ch[i + 4] && (ch[i + 6] == ‘,’ || ch[i + 6] == ‘.’))
three_same_count++;
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!