简单的算法编程题-任意段落按照单词逆序输出

把这个问题抛给温州皮鞋厂老板,老板直接就说这个题目的本意是让你提出stack的解决方案

??what?stack?too low!

??因为这么个问题还要实现一个stack有点场面大了,事实上谁不知道你把一个个单词push进去,然后再pop出来不就好了吗?所以说stack方案太通用,不足挂齿。…周末没事干时折腾点此类问题,没有错,错在拉开蚊帐睡觉时吵醒疯子和小小,事情偶尔会变严重。

??另外,使用C语言完成和使用Java完成完全不同,Java调用现成的class会非常简单,复杂度完全隐藏在了内部。此外,C语言是否可以用strtok也必须有所约束。以下是我的方案,非常好玩,像我这种不会编程的人,请不要笑我。因为我没有用strlen,没有用strcpy,没有用malloc…:

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

int ok(char c)
{
        if ( (c <= 90 && c >= 65) || (c <=122 && c >= 97) )
                return 1;
        return 0;
}

int main(int argc, char **argv)
{
        char orig[] = {‘i‘, ‘ ‘, ‘a‘, ‘m‘, ‘ ‘, ‘a‘, ‘ ‘, ‘s‘, ‘t‘, ‘u‘, ‘d‘, ‘e‘, ‘n‘, ‘t‘, ‘,‘, ‘a‘, ‘n‘, ‘d‘, ‘ ‘, ‘y‘, ‘o‘, ‘u‘, 0};

        char *buf = orig, *tbuf = orig;
        int i = 0, j = 0;
    // 获取长度
        while (*tbuf++ != 0) j++;

    // 前后逆序交换
        for (j--; j > i; i++, j--) {
                char c = orig[i];
                orig[i] = orig[j];
                orig[j] = c;
        }

    // 遍历
        while (*buf != 0) {
                int k = 0, p = 0;
                char *temp = buf;
                while (ok(*(buf++))) {
                        k++;
                }
        // 按照单词逆序
                for (k--; p < k; p++, k--) {
                        char c = temp[p];
                        temp[p] = temp[k];
                        temp[k] = c;
                }
        }
    // 打印结果
        printf("%s\n", orig);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43


看似个鸳鸯蝴蝶,不应该的年代。嗯?有啥不应该?

??不多说。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/ksiwnhiwhs/p/10389402.html

时间: 2024-10-27 05:35:33

简单的算法编程题-任意段落按照单词逆序输出的相关文章

需掌握 - JAVA算法编程题50题及答案

[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题public class lianxi01 {public static void main(String[] args) {System.out.println("第1个月的兔子对数: 1");System.out.println("第2个月的兔子对数: 1");int f1

编程题:用for循环嵌套,输出下列图形:

#include<stdio.h> void main() { int m,n; for(n=1;n<=9;n=n+1) {for(m=1;m<=n;m=m+1) printf("%-4d",m); printf("\n");             /*一行结束需换行*/ } } 算法解析: 运行结果: 编程题:用for循环嵌套,输出下列图形:,布布扣,bubuko.com

编程题:展示指针与数组的输出方式,功能:输出数组中的全部元素

#include<stdio.h> void main() { int *p,i; int a[5]={1,2,3,4,5}; p=a; for(i=0;i<5;i++) printf("%d\t",a[i]); printf("\n"); for(i=0;i<5;i++) printf("%d\t",*(p+i)); } 编程题:展示指针与数组的输出方式,功能:输出数组中的全部元素,布布扣,bubuko.com

编程题:输入10个整数,输出最大数。

#include<stdio.h> void main() { int i,array[10],big;     /*给数组中所有元素赋值*/ for(i=0;i<10;i++) scanf("%d",&array[i]); /*找出数组中最大的元素*/ big=array[0]; for(i=1;i<10;i++) if(array[i]>big) big=array[i]; printf("The biggest is %3d\n&q

编程题:将数字0~5放入一个整型数组,并逆序输出数组

#include<stdio.h> void main() { int i,a[5]; for(i=0;i<5;i++)         /*给数组中元素赋值*/ a[i]=i; for(i=4;i>=0;i--)          /*逆序输出数组中元素值*/ printf("%3d",a[i]); printf("\n"); } 编程题:将数字0~5放入一个整型数组,并逆序输出数组,布布扣,bubuko.com

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

编程题#1:单词翻转 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个句子(一行),将句子中的每一个单词翻转后输出. 输入 只有一行,为一个字符串,不超过500个字符.单词之间以空格隔开. 输出 翻转每一个单词后的字符串,单词之间的空格需与原文一致 样例输入 hello world 样例输出 olleh dlrow #include<iostream> #incl

算法-整数的正序和逆序输出

其实上一篇文章用递归实现了整数的正序输出,思考了整数还是可以逆序输出,不过大同小异,没有太多差别: 正序输出 -(void)printOutNumber:(NSInteger)number{ //取整,不断的递归取整,之后取余 if (number>10) { [self printOutNumber:number/10]; } NSLog(@"数值%ld",number%10); } 逆序输出 循环输出,这个比较简单容易理解: -(void)reverseNumber:(NSI

算法竞赛入门经典_3.1_数组_逆序输出_开灯问题

又是新的一天,继续更新. 今天进入了新的章节,数组和字符串 1.逆序输出问题: 先来看代码吧 #include <stdio.h> //逆序输出 2017-8-16 #define maxn 105 int a[maxn]; int main(int argc, char* argv[]) { //int a[maxn]; int x, n = 0; while (scanf("%d", &x) == 1) a[n++] = x; for (int i = n -

算法导论--装备线调度(升序&amp;&amp;降序输出)

题意就先不用讲了吧,感觉自己还没有掌握核心的东西. //心得 //怎样保持路径,递归的实现 #include<iostream> #include<cstdio> #include<vector> #include<stack> #include<cstring> using namespace std; int a[100][100];//time for station int t[100][100];//time for from Li t