'commit'
This commit is contained in:
11
RuMenJingDian/ChengXu/CX_4_10.cpp
Normal file
11
RuMenJingDian/ChengXu/CX_4_10.cpp
Normal file
@@ -0,0 +1,11 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
//用递归法计算阶乘
|
||||
int f(int n) {
|
||||
return n == 0 ? 1 : f(n - 1) * n; //注意三元表达式,学生们一般不常用这个
|
||||
}
|
||||
|
||||
int main() {
|
||||
printf("%d\n", f(10));
|
||||
return 0;
|
||||
}
|
||||
56
RuMenJingDian/ChengXu/CX_4_11.cpp
Normal file
56
RuMenJingDian/ChengXu/CX_4_11.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
#define maxn 100
|
||||
|
||||
int left, chance; //还需要猜left个位置,错chance次之后就会输
|
||||
|
||||
char s[maxn], s2[maxn]; //答案是字符串s,玩家猜的字母序列是s2
|
||||
|
||||
bool win, lose; //win=1表示已经赢了;lose=1表示已经输了
|
||||
|
||||
/**
|
||||
* 功能:猜字符函数
|
||||
* @param ch
|
||||
*/
|
||||
void guess(char ch) {
|
||||
bool bad = true;
|
||||
for (int i = 0; i < strlen(s); i++)
|
||||
if (s[i] == ch) {
|
||||
left--;
|
||||
s[i] = ' '; //阅后即焚~,标识为空格
|
||||
bad = false;
|
||||
}
|
||||
if (bad) --chance; //错一次,机会减少一次
|
||||
if (!chance) lose = true; //没有机会了,就是输了
|
||||
if (!left) win = true;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int rnd; //轮次 一级公民,在scanf中使用,需要使用&符,表示按地址引用。
|
||||
// s和s2,为字符串数组,二级公民,不需要使用&符!
|
||||
/*
|
||||
例如scanf("%d %d",&a,&b) 若a,b均正确得到值,则返回2
|
||||
若a得到值,b不得到值,则返回1(返回成功接收到赋值的个数)
|
||||
如果遇到错误或遇到end of file,返回值为EOF
|
||||
*/
|
||||
while (scanf("%d%s%s", &rnd, s, s2) == 3 && rnd != -1) //rnd=-1表示输入-1就停止
|
||||
{
|
||||
printf("Round %d\n", rnd);
|
||||
win = lose = false; //求解一组新数据之前要初始化
|
||||
//测长
|
||||
left = strlen(s);
|
||||
//机会有7次
|
||||
chance = 7;
|
||||
|
||||
//遍历每一个字符
|
||||
for (int i = 0; i < strlen(s2); i++) {
|
||||
guess(s2[i]); //猜一个字母
|
||||
if (win || lose) break; //输了,赢了都完事,当然,也可能没猜全,就是没输也没赢
|
||||
}
|
||||
//根据结果进行输出
|
||||
if (win) printf("You win.\n");
|
||||
else if (lose) printf("You lose.\n");
|
||||
else printf("You chickened out.\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user