例题3-2 WERTYU UVa10082

算法竞赛入门经典(第2版)第3章 数组和字符串

例题3-2 WERTYU UVa10082

感悟。

0.1、一直以为是自己读题问题,查了英文原题,才发现本书为了照顾篇幅,略去一些字符串叙述,本人在此折腾了很长时间。没想到字符串范围包含这么广。

Each line may contain digits, spaces,
upper case letters (except Q, A, Z), or punctuation shown above [except back-quote
(`)]. Keys labelled with words [Tab, BackSp, Control, etc.] are not represented in
the input.

0.2、一直纠结于(c=getchar())!=EOF(AC),还是(c=getchar())!='\n'(WA),查了英文原题,才发现。

Input consists of several lines of text.

1、程序很短,测试时间很长。

2、要养成看英文原题的习惯,虽然英文很烂。

3、该题与国内NOIP题型略有不同,NOIP要求main函数必要行进到 return 0;这一步。

附上代码:

环境Dev-cpp4.9.9.2

#include <stdio.h>
#include <string.h>
char s[100]="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";//该处折腾了很长时间。 
int main(){
    int length;
    int i;
    int c;
    length=strlen(s);
    while((c=getchar())!=EOF){//!='\n'(WA),英文原题说得很清楚,输入包含很多行。 
        for(i=0;i<length;i++){//查找输入字符在s字符串中位置 
            if(c==s[i])
                break;
        }
        if(i!=length)//找到,打印前一个字符 
            printf("%c",s[i-1]);
        else//没找到,原样输出 
            printf("%c",c);
    }
    return 0;

  • }


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值