1、给定一个字符串,逆序输出。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
int len = s.size();
for (int i = len - 1; i >= 0; i--)
{
cout << s[i];
}
return 0;
}
2、输出100到1000之间能被5和6同时整除的数,输出格式为每十个数为一行。
#include<iostream>
using namespace std;
int main()
{
int cnt = 0;
for (int i = 100; i <= 1000; i++)
{
if (i % 5 == 0 && i % 6 == 0)
{
if (cnt % 10 == 0 && cnt != 0)
cout << endl;
cout << i << ' ';
cnt++;
}
}
return 0;
}
3、给定一个int型整数,输出这个整数的二进制中的0和1的个数。
注:这个题需要注意int型数据占32位bit位,所以最佳办法就是先统计1的个数,然后再用32去减去1的总数,就得出0的个数。
#include<iostream>
using namespace std;
int main()
{
int num;
cin >> num;
int cnt_1 = 0, cnt_0 = 0;
while (num > 0)
{
if (num % 2 == 1) cnt_1++;
num = num >> 1;
}
cnt_0 = 32 - cnt_1;
cout << "0的个数为:" << cnt_0 << " " << "1的个数为:" << cnt_1 << endl;
return 0;
}
4、从1-20之间随机抽取5个数,分别输出抽取出的5个数和剩余未被抽取的15个数。
注:c++的随机数要引入#include "cstdlib" 库文件,调用rand()函数
要取得[0,n) 就是rand()%n 表示 从0到n-1的数
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int N = 21;
int arr[N];
int main()
{
int cnt = 0;
for (int i = 0; i < 100; i++)
{
if (cnt == 5) break;
int num = (rand() % 20) + 1;
if (arr[num] == 0)
{
arr[num] = 1;
cnt++;
continue;
}
}
cout << "未被抽取的数为:" << endl;
for (int i = 1; i < N; i++)
{
if (arr[i] == 0) cout << i << ' ';
}
cout << endl;
cout << "被抽取的数为:" << endl;
for (int i = 1; i < N; i++)
{
if (arr[i] == 1) cout << i << ' ';
}
return 0;
}
5、给定一个年份,判断是否为闰年。
注:闰年的判断条件为:是否能被400整除,或者能被4整除但不能被100整除
#include<iostream>
using namespace std;
int main()
{
int year;
cin >> year;
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
cout << "YES";
else cout << "NO";
return 0;
}
6、输入n个数进行排序,要先按照奇偶再按照大小的顺序进行排序。
逆向思维:先进行从小到大的排序,然后两次遍历,第一次遍历找出奇数,第二次遍历找出偶数。
#include<iostream>
using namespace std;
void quick_sort(int* arr, int l, int r)
{
if (l >= r) return;
int i = l - 1;
int j = r + 1;
int poivt = arr[l + r >> 1];
while (i < j)
{
do i++; while (arr[i] < poivt);
do j--; while (arr[j] > poivt);
if (i < j) swap(arr[i], arr[j]);
}
quick_sort(arr, l, j);
quick_sort(arr, j + 1, r);
}
int main()
{
int n;
cin >> n;
int a[1001];
int i;
for (i = 0; i < n; i++) cin >> a[i];
quick_sort(a, 0, n - 1);
for (i = 0; i < n; i++)
{
if (a[i] % 2 != 0)
cout << a[i] << ' ';
}
for (i = 0; i < n; i++)
{
if (a[i] % 2 == 0)
cout << a[i] << ' ';
}
return 0;
}
7、字符串的转换,如果是字符,则将Ascii码值加3输出(无论大小写),比如输入abCD输出deFG,非字母则原样输出。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
int len = s.size();
for (int i = 0; i < len; i++)
{
if ((s[i] <= 'Z' && s[i] >= 'A') || (s[i] <= 'z' && s[i] >= 'a'))
s[i] += 3;
}
cout << s;
return 0;
}
8、找出一个大于给定整数m且紧随m的素数
注:找出一个大于给定整数m且紧随m的素数
素数的判断:只能被1或自身整除的整数
基本算法:若num % i == 0,则说明m不是素数,其中i的取值范围为2 ——— num - 1
#include<iostream>
using namespace std;
int fun(int m)
{
int i, k;
for (i = m + 1; ; i++)
{
for (k = 2; k < i; k++)
if (i % k == 0)
break;
if (k >= i)
return i;
}
}
int main()
{
int m;
cin >> m;
cout << fun(m);
}
9、计算并输出k以内最大的10个能被13或17整除的自然数之和
#include<iostream>
using namespace std;
int main()
{
int k;
cin >> k;
int cnt = 10;
int sum = 0;
while (cnt > 0)
{
if (k % 13 == 0 || k % 17 == 0)
{
sum += k;
cnt--;
}
k--;
}
cout << sum;
return 0;
}
10、判断回文数
#include<iostream>
using namespace std;
bool is_huiwenshu(int num)
{
int c, t = 0;
c = num;
while (c > 0)
{
t = t * 10 + c % 10;
c = c / 10;
}
if (t == num)
return true;
else return false;
}
int main()
{
int num;
cin >> num;
cout << is_huiwenshu(num);
return 0;
}
11、计算并输出high以内的10个最大素数之和
#include<iostream>
using namespace std;
bool is_sushu(int num)
{
for (int i = 2; i < num; i++)
if (num % i == 0)
return false;
return true;
}
int main()
{
int num;
cin >> num;
int cnt = 0;
int sum = 0;
while (num > 1)
{
if (is_sushu(num) == true)
{
sum += num;
cnt++;
}
num--;
if (cnt == 10)
break;
}
cout << sum;
return 0;
}
12、计算字符串s中含有字符串t的数目
#include<iostream>
#include<string>
using namespace std;
int count(string s, string t)
{
int i, j, k, num = 0;
for (i = 0; s[i] != '\0'; i++)
for (j = i, k = 0; t[k] == s[j]; k ++ ,j++)
if (t[k + 1] == '\0')
{
num++;
break;
}
return num;
}
int main()
{
string s, t;
cin >> s >> t;
cout << count(s, t);
return 0;
}
13、判断水仙花数
水仙花数必须包含三位数以上,并且每位数的立方加起来等于该数本身,则称之为水仙花数。
#include<iostream>
using namespace std;
bool fun(int num)
{
if(num / 100 == 0) return false;
int t = num;
int sum = 0;
while(t > 0)
{
int tem = t % 10;
sum += tem * tem * tem;
t = t / 10;
}
if(sum == num) return true;
else return false;
}
int main()
{
int num;
cin >> num;
cout << fun(num) << endl;
return 0;
}