9
回答
以下是用函数实现字符的逆向输出?大仙帮忙指点一下吧?
华为云实践训练营,热门技术免费实践!>>>   

#include “stdio.h”
# define N 5
viod  main()
{
char  fuction(char a[]);
char a[5]={'a','b','c'.'d','e'};
int i;
for(i=0;i<5;i++)
{printf("%c",a[i]);}
fuction(a);
for(i=0;i<5;i++)
{printf("%c",a[i]);}
}
char fuction(char a[])
{
 int i;
 char temp;
for(i=0;i<5;i++)
{
    temp=a[i];
    a[i]=a[N-i];
    a[N-i]=temp;
 printf("%c",a[i]);
 

}

<无标签>
举报
共有9个答案 最后回答: 6年前

你的function函数参数也有问题,最好再加个参数指明元素个数;

你这程序不能运行吧:viod  main()

引用来自“杨亮学习C语言”的答案

其实我主要的困扰还是不知道怎么写这个函数?别的是小事情
#include <stdio.h>
void output(char *str);
int main(int argc, char * argv[]){
    if (argc < 2){
       printf(" need parameters !\n"); return 1;
    }
    output(argv[1]);
    return 0;
}
void output(char *str){
    int i = 0;
    while (str[i++]){}
    i--;
    while (i > 0){
       printf("%c",str[--i]);
    }
    printf("\n");
    return ;
}

你看是否达到你的要求,随手写的,没测试过。

--- 共有 3 条评论 ---
恋恋美食回复 @中山野鬼 : 有幸见识了你的第一次,哈哈 6年前 回复
中山野鬼回复 @恋恋美食 : 貌似有个地方我写错了。哈。我C写了16年,目前没有一次空手写,没有笔误的。 6年前 回复
恋恋美食也许他要的不是这个效果,他想通过function()函数改变数组,不是单单输出。 不过,你的while(str[i++]){}用法确实挺棒 6年前 回复

我这里有篇文章,你可以参考下:

http://my.oschina.net/renhc/blog/34727

关于你的这个程序,稍微改了下,你原来的那个function有严重问题,反转到一半,事实上前面部分已被污染了:

#include <stdio.h>
#define N 5

void fuction(char a[]);

int main()
{
    char a[5] = {'a','b','c','d','e'};
    int i;
    for(i = 0; i < 5; i++)
    {
        printf("%c", a[i]);
    }
    printf("\n");

    fuction(a);

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

    return 0;
}

void fuction(char a[])
{
    char *pHead = a;
    char *pTail = a + N -1;
    char temp;

    while(pHead < pTail)
    {
        temp = *pHead;
        *pHead = *pTail;
        *pTail = temp;
        pHead++;
        pTail--;
    }
}

其实,我的本意就是用数组实现,在调用的函数中,不是只要改变函数的数值,那么在主函数中的数值也会随着改变么?用指针我可以搞定,就是想用数组,各位帮帮忙吧

 

--- 共有 1 条评论 ---
中山野鬼你说的详细点。我没看懂。哈。 6年前 回复
#include <stdio.h>
#include <string.h>

static int _log(char* src, size_t length){
    register size_t i = 0;
    do {
        putchar( *src++ );
    }while( ++i<length );
    putchar( '\n' );
    return 0;
}


int rotate(char* src, size_t length){
    register size_t i = 0;
    size_t until = (length--)>>1;

    while ( i < until ){
        src[i] ^= src[length-i];
        src[length-i] ^= src[i];
        src[i] ^= src[length-i];
        ++i;
    }
    return 0;
}


int main(void){
    char example[] = {'a','b','c','d','e'};
    char example2[] = "abcdef";
    _log(example, sizeof(example));
    rotate(example, sizeof(example));
    _log(example, sizeof(example));

    _log(example2, strlen(example2));
    rotate(example2, strlen(example2));
    _log(example2, strlen(example2));

    return 0;
}

顶部