UVa 10082 - WERTYU

1.题目大意:

输入一个错位的字符串(字母全为大写),输出原本想打出的句子。

2.思路:

如果将每个输入字符所对应的应输出字符一一使用if或者switch,则过于繁琐。因此考虑使用常量数组实现。

3.应该注意的问题:

(1) 在对常量数组赋值时,应考虑字符转义符的影响,反斜杠"\"的转义符应为"\\"。

(2) 小心控制访问数组的范围。

4.代码:

#include"stdio.h"
char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;‘ZXCVBNM,./";
int main()
{
    int i,a;
    while((a=getchar()) != EOF)
    {
        for(i = 1; s[i] && (s[i]!=a); i++); // 寻找其错位之后的位置。如果i大于或等于数组s[]的长度,则s[i]=0。
        if(s[i])
            putchar(s[i-1]); // 如找到错位之后的位置,输出其原本想打出的字符
        else
            putchar(a);

    }
    return 0;
}

其中,第八行,也可以用以下方式取代(需要加相应头文件)

 for(i = 1; i<strlen(s) && (s[i]!=a); i++);

5.小结

(1)慎用"scanf("%s")"输入字符串,因为其遇到空格或者Tab会停下

(2)在"scanf("%s",s)"中,不要在s前加"&"

(3)定义常量数组无需指明大小,编译器会自动计算。

参考书目:算法竞赛入门经典(第2版) 刘汝佳 编著

时间: 2024-12-19 04:17:59

UVa 10082 - WERTYU的相关文章

10082 WERTYU

#include<stdio.h> #include<string.h> int main () { char a[52]={"`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./"}; char b[100]; int len ,i ,j; while(gets(b)!=NULL) { len=strlen(b); for(i=0;i<len;i++) { if(b[i]=='q'||b[i]=='a'||b[

UVa10082 WERTYU

10082 WERTYUA common typing error is to place the hands on the keyboard one row to the right of the correct position. So 'Q' is typed as 'W' and 'J' is typedas 'K' and so on. You are to decode a message typed in this manner.InputInput consists of sev

ACM今日学习总结(2015.08.16)

今日完成情况 UVa 第3章 数组与字符串 六道例题已全部完成. 例题3-1 272 - TEX Quotes 例题3-2 10082 - WERTYU 例题3-3 401 - Palindromes 例题3-4 340 - Master-Mind Hints 例题3-5 1583 - Digit Generator 例题3-6 1584 - Circular Sequence 十二道习题已完成(7道). 习题3-1 1585 - Score 习题3-2 1586 - Molar mass 习题

计划,,留

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 一.<算法竞赛入门经典> 刘汝佳 (UVaOJ 351道题) 以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html "AOAPC I"

算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发.   一.UVaOJ http://uva.onlinejudge.org  西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ.   二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html   "AO

(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html “AOAPC I”是刘汝佳(大

UVa10082

10082 WERTYUA common typing error is to place the hands onthe keyboard one row to the right of the correctposition. So ‘Q’ is typed as ‘W’ and ‘J’ is typedas ‘K’ and so on. You are to decode a messagetyped in this manner.InputInput consists of severa

[UVa] WERTYU(10080)

简直水到爆炸的题目,还做了这么久,简直智商拯救无望:) ac代码: #include <cstdio> #include <cstring> using namespace std; char str[] = "`1234567890-=QWERTYUIOPP[]\\ASDFGHJKL;'ZXCVBNM,./"; int main() { char c; while(scanf("%c", &c) != EOF){ int i; fo

Uva 272 10082 401 字符串的读入 和 字符数组的初始化 很重要。

水题,但是唯一不好解决的就是题目的读入问题. 有一个方法是无论你怎么玩都可以通过的,空格回车什么的都可以被吃掉. //代码如下: while((c = getchar()){ ..... } 还知道了一个小小的实用函数:isalpha   判断是否为英文字母,如果是小写返回2,如果是大写返回1. 对于超级模拟的字符串等题来说,一个好的方法是在开头就建立关系,初始化很实用..嘿嘿. 三道水题,复习了一下字符的输入输出,想当年就因为这个,爆零的那叫一个惨啊.....