习题9(函数)

1、编写函数intlen:功能为求任意整数的位数,即长度。

编程实现:对任意输入的整数求其位数。

#include <stdio.h>

int intlen(long n)

{

    int s,i;

    for(i=0,s=n;s!=0;i++)

       s=s/10;

    return i;

}

void main()

{  

    long x;

    printf("请任意输入一个整数:");

    scanf("%ld",&x);

    printf("%ld是个%d数\n",x,intlen(x));

}

 


2、编写函数fact:功能为求任意一个正整数的阶乘

编程实现:求1!+3!+5!+7!+n!

 

#include <stdio.h>

int fact(int n)

{

   int i,s=1;

   for(i=1;i<=n;i++)

   {  s=s*i;

   }

   return s;

}

void main()

{

   int i,x,sum=0;

   printf("请输入一个正整数:");

   scanf("%d",&x);

   for(i=1;i<=x;i+=2)

      sum=fact(i)+sum;

   printf("1!+3!+...的结果为:%d\n",sum);

}

 

 

 

3、编写函数hui:功能为判断一个正整数是否是回文数

编程实现:对任意输入的正整数判断是否是回文数

 

#include <stdio.h>

int hui(long num)

{

    long s,first=0,end;

    s=num;

    while(s!=0)

    {

       end=s%10;

       first=first*10+end;

       s=s/10;

    }

    if(first==num)

       return 1;

    else

       return 0;

}

 

void main()

{

    long x;

    printf("请输入一个正整数:");

    scanf("%ld",&x);

    if(hui(x))

       printf("%ld是个回文数\n",x);

    else

       printf("%ld不是个回文数\n",x);

}

 

 

 

 

4、编写函数isprime:功能为判读一个任意整数是否是素数。

编程实现:把任意一个正整数分解成两个素数之和。

 

#include <stdio.h>

#include <math.h>

int isprime(int n)

{

    int i=2;

    while(i<sqrt(n))

    {

       if(n%i==0)

           return 0;

       i++;

    }

    return 1;

}

void main()

{

    int sum,i,j,n;

    printf("请输入一个大于2的整数:");

    scanf("%d",&n);

    if(n>=2)

    {

       for(i=2;i<n/2;i++)

       {

           j=n-i;

           if(isprime(i)&&isprime(j))

           {

              sum=i+j;

              printf("%d分解后的素数对之和为:%d=%d+%d\n",n,sum,i,j);

           }

       }

      

    }

}

 

 

 

5、编写函数level:功能为求密码等级。

密码等级规则是以下要求满足一条等级就加1有数字、有大写字母、有小写字母、有标点、长度大于6;最高密码等级为5。

编程实现:任意输入一个密码,根据等级输出提示信息,若等级是1或2则输出“您密码设置弱,请更改密码!”;若等级是3或4则输出“您密码设置较强,还可以更改密码让其更强!”;若等级是5则输出“您密码设置很强,请继续保持!”。

#include <stdio.h>

char level (char n[128])

{

    int i,count;//count是统计等级

    int x1=0,x2=0,x3=0,x4=0,x5=0;//1-5级

    for(i=0;i<128;i++)

    {

       if(n[i]>='0'&&n[i]<='9')

           x1=1;

       if(n[i]>='a'&&n[i]<='z')

           x2=1;

       if(n[i]>='A'&&n[i]<='Z')

           x3=1;

if((n[i]>=32&&n[i]<=47)||(n[i]>=58&&n[i]<=40)||(n[i]>=91&&n[i]<=96)||(n[i]>=123&&n[i]<=126))

           x4=1;

       if(strlen(n)>6)

           x5=1;

       if(n[i]=='\n')

           break;

    }

    count=x1+x2+x3+x4+x5;

    switch(count)

    {

       case 1 :

           printf("您密码设置弱,请更改密码!");

       case 2 :

           printf("您密码设置弱,请更改密码!");

           break;

       case 3 :

           printf("您密码设置较强,还可以更改密码让其更强!");

       case 4 :

           printf("您密码设置较强,还可以更改密码让其更强!");

           break;

       case 5 :

           printf("您密码设置很强,请继续保持!");

           break;

       default :

           printf("您密码设置弱,请更改密码!");

    }

}

 

void main()

{

    char m[20];

    printf("请输入您的密码:");

    gets(m);

    level(m);

}

posted @ 2021-12-14 20:16  小耿想努力呀  阅读(267)  评论(0编辑  收藏  举报