3.5 进制转换
题目代码:
#include<iostream>
using namespace std;
int q[35];
int main() {
int a, b, d;
cin >> a >> b >> d;
int sum = a + b;
int num = 0;
do {
q[num++] = sum % d;
sum = sum / d;
} while (sum != 0);
for (int i = num - 1; i>= 0; i--) {
cout << q[i];
}
return 0;
}
注意的是,将十进制数转成P进制数的时候先do再while,因为当给的数字直接是0时,需要在数组也存一个0才可以。
进制转换时将P进制数x转换成十进制数y的代码:
#include<iostream>
using namespace std;
int main() {
int x, y, product, P;
cin >> x >> P;//P是进制
y = 0; product = 1;
while (x != 0) {
y = y + (x % 10) * product;
x = x / 10;
product *= P;
}
cout << y;
return 0;
}
3.6 字符串处理
#include <cstdio>
#include <cstring>
char str[260];
bool flag;
int main() {
while (scanf("%s", str) != EOF) {
int l = strlen(str); flag = true;
for (int i = 0; i < l / 2; i++) {
if (str[i] != str[l - 1 - i])
flag = false;
break;
}
if (flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
要掌握的是字符串的输入输出,可以参考:c/c++字符数组的输入输出
#include <stdio.h>
#include <string.h>
char word[85][85];
char str[85];
int main() {
gets(str);
int len = strlen(str);
int r = 0, h = 0;
for (int i = 0; i < len; i++) {
if (str[i] != ' ') {
word[r][h++] = str[i];
}
else {
word[r][h] = '\0';
r++; h = 0;
}
}
for (int i = r; i >= 0; i--) {
printf("%s", word[i]);
if (i > 0) printf(" ");
}
return 0;
}