C语言中循环嵌套的应用方式
作者:慕白昂
循环嵌套的应用
循环嵌套可以使复杂的问题结构化,把一个功能的实现拆分成一个一个更小的功能,然后再实现,在此实现的过程中必须要注意结构上的逻辑性和该逻辑的正确性,要保证每一个小的功能能够完全正确,最终实现一个完整的循环。
1.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字(例如:2+22+222+2222+22222)
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include<windows.h> int main() { int a = 0;//数字 int n = 0;//几个这类数相加 int sum = 0;//求和的结果 int ret = 0;//储存计算好的每一项 int i = 0; printf("请输入s和n:"); scanf("%d %d", &a, &n); for (i = 0; i < n; i++) { ret = ret * 10 + a; sum += ret; } printf("sum=%d\n", sum); system("pause"); return 0; }
2.求出0~100000之间的所有“水仙花数”并输出。(“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=13+53+3^3,则153是一个“水仙花数”。)
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include<math.h> #include<windows.h> int main() { int i = 0; for (i = 0; i < 100000; i++) { //判断是否为水仙花数 /*1.储存该数的位数*/ int sum = 0; int count = 1; int tmp = i; while (tmp /=10) { count++; } /*2.得到i的每一位,求出它的每一位次方数之和*/ tmp = i; while (tmp) { sum += pow(tmp % 10, count); tmp/=10; } /*判断*/ if (sum == i) { printf("%d\t", i); } } system("pause"); return 0; }
3.用C语言在屏幕上输出以下图案:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include<math.h> #include<windows.h> int main() { int line = 0; scanf("%d", &line); int i = 0; for (i = 0; i < line; i++)//打印上半个菱形 { int j = 0; for (j = 0; j < line - 1 - i; j++)//先空格 { printf(" "); } for (j = 0; j < 2 * i + 1; j++)//再"*" { printf("*"); } printf("\n"); } for (i = 0; i < line - 1; i++)//打印下半个菱形 { int j = 0; for (j = 0; j <=i ; j++)//先空格 { printf(" "); } for (j = 0; j < 2 * (line - 1 - i) - 1; j++)//再"*" { printf("*"); } printf("\n"); } system("pause"); return 0; }
循环嵌套输出图形问题
输出
*
***
*****
*******
*********
#include<stdio.h> int main() { int i,j; for(i=1;i<=5;i++){ for(j=1;j<=2*5-2*i;j++) printf(" "); for(j=1;j<=i*2-1;j++) printf("*"); printf("\n"); } return 0; }
输出
*
***
*****
*******
*********
#include<stdio.h> int main() { int i,j; for(i=1;i<=5;i++){ for(j=1;j<=5-i;j++) printf(" "); for(j=1;j<=i*2-1;j++) printf("*"); printf("\n"); } return 0; }
输出
*
***
*****
***
*
#include<stdio.h> #include<math.h> int main() { int i,j; for(i=1;i<=5;i++){ for(j=1;j<=abs(3-i);j++) printf(" "); for(j=1;j<=(2*(3-abs(3-i))-1);j++) printf("*"); printf("\n"); } return 0; }
图形问题模板:
#include<stdio.h> int main() { int i,j; for(i=1;i<=行数;i++){ for(j=1;j<=第i行空格数(找规律);j++) printf(" "); for(j=1;j<=第i行图形数(找规律);j++) printf("图形"); printf("\n"); } return 0; }
附带一个99乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
#include<stdio.h> int main() { int i,j; for(i=1;i<=9;i++){ for(j=1;j<=i;j++) printf("%d*%d=%d\t",j,i,j*i); printf("\n"); } return 0; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。