当前位置: 首页> 娱乐> 影视 > C语言程序设计-练习篇

C语言程序设计-练习篇

时间:2025/7/18 10:16:30来源:https://blog.csdn.net/2402_85207276/article/details/141870553 浏览次数:0次

少年自当扶摇上,揽星衔月逐日光。

一,小乐乐走台阶

描述:

小乐乐上课需要走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前加个空格。此处加空格的意思是:跳过下一个字符之前的所有空白字符。)

关键字:C语言程序设计-练习篇

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: