1、给你任意三个整形数据,找出其中最大一个整形数。
2、求1+2!+3!+...+20!的和。
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]);
}
以上就是全部解答