重温c语言之,7天开整,就是随便的写写,第十一天
一:整一些小型的题目
1、题目描述:
小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
输入描述:包含一个整数n(1<=n<=30)
输出描述:输出一个整数,即小乐乐可以走的方法数。
直接上代码,之后再解释
1 #include<stdio.h>
2 int fun(int n) {
3 if (n <= 2) {
4 return n;
5 }
6 else
7 {
8 return fun(n - 1) + fun(n - 2);
9 }
10 }
11 int main() {
12 int n = 0;
13 scanf("%d", &n);
14 int cound = fun(n);
15 printf("%d\n", cound);
16 return 0;
17 }
这里就是递归,先想:
n=1的时候,只有一种方法,就是迈出1步
n=2的时候,有两种方法,一次迈出2步,或者分别进行迈出1步之后再1步
n>2的时候,就会有很多的方法,就是或者选择一次迈出1步,或者选择一次迈出2步,这个时候再继续递归,那两种方式,fun(n-1)+fun(n-2),就是这样
2、题目描述:
描述
KiKi想判断输入的字符是不是字母,请帮他编程实现。
输入描述 :
多组输入,每一行输入一个字符。
输出描述 :
针对每组输入,输出单独占一行,判断输入字符是否为字母,输出内容详见输出样
例。
示例1
输入 : A
6
输出 : A is an alphabet.
6 is not an alphabet.
先上代码
1 #include<stdio.h>
2 int main()
3 {
4 char ch = 0;
5 while (scanf("%c", &ch) != EOF) {
6 if (ch >= 'a' && ch <= 'z') {
7 printf("%c is an alphabet.\n", ch);
8 }
9 else if (ch >= 'A' && ch <= 'Z')
10 {
11 printf("%c is an alphabet.\n", ch);
12 }
13 else {
14 printf("%c is not an alphabet.\n", ch);
15 }
16 getchar();//包含换行符
17 }
18 return 0;
19 }
这是比较常规的写法
还有一种小众的写法
#include<stdio.h>
int main()
{
char ch = 0;
while (scanf(" %c", &ch) != EOF) {
if (ch >= 'a' && ch <= 'z') {
printf("%c is an alphabet.\n", ch);
}
else if (ch >= 'A' && ch <= 'Z')
{
printf("%c is an alphabet.\n", ch);
}
else {
printf("%c is not an alphabet.\n", ch);
}
}
return 0;
}
scanf(" %c", &ch) 表示从标准输入中读取一个字符,并将该字符存储到 ch 变量中。如果输入是一个空白字符(如空格、换行符),它会跳过这些空白字符,直到遇到实际的字符才会继续读取;EOF 是一个常量,通常定义为 -1。它用于标识输入结束或读取错误。
再有一种写法,利用库函数里面的isalpha()函数来判断是否是字母
1 #include<stdio.h>
2 int main()
3 {
4 char ch = 0;
5 while (scanf(" %c", &ch) != EOF) {
6 if (isalpha(ch)) {
7 printf("%c is an alphabet.\n", ch);
8 }
9 else {
10 printf("%c is not an alphabet.\n", ch);
11 }
12 }
13 return 0;
14 }