C语言----循环的嵌套(进阶篇二十)
作者:互联网
循环嵌套和break语句
while、do while和for语句都可以形成嵌套,在这里我们着重分析for语句的嵌套。
程序1
简单的for语句嵌套
// 20-1简单for语句嵌套.c #include <stdio.h> //main() //{ // int i, j,k; // k = 0; // for (i = 0; i < 3; i++) // { // for (j = 0; j < 3; j++) // { // printf("%d\n", ++k); // } // } //} //二维数组 main() { int i, j, k; k = 0; for (i = 0;i < 3;i++) { for (j = 0;j < 3;j++) { printf("%d", j); } printf("\n"); } }
程序2
打印九九乘法表
// 20-2打印九九乘法表.c #include <stdio.h> main() { int num1, num2; //简易九九乘法表 for (num1 = 1;num1<10;num1++) { for (num2 = 1; num2 < 10; num2++) { printf("%d*%d=%d\t", num1, num2, num1*num2); if (num1 == num2) break; } printf("\n"); } printf("\n"); }
注意:break语句不是跳出if中的花括号,而是直接跳出本层循环
程序3
小游戏:打飞碟
// 20-3综合程序打飞碟.c // #include <stdio.h> #include <Windows.h> void gotoxy(int x, int y); //获取坐标函数 main() { int x = 0, y = 0, x1 = 37, y1 = 22, x2 = 40, y2 = 18; //飞碟坐标 炮台的坐标 炮弹坐标 int c = 0; //获取键盘值 while (c != '\r') //没有 按回车键 { if (_kbhit()) //检测键盘按键 c = _getch(); //获取按键字符 system("cls"); //清楚屏幕 //飞碟成像 x++; if (x > 70) x = 0; gotoxy(x, y); printf("@@@@@@@@"); //炮台成像 gotoxy(x1,y1); printf("_^_"); if (c == ' ') //如果键盘符是 空格 { //炮弹成像 y2--; if (y2 < 0) { c = '\0'; //键盘按钮复位 y2 = 18; //炮弹复位 } gotoxy(x2,y2); printf("^\n\t\t\t\t\t^\n\t\t\t\t\t^\n\t\t\t\t\t"); //检测打中目标 if (x<x2 && x+10>x2 && y-2<y2 && y+2>y2) { printf("恭喜过关\n"); break; } } Sleep(100); //延时 } } void gotoxy(int x, int y) //获取坐标函数 { HANDLE houtput; COORD loc; loc.X = x; loc.Y = y; houtput = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(houtput, loc); }
求e的值。
(1)用for循环,计算前50项
(2)用while循环,要求直至最后一项的值小于10-4
//20_1:求e的值,e=1+1/1!+1/2!+1/3!...+1/n! //(1)用for循环,计算前50项*/ #include <stdio.h> main() { long i; //计数器 double factorial = 1.0, sum = 1.0; //阶乘 总和 //循环五十次 for (i = 1; i <= 50; i++) { factorial *= i; //计算阶乘 sum = sum + 1 / factorial; //总和 } printf("%lf\n", sum); }
//(2)用while循环,要求直至最后一项的值小于10的-4次方 #include <stdio.h> main() { long i = 1; // i 做乘数,不能为0 double factorial = 1.0, sum = 1.0; //阶乘 总和 while (1/ factorial > 1e-4) //通过比较判断是否循环 { //printf("%lf\n", (1 / factorial)); factorial *= i; //阶乘 sum = sum + 1 / factorial; //和 i++; //printf("%ld\n", i); } printf("%lf\n", sum); }
给一个不多于5位的正整数,要求:
(1)求出它是几位数;
(2)分别打印出每一位数字;
(3)按逆序打印出各位数字,例如原数为487,应输出784。
//(1)求出它是几位数; #include <stdio.h> main() { //求出是几位数 int a, i, j; //输入的值 几位数 增值中间使用 scanf_s("%d", &a); //输入值 j = 1; for ( i = 0; i < 5; i++) //循环五次 { if (a/j == 0)break; //利用整数取值 如: 366 / 1 = 366; 366 / 10 = 36; 36 / 100 = 0; i = 3 j *= 10; } printf("%d是%d位数", a, i); }
//(2)分别打印出每一位数字; #include <stdio.h> main() { //求出是几位数 int a, i, j, n[5] = {0}; //输入的值 几位数 增值中间使用 保存值到数组 scanf_s("%d", &a); //输入值 j = 10; for (i = 0; i < 5; i++) //循环五次 { n[i] = a % j; //将整数的余数取出来 a /= j; //删除取出来的数 if (a == 0)break; // a = 0 时,数据已取完,直接跳出循环。 } for (i = 4; i >= 0; i--) //数组中存的是:比如输入的是 456 n[5] = {6,5,4,0,0} if (n[i] != 0)printf("%d", n[i]); //因此要从大到小循环 }
//(3)按逆序打印出各位数字,例如原数为487,应输出784。 #include <stdio.h> main() { //求出是几位数 int a, i, j, n[5] = { 0 }; //输入的值 几位数 增值中间使用 保存值到数组 scanf_s("%d", &a); //输入值 j = 10; for (i = 0; i < 5; i++) //循环五次 { n[i] = a % j; //将整数的余数取出来 a /= j; //删除取出来的数 if (a == 0)break; // a = 0 时,数据已取完,直接跳出循环。 } for (i = 0; i < 5; i++) //数组中存的是:比如输入的是 456, n[5] = {6,5,4,0,0} if (n[i] != 0)printf("%d", n[i]); //因此直接打印即可 }
标签:main,int,++,C语言,----,进阶篇,几位数,printf,include 来源: https://www.cnblogs.com/httpcc/p/15459658.html