您现在的位置是:首页 >技术杂谈 >12道c语言的课后习题!网站首页技术杂谈
12道c语言的课后习题!
简介12道c语言的课后习题!
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
", ret);
printf("count=%d
", 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
", 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.50000
for (i = 1; i <= 100; i++) {
if (i % 2 == 1) {
he1 +=jiashu(i);
}
else
he1 -=jiashu(i);
}
printf("%lf", he1); //0.688172
return 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.50000
for (i = 1; i <= 100; i++) {
he1 += flag * 1.0 / i;
flag = -flag; // 第一次falg为正1,第二次就为-1, 3:+ , 4:- 依次循环
}
printf("%lf", he1); //0.688172
return 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("
");
}
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("请猜猜我心目中的数吧
");
while (num != cai) {
scanf("%d", &cai);
if (cai > num)
printf("你猜大了
");
else if (cai < num)
printf("你猜小了
");
}
printf("恭喜你猜对了!
");
}
int main() {
a:
srand((unsigned int)time(NULL)); // 设置随机数的起始值为 :强制转换成整型的时间戳
int input = 1;
printf("*************欢迎试玩猜字游戏***************
****************1:开始游戏*****************
****************0:退出游戏*****************
");
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是素数
", i);
count++;
}
}
printf("一共有个%d素数", count);
return 0;
}
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。