| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2773 人关注过本帖
标题:发几个我写的C语言作业程序 请看清题目 进来批评我程序不好的热烈欢迎 如果 ...
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏
 问题点数:0 回复次数:36 
发几个我写的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
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
楼主可真有耐性!为什么不试试“C程序100例”呢?

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-05-15 21:06
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
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
1
int a = 0,b = 0;  没必要赋初值
swap()那种写法没什么好处,老老实实用个临时变量为好

《狂人C:程序员入门必备》
2011-05-15 21:32
BYSF_XF
Rank: 2
等 级:论坛游民
帖 子:89
专家分:75
注 册:2011-4-25
收藏
得分:0 
我的main()都是void型的,可以少写句return,()里直接空着,少写个void,呵呵,不知道这是不是建议
还有两个数的交换,两个普通变量的交换我也喜欢像你那样,不过两个数组元素的交换最好用临时变量,因为下标变量相同时就会出问题,不知道你注意到了没有

[ 本帖最后由 BYSF_XF 于 2011-5-15 21:38 编辑 ]
2011-05-15 21:35
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
2
题目很怪,数组元素怎么删?

《狂人C:程序员入门必备》
2011-05-15 21:36
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
3
交叉连接 ?什么意思
看不懂题目

《狂人C:程序员入门必备》
2011-05-15 21:37
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
    int i = 0;
    for (; i<n; i++)
这种写法太怪了,毫无意义

《狂人C:程序员入门必备》
2011-05-15 21:40
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
快速回复:发几个我写的C语言作业程序 请看清题目 进来批评我程序不好的热烈欢迎 ...
数据加载中...
 
   



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

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