少年自当扶摇上,揽星衔月逐日光。
一,小乐乐走台阶
描述:
小乐乐上课需要走n阶台阶,因为腿长,所以每次可以选择走一阶或者两阶,那么他一共有多少种走法?
输入描述:
输入包含一个整数n(1<=n<=30)
输出描述:
输出一个整数,即小乐乐可以走的方法数
#include <stdio.h>
//小乐乐走台阶
int fib(int n)
{
if (n <= 2)
return n;
else
return 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读取成功返回读取数据的个数,读取失败返回EOF
if (ch >= 'a' && ch <= 'z')
printf("%c\n", ch - 32);
else
printf("%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读取成功返回读取数据的个数,读取失败返回EOF
if (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);
else
printf("%c is not an alphabet\n",ch);
getchar();//处理输入时敲得回车
}
return 0;
}
(或者去掉getchar那一行,在scanf内的%c前加个空格。此处加空格的意思是:跳过下一个字符之前的所有空白字符。)
标签:arr,ch,min,int,scanf,练习,C语言,程序设计,输入 From: https://blog.csdn.net/2402_85207276/article/details/141870553