C语言编程镶嵌循环例题,C语言循环例题讲解

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

循环结构例题讲解以及各种图形(三角形及菱形等)输出案例:

1、 输入一周七天的温度,然后求出该周平均温度并打印

double sum = 0.0;

double temperature = 0.0;

for (int i = 1; i <= 7; i ++) {

printf("请输入第%d天温度:",i);

scanf("%lf", & temperature);

sum += temperature;

}

printf("平均温度为:%lf",sum/7);

2、给定一个数学表达式,然后求出其结果。数学表达式如下所示:

0 – 1 + 2 – 3 + 4 – 5 + 6 …… - 99 + 100

解法1: 偶数和 - 奇数和

这里省略

解法2:偶数相加,奇数相减

int result = 0;

for (int i = 0; i <= 100; i ++) {

if (i % 2 == 0) {//偶数

result += i;

} else {//奇数

result -= i;

}

}

printf("result = %d\n",result);

解法3:按符号位进行加减

int sign = 1;//保存符号位 1 或则 -1

int sum = 0;//保存结果

for (int i = 0; i <= 100; i ++) {

sum += i * sign;

sign = - sign;

}

printf("sum = %d",sum);

3、打印出0--10之间偶数,以及这些偶数的平方及立方值

for (int i = 0; i <= 10; i ++) {

if (i % 2 == 0) {

printf("%d %d\n", i * i, i * i * i);

}

}

4、输出n个连续的偶数,n为输入的值,如 n = 3,输出 0 2 4

int n = 0;

printf("请输入n的值:");

scanf("%d", &n);

//判定n是否为正数

if (n > 0) {

解法1:按照分支判断,只输出偶数,奇数不输出

for (int i = 0; i < 2 * n - 1; i ++) {

if (i % 2 == 0) {//判断输出输出偶数

printf("%d ",i);

}

}

解法2:按照自然数乘以2均为偶数的方式

for (int i = 0; i < n; i ++) {

printf("%d ", 2 * i);

}

解法3:按照偶数+2均为偶数的方式

for (int i = 0; i < 2 * n; i += 2) {

printf("%d ", i);

}

} else {

printf("error");

}

5、输入两个正整数,求得两个数之间所有整数的和,例如,n1 = 3, n2 = 10;结果sum = 3 + 4 + 5 + 6…+ 10 = 52;

int start = 0, end = 0, sum = 0;

printf("请输入开始和结尾数字,中间用空格隔开:");

scanf("%d %d", &start, &end);

for (int i = start; i <= end; i ++) {

sum += i;

}

printf("sum = %d", sum);

6、依次输入几个数据,直到0作为输入的结束,然后求出输入的这些数据的总和及平均值(结束循环,使用break)

解法1:

int number = 0;//接收输入的数

double sum = 0.0;

int count = 0;//记录个数

while (1) {

printf("请输入:");

scanf("%d", &number);

//判断

if (number == 0) {

break; //跳出

}

count ++;//次数累加

sum += number;//和

}

//解法2:

do {

printf("请输入:");

scanf("%d", &number);

count ++;

sum += number;

} while (number != 0);

count --;

printf("sum = %lf,平均值:%lf,count = %d",sum, sum/count, count);

7、使用do…while循环实现银行登录示例

/*

* 设定输入的固定密码;

* 提示用户输入密码;

* 如果用户输入错误,提示请重新输入,三次均错误,提示用户,“输入失败”;

* 如果用户输入正确,提示“登录成功”

*/

int password = 123456;

int pw = 0;

int count = 1;

do {

printf("请输入密码:");

scanf("%d", &pw);

if (pw == password) {

printf("登陆成功\n");

break;

} else {

printf("输入错误,请重新输入\n");

}

count ++;

} while (count <= 3);

if (count > 3) {

printf("输入失败");

}

8、Chuckie Lucky赢了100W美元,他把它存入一个每年盈利8%的账户。在每年的最后一天,Chuckie取出10W美元。编写一个程序,计算需要多少年Chuckie就会清空他的账户。(不考虑一天的盈利情况)

double sum = 100;

int count = 0;

while (1) {

if (sum < 0) {

break;

}

sum += sum * 0.08;

sum -= 10;

count ++;

printf("count = %d ,剩余 %.2f\n",count, sum);

}

9、 任何一个自然数m的立方均可写成m个连续奇数之和。例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 编程实现:输入一自然数n,求组成n的3次方的n个连续奇数。

int n = 2;

for (int i = n * (n - 1) ; i <= n * (n + 1) ; i ++) {

if (i % 2 != 0) {

printf("%d ", i);

}

}

10、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

double height = 100;

double sum = 100;

for (int i = 2; i < 11; i ++) {

height /= 2;

sum += 2 * height;

printf("第%d次反弹高度为:%lf,落地时经过距离为:%lf\n",i - 1, height, sum);

}

