我爱写作业之20211213

(1)进制转换

**题目描述:**编写一个函数DecToBin(int n,char b[]),该函数用于将十进制整数n转换为二进制,转换结果以字符串形式存储于字符数组b中。在main函数中,输入一个整数n,调用DecToBin函数,将十进制整数n转换并输出相应的二进制数。

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

//十进制转二进制

void DecToBin(int n, char b[])
{
	int i = 0;
	int res[33];
	//短除法
	while (n > 0)
	{
		res[i] = n % 2;
		n = n / 2;
		i++;
	}
	//将res里面的1和0数字倒叙,并转成字符型
	int j = 0;
	char str[33];
	for (; i > 0; i--)
	{
		if (res[i - 1] == 1) //此处i-1 对应上面i++的动作,要减一
		{
			str[j] = 49; //字符‘1’
		}
		else
		{
			str[j] = 48; //字符‘0’
		}
		j++;
	}
	str[j] = '\0'; //末尾补‘\0’代表字符串结束
	strcpy(b, str); //数据要拷贝到b[]的空间,不然函数结束  数据就没了
}
//设置一个打印函数,使其打印出来是 0011 1111 1111 的样式
void printS(char b[], int len)
{
	int a = 0; //存放补0个数
	a = 4 - len % 4;
	int j = 0; //计数器
	if (a != 0)
	{
		for (int k = 0; k < a; k++)
		{
			printf("0");
			j++; 
		}
	}
	//假如a!=0上面循环结束,j肯定不会大于4,所以不用考虑空格输出
	
	for (int i = 0; i < len; i++)
	{
		if ((j + 1) % 5 == 0)
		{
			printf(" ");
			i--;
		}
		else
		{
			printf("%c", b[i]);
		}
		j++;
	}
	printf("\n");
}
int main()
{
	int n = 0;
	int len = 0;
	char b[33];
	scanf("%d", &n);
	DecToBin(n, b);
	len = strlen(b);
	printS(b, len);
	printf("---\n");
	printf("%s\n", b);
	return 0;
	
}

(2)可逆素数

题目描述:可逆素数是指一个素数将其各位数字的顺序倒过来构成的反序数也是素数。编写一个函数isPrime,该函数用于判断整数x是否为素数,若x是素数则返回1,否则返回0;然后在编写一个函数Reverse,该函数返回整数x反序数(即将各位数字的顺序倒过来)。输入两个正整数m和n,调用函数isPrime和Reverse,求m~n之间所有可逆素数,并按从小到大的次序输出。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
//可逆素数
/*
1、判断是否是素数
2、是素数返回1,否则返回0
*/
int isPrime(int n)
{
	int k = (int)sqrt(n * 1.0);
	int flag = 0; //标志位
	for (int i = 2; i <= k; i++)
	{
		if (n % i == 0)
		{
			flag = 1;
			break;
		}
	}
	if (flag == 0) //标志位没有变,说明是素数
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

/*
1、返回传入整数的反序数
*/
int Reverse(int n)
{
	int res = 0;
	while (n > 0)
	{
		res = res * 10 + n % 10;
		n = n / 10;
	}
	return res;
}
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	if (m < n)
	{
		for (int i = m; i <= n; i++)
		{
			int tmp1 = isPrime(i);
			int tmp2 = isPrime(Reverse(i));
			if (tmp1 == 1 && tmp2 == 1)
			{
				printf("%d ", i);
			}
		}
	}
	else
	{
		printf("输入有误!");
	}
	return 0;
}

(3)一个月有几天

题目描述编写一个函数isLeap,该函数用于判断年份year是否为闰年,若y是闰年则返回1,否则返回0。在main函数中,输入年份和月份,调用isLeap函数,输出该月份的天数。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//一个月有几天
//判断是否为闰年,闰年返回1
int isLeap(int year)
{
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

int main()
{
	int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	int year = 0;
	int month = 0;
	scanf("%d %d", &year, &month);
	int judge = isLeap(year);
	if (judge != 1)
	{
		printf("%d\n", days[month -1]);
	}
	else
	{
		if (month == 2)
		{
			printf("29");
		}
		else
		{
			printf("%d\n", days[month - 1]);
		}
	}
	return 0;
}

(4)统计人数

题目描述编写一个函数arrayAvg(int a[], int n),调用该函数用于求解并返回数组a中n个元素的平均值。在main函数中,输入n个整数,调用arrayAvg函数,统计这n个整数中大于均值的个数。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//统计人数
int arrayAvg(int a[], int n)
{
	int sum = 0;
	int avg = 0;
	int j = 0; //计数用
	for (int i = 0; i < n; i++)
	{
		sum += a[i];
	}
	avg = sum / n;
	for (int i = 0; i < n; i++)
	{
		if (a[i] > avg)
		{
			j++;
		}
	}
	return j;
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	int num[30];
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &num[i]);
	}
	printf("%d\n", arrayAvg(num, n));
	return 0;
}

(5)求阶乘和

题目描述编写函数Fact,该函数用于计算并返回n的阶乘。在main函数中后,输入一个正整数m,调用函数Fact求解并输出1!- 2!+3!-4! +。。。+m!的值。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//求阶乘和
int Fact(int n)
{
	int a = 1;
	int sum = 0;
	for (int i = 1; i <= n; i++)
	{
		a *= i;
		if (i % 2 == 0)
		{
			sum -= a;
		}
		else
		{
			sum += a;
		}
	}
	return sum;
}

int main()
{
	int num = 0;
	scanf("%d", &num);
	printf("%d\n", Fact(num));
	return 0;
}

(6)统计完全平方数

题目描述完全平方数是指能表示为某个整数的平方的数。编写一个函数isSquare,该函数用于判断K是否为完全平方数,若K是完全平方数函数则返回1,否则返回0。在main函数中,输入两个正整数m和n,调用函数isSquare,统计并输出m~n之间完全平方数的个数。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//统计完全平方数
int isSquare(int num)
{
	int temp = num / 2 + 1; //此处不加1 num=1时不会被统计
	for (int i = 1; i <= temp; i++)
	{
		if (i * i == num)
		{
			return 1;
		}
	}
	return 0;
}

int main()
{
	int m, n;
	scanf("%d%d", &m, &n);
	int j = 0; //计数
	for (int i = m; i < n; i++)
	{
		if (isSquare(i) == 1)
		{
			j++;
			//printf("%d\n", i);
		}
	}
	printf("%d\n", j);
	return 0;
}

在这里插入图片描述
野生程序员,义务写作业,互相学习,共同进步,快来一起玩耍吧~还可以找我下载csdn资源和百度文库资源哟,

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值