
#include <reg51h> //51头文件
#include <intrinsh> //包含移位函数_crol_
void Delay10ms(unsigned int c); //延时函数声明
void main(void)
{
unsigned char LED;
LED = 0x01; //一个unsigned char有8位,每一位代表了一个灯,初始点亮第一盏灯
while(1)
{
P0 = LED; //点亮一盏灯
Delay10ms(50); //延时500ms,让其量一会儿
LED = _crol_(LED,1); //向左移位函数,比如 0x01 --> 0x02 --> 0x04 -->0x08 ---> 0x10
}
}
void Delay10ms(unsigned int c) //延时函数
{
unsigned char a, b;
for (;c>0;c--) //三重循环延时,大约延时10ms
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
define是宏定义语法,相当于现实生活中的起昵称。
#define N 10 就是给10这个数字起了一个昵称,叫做N
以后的代码中,遇到N的地方,其实就是10,编译器会在编译之前,将N都给一模一样的替换成10。
sort函数是进行前后顺序颠倒的,for循环有三个部分。
第一个部分是初始化,也就是将q指向p + N -1的位置。其中,p是一个形参地址,假设这个p指向的地址,是一个真实的地址,例如xxx胡同1号。那么p + N - 1,就相当于p + 10 - 1,也就是p + 9,相当于xxx胡同10号。上面的函数中,sort的实参是a[10],xxx胡同10号,其实就是a数组的最后一个元素。
第二部分是跳出for循环的条件,就是p < q
第三部分是每次执行完毕之后,进行什么 *** 作,p++,q--
for循环执行体的内容,其实就是一次数据的交换。
假设输入是1,2,3,4,5执行函数之后的结果,就是5,4,3,2,1
#include <stdioh>
#define CUBE(x) (xxx)//预定义函数CUBE(x),功能:计算x的3次方。
main()
{
int n=5;
int s=CUBE(++n);//此处运算顺序:n=n+1;n=n+1;n=n+1;s=nnn,即n=5+1;n=6+1;n=7+1;s=888
//++n的运算优先级高于乘,所以先算所有的++n
printf(“%d”,s);//输出结果:392
}
/
判断一个数是否素数,是的话返回true,否则false
@param num
@return
/
public static boolean isPrime(int num) {
boolean flag = true;
if (num <= 1) {
} else {
for (int i = 2; i < num; i++) {
if (num % i == 0) {
flag = false;
}
}
}
return flag;
}
public static void main(String[] args) {
int ri, repeat;
Systemoutprintln("请输入一个值:");
Scanner in = new Scanner(Systemin);
repeat = innextInt();
if (repeat < 6 || repeat % 2 != 0) {
Systemerrprintln(repeat + "不符合题目要求");
return;
}
// 最小素数为2:,从2开始遍历
int prime2 = 0;
for (ri = 2; ri <= repeat; ri++) {
if(!isPrime(ri)){
//不是素数,跳过
continue;
}else{
//是素数,那么用原值减去该素数得到第二个值
prime2 = repeat - ri;
if(isPrime(prime2)){
//如果第二个值是素数,则中断查找,结果已出
break;
}else{
prime2 = 0;//重置为0
}
}
}
if(prime2 != 0){
//表示找出结果
Systemoutprintln("程序找出"+repeat+"的2个素数为:"+ri+","+prime2);
}else{
Systemoutprintln("程序没找出"+repeat+"的2个素数!");
}
inclose();
}
//有啥问题可追问
但是,当开关松开的时候,K恢复到高电平,IF语句应该是不执行的。
这句话是对的。
无论按键如何 *** 作,灯始终处于点亮状态。这句话有问题。
你的按键能有什么 *** 作,不过就是按下去吗,松开吗,还有吗?
按下去,K=0,执行led=0; 灯亮啊。
你想要灯灭吗?那得有一行是:led=1; 那灯才能灭的,可程序中并没有这一行啊。
所以,灯就一直亮的,只要按过一次,led=0; 以后将永远为0,灯永远亮的。
你提问的标题有(while语句),可程序中并没有用的,这标题不符啊。
以上就是关于请问以下有关单片机跑马灯的C语言程序各语句的含义(详细)全部的内容,包括:请问以下有关单片机跑马灯的C语言程序各语句的含义(详细)、想请大神解释一下一个C语言程序的函数语句、关于C语言程序,每条语句的定义是什么呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)