一.打印菱形
题目描述:
用C语言在屏幕上输出以下图案:
这道题其实就是一个找规律题,题目不难,我们直接给出代码
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int n = 0; scanf("%d", &n); int low = n / 2; int up = n - low; int i = 0; int j = 0; //打印上层 for (i = 0; i < up; i++) { //打印空格 for (j = 0; j < up - i - 1 ; j++) { printf(" "); } //打印* for (j = 0; j < 2 * i + 1; j++) { printf("*"); } printf("\n"); } //打印下层 for (i = 0; i < low; i++) { //打印空格 for (j = 0; j <= i; j++) { printf(" "); } //打印* for (j = 0; j < 2 * ( low - i ) - 1; j++) { printf("*"); } printf("\n"); } return 0; }
这些规律都不难发现,就是通过写出几项,来猜测通项公式。这在我们高中时候已经很熟悉了
运行结果为
二、打印水仙花数
题目描述:
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
对于这个题,我们要思考的是,我们要求出一个水仙花数,那么首先得先求出他的位数,然后将他的每一项拆开,进行求幂,判断是否相等即可
代码如下
#include<stdio.h> #include<math.h> int main() { int i = 0; for (i = 0; i < 100000; i++) { //计算水仙花数 //求出每一个i的位数 int n = 1; int tmp = i; while (tmp > 9) { tmp = tmp / 10; n++; } //求n次方并进行判断 tmp = i; int sum = 0; while (tmp) { sum = sum + pow(tmp % 10, n); tmp = tmp / 10; } if (i == sum) { printf("%d ", i); } } }
运行结果为
三、计算求和
题目描述:
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
这道题难度也不大,只要切记不要搞混了a即可
#include<stdio.h> int main() { int a, n; scanf("%d %d", &a, &n); int tmp = 0; int i = 0; int sum = 0; for (i = 0; i < n ; i++) { tmp = tmp * 10 + a; sum = sum + tmp; } printf("%d", sum); return 0; }
运行结果为
总结
本节就讲解了一些我们C语言中经常遇到的几种题目,水仙花数,打印菱形,以及求和的三种提醒解法。下节我们继续讲解一些常见的题目