查看: 1776|回复: 2

[经验] C语言经典算法77-86

[复制链接]
  • TA的每日心情
    开心
    2018-2-7 14:55
  • 签到天数: 51 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2017-10-11 19:22:48 | 显示全部楼层 |阅读模式
    分享到:
    【程序77
    题目:填空练习(指向指针的指针)
    1.程序分析:
    2.程序源代码:
    main()
    { char *s[]={"man","woman","girl","boy","sister"};
    char **q;
    int k;
    for(k=0;k<5;k++)
    { ;/*这里填写什么语句*/
    printf("%s\n",*q);
    }
    }
    ==============================================================
    【程序78
    题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
    1.程序分析:
    2.程序源代码:
    #define N 4
    #include "stdio.h"
    static struct man
    { char name[20];
    int age;
    } person[N]={"li",18,"wang",19,"zhang",20,"sun",22};
    main()
    {struct man *q,*p;
    int i,m=0;
    p=person;
    for (i=0;i{if(mage)
    q=p++;
    m=q->age;}
    printf("%s,%d",(*q).name,(*q).age);
    }
    ==============================================================
    【程序79
    题目:字符串排序。
    1.程序分析:
    2.程序源代码:
    main()
    {
    char *str1[20],*str2[20],*str3[20];
    char swap();
    printf("please input three strings\n");
    scanf("%s",str1);
    scanf("%s",str2);
    scanf("%s",str3);
    if(strcmp(str1,str2)>0) swap(str1,str2);
    if(strcmp(str1,str3)>0) swap(str1,str3);
    if(strcmp(str2,str3)>0) swap(str2,str3);
    printf("after being sorted\n");
    printf("%s\n%s\n%s\n",str1,str2,str3);
    }
    char swap(p1,p2)
    char *p1,*p2;
    {
    char *p[20];
    strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
    }
    ==============================================================
    【程序80嵌入式信盈达企鹅要妖气呜呜吧久零就要
    题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
    问海滩上原来最少有多少个桃子?
    1.程序分析:
    2.程序源代码:
    main()
    {int i,m,j,k,count;
    for(i=4;i<10000;i+=4)
    { count=0;
    m=i;
    for(k=0;k<5;k++)
    {
    j=i/4*5+1;
    i=j;
    if(j%4==0)
    count++;
    else
    break;
    }
    i=m;
    if(count==4)
    {printf("%d\n",count);
    break;}
    }
    }
    【程序81
    题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
    1.程序分析:
    2.程序源代码:
    output(long b,long i)
    { printf("\n%ld/%ld=809*%ld+%ld",b,i,i,b%i);
    }
    main()
    {long int a,b,i;
    a=809;
    for(i=10;i<100;i++)
    {b=i*a+1;
    if(b>=1000&&b<=10000&&8*i<100&&9*i>=100)
    output(b,i); }
    }
    ==============================================================
    【程序82
    题目:八进制转换为十进制
    1.程序分析:
    2.程序源代码:
    main()
    { char *p,s[6];int n;
    p=s;
    gets(p);
    n=0;
    while(*(p)!='\0')
    {n=n*8+*p-'0';
    p++;}
    printf("%d",n);
    }
    ==============================================================
    【程序83
    题目:求0—7所能组成的奇数个数。
    1.程序分析:
    2.程序源代码:
    main()
    {
    long sum=4,s=4;
    int j;
    for(j=2;j<=8;j++)/*j is place of number*/
    { printf("\n%ld",sum);
    if(j<=2)
    s*=7;
    else
    s*=8;
    sum+=s;}
    printf("\nsum=%ld",sum);
    }
    ==============================================================
    【程序84
    题目:一个偶数总能表示为两个素数之和。
    1.程序分析:
    2.程序源代码:
    #include "stdio.h"
    #include "math.h"
    main()
    { int a,b,c,d;
    scanf("%d",&a);
    for(b=3;b<=a/2;b+=2)
    { for(c=2;c<=sqrt(b);c++)
    if(b%c==0) break;
    if(c>sqrt(b))
    d=a-b;
    else
    break;
    for(c=2;c<=sqrt(d);c++)
    if(d%c==0) break;
    if(c>sqrt(d))
    printf("%d=%d+%d\n",a,b,d);
    }
    }
    ==============================================================
    【程序85
    题目:判断一个素数能被几个9整除
    1.程序分析:
    2.程序源代码:
    main()
    { long int m9=9,sum=9;
    int zi,n1=1,c9=1;
    scanf("%d",&zi);
    while(n1!=0)
    { if(!(sum%zi))
    n1=0;
    else
    {m9=m9*10;
    sum=sum+m9;
    c9++;
    }
    }
    printf("%ld,can be divided by %d \"9\"",sum,c9);
    }
    ==============================================================
    【程序86
    题目:两个字符串连接程序
    1.程序分析:
    2.程序源代码:
    #include "stdio.h"
    main()
    {char a[]="acegikm";
    char b[]="bdfhjlnpq";
    char c[80],*p;
    int i=0,j=0,k=0;
    while(a!='\0'&&b[j]!='\0')
    {if (a { c[k]=a;i++;}
    else
    c[k]=b[j++];
    k++;
    }
    c[k]='\0';
    if(a=='\0')
    p=b+j;
    else
    p=a+i;
    strcat(c,p);
    puts(c);
    }

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-11 13:43
  • 签到天数: 147 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2017-11-8 09:14:13 | 显示全部楼层
    不错不错,有空得自己敲一遍看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-2-7 14:55
  • 签到天数: 51 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2017-11-12 16:20:51 | 显示全部楼层
    he129807 发表于 2017-11-8 09:14
    不错不错,有空得自己敲一遍看看

    谢谢,加qq1175589091
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 08:30 , Processed in 0.116419 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.