3个简单的c程序

1、给你任意三个整形数据,找出其中最大一个整形数。
2、求1+2!+3!+...+20!的和。

3、编程完成数据加密。数据是五位的整数,加密规则为:每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。

 解析:

对于第一个问题,可以采用三目运算符(?::)来运算

#include <stdio.h>
int main(void)
{
	int a,b,c;
	int d;
	scanf("%d%d%d",&a,&b,&c);
	d = a>b?(a>c?a:c):(b>c?b:c);
	printf("Max=%d",d);
} 
可以直接采用此运算符直接求得最大值。



对于第二个问题,int类型对于数的处理最多到2147483647,而13!已经超过了这个范围达到了6227020800如何解决这个问题,本以为是采用字符串类型来解决,但是太过于复杂,对于新手的我来说十分困难,但是和同学讨论了用double了类型解决这个问题,茅塞顿开。而且非常坚强的可以运算好多数字阶乘和的问题。不知道上限!

#include <stdio.h>
int main(void){
	int i;
	double s=0,x=1;
	int n;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		x*=i;
		s+=x;
	}
	printf("%.0f",s);
}
这里运算1到20的阶乘和。



3对于第三个问题本以为要考虑很多的问题,比如溢出问题,但是可以通过拆分的方式完美的将溢出问题扼死在数组里,这样就不会出现进位取余的问题。,而且交换位数的时候就可以直接采用第三个数来进行数组元素的交换

#include <stdio.h>
int main(void){
	int a;
	int b[5];
	int c;
	int i;
	scanf("%d",&a);
	for(i=0;i<5;i++){
		c=a%10;
		b[i]=(c+6)%8;
		a=a/10;
	}
	for(i=0;i<5;i++)
		printf("%d",b[i]);
}



以上就是全部解答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值