| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2772 人关注过本帖
标题:发几个我写的C语言作业程序 请看清题目 进来批评我程序不好的热烈欢迎 如果 ...
取消只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏
 问题点数:0 回复次数:12 
发几个我写的C语言作业程序 请看清题目 进来批评我程序不好的热烈欢迎 如果想进来吐槽我的就请别进了。。
说一句不好听的:进来批评我程序不好的我热烈欢迎 您要进来只说神马【发程序有什么目的】 【有什么意义】 一类的挑事的话 嘿嘿 请自觉散退好不。。 谢谢合作

已知问题:
交换的那个用的是奇技淫巧
最好先写main() 写声明
for写的烂


编写一个函数void  swap(int *x,int *y),其中的 x,y都是指向int的指针,功能是实现x,y所指向的两个int变量的值的交换。并写出函数调用过程。
程序代码:

#include<stdio.h>

void swap(int *a,int *b)
{
    /* swap two nums */
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}

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

    printf("Please input a,b:");
    scanf("%d,%d",&a,&b);
    printf("before swap: a=%d,b=%d\n",a,b);
    swap(&a,&b);
    printf("after swap: a=%d,b=%d\n",a,b);

    return 0;
}




编写函数int delnum(int *a , int num , int n),用于在长度是n的数组a中,删除一个值为num的元素。删除后数组的长度作为函数的返回值返回。注意,num在数组中可能不只一个。
程序代码:

#include<stdio.h>

#define N 10

/* return numbers in new array */
int delnum(int *a,int num,int n)
{
    int buf[N] = {0};
    int i = 0;
    int j = 0;

    for (; i<N; i++)
    {
        if (a[i] != num)
        {
            buf[j++] = a[i];
        }
    }

    memcpy((void *)a,(void *)buf,(j)*sizeof(int));

    return (j);
}

int main(void)
{
    int num = 0,i = 0,n = 0;
    int a[N] = {0};

    printf("please input a number to delete:");
    scanf("%d",&num);
    printf("please input %d numbers:\n",N);

    for (; i<N; i++)
    {
        scanf("%d",(a+i));
    }

    n = delnum(a,num,N);

    for (i=0; i<n; i++)
    {
        printf("%d ",a[i]);
    }

    return 0;
}




编写一个函数char *link(char *s1,char *s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中,函数返回值为字符数组s1的首地址。
程序代码:

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

#define N 50

char *link(char *s1,char *s2)
{
    char *p1 = NULL;
    char *p2 = NULL;
    char buf[N*2] = {'\0'};
    char *pbuf = buf;

    p1 = s1;
    p2 = s2;


    while(*(p1)!='\0'||*(p2)!='\0')
    {
        if (*(p1)!='\0')
        {
            *(pbuf++) = *(p1++);
        }
        if (*(p2)!='\0')
        {
            *(pbuf++) = *(p2++);
        }

    }

    /* can not return a stack address */
    strcpy(s1,buf);

    return s1;
}

int main(void)
{
    char a[N*2] = {'\0'},b[N] = {'\0'};

    printf("Please input two strings(max length is %d):\n",N);
    gets(a);
    gets(b);

    if (strlen(a)+strlen(b)>N)
    {
        printf("\nString too long!\n");
        return 0;
    }

    link(a,b);

    puts(a);

    return 0;
}




给定主函数,编写三个函数input()、sort()、output(),分别实现数组元素的输入,数组元素的排序(升序)和数组元素的输出。
程序代码:

#include<stdio.h>

#define N 10

int input(int *a,int n)
{
    int i = 0;

    for (; i< n; i++)
    {
        scanf("%d",(a+i));
    }

    return 0;
}

int sort(int *a,int n)
{
    int i = 0;
    int j = 0;
    int i_min = 0;

    for (; i<n; i++)
    {
        i_min = i;
        for (j=i; j<n; j++)
        {
            if (a[j] < a[i_min])
            {
                i_min = j;
            }
        }
        if (i != i_min)
        {
            a[i_min] ^= a[i];
            a[i] ^= a[i_min];
            a[i_min] ^= a[i];
        }
    }

    return 0;
}

int print(int *a,int n)
{
    int i = 0;

    for (; i<n; i++)
    {
        printf("%d  ",a[i]);
    }

    return 0;
}


int main(void)
{
    int a[N] = {'\0'};

    printf("Input %d numbers:\n",N);

    input(a,N);
    sort(a,N);
    print(a,N);

    return 0;
}





[ 本帖最后由 zklhp 于 2011-5-15 22:22 编辑 ]
搜索更多相关主题的帖子: C语言 
2011-05-15 20:51
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
都是上机课写的 肯定有问题 欢迎各位批评

顺便感谢帮助过我的人 谢谢你们!
2011-05-15 20:52
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用liangjinchao在2011-5-15 21:06:21的发言:

楼主可真有耐性!为什么不试试“C程序100例”呢?

为啥要试C程序100例呢?
2011-05-15 21:25
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用键盘农夫在2011-5-15 21:32:36的发言:

1
int a = 0,b = 0;  没必要赋初值
swap()那种写法没什么好处,老老实实用个临时变量为好

第二个确实是 但第一个我觉得必要 原因是 如果赋初值 不小心先用了 不是使用未定义变量么

当然 这个看怎么想 要是从省事 少打字的角度讲 应该不赋初值 应该让main()为void 不过我感觉我的写法好

多谢指正
2011-05-15 21:40
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用键盘农夫在2011-5-15 21:41:47的发言:

4
弄个
#include
作甚?

多谢指正
2011-05-15 21:42
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
【建议 2-2-1 】 尽可能在定义变量的同时初始化该变量(就近原则)

如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。例如

int width = 10; // 定义并初绐化width

int height = 10; // 定义并初绐化height

int depth = 10; // 定义并初绐化depth

同理 int main() 也是学来的 当然对错是你们高手讨论的事 我认为好 就用了 不过还是谢谢

2011-05-15 21:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zklhp在2011-5-15 21:48:05的发言:

【建议 2-2-1 】 尽可能在定义变量的同时初始化该变量(就近原则)

如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。例如

int width = 10; // 定义并初绐化width

int height = 10; // 定义并初绐化height

int depth = 10; // 定义并初绐化depth

同理 int main() 也是学来的 当然对错是你们高手讨论的事 我认为好 就用了 不过还是谢谢
上面的建议是在 高质量C++/C编程指南 里面看的、、、
2011-05-15 21:49
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
这个确实 以后改正。。
2011-05-15 21:50
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用键盘农夫在2011-5-15 21:50:11的发言:

林锐那个?
不少东西他说的不对

那您能推荐一个更好的么 谢谢
2011-05-15 21:52
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用BlueGuy在2011-5-15 21:55:21的发言:

#include

//不要用这种交换方式,伤脑细胞, 吃力不讨好
void swap(int *a,int *b)
{
    /* swap two nums */
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}

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

    printf("Please input a,b:"); //一切以简为重,别太讲究形式,没什么用的,
    scanf("%d,%d", &a, &b); //中间别用逗号, 自找麻烦,   
    printf("before swap: a=%d, b=%d\n", a ,b);
    swap(&a, &b); //标识符后加空格
    printf("after swap: a=%d, b=%d\n",a, b);

    return 0;
}
其实只有上面的函数是我写的。。 主函数是老师写的 我只不过加了int 赋初值。。。
2011-05-15 21:59
快速回复:发几个我写的C语言作业程序 请看清题目 进来批评我程序不好的热烈欢迎 ...
数据加载中...
 
   



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

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