C语言函数练习——判断素数、判断闰年、数值+1、打印整数位、求字符串长度

内容

1.判断一个数是否是一个素数
2.判断一年是否是闰年
3.实现数值+1
4.递归函数实现打印整数每一位的数
5.实现不设置变量,求字符串长度
——————————————————————————————————————————

*1.判断一个数是否是一个素数

素数定义:除了1和它本身,没有其他因子的整数。(1不是素数,也不是合数)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

//判断一个数是否是素数  *找反例思想!
void Is_prime(int num) {
	int i = 2;
	for (; i <num; i++) {
		if (num==1 || num>0&&num % i == 0) {
			break;
		}
	}
	if (i==num) {
		printf("这个数是素数。\n");
	}
	else {
		printf("这个数不是素数。\n");
	}
}

int main() {
	printf("请输入一个整数:");
	int num = 0;
	scanf("%d", &num);
	Is_prime(num);
	
	system("pause");
	return 0;
}

结果:
在这里插入图片描述

*2.判断一年是否为闰年

闰年

  • 普通闰年:不能被100整除时判断能不能被4整除,能就是普通闰年
  • 世纪闰年:能被100整除时,在判断能不能被400整除,能就是世纪闰年
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

//判断一年是否为闰年
void Is_leap(int year) {
	int leap = 0;
	if (year % 100 == 0) {
		if (year % 400 == 0) {
			leap = 1;
		}
		else {
			leap == 0;
		}
	}
	else {
		if (year % 4 == 0) {
			leap = 2;
		}
	}
	if (leap == 1) {
		printf("%d 是世纪闰年!\n",year);
	}
	else if (leap == 2) {
		printf("%d 是普通闰年!\n", year);
	}
	else {
		printf("%d 不是闰年!\n", year);
	}
}

int main() {

	printf("请输入一个公元纪年年份:");
	int year = 0;
	scanf("%d", &year);
	Is_leap(year);

	system("pause");
	return 0;
}

在这里插入图片描述

*3.实现数值+1

要求:写一个函数,每调用一次这个函数,就会将num的值增加1。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int num = 0;
//写一个函数,每调用一次这个函数,就会将num的值增加1。
void func(int *num) {
	*num +=1;
	printf("第%d次调用该函数\n",*num);
}

int main() {

	func(&num);
	func(&num);
	printf("num = %d\n",num);
	system("pause");
	return 0;
}

在这里插入图片描述

*4.函数实现打印一个整数的每一位数

要求:接受一个整型值,按照顺序打印它的每一位。 例如:输入345,实现依次输出 3 4 5

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#incude<stdlib.h>

void print_num(int num){
	if(num>9){
		print_num(num/10);
	}
	printf("%d ",num%10);
}

int main(){
	int num=0;
	printf("请输入一个多位整数:");
	scanf("%d",&num);
	print_num(num);
	system("pause");
	return 0;
}

在这里插入图片描述

*5.实现不设置变量的前提下计算字符串长度

要求:编写一个函数不允许创建临时变量,求字符串的长度

#include<stdio.h>
#include<stdlib.>

int get_len(char *str){  //此时传入的是一个指针指向字符串数组第一个元素
	if(str[0]=="\0"){
		return 0;
	}
	return 1+get_len(str+1); //指针+1:表示指向字符串数组第二个元素
}
int main(){
	char s[]="hello C!";
	printf("%d\n",get_len(s));
	system("pause"):
	return 0;
}

在这里插入图片描述

int get_len(char str[]) {
	// 从字符串开头开始, 依次往后找, \0
	// 每次遇到一个字符, 如果不是 \0, 就 count++
	// 遇到 \0 就循环结束, 返回 count 即可
	int count = 0;
	while (str[count] != '\0') {
		count++;
	}
	return count;
}

相比于不用函数递归算法,创建临时变量的方法代码可读性确实更高,但是递归函数减少了程序的代码量,提高了效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值