[C程序设计语言]练习1-19 编写函数reverse(s),将字符串s中的字符顺序颠倒过来。使用该函数编写一个程序,每次颠倒一个输入行中的字符顺序。

程序 专栏收录该内容
12 篇文章 0 订阅

方法一:
缺点:在编程规范里面,函数定义是实现单一功能,读取和反转是独立的功能

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

#define MAX 1000

void reverse(char line[]);
int main()
{
	int n = 0;
	int c;
	char line[MAX] = { 0 };

    reverse(line);
    printf("%s", line);
	return 0;
}

void reverse(char s[])
{
	int n = 0;
	int i,c;
	char temp;

    while ((c =getchar()) != EOF ) {
            n++;
            s[n] = c;
    }
	for (i = 0; i <= n / 2; i++) {
		temp = s[i];
		s[i] = s[n - i ];
		s[n - i] = temp;
	}


}

方法二:

#include <stdio.h>
#include <stdlib.h>

#define MAX 1000

void reverse(char line[]);
int main()
{
    int c;
    int n = 0;
    char line[MAX] = {0};
    while(1){
        c = getchar();
        if(c != EOF && c != '\n'){
            line[n] = c;
            n++;
            continue;
        }

        if(c == EOF ){
            break;
        }
        reverse(line);
        printf("%s\n",line);
        memset(line ,0 ,MAX);
        n = 0;
    }

    return 0;
}

void reverse(char s[])
{
    int i;
    int n = 0;
    char temp;

    for(n = 0;n < MAX; n++){
        if(s[n] == 0){
            break;
        }
    }
    n--;

    for(i = 0;i <= n/2; i++){
        temp = s[i];
        s[i] = s[n-i];
        s[n-i] = temp;
    }
    return 0;
}

经检验 上述两种方法均可以实现功能,但是推荐第二种,更严谨

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值