1.定义个字符型数组 char 数组,将顺序反置,acvkd ->dkvca;
#include <iostream>
using namespace std;
int main(){
char (*fp);
fp = new char;
cout << "请输入一串字母:" << endl;
cin >> fp;
char temp;
int len = strlen(fp);
for (int i = 0;i < len / 2;++i) {
temp = fp[len-i-1];
fp[len - i - 1] = fp[i];
fp[i] = temp;
}
cout << fp;
return 0;
}
2.定义一个 int 类型的二维数组, 问 :计算上三角阵的和;
#include <iostream>
using namespace std;
int main() {
//随意创建一个二位数组
int a[5][5] = {
{0, 1, 2, 3, 4},
{5, 6, 7, 8, 9},
{10, 11, 12, 13, 14},
{15, 16, 17, 18, 19},
{20, 21, 22, 23, 24}
};
//i,j用于控制循环,sum为上三角阵的和
//如果为任意数组a[m][n],则第一个for的5修改为m,第二个for的j=4修改为j=n-1
int i = 0, j = 0, k = 0, sum = 0;
for (i = 0;i < 5;++i) {
for (j = 4;j >= i; --j) {
sum += a[i][j];
}
}
cout << "上三角阵的和为:" << sum << endl;
}
3.有 50 个人,围坐成一圈,然后开始报数,从 0 开始报数,报数是从 0-7,报到 7 的人,退 出这个圈子,然后下一人开始从 0 报,问报数 15 轮后,哪些人会留下来,原来他所在的位 置。把留下来的人输出原本他所在的位置.
#include <iostream>
using namespace std;
int main() {
int people[50];
int* p = people, count, i = 0, j = 0;
//为每个人编号
for (i; i < 50;++i) {
*p = i + 1;
++p;
}
//将退出的人逐个淘汰
for (i = 1; i < 16; ++i)
{ //每数一轮报数清零
count = 0;
while (count < 8)
{
//如果超出上限,清零
if (j == 50)
j = 0;
//自动跳过被重置的人,没被重置的继续数
if (people[j])
++count;
//每一轮都有人被淘汰,j+1确保退出的人+未退出的人总数为50
++j;
}
//退出的人清零
people[j - 1] = 0;
cout << "第" << i << "个退出的是" << j << endl;
}
//输出剩下的人的位置
cout << "剩下的人的位置分别为:" << endl;
for (i = 0;i < 50;++i) {
if (people[i] !=0 ) {
cout << people[i] << " ";
}
}
}