11.7 重写公约数、a和z的ASCII码、对动态分配的回顾加补充

发布于 15 天前  20 次阅读


#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int yue(int a, int b) {
	int c;
	while(1) {
		c = a % b;
		if (c == 0) {
			return b;
		}
		else {
			a = b;
			b = c;
		}
	}
}

int main() {
	int a, b;
	scanf("%d %d", &a, &b);
	printf("%d", yue(a,b));
	return 0;
}

宝刀未老,哈哈,记得那个小的除以大的,那么除数是大的,而最后余数就是小的,再一换就成了大的除以小的,这样也是一举两得


大写在前,小写后

大A、Z,65,90

小a、z,97,122

中间差32个

//十进制


数组的动态分配加补充

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int main() {
	int n;
	scanf("%d", &n);
	getchar();
	char*  str = malloc(n + 1);
	fgets(str,sizeof(str), stdin);
	//保证了n个,且不会多换行符
	printf("%s", str);
        free(str);
	return 0;
}

瞻顾遗迹,如在昨日,令人长号不自禁

第一点,getschar(); 读取并丢弃换行符,注意( )不能掉,否则直接结束运行

第二点,动态分配malloc函数需要加<stdlib.h>的头文件

第四点,如果你使用动态分配内存n+1个字节,fgets的第二个位置就可以直接用sizeof函数而不需要再写一遍n+1了

第五点,+1的目的是存储字符结束符\0,你这样写,就无需用循环一个一个输出字符来避免输出换行符了!因为fgets会舍命陪君子,换行符压根不会被存储

届ける言葉を今は育ててる
最后更新于 2024-11-15