- 其他进制转十进制:
2.十进制转其他进制:
实现C代码如下:
(本题在实践时没有看清楚题目。。输入的其实就是两个十进制数,我以为是输入任意进制的数,然后再转为十进制相加再转为那个进制,不过只是联系,难度高了无所谓。)
#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
int turntod(int a,int D) {
int product = 1;
int y = 0;
while (a != 0) {
y = y + (a % 10) * product;
a /= 10;
product *= D;
}
return y;
}
void turntoD(int b, int D) {
int num[100];
int yu,count=0;
do {
num[count++] = b % D;
b = b / D;
} while (b != 0);
for (int i = count-1; i >= 0; i--) {
printf("%d", num[i]);
}
}
int main() {
int A, B, D;
int da, db,fin;
while (scanf("%d%d%d", &A, &B, &D)!=EOF) {
da=turntod(A, D);
db=turntod(B, D);
fin = da + db;
turntoD(fin, D);
}
}
进制间的相互转换代码比较重要。
实现C代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<cstring>
bool judge(char novel[]) {
int len,flag=1;
len = strlen(novel);
for (int i = 0; i <= len / 2; i++) {
if (novel[i] != novel[len - i - 1]) {
flag = 0;
}
}
return flag;
}
int main() {
char novel[256];
int flag;
while (gets_s(novel,255)) {
flag=judge(novel);
if (flag) {
printf("YES");
}
else {
printf("NO");
}
}
}
字符串长度:strlen函数(凭啥我整形数组的长度就要自己计算!)
定义字符串长度的时候可以取要求的最大值加一,因为可以留一格给结束符防止溢出。本题若是奇数无需读到最中间那个数,因为那个数不影响是否为回文串。
vs已经没有gets函数了,因为gets未限定读入字符串的长度,容易溢出。使用gets_s,规定读入长度可以使用数组长度-1。
实现C代码:
#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<cstring>
int main() {
char fu[81];
char danci[80][80];
int len,h=0;
int j = 0;
gets_s(fu,80);
len = strlen(fu);
for (int i = 0; i < len; i++) {
if (fu[i] != ' ') {
danci[j][h++] = fu[i];
}
else {
danci[j][h] = '\0';
j++;
h = 0;
}
}
danci[j][h] = '\0';
for (int m = j; m >= 0; m--) {
printf("%s ", danci[m]);
}
}
在调试的时候出现了烫烫烫的输出,这是字符数组赋值后没有在最后添加结束符’\0’符号。
输出字符矩阵某一行可直接%s输出改行。
第三章到这儿就结束了。vs和c有点难用,怀念matlab(虽然大一一直觉得matlab难用)。刷完还要好多时间,要加油。