1. 闰年判断(水题)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin >> num;
if (num % 400 == 0 || (num % 4 == 0 && num % 100 != 0))
cout << "yes" << endl;
else
cout << "no" << endl;
return 0;
} 2.01字串(水题)
思路:将0-31的数字转化为2进制输出即可,printf只能转化8/16进制不能转化为2进制输出,可以利用itoa函数进行,itoa函数会对其第一个参数进行修改,所以不要直接将循环变量i作为itoa的参数。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char str[5];
for (int i = 0; i <= 31; ++i)
{
int t = i;
itoa(t, str, 2);
int num = 5-strlen(str);
while(num--)
cout << "0";
printf("%s\n", str);
}
return 0;
} 3. 字母图形(找规律)
思路:n行m列,共使用到英文字母表的前m个大写字母;
对于第i行(1 <= i <= n):前i-1个字符为倒序输出到B(同时个数不超过m的限制);后m-i+1个字符为从A开始正序输出。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m, n;
cin >> n >> m;
for (int i = 0; i < n; ++i)
{
int t = m;
for (int j = i; j > 0 && t > 0; --j, --t)
{
cout << (char)('B' + j -1);
}
for (int j = 0; j < m - i; ++j)
cout <<(char)('A' + j);
cout << endl;
}
return 0;
} 4. 数字特征(水题)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num, key, min = INT_MAX, max = INT_MIN, sum = 0;
cin >> num;
while (num--)
{
cin >> key;
if (key < min)
min = key;
if (key > max)
max = key;
sum += key;
}
cout << max << endl << min << endl << sum << endl;
return 0;
} 5. 查找整数(水题)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin >> num;
vector<int>data(num);
for (int i = 0; i < num; ++i)
cin >> data[i];
int key;
cin >> key;
int i;
for (i = 0; i < num; ++i)
{
if (key == data[i])
{
cout << i + 1 << endl;
break;
}
}
if (i == num)
cout << "-1" << endl;
return 0;
} 6. 杨辉三角形(找规律)
思路:数组单元data[i][j] = data[i-1][j] + data[i-1][j-1];
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin >> num;
vector<vector<int> >data(num, vector<int>(num));
for (int i = 0; i < num; ++i)
{
for (int j = 0;j <= i; ++j)
{
if (j == 0 || j == i)
data[i][j] = 1;
else
data[i][j] = data[i-1][j] + data[i-1][j-1];
if (j != 0)
cout << " ";
cout << data[i][j];
if (j == i)
cout << endl;
}
}
return 0;
} 7. 特殊的数字(水题)
#include <bits/stdc++.h>
using namespace std;
int main()
{
for(int i = 100; i < 1000; ++i)
{
if (i == pow(i / 100, 3) + pow(i / 10 % 10, 3) + pow(i % 10, 3))
cout << i << endl;
}
return 0;
} 8. 回文数(水题)
#include <bits/stdc++.h>
using namespace std;
int main()
{
for (int i = 1000; i < 10000; ++i)
{
if (i / 1000 == i % 10 && i / 10 % 10 == i / 100 % 10)
cout << i << endl;
}
return 0;
} 9.特殊回文数(水题)
思路:将数字转换成字符串与其倒置字符串相比较筛选出回文数,然后将回文数的各位相加筛选出与输入num相等的数并输出。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin >> num;
for (int i = 10000; i < 1000000; ++i)
{
int sum = 0, t = i;
stringstream ss;
string key;
ss << t;
ss >> key;
string pkey = key;
reverse(key.begin(), key.end());
if (pkey == key)
{
do{
sum += (t % 10);
t /= 10;
}while(t);
if (sum == num)
cout << i << endl;
}
}
return 0;
} 10. 十进制转十六进制(水题)
思路:直接用printf函数进行转化即可
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
scanf("%d", &num);
printf("%X", num);
return 0;
} 11. 十六进制转十进制(水题)
思路:直接用printf函数进行转化即可,注意题目要求输入输出均为正数,当输入FFFFFFFF时,int类型变量存储全为1,以%d输出默认为补码即-1,应当以无符号十进制%u输出即4294967295。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
scanf("%X", &num);
printf("%u", num);
return 0;
} 12. 十六进制转八进制(大数进制转换)
思路:题目中每个十六进制数num长度不超过100000,对于这种超大的数字不能用常规的变量来存储,可以用字符串存储。每3位2进制数对应4位8进制数,所以可以先将num前补0使其长度为3的倍数,然后每次取高3位数转换为对应的4位8进制数进行输出。转换过程可以先将16进制数转化为10进制数,再利用itoa函数转化为8进制数。注意转换的8进制数可能不为4位,输出时需要左补0。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin >> num;
while(num--)
{
string key;
cin >> key;
//将16进制串长度补为3的倍数
int len = (int)key.size();
if (len % 3 != 0)
{
for (int i = 0; i < 3- len % 3; ++i)
{
key = "0" + key;
}
len = (int)key.size();
}
string t;
while((int)key.size() != 0)
{
t = key.substr(0, 3);
//16进制字符串转10进制数
int num10 = 0;
if (t[0] >= 'A')
num10 += 16*16*(10 + (t[0] - 'A'));
else
num10 += 16*16*(t[0] - '0');
if (t[1] >= 'A')
num10 += 16*(10 + (t[1] - 'A'));
else
num10 += 16*(t[1] - '0');
if (t[2] >= 'A')
num10 += 10 + (t[2] - 'A');
else
num10 += t[2] - '0';
//10进制数转4位8进制数
char num8[4];
itoa(num10, num8, 8);
if (len != (int)key.size())
{
for (int i = 0; i < 4 - strlen(num8); ++i)
{
cout << "0";
}
}
cout << num8;
key = key.substr(3, (int)key.size() - 3);
}
cout << endl;
}
return 0;
} 13. 数列排序(水题)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin >> num;
vector<int>data(num);
for(int i = 0; i < num; ++i)
{
cin >> data[i];
}
sort(data.begin(), data.end());
cout << data[0];
for(int i = 1; i < num; ++i)
{
cout << " " << data[i];
}
cout << endl;
return 0;
}
版权声明:本文为qq_42283621原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。