• 习题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);

    }

    小胖专属学习分享
  • 相关阅读:
    AQtime实战
    升级到 Fedora 12 后系统无法启动
    PostMortem Debugging Your Application with Minidumps and Visual Studio .NET
    分析、调试内存泄漏的应用程序
    中兴通讯有限公司 招聘“dotnet 高级工程师”
    快速构建大数据缓存
    【翻译 windbg 6】NET 调试示例实验 1:挂起
    【翻译 Windbg 5】.Net 调试举例
    【翻译 windbg 1】Getting started with windbg part I (第一部分 1)
    反汇编教程及汇编命令详解(一)
  • 原文地址:https://www.cnblogs.com/xpl520/p/15689799.html
Copyright © 2020-2023  润新知