第一题 输入一组由正整数组成的数字序列,序列大小不超过500,遇到-1结束输入,判断这个数字序列是否是升序。如果是升序,输出“YES”,如果不是升序,输出“NO”
int a[500];
int i = 0;
int n;
bool judge = true;
while (cin>>n&&n!=-1&&i<500)
{
a[i] = n;
if (a[i - 1]>a[i]) judge = false;
i++;
}
cout << judge << endl;
第三题 是输入一个整数,判断是不是回文数,例如101,12121之类
int n;
while (cin >> n&&n != -1)
{
int a[1000];
int i = 0;
int m = n;
bool judge = true;
while (m)
{
a[i] = m % 10;
i++;
m = m / 10;
}
i = i - 1;
for (int j = 0; j <= i; j++,i--)
{
if (a[j] != a[i]) judge = false;
}
if (judge == true) cout << "YES" << endl;
else cout << "NO" << endl;
}
第四题 输入两个字符串,str1 和 str2,将字符串 str2 逆序之后连接到字符串 str1 后面,最后输出str1。举个例子,如果输入的字符串 str1 是"abc", 字符串 str2 是"123",那么逆序连接之后,输出的结果为"abc321"。
char a[1000], b[1000];
int a_l = 0;
cin >> a;
cin >> b;
a_l = strlen(a);
for (int i = 0,j=a_l-1; i <= j; i++,j--)
{
char b = a[i];
a[i] = a[j];
a[j] = b;
}
strcat_s(b, a);
cout << b;
第五题 首先输入两个正整数,m(2<=m<=36)和n(2<=m<=36),然后输入一个m进制的数字串,将这个数字串转换为n进制并输出。如果进制超过9,那么用小写字母’a’到’z’依次表示10~35的数字。(假设数字串对应的十进制数用int存储不溢出)
答:
n进制化十进制:按位乘n的i次方后相加,小数点左边第一位0次方,第二位1次方,以此类推,比如n进制数字1234,换成10进制后为4×n0+3×n1+2×n2+1×n3
十进制化n进制:反复除n取余数,除n的得数再取余数,直到得数为0,把余数按顺序从低位到高位写出即可,比如1234换八进制,第1次除8得154余2,154除8得19余2,19除8得2余3,2除8得0余2,所以最后得到2322
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <iomanip>
#include<math.h>
#include<String.h>
using namespace std;
int ToTen(int m , char a[])
{
int num=0,t;
int result = 0;
int length = strlen(a);
for (int i = length - 1; i >= 0; i-- , num++)
{
if ( a[i] >= 'a'&&a[i] <= 'Z') t = int(a[i] - 'a' + 10);
else t = int(a[i] - '0');
result += t * pow(double(m), double(num));
}
return result;
}
void to_N(int num_ten, int n, char b[])
{
int yu, chu;
chu = num_ten;
int i = 0;
while (chu)
{
yu = num_ten%n;
chu = num_ten / n;
if (yu > 9) b[i++] = char( yu-10+'a');
else b[i++] = char(yu+'0');
}
i = i - 1;
for (int j = 0; j <= i; j++,i--)
{
char mid = b[j];
b[j] = b[i];
b[i] = mid;
}
}
int main()
{
int n, m;
char a[100];
char b[100];
cin >> m >> n;
cin >> a;
int num_ten = ToTen(m,a);
cout << num_ten << endl;
to_N(num_ten , n , b);
cout << b << endl;
system("pause");
}
第六题 输入一个正整数n(n`<=30),输出n所对应的蛇形矩阵。
i:控制行号
s-i:控制列号
d: 控制方向
s: 路径长度
void display(int n, int a[][10]) //输出n对应的蛇形矩阵
{
int s = 0, i = 0, d = -1;
while (n >= 1) //生成蛇形矩阵,存储在a[][10]数组中
{
int cnt = 0;
while (cnt <= s)
{
a[i][s - i] = n--;
cnt++;
i += d;
}
s++;
d = -d;
i = d>0 ? 0 : s;
}
int j;
for (i = 0; i<10; i++) //输出n对应的蛇形矩阵
{
if (a[i][0] <= 0)
break;
for (j = 0; j<10; j++)
if (a[i][j]>0)
cout << a[i][j] << ' ';
cout << endl;
}
}
int main()
{
int n, a[10][10] = { 0 };
cin >> n;
display(n, a);
}
第七题 输入一个正整数n,判断不超过n的所有数中与7有关的数有多少个。如果某个数是7或者是7的倍数,或者这个数的某一位是7,那么这个数便与7有关。举个例子,如果输入的n是20,那么20以内与7有关的数便是:7、14、17,最终输出结果是3。
int n,m=0;
cin >> n;
for (int i = 1; i <= n; i++)
{
if (i % 7 == 0) m++;
else{
int j = i;
while (j != 0)
{
if (j % 10 == 7) { m++; break; }
j = j / 10;
}
}
}
cout << m << endl;