欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 鹏哥C语言74---第12次作业:OJ题练习

鹏哥C语言74---第12次作业:OJ题练习

2024/10/23 19:21:49 来源:https://blog.csdn.net/most_wanted_/article/details/142883916  浏览:    关键词:鹏哥C语言74---第12次作业:OJ题练习

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

//---------------------------------------------------------------------------- 编程题 1:小乐乐走台阶
小乐乐上课需要走n阶台阶,因为她腿比较长,所以每次可以选择走1阶或者2阶,那么一共有多少种走法
输入 整数 1<=n<=30
输出 整数 走法数

// fib(10)=fib(9)+fib(8)
// =fib(8)+fib(7)  +  fib(7)+fib(6)
// =fib(7)+fib(6)  +  fib(6)+fib(5)  +    fib(6)+fib(5)  +  fib(5)+fib(4)

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 ret = fib(n); //调用函数//输出printf("%d\n", ret);return 0;
}

//-------------------------------------------------------------------------------- 编程题 2:序列中删除指定数字
有一个整数序列(可能有重复的整数), 现删除指定的某一个整数, 输出删除指定数字之后的序列, 序列中未被删除数字的前后位置没有发生改变。
数据范围 : 序列长度和序列中的值都满足1≤n≤50
输入描述 : 第一行输入一个整数(0≤N≤50)。
                第二行输入N个整数, 输入用空格分隔的N个整数。
                第三行输入想要进行删除的一个整数。
输出描述 :输出为一行, 删除指定数字之后的序列。
例如
输入:6
          1 2 3 4 5 9
          4
输出:1 2 3 5 9

int main()
{int n = 0;scanf("%d", &n);//接收n 个数字int arr[50] = { 0 }; //不超过50个int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);}//要删除的值int dele = 0;scanf("%d", &dele);//删除int j = 0;for (i = 0; i < n; i++){if (arr[i] != dele){arr[j] = arr[i];j++;//arr[j++] = arr[i]; // j++ j先使用,后++,与上述两行代码意思一样}}//输出删除指定数字之后的序列for (i = 0; i < j; i++){printf("%d ", arr[i]);}return 0;
}

//--------------------------------------------------------------------- 编程题 3:最高分与最低分之差
输入n个成绩,换行输出最高分和最低分之差
输入两行 第一行 n 表示n个成绩,不大于10000
               第二行 n 个成绩 整数表示(0~100),以空格隔开
输出 一行,最高分与最低分之差//---------------------------------------------方法1

int main()
{int n = 0;scanf("%d", &n);//接收n 个数字int arr[10000] = { 0 }; //不超过50个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;
}

//---------------------------------------------方法2:优化

int main()
{int n = 0;scanf("%d", &n);int arr[10000] = { 0 }; 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;
}

//---------------------------------------------方法3:优化plus

int main()
{int n = 0;scanf("%d", &n);int arr[10000] = { 0 };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;
}




 

版权声明:

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

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