给你任意三个整形数据,找出其中最大一个整形数。
#include <stdio.h>
#include <stdlib.h>
int max(int a, int b, int c);
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
int m = max(a, b, c);
printf("The largest integer is:%d",m);
return 0;
}
int max(int a, int b, int c)
{
if(a>=c && a>=b)
{
return a;
}
if(b>=a && b>=c)
{
return b;
}
if(c>=a && c>=b)
{
return c;
}
}
求1+2!+3!+…+20!的和。
注意:整形的范围,20!的阶乘已经超出了整形的范围
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
const int L=MAXN;
int a[MAXN];
string fac(int n)
{
string ans;
if(n==0)
return "1";
memset(a,0,sizeof(a));
int s=0,m=n;
while(m)
{
a[++s] = m%10;
m/=10;
}
for(int i=n-1; i>=2; i--)
{
int w = 0;
for(int j=1; j<=s; j++)
{
a[j] = a[j]*i+w;
w = a[j]/10;
a[j] = a[j]%10;
}
while(w)
{
a[++s] = w%10;
w/=10;
}
}
while(!a[s])
s--;
while(s>=1)
ans+=a[s--]+'0';
return ans;
}
string add(string a,string b)//只限两个非负整数相加
{
string ans;
int na[L] = {0}, nb[L] = {0};
int la=a.size(), lb=b.size();
for(int i=0;i<la;i++)
na[la-1-i] = a[i]-'0';
for(int i=0;i<lb;i++)
nb[lb-1-i] = b[i]-'0';
int lmax = la>lb?la:lb;
for(int i=0; i<lmax; i++)
{
na[i] += nb[i];
na[i+1] += na[i]/10;
na[i] %= 10;
}
if(na[lmax])
lmax++;
for(int i=lmax-1; i>=0; i--)
ans+=na[i]+'0';
return ans;
}
int main()
{
int n;
string ANS = "0";
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
ANS=add(ANS,fac(i));
}
cout<<ANS<<endl;
return 0;
}
编程完成数据加密。数据是五位的整数,加密规则为:每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[5];
int i = 0;
for(i=0; i<5; i++)
{
scanf("%d",&a[i]);
}
printf("加密前:\n");
for(i=0; i<5; i++)
{
printf("%5d",a[i]);
}
for(i=0; i<5; i++)
{
int temp;
temp = (a[i]+6)%8;
a[i] = temp;
temp = 0;
}
int a1 = 0;
a1 = a[0];
a[0] = a[4];
a[4] = a1;
int a2 = 0;
a2 = a[1];
a[1] = a[3];
a[3] = a2;
printf("\n");
printf("加密后:\n");
for(i=0; i<5; i++)
{
printf("%5d",a[i]);
}
}