| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1793 人关注过本帖, 1 人收藏
标题:继续发初学C做的作业 感觉写的挺垃圾的 欢迎各位来拍板砖。。
取消只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏(1)
 问题点数:0 回复次数:5 
继续发初学C做的作业 感觉写的挺垃圾的 欢迎各位来拍板砖。。
这是我发自己写的作业的帖子 看不惯的请自觉散退罢 我是来接受批评提高自己的 不是来找骂当出气筒的。。

报数程序写了个更好的 https://bbs.bccn.net/forum-5-1.html

编写一个函数int  prime( int  a ),判断参数是否为素数。函数有一个形参a,当a为素数时,返回1,反之,返回0。

程序代码:

#include<stdio.h>
#include<math.h>

int prime(int a)
{
    int i = 2;

    for (i=2; i<=(int)sqrt(a); i++)
    {
        if (a%i == 0)
        {
            return 0;
        }
    }

    return 1;

}

int main(void)
{
    int a = 0,b = 0;
    printf("please input a number:");
    scanf("%d",&a);
    b = prime(a);

    if (b ==1)
    {
        printf("the number is a prime number.");
    }
    else
    {
        printf("the number is not a prime number.");
    }

    return 0;
}




编写两个函数,分别求两个正整数的最大公约数和最小公倍数,结果作为函数返回值返回。在main函数中实现输入与输出。

程序代码:

#include<stdio.h>
#include<math.h>

int gongyueshu(int a,int b)
{
    int r = 1;

    if (a < b)
    {
        r = a;
        a = b;
        b = r;
    }

    while (b != 0)
    {
        r = a % b;
        a = b;
        b = r;
    }


    return a;

}

int gongbeishu(int a,int b)
{
    return (a*b/gongyueshu(a,b));
}


int main(void)
{
    int a = 0,b = 0,c = 0,d = 0;

    printf("Please input two integer numbers:");
    scanf("%d%d",&a,&b);
    c=gongyueshu(a,b);
    d=gongbeishu(a,b);

    printf("gongyueshu is %d\ngongbeishu is %d",c,d);

    return 0;
}




m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次存到数组p中,包括最后一个人的序号。到最后只余1人,输出最后留下的是第几号(最初的序号,以1起始)。若m=6,则输出n=1<CR>  3 6 4 2 5 1;若m=10,则输出n=4<CR> 3 6 9 2 7 1 8 5 10 4;若m=100,则输出n=91<CR> 3 6 9……100 58 91。函数int fun(int n ,int *p)实现上述功能,返回n个人中最后余的1人的起始序号,并将退出的序号顺序写入p指向的数组中。
这个的算法有点垃圾 不过貌似节省内存

程序代码:

#include<stdio.h>
#include<string.h>
#include<time.h>

#define FAST    /* for test */

#define M 100000

int baoshu(int n,int *p)
{
    int i = 0;
    int pick = 1;
    int j = 0;

    for (; i<n-2; i++)
    {
        pick += 2;
        /* (n-i) nums */
        if (pick > (n-i))
        {
            pick -= (n-i);
        }
        p[n+1] = p[pick];    /* p[pick] == *(p+pick) */
        #ifndef FAST
        for (j=pick; j<n+1; j++)
        {
            p[j] = p[j+1];
        }
        #else
        /* faster */
        /* memcpy (void*, const void*, size_t); */
        memcpy((void *)&p[pick],(void *)&p[pick+1],(n-pick+1)*sizeof(int));
        #endif
    }

    if (pick > (n-i))
    {
        pick -= (n-i);
    }

    /* 2 nums left */
    p[n+1] = p[pick];

    #ifndef FAST
    for (j=pick; j<n+1; j++)
    {
        p[j] = p[j+1];
    }
    #else
    memcpy((void *)&p[pick],(void *)&p[pick+1],(n-pick+1)*sizeof(int));
    #endif

    p[n+1] = p[1];

    #ifndef FAST
    for (j=1; j<n+1; j++)
    {
        p[j] = p[j+1];
    }
    #else
    memcpy((void *)&p[1],(void *)&p[2],n*sizeof(int));
    #endif

    return (p[n]);
}

int main(void)
{
    int m = 0;
    int a[M] = {'\0'};
    int i = 1;
    long start = 0l;
    long end = 0l;

    printf("Please input m(1<m<%d):",M-1);
    scanf("%d",&m);

    /* a[0] will not be used */
    for (i=1; i<=m; i++)
    {
        a[i] = i;
    }
    start = clock();
    printf("n=%d\n",baoshu(m,a));
    end = clock();

    for (i=1; i<=m; i++)
    {
        printf("%3d ",a[i]);
    }

    printf("\n");

    printf("I use %ld ms.\n",end-start);

    return 0;
}




编写宏,求两个数的最大值。

程序代码:

#include<stdio.h>

#define MAX(a,b) ((a)>(b))?(a):(b)

int main(void)
{
    int a = 0,b = 0;

    printf("Please input a,b:");
    scanf("%d,%d",&a,&b);
    printf("Max is %d",MAX(a,b));

    return 0;
}




[ 本帖最后由 zklhp 于 2011-5-10 20:25 编辑 ]
搜索更多相关主题的帖子: 函数 
2011-05-08 14:58
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
那个报数感觉挺难的 写的是比较容易想到的 呵呵
2011-05-08 15:02
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
报数程序改写了一下

https://bbs.bccn.net/forum-5-1.html
2011-05-10 17:41
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用我菜119在2011-5-10 18:03:52的发言:

不知道为什么把自己写的代码发在论坛上,有什么目的吗??

无语!
水平不如我的人可以从代码里学东西 甚至是抄作业 水平高的可以来批评 对我是提高 我觉得有意义 于己于人都好

根据您的理论我大胆推测:活着真没意思 死了算了。。
2011-05-10 20:21
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
呵呵 希望两位冷静冷静 删掉不he xie言论 免得我这贴被删 可以么。。
2011-05-10 22:56
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用thlgood在2011-5-10 23:07:07的发言:

楼主是先学汇编,再学C语言的??
呃 我以前看过一点C语言。。 后来一直学汇编 不过这两样都没学好。。
2011-05-11 22:31
快速回复:继续发初学C做的作业 感觉写的挺垃圾的 欢迎各位来拍板砖。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.068035 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved