算法笔记第三章(3)

  1. 其他进制转十进制:
    在这里插入图片描述
    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难用)。刷完还要好多时间,要加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值