C语言基础编程题——喝水问题,译码问题
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
输入描述:
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。
输出描述:
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
#include<stdio.h>
int PZ(int n){
int p = 0;
while (n!=1){
p =p+n / 3;
n = n/3 + n % 3;
if (n==2){
p++;
break;
}
}
return p;
}
int main(){
int n,i=0;
int num[10];
while (1){
scanf("%d",&n);
if (n!=0){
num[i] = PZ(n);
i++;
}
else{
break;
}
}
for (int j = 0; j < i;++j){
printf("%d\n",num[j]);
}
system("pause");
return 0;
}
题目描述
密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这么变换的,大家都知道手机上的字母:
1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
输入描述:
输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾
输出描述:
输出渊子真正的密文
示例1
输入
YUANzhi1987
输出
zvbo9441987
#include<stdio.h>
#include<string.h>
void IPassWord(char *p,int len){
char pw[100];
for (int i = 0; i <= len;++i){
if (*(p + i) >= 'A'&&*(p + i) <= 'Y'){
pw[i] = *(p + i) + 32 + 1;
}
else if (*(p + i) == 'Z'){
pw[i] = 'a';
}
else if (*(p + i) == 'a' || *(p + i) == 'b' || *(p + i) =='c' ){
pw[i] = '2';
}
else if (*(p + i) == 'd' || *(p + i) == 'e' || *(p + i) == 'f'){
pw[i] = '3';
}
else if (*(p + i) == 'g' || *(p + i) == 'h' || *(p + i) == 'i'){
pw[i] = '4';
}
else if (*(p + i) == 'j' || *(p + i) == 'k' || *(p + i) == 'l'){
pw[i] = '5';
}
else if (*(p + i) == 'm' || *(p + i) == 'n' || *(p + i) == 'o'){
pw[i] = '6';
}
else if (*(p + i) == 'p' || *(p + i) == 'q' || *(p + i) == 'r' || *(p + i) == 's'){
pw[i] = '7';
}
else if (*(p + i) == 't' || *(p + i) == 'u' || *(p + i) == 'v'){
pw[i] = '8';
}
else if (*(p + i) == 'w' || *(p + i) == 'x' || *(p + i) == 'y' || *(p + i) == 'z'){
pw[i] = '9';
}
else{
pw[i] = *(p+i);
}
}
printf("%s\n",pw);
}
int main(){
char P[100];
scanf("%s",P);
IPassWord(P,strlen(P));
system("pause");
return 0;
}