printf("第10次反弹高度为:%lf",height / 2);

11、打印输出9*9乘法表

for (int i = 1; i < 10; i ++) {

for (int j = 1; j <= i; j ++) {

printf("%d * %d = %2d ",i, j, i * j);

}

printf("\n");

}

12、编写程序,求e的值,e≈1+1/1!+1/2!+1/3!+1/4!+…

(1)用for循环,计算前50項。

(2)用while循环,要求直至最后一项的值小于10的-6次方。

第(1)小问:

double number = 1;

double sum = 1;

for (int i = 2; i < 50; i ++) {

//分子 1

//分母

double denominator = 1;

for (int j = 1; j < i ; j ++) {

denominator *= j;

}

sum += number / denominator;

}

printf("%lf", sum);

第(2)小问

double denominator = 1;//分母

double sum = 1;//和

int n = 1;//记录当前阶乘数据

while (1/denominator > 10e-6) {

sum += 1/denominator;

denominator *= n;

n ++;

}

printf("sum = %lf", sum);

13、水仙花数:水仙花数是指一个 n 位数 ( n 大于等于 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1的3次方 + 5的三次方 + 3三次方 = 153)。根据这个要求,打印所有三位数的水仙花数。

解法1:

for (int a = 1; a <= 9; a ++) {

for (int b = 0; b <= 9; b ++) {

for (int c = 0; c <= 9; c ++) {

if (a * a * a + b * b * b + c * c * c == a * 100 + b * 10 + c) {

printf("%d%d%d\n",a,b,c);

}

}

}

}

解法2:

for (int i = 100; i <= 999; i ++) {

//分解

int a = i / 100; //百位

int b =( i / 10) % 10;//十位

int c = i % 10;//个位

if (a * a * a + b * b * b + c * c * c == a * 100 + b * 10 + c) {

printf("%d%d%d\n",a,b,c);

}

}

14、打印三角形,如下图

*

***

*****

*******

*****

***

*

7 - 2 * |i|

解题方式:按照中间对称式,中间设为0,往上递增,往下递减,依次找出空格与*号的规律;

for (int i = -3; i <= 3; i ++) {

//空格

int number = i > 0 ? i : (-1) * i;

for (int j = number; j > 0; j --) {

printf(" ");

}

//*号

for (int k = 1; k <= 7 - 2 * number; k ++) {

printf("*");

}

printf("\n");

}

15、编写出下面图形

1

2 3

4 5 6

7 8 9 0

int n = 1;//标记数量

for (int i = 0; i < 4; i ++) {

//打印空格

for (int j = 0; j < 3 - i; j ++) {

printf(" ");

}

// * 号

for (int k = 0; k < i + 1; k ++) {

printf("%d ", n ++ % 10);

}

printf("\n");

}

16、打印出如下图形

*****

****

***

**

*

for (int i = 1; i <= 5; i ++) {

//空格

for (int j = 1; j < i ; j ++) {

printf(" ");

}

//*号

for (int k = 0; k <= 5 - i; k ++) {

printf("*");

}

printf("\n");

}

17、

1

121

12321

1234321

123454321

for (int i = 1; i <= 5; i ++) {

//空格

for (int j = 0; j < 5 - i; j ++) {

printf(" ");

}

//数字

int n = -1;

for (int k = 1; k < 2 * i; k ++) {

if (k <= i) {

printf("%d", k);

n ++;

} else {

printf("%d", n);

n --;

}

}

printf("\n");

}

18、

A

ABA

ABCBA

ABCDCBA

ABCDEDCBA

for (int i = 1; i <= 5; i ++) {

//空格

for (int j = 0; j < 5 - i; j ++) {

printf(" ");

}

//数字

int n = -1;

for (int k = 1; k < 2 * i; k ++) {

if (k <= i) {

printf("%c", k + 64);

n ++;

} else {

printf("%c", n + 64);

n --;

}

}

printf("\n");

}

19、

*******

*****

***

*

***

*****

*******

for (int i = -3; i <= 3; i ++) {

//空格

int number = i > 0 ? i : (-1) * i;

for (int j = 1; j <= 3 - number; j ++) {

printf(" ");

}

//*号

for (int k = 1; k <= 2 * number + 1; k ++) {

printf("*");

}

printf("\n");

}

20、

*

* *

* *

* *

* *

* *

*

for (int i = -3; i <=3; i ++) {

int n = i > 0 ? i : - i;

for (int j = 0; j < n; j ++) {

printf(" ");

}

for (int k = 0; k < 7 - n; k ++) {

if (k == 0 || k == 6 - n - n) {

printf("*");

} else {

printf(" ");

}

}

printf("\n");

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值