C开发笔试题三道

来源:互联网 发布:好用的洗面奶知乎 编辑:程序博客网 时间:2024/06/07 03:29

1,给你任意三个整形数据,找出其中最大一个整形数。

#include<stdio.h>int MaxNumber(int x,int y,int z);void main(){    int x,y,z;    printf("请输入要比较的三个整数:\n");       scanf("%d,%d,%d",&x,&y,&z);    printf("三个数中最大的数为:%d\n",MaxNumber(x,y,z));}int MaxNumber(int x,int y,int z){    int max=x;    if(max<y)    {        max=y;        if(max<z)            max=z;    }    else    {        if(max<z)            max=z;    }    return max;}

这里写图片描述
2,求1+2!+3!+…+20!的和

#include<stdio.h>/*求1+2!+3!+...+20!的和*/int sumN(int n){    int sum=0;    int multi;    if(n>0)    {        multi=1;    }    else    {        return 0;    }    for(int i=1;i<=n;i++)    {        multi=multi*i;    }    sum=multi+sumN(n-1);    return sum;}void main(){       printf("1~20到20的阶乘和为:%d\n",sumN(20));}

这里写图片描述
sum用int型,若n值过大,可能会溢出。所以改为double型更合适。
3,编程完成数据加密。数据是五位数的整数,加密规则为:每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。

/*编程完成数据加密。数据是五位数的整数,加密规则为:每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。*/#include<stdio.h>#define MAX 100 #include<math.h>//n位数的数字加密static void  DataEncrypt(int number,int n)    {        int k=(int)pow(10,n-1);        //存取获得的每一位数字        int x[100];        x[0]=number/k;        int length=1;        int k2=k/10;        for(int i=1;k2>=1;k=k/10,k2=k2/10,i++)        {            x[i]=(((number%k)/k2)+6);//每位数字都加上6            length++;        }        x[0]=x[0]+6;         for(i=0;i<length;i++)//求每位数字加6之后的和        {            if(x[i]>=10)//如果加6之后是两位数,这个数字等于这个数的十位个位求和            {                x[i]=x[i]/10+x[i]%10;            }        }        for(i=0;i<length;i++)//然后用和除以8的余数代替该数字        {             x[i]=x[i]%8;        }        //再将第一位和第n位交换,第二位和第n-1位交换,即数组逆序        if(length%2==0)//n为偶数            {             for(int i=0,j=length-1;(i<length/2)&&(j>=length/2);i++,j--)              {                int temp=x[i];                x[i]=x[j];                x[j]=temp;              }                 }            else//a[n/2]不进行交换//如:n=5  0,1,2,3,4            {                for(int i=0,j=length-1;(i<length/2)&&(j>length/2);i++,j--)                  {                    int temp=x[i];                    x[i]=x[j];                    x[j]=temp;                  }                   }         printf("加密后的数为:\n");        for(i=0;i<length;i++)        {         printf("%d",x[i]);        }        printf("\n");    }    void main()    {        DataEncrypt(59683,5);    }

这里写图片描述
测试:5 9 6 8 3
每位加6变成:11 15 12 14 9
每个求和:2 6 3 5 9
%8:2 6 3 5 1
交换:1 5 3 6 2
结果正确。

原创粉丝点击