08-循环设计

循环计算

循环条件、循环次数的判断

eg:请添加图片描述执行了101次,最后有输出0,count的值为1.
若此时代码修改为:
请添加图片描述count的值为-1

算平均数

让用户输入一系列的正整数,最后输入-l表示输入结束,然后程序计算出这些数字的平均数,输出输入的数字的个数和平均数

请添加图片描述

#include <stdio.h>
int main( )
{
	int number;
	int sum = 0;
	int count = 0;
	scanf ( "%d" , &number) ;
	while ( number != -1 ) {
	sum +=number;
	count ++;
	scanf( "%d", &number) ;
	}
	printf("%f\n",1.0*sum/ count) ;

	return 0;
}

猜数游戏

让计算机来想一个数,然后让用户来猜,用户每输入一个数,就告诉它是大了还是小了,直到用户猜中为止,最后还要告诉用户它猜了多少次。

算法:

I.计算机随机想一个数,记在变量number里;
2.一个负责计次数的变量count初始化为0;
3.让用户输入一个数字a;
4.count递增(加一);
5.判断a和number的大小关系,如果a大,就输出“大”;如果a小就输出“小”;
6.如果a和number是不相等的(无论大还是小,程序转回到第3步;
7.否则,程序输出“猜中”和次数,然后结束。

#incluae <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( ){
	srand(time(0));
	int number = rand()%100+1;
	int count = 0;
	int a = 0;
	printf("我已经想好了一个1到100之间的数。");
	do {
		printf("请猜这个1到100之间数:");
		scanf( "%d"&a);
		count ++;
		if ( a > number ) {
		printf("你猜的数大了。");
		}else if ( a < number ) {
		printf("你猜的数小了。");
		}
	}while (a != number);
	printf("太好了,你用了%d次就猜到了答案。\n",count);
	return 0;
}

注:电脑给的随机数rand()很大,若对其%100可随机生成100以内的随机数

整数求逆

#include <stdio.h>

int main( ){
	int x;
	//scanf( "%d",&x);
	x = 12345;
	int digit;
	int ret = 0;
	while ( x> 0 ) {
		digit = x%10;
		// printf ( "%d\ n", digit);
		ret = ret*10 +digit;
		printf( "x=%d ,digit=%d , ret=%d\n",x,digit, ret);
		x /= 10;
	}
	printf("%d", ret) ;
	return 0;
}

运行结果:请添加图片描述

判断和循环常见的错误

  • if语句常见的错误
    忘记大括号
    if后面加了分号
    错误使用" == “和”="
  • if只要求()里的值零或非零
  • 代码风格
    在if和else之后必须加{}形成语句块,{}内的语句缩进一个tab的位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于单片机的流水灯程序设计实现左右循环的流水灯功能的代码: ```c #include<reg52.h> sbit LED=P2^0; //定义P2.0为LED控制口 sbit KEY1=P3^0; //定义P3.0为向右流水灯的按键口 sbit KEY2=P3^1; //定义P3.1为向左流水灯的按键口 void delay(unsigned int t) //延时函数 { unsigned int i,j; for(i=0;i<t;i++) for(j=0;j<125;j++); } void main() { unsigned char flag=0; //定义标志位,初始值为0 while(1) { if(KEY1==0) //检测向右流水灯的按键是否按下 { flag=1; //设置标志位为1,表示向右流水灯 while(!KEY1); //等待按键松开 } if(KEY2==0) //检测向左流水灯的按键是否按下 { flag=0; //设置标志位为0,表示向左流水灯 while(!KEY2); //等待按键松开 } if(flag==1) //向右流水灯 { LED=0x01; //第一盏灯亮 delay(100); //延时 LED=0x02; //第二盏灯亮 delay(100); //延时 LED=0x04; //第三盏灯亮 delay(100); //延时 LED=0x08; //第四盏灯亮 delay(100); //延时 LED=0x10; //第五盏灯亮 delay(100); //延时 LED=0x20; //第六盏灯亮 delay(100); //延时 LED=0x40; //第七盏灯亮 delay(100); //延时 LED=0x80; //第八盏灯亮 delay(100); //延时 } if(flag==0) //向左流水灯 { LED=0x80; //第八盏灯亮 delay(100); //延时 LED=0x40; //第七盏灯亮 delay(100); //延时 LED=0x20; //第六盏灯亮 delay(100); //延时 LED=0x10; //第五盏灯亮 delay(100); //延时 LED=0x08; //第四盏灯亮 delay(100); //延时 LED=0x04; //第三盏灯亮 delay(100); //延时 LED=0x02; //第二盏灯亮 delay(100); //延时 LED=0x01; //第一盏灯亮 delay(100); //延时 } } } ``` 在该代码中,我们定义了一个标志位flag,来表示流水灯的方向,如果flag为1,则表示向右流水灯,否则表示向左流水灯。我们使用P3.0和P3.1作为按键输入口,当检测到按键按下时,通过修改flag的值来实现流水灯方向的切换。 在主函数中,我们使用一个无限循环来不断执行流水灯程序。根据flag的值,选择向左或向右流水灯,通过修改P2.0的值来控制LED灯的亮灭。我们还使用了一个延时函数delay来控制LED灯的流水速度。 注意:该程序中的延时函数是简单的循环计数延时,实际应用中可能需要更加精确的延时方式,如定时器中断等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值