12道c语言的课后习题!

news/2024/11/8 18:30:36/

1、计算n的阶乘(1*2*3*4*5    n是个数,比如说乘到100?)

// 计算n的阶乘#include"stdio.h"int main() {int n = 0;scanf("%d", &n);int i = 0;int ret = 1;for (i = 1; i <= n; i++) {ret *= i;}printf("%d", ret);return 0;
}

2、用递归的方式实现n的阶乘?

//  用递归的方法实现n的阶乘。
int fac(int n) {if (n <= 1) {return 1;}else {return n * fac(n - 1);}}int main() {int n = 0;scanf("%d", &n);int ret = 0;ret = fac(n);printf("%d", ret);return 0;
}

3、求第n个斐波那契数。  意思就是前两个数的和等于第三个数:1 1 2 3 5 8 13 21 34 55 .....

用递归的方式可以实现,就是效率有点低,看代码吧:4

// 求第n个斐波那契数。(不考虑溢出)
//  前两个数的和等于第三个数    1 1 2 3 5 8 13 21 34  55 ......// 递归可以求解,但是效率太低。int count = 0;
int fib(int n) {//统计第三个斐波那契数使用的次数?if (n == 3) {count++;}if (n <= 2) {return 1;}else {return fib(n - 1) + fib(n - 2);}}int main() {int n = 0;scanf("%d", &n);int ret = fib(n);printf("%d\n", ret);printf("count=%d\n", count);return 0;
}

4、用一个更高效率的方法求第n个斐波那契数?

int fib(int n) {int a = 1;int b = 1;int c = 1;while (n > 2) {c = a + b;a = b;b = c;n--;          // 传入的数每次减1,好达到while循环的终止条件}return c;}int main() {int n = 0;scanf("%d", &n);int ret = fib(n);printf("%d\n", ret);return 0;
}

5、编写1到100的所有整数中出现了多少个数字9?

#include"stdio.h"//编写1到100的所有整数中出现了多少个数字9?    十位= 整数 / 10 比如:87/10=8  个位= 整数 % 10  比如:12 模10 = 2
int main() {int i = 0;int count = 0;for (i = 1; i <= 100; i++) {if (i / 10 == 9 || (i % 10) == 9) {count++;}}printf("%d", count);return 0;
}

6、计算 1/1-1/2+1/3-1/4.....+1/100的值?

#include"stdio.h"//计算 1/1-1/2+1/3-1/4.....+1/100的值
double jiashu(int i) {return 1.0 / i;     //想要除法得到小数就要有一个值是小数所以写成1.0
}int main() {int i = 0;double he1 = 0.0;//printf("%lf", 1.0 / 2);    1.0 / 2 = 0.50000for (i = 1; i <= 100; i++) {if (i % 2 == 1) {he1 +=jiashu(i);}elsehe1 -=jiashu(i);}printf("%lf", he1);   //0.688172return 0;
}

7、用另外一种方法求计算 1/1-1/2+1/3-1/4.....+1/100的值?

//计算 1/1-1/2+1/3-1/4.....+1/100的值int main() {int i = 0;double he1 = 0.0;int flag = 1;//printf("%lf", 1.0 / 2);    1.0 / 2 = 0.50000for (i = 1; i <= 100; i++) {he1 += flag * 1.0 / i;flag = -flag;              // 第一次falg为正1,第二次就为-1, 3:+ , 4:-  依次循环}printf("%lf", he1);   //0.688172return 0;
}

8、求10个整数中的最大值?

# include"stdio.h"// 求10个整数中的最大值?int main() {int arr[] = { -31,-2,-3,-4,-5,-6,-7,-8,-9,-10 };int max = arr[0];int i = 0;for (i = 0; i <= 10; i++) {if (max < arr[i])max = arr[i];}printf("%d", max);return 0;
}

9、输出乘法口诀表?

 

#include"stdio.h"// 输出乘法口诀表int main() {int i = 0, j = 0;for (i = 1; i < 10; i++) {for (j = 1; j <= i; j++) {printf("%dX%d=%-2d   ", j, i, i * j);  // 2d  是打印2位右对齐,左侧补充空格, -2d是左对齐,右侧补空格。}printf("\n");}return 0;
}

10、猜数字游戏?

#include"stdio.h"
#include"time.h"
#include"stdlib.h"
// 猜数字游戏void game() {int num = rand()%100;//printf("%d", num);int cai = 0;printf("请猜猜我心目中的数吧\n");while (num != cai) {scanf("%d", &cai);if (cai > num)printf("你猜大了\n");else if (cai < num)printf("你猜小了\n");}printf("恭喜你猜对了!\n");
}int main() {a:srand((unsigned int)time(NULL));  // 设置随机数的起始值为 :强制转换成整型的时间戳int input = 1;printf("*************欢迎试玩猜字游戏***************\n****************1:开始游戏*****************\n****************0:退出游戏*****************\n");while (input) {scanf("%d", &input);switch (input){case 1:game();goto a;case 0:break;default:printf("你输入的答案不正确!重新选择?");}}return 0;
}

11、用二分查找法,在一个整型有序数组中具体查找某个数。

  用二分查找法,在一个整型有序数组中具体查找某个数。
#include"stdio.h"
#include"string.h"int main() {int arr[] = {1,2,3,4,5,6,7,8,9,10};int k = 7;int sz = sizeof(arr) / sizeof(arr[0]);int left = 0;int right = sz - 1;int mid = 0;while (left <= right) {mid = (left + right) / 2;if (k > arr[mid]) {left = mid + 1;}else if (k < arr[mid]) {right = mid - 1;}else{printf("%d的下标是:%d", k, mid);break;}}if(left > right)printf("没有找到");return 0;
}

12、函数判断素数
         实现一个函数,判断一个数是不是素数。
         利用上面实现函数打印100到200之间的素数。

#include"stdio.h"int panduan(int i) {int j = 2;for (j = 2; j < i; j++) {if (i % j == 0) {return 0;}else {return 1;}}
}int main() {int i = 0;int count = 0;for (i = 100; i <= 300; i++) {if (panduan(i)) {printf("%d是素数\n", i);count++;}}printf("一共有个%d素数", count);return 0;
}


http://www.ppmy.cn/news/87517.html

相关文章

JDBC-Java与数据库之间的桥梁

1、JDBC 1.1、数据的持久化 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c; 数据持久化意味着将内存中的数据保存到硬盘上加以”固化”&#xff0c;而持久化的实现过程大多通过各种关系数…

Lucene(5):索引维护

1 需求 管理人员通过电商系统更改图书信息&#xff0c;这时更新的是关系数据库&#xff0c;如果使用lucene搜索图书信息&#xff0c;需要在数据库表book信息变化时及时更新lucene索引库。 2 添加索引 调用 indexWriter.addDocument&#xff08;doc&#xff09;添加索引。 参…

分布式调度XXL-JOB

分布式调度XXL-JOB 1.概述 1.1什么是任务调度 比如: 某电商平台需要每天上午10点&#xff0c;下午3点&#xff0c;晚上8点发放一批优惠券某银行系统需要在信用卡到期还款日的前三天进行短信提醒某财务系统需要在每天凌晨0:10分结算前一天的财务数据&#xff0c;统计汇总 以…

基于差分进化算法的微电网调度研究(Matlab代码实现)​

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

JVM笔记

Java中对象一定分配在堆空间上吗&#xff1f;判断一个对象是否还活着GCgc频繁 Java中对象一定分配在堆空间上吗&#xff1f; 逃逸分析&#xff1a;分析对象动态作用域&#xff0c;当一个对象在方法中被定义后&#xff0c;它可能被外部方法所引用&#xff0c;例如作为调用参数传…

香港VPS服务器如何屏蔽指定访客ip?

​  如果你是一个香港VPS服务器的管理员&#xff0c;你可能会遇到一些不良用户或者恶意攻击者&#xff0c;这些人会尝试通过不断的访问和攻击你的网站来破坏你的网站的运行。如何保护你的网站&#xff0c;你需要使用一些方法来屏蔽这些指定的访客IP。 首先&#xff0c;你需要…

当你在浏览器中输入 URL 时会发生什么?

下面的图解说明了步骤。 1.Bob 在浏览器中输入 URL 并按下 Enter。在这个例子中&#xff0c;URL 由 4 部分组成&#xff1a; &#x1f539; 协议 - http://. 这告诉浏览器使用 HTTP 发送连接到服务器。 &#x1f539; 域名 - example.com. 这是站点的域名。 &#x1f539; 路径…

通过计算属性来更改几个数据,针对于这几个数据有失焦事件,但是先触发了失焦事件,后获得到了计算属性怎么办,我想先获取到计算属性的值再进行失焦事件

计算属性是惰性的,只有依赖的数据发生变化时才会重新计算。这可能会导致失焦事件先触发,获取到的计算属性值还未更新的情况。要解决这个问题,有两种方法:1. 在失焦事件中加入 setTimeout,等计算属性重新计算后再获取其值。 js computed: {fullName() { /* ... */ } }, metho…