C语言_0321复习_字符串/指针or数组/字符串gets/其他函数

今天打算做10-0和10-1的,不过发现自己做起来有一点困难,还是觉得用10-0当例子,自己复习一下之前的内容吧~

10-0. 说反话 (20)

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

答案1

#include <stdio.h>//基本 输入输出的头文件
#include <string.h>// 要使用字符串函数的头文件
char str[81];//定义了一个字符串,str数组 长度为81
//在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成
int main()
{
    int i, k;
    char *p;//定义了指针p
    getchar(str);//使用字符串输入函数 读取字符到str 
//【注意:getchar的以“空格”终止】
    k = strlen(str);//计算长度 那个单词的长度
    p = str + k;//
    while (1)
    {
        if ( p == str )
        {
            printf("%s\n", p);
            break;
        }
        if (*p == ' ' && *(p+1) != ' ')
        {
            *p = '\0';
            printf("%s ", p+1);
        }
        p--;
    }
    return 0;
}

getchar报错处理:

  • too manyarguments to function‘getchar’在devc++怎么解决?

  • 说调用getchar函数时()中写的实个数参太多了。getchar是没有参数的,所以调用时( )中要空着。

gets(数组)函数

  • 从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。

getchar()和gets()的选择

  • 从标准输入读入一个字符

  • 读取单个字符,并且马上做出处理。——getchar()

char ch;
ch=getchar();
//【“hello”---"olleh"】
  • 独取字符数组,换行or回车orEOF后,再统一处理。——gets()

#include <stdio.h>
#include <string.h>
char str[81];
int main()
{
    gets(str);

答案2

#include <stdio.h>
int main(void){
    char ch[81];
    gets(ch);
    
    char *p = ch;
    char *ans = NULL;
    int flag = 1; //判断是否结束
    
    //让p指向最后
    while(*(p+1) != '\0'){
        p++;
    }
    
    while(flag){
        if(*p == ' ') //如果p所指的是空格
        {
            ans = p+1; //ans就指向p的下一个
            while(*ans != '\0' && *ans != ' '){
                printf("%c",*ans);
                ans++;
            } //输出p后面一直到空格或\0的内容
            printf(" "); //打印空格
        }
        if(p == ch) //如果p回到了第一个
        {
            flag = 0; //结束
            
            ans = p; //ans就指向p所指的位置
            while(*ans != '\0' && *ans != ' '){
                printf("%c",*ans);
                ans++;
            }
        }
        p--; //p向前移动一位
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Shmily_as33/article/details/129681974