一、C语言的一些有意思的题目
1.第一题
见题目:
一个小球从100米高度自由落下,每次反弹后回原高度的一半,再落下,再反弹,假设小球反弹高度低于10^-6米时视为小球静止,请问从落下到静止,小球反弹了多少次,经过的多少米?
#include<stdio.h> #include<math.h> int main() { double h = 100; int count = 0; double sum = 0; while (h >= pow(10, -6)) { sum += 2*h; count++; h /= 2.0; } printf("小球此时静止:\n"); printf("反弹的次数为%d\n",count); printf("小球经过了%.4lf米",sum-100); return 0; }
使用for循环解答也是一样
2.第二个题目:
关于图形(实心菱形)的打印:
#include<stdio.h> int main() { int i,j, n; scanf("%d",&n); for (i = 0; i < n; i++) { for (j = 0; j < n-i-1; j++) { printf(" "); } for (j = 0; j < 2 * i+1 ; j++) { printf("*"); } printf("\n"); } //下半部分 for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { printf(" "); } for (j = 0; j < 2 * (n - i-1 )-1; j++) { printf("*"); } printf("\n"); } return 0; }
3.第三个题目:
关于图形(空心菱形)的打印:
![#include<stdio.h> int main() { int i, j, n; scanf("%d",&n); //先打印上半部分 for (i = 1; i <= n; i++) { for (j = 1; j <= n + i - 1; j++) { if (j == n - i + 1 || j == n + i - 1)//n-i+1 表示的是每行第一个*的位置 //n+i-1 表示的是每行最后一个*的位置 { printf("*"); } else { printf(" "); } } printf("\n"); } //再打印下半部分(但是要注意的是下半部分比上半部分少一行) for (i = 1; i < n; i++) { for (j = 1; j <= 2 * n - i - 1; j++) { if (j == i + 1 || j == 2 * n - i - 1)//i+1: i从第一行算起,*号位于i+1的位置 { //2*n-i-1: 这样是为了得到一行的元素的个数,于是最后一个*的位置 printf("*"); } else { printf(" "); } } printf("\n"); } return 0; }](https://ucc.alicdn.com/images/user-upload-01/59198b664153446a9d086cb01eeaf620.png)
4.第四个题目是关于,杨氏三角的另一种方法:
#include<stdio.h> int main() { int i, j, n; int arr[10][10] = { 0 }; scanf("%d",&n); for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { if (i == j || 0 == j) arr[i][j] = 1; else arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1]; } } for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { printf("%d ",arr[i][j]); } printf("\n"); } return 0; }
5.第五个题目:
求Sa-ataaaa…aa a之值,其中a是- -个数字,n表示a的位数, n由键盘输入。例如: 2+2222222+22222 (此时 n=5)。
(1.)这个就是要 ret = ret * 10 + a;注意这个的小算法就行
#include<stdio.h> int main() { int a, n, i; int sum = 0; int ret = 0; scanf("%d %d", &a, &n); for (i = 0; i < n; i++) { ret = ret * 10 + a; printf("%d ",ret); sum += ret; } printf("\n"); printf("%d\n", sum); return 0; }
6.第六个题目:
关于喝汽水问题:
题目:汽水题目(有20块钱,汽水一块钱一瓶,且两个空瓶可以换一瓶汽水,问你能喝几瓶,用代码实现)
#include<stdio.h> int main() { int money = 0; int empty = 0; int bottle = 0; scanf("%d",&money); //因为汽水一块钱一瓶 bottle = money; empty = bottle; while (empty >= 2) { bottle = bottle + empty / 2; empty = empty / 2 + empty % 2; } printf("最多可以喝%d瓶饮料",bottle); return 0; }