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;
}