少年自当扶摇上,揽星衔月逐日光。
一,小乐乐走台阶
描述:
小乐乐上课需要走n阶台阶,因为腿长,所以每次可以选择走一阶或者两阶,那么他一共有多少种走法?
输入描述:
输入包含一个整数n(1<=n<=30)
输出描述:
输出一个整数,即小乐乐可以走的方法数
#include <stdio.h>//小乐乐走台阶
int fib(int n)
{if (n <= 2)return n;elsereturn fib(n - 1) + fib(n - 2);
}int main()
{int n = 0;//输入scanf("%d", &n);//计算int m = fib(n);//输出printf("%d\n", m);return 0;
}
二,在序列中删除指定数字
描述:
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
数据范围:序列长度和序列中的值都满足1<=n<=50
输入描述:
第一行输入一个整数N(0<=N<=50)
第二行输入N个整数,输入用空格分隔的N个整数
第三行输入想要进行删除的一个整数
输出描述:
输出为一行,删除指定数组之后的序列
#include <stdio.h>
//在序列中删除指定数字
int main()
{int N = 0;scanf("%d", &N);int arr[50];//接收N个数字int i = 0;for (i = 0; i < N; i++){scanf("%d", &arr[i]);}int del = 0;//接受删除的值scanf("%d", &del);int j = 0;//j作为下标锁定的位置就是用来存放不删除数据for (i = 0; i < N; i++){if (arr[i] != del){arr[j++] = arr[i];}}//输出for (i = 0; i < j; i++){printf("%d ", arr[i]);}return 0;
}
三,最高分最低分之差
描述:
输入n个成绩,换行输出n个成绩中最高分数和最低分数的差
输入描述:
两行,第一行为n,表示n个成绩,不会大于10000
第二行为n个成绩(整数表示,范围0~100),以空格隔开
输出描述:
一行,输出n个成绩中最高分数和最低分数的差
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);int arr[10000];int i = 0;//输入for (i = 0; i < n; i++){scanf("%d", &arr[i]);}//找出最大值int max = arr[0];for (i = 1; i < n; i++){if (arr[i] > max){max = arr[i];}}//找出最小值int min = arr[0];for (i = 1; i < n; i++){if (arr[i] < min){min = arr[i];}}printf("%d\n", max - min);return 0;
}
简化
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);int arr[10000];int i = 0;//输入for (i = 0; i < n; i++){scanf("%d", &arr[i]);}//找出最大值//找出最小值int max = arr[0];int min = arr[0];for (i = 1; i < n; i++){if (arr[i] > max)max = arr[i];if (arr[i] < min)min = arr[i];}printf("%d\n", max - min);return 0;
}
再简化
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);int arr[10000];int i = 0;int max = 0;int min = 100;//输入for (i = 0; i < n; i++){scanf("%d", &arr[i]);if (arr[i] > max)max = arr[i];if (arr[i] < min)min = arr[i];}printf("%d\n", max - min);return 0;
}
四,字母大小写转换
描述:
完成大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母
输入描述:
多组输入,每一行输入一个字母
输出描述:
针对每组输入,输出单独占一行,输出字母的对应形式
(PS:小写字母a的ASCII值是97,大写字母A为65,相差32)
#include <stdio.h>
int main()
{char ch = 0;while (scanf("%c",&ch)==1){//scanf读取成功返回读取数据的个数,读取失败返回EOFif (ch >= 'a' && ch <= 'z')printf("%c\n", ch - 32);elseprintf("%c\n", ch + 32);getchar();//读取输入后的回车(\n)}return 0;
}
或者
(while内的条件也可以写成--- scanf("%c",&ch)!=EOF )
#include <stdio.h>
int main()
{char ch = 0;while (scanf("%c", &ch) == 1){//scanf读取成功返回读取数据的个数,读取失败返回EOFif (ch >= 'a' && ch <= 'z')printf("%c\n", ch - 32);else if(ch>='A'&&ch<='Z')printf("%c\n", ch + 32);//直接不接收每次输入的\n}return 0;
}
或者(使用库函数)
#include <stdio.h>
#include <ctype.h>
int main()
{char ch = 0;while (scanf("%c", &ch) != EOF){if (islower(ch))printf("%c\n", toupper(ch));else if (isupper(ch))printf("%c\n", tolower(ch));}return 0;
}
五,判断是不是字母
描述:
判断输入的字符是不是字母,编程实现
输入描述:
多组输入,每一行输入一个字符
输出描述:
针对每组输入,输出单独占一行,判断字符是否为字母
示例:
输入:A
6
输出:A is an alphabet
6 is not an alphabet
#include <stdio.h>
int main()
{char ch = 0;while (scanf("%c", &ch) == 1){if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))printf("%c is an alphabet\n",ch);elseprintf("%c is not an alphabet\n",ch);getchar();//处理输入时敲得回车}return 0;
}
(或者去掉getchar那一行,在scanf内的%c前加个空格。此处加空格的意思是:跳过下一个字符之前的所有空白字符。)