UVa10082:WERTYU

WERTYU - UVA 10082 - Virtual Judgeicon-default.png?t=LA92https://vjudge.net/problem/UVA-10082两种方法,第一种紫皮书上的,第二种网上的,感觉网上的更简单

#include <iostream>
using namespace std;

char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";

int main () {
	int i, c;
	while ((c = getchar()) != EOF) {

		for (i = 1; s[i] && s[i] != c; i++); //检查字符在字符串s中是否存在,并定位他的位置

		if (s[i])//就是判断字符存不存在于字符串s里,不存在的话s[i]就为'\0'即false
			//或者if(i<=strlen(s)-1)
			putchar(s[i - 1]);
		else//不存在直接输出
			putchar(c);
	}

}

s[i]是什么意思:
s是一个指针变量,如果你不了解什么是指针
他等价于一个数组
即char *s="1234567890-=qwertyuiop[]asdfghjkl;'\\zxcvbnm,./";
等价于 char s[]="1234567890-=qwertyuiop[]asdfghjkl;'\\zxcvbnm,./";
s[i]就相当于取数组里相对应的元素的值

有什么情况s[i]会出现false:
因为字符串以'\0'(ascii是0,而0为false)结束,也就是说当a[i]=='\0'就为false

#include <iostream>
#include <cstring>
using namespace std;

char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";

int main() {
	char c;
	while ((c = getchar()) != EOF) {
		if (c == ' ')
			printf(" ");
			
		else if (c == '\n')
			printf("\n");
			
		else {
			for (int i = 0; i < strlen(s); i++)
				if (c == s[i]) {
					printf("%c", s[i - 1]);
					break;
				}
		}

	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值