重温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 }