内容
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;
}
相比于不用函数递归算法,创建临时变量的方法代码可读性确实更高,但是递归函数减少了程序的代码量,提高了效率。