Coursera-C程序设计进阶-编程题#1:单词翻转

编程题#1:单词翻转

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

输入一个句子(一行),将句子中的每一个单词翻转后输出。

输入

只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。

输出

翻转每一个单词后的字符串,单词之间的空格需与原文一致

样例输入

hello world

样例输出

olleh dlrow
#include<iostream>
#include<ctype.h>
using namespace std;
int flip(char *, int ,int );
int main() {
    //输入
    char str[501];
    cin.getline(str,501);

    int i = 0, k = 0;
    bool start_flag = true, //新单词开始标志
         flip_flag = false; //翻转标志 

    char word[501] = {‘\0‘};
    while(str[i]) {
        if(str[i] != ‘ ‘) {          //本来判断是否为字母,发现OJ不通过,就稍微宽松些
            if(start_flag) {           //判断是否为单词的开始处
                start_flag = false;
                flip_flag = false;
                k = 0;                //将记录单词的字符串索引置0
            }
            word[k++] = str[i];

        } else {
            start_flag = true;
            //翻转单词并输出
            if(!flip_flag) {   //防止多空格出现重复翻转
                word[k] = ‘\0‘;
                flip(word,0,k-1);
                cout << word;
                flip_flag = true;
            }
            //输出空格
            cout << " ";
        }
        ++i;
    }
    //最后一个单词(没有进入循环)
    if(!flip_flag) {
        word[k] = ‘\0‘;
        flip(word,0,k-1);
        cout << word;
    }
    return 0;
}
//单词翻转函数
int flip(char *word, int start, int end) {
    if(start >= end)
        return 0;
    char temp = word[start];
    word[start] = word[end];
    word[end] = temp;
    flip(word, ++start, --end);
    return 0;
}
				
时间: 2024-10-10 03:44:08

Coursera-C程序设计进阶-编程题#1:单词翻转的相关文章

POJ C程序设计进阶 编程题#3:运算符判定

编程题#3:运算符判定 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 两个整数 a 和 b 运算后得到结果 c.表示为:a ? b = c,其中,?可能是加法 +,减法 -,乘法 *,整除 / 或 取余 %.请根据输入的 a,b,c 的值,确定运算符.如果某种运算成立,则输出相应的运算符,如果任何运算都不成立,则输出 error. 例如: 输入: 3,4,5 输出: er

POJ C程序设计进阶 编程题#2:字符串中次数第2多的字母

编程题#2:字符串中次数第2多的字母 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一串长度不超过500个符号的字符串,输出在串中出现第2多的英语字母(大小写字母认为相同)和次数(如果串中有其它符号,则忽略不考虑).如果有多个字母的次数都是第2多,则按串中字母出现的顺序输出第1个. 例 ab&dcAab&c9defgb 这里,a 和 b都出现3次,c和d都出现2

POJ C程序设计进阶 编程题#5:细菌分组实验

编程题#5:细菌实验分组 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 有一种细菌分为A.B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,A亚种繁殖能力非常强,B亚种的繁殖能力很弱.在一次为时一个 小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组. 输入 输入有多行,第一行为整数n(

POJ C程序设计进阶 编程题#4:寻找平面上的极大点

编程题#4:寻找平面上的极大点 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b; 用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内. 给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点. 编程找出所有的极大

POJ C程序设计进阶 编程题#3:寻找山顶

编程题#3:寻找山顶 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个m×n的山地上,已知每个地块的平均高程,请求出所有山顶所在的地块(所谓山顶,就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方). 输入 第一行是两个整数,表示山地的长m(5≤m≤20)和宽n(5≤n≤20). 其后m行为一个m×n的整数矩阵,表示每个地块的平均高程.每行的整数

POJ C程序设计进阶 编程题#2: 配对碱基链

编程题#2: 配对碱基链 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成.而构成DNA的碱基共有4种,分别为腺瞟呤(A).鸟嘌呤(G).胸腺嘧啶(T)和胞嘧啶(C).我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对.你的任务就是根据一条单链上的碱基序列,给出对应的互补链上

POJ C程序设计进阶 编程题#1:含k个3的数

编程题#1:含k个3的数 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入二个正整数m 和 k,其中1 < m < 100000,1 < k <5 ,判断m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO. 例如,输入: 43833 3 满足条件,输出YES 如果输入 39331 3 尽管有3个3,但不能被19整除,也不满足条

POJ C程序设计进阶 编程题#6:流感传染

编程题#6:流感传染 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着.在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染.请输出第m天得流感的人数. 输入 第一行一个数字n,n不超过100,表示有n*n的宿舍房

POJ C程序设计进阶 编程题#1:寻找下标

编程题#1:寻找下标 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 已知一个整数数组x[],其中的元素彼此都不相同.找出给定的数组中是否有一个元素满足x[i]=i的关系,数组下标从0开始. 举例而言,如果x[]={-2,-1,7,3,0,8},则x[3] = 3,因此3就是答案. 输入 第一行包含一个整数n (0 < n < 100),表示数组中元素的个数. 第二行包含