2,用户函数自定义。
3,主函数,一个C语言程序中只能有一个主函数:main()
4,函数体。当中包含数据类型的定义,赋值,和一系列腊高大的执行语句。
一般的程序差不多就是这轮竖样子
#include<stdio.h> // stdio中包含对printf, scanf, getchar的声明。非标准语法的使用需要先声明int main(void) { // 这个是C程序的入口,返回值类型是int,传入参数类型void
int i, j, length // 定义变量及类型,i和j只是计数器,
char temp, ch = 0 // 定义变量temp/ch,并且给ch赋值为0
printf("Please input an uppercase letter:") //在控制岩答台输出引号中的话
scanf("%c", &ch) //然后读取一个输入,输入的类型是字符("%c"),并且赋值给变量ch
getchar() // 不知道……我以为scanf就可以了
length = ch - 'A' + 1 // 字符的本质其实也是数字,'A'等于98(忘了),假设我们输入'D',那length就是4
for (i = 0 i < length i++) { // 循环结构,初始i=0,每次i自增1,当i<length的时候会进入循环。
// 所以如果输入'D',那会循环4次,i分别是0/1/2/3
temp = 'A' - 1 // 先让temp等于 'A'-1,因为后面有 ++temp 的 *** 作
// 而且每次循环都执行了这一步
for (j = 0 j < (length - i - 1) j++) {
// 嵌入的子循环,i==0时就会循环3次,然后输出三个空亏行格
printf(" ")
}
for (j = 0 j <= i j++) {
// 同上,但每次子循环输出字符A/B/C…,输出多少和i有关系
printf("%c", ++temp) // ++temp是自增,等同于 temp = temp + 1,如果第一次输出'A',第二次就会是'B'
}
for (j = 0 j < i j++) {
// 这个 *** 作和上面刚好相反
printf("%c", --temp)
}
printf("\n") //输出完要换行
// 输出第一行后就是:***A (表示为“***,A,”,“*”表示空格)
// 在第二次输出后是:**ABA (表示为“**,AB,A”)
// 第三次输出之后是:*ABCBA (上面括号里的逗号分别表示三个子循环的输出)
// 第四次输出之后是:ABCDCBA (我表示很很怀疑输出的结果是不是这几个)粗空慧
}
return 0 // 程序结束,返回状态,还记得上面main的返回类型是int不
}
大概是这个意思,<del>不确定输出结果是什么</del>(原来每次都会给temp赋值为'A'-1,刚才搞错了)。不知你刚学了解多少,可能有些解释多余了,也可能有些地方没说清。
呵呵,这个是一个单片机的问题,我可以给你解释,但是必须把分给我#include <reg51.h> 头文件包含
#include <math.h>
#define uchar unsigned char 用Uchar 定义unsigned char
#define uint unsigned int
#define ON 0 //电动机开关的宏
#define OFF 1
sbit PWM=P3^5//与电动机通信的端口 定时器1外部中断
sbit MP=P3^4 //定时器0外部中断
bit FLAG=0 //数据是否需要显示的标志
uchar code dispbit[6]={0x20,0x10,0x08,0x04,0x02,0x01}//选择led的六个中的一拦差咐个
uchar code seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}//0——9显示代码
//0,1,2,3,4,5,6,7,8,9
uchar disbuf[6]={0,0,0,0,10,10}//数据缓冲区,j就是屏庆歼幕显示的缓冲数据
uint temp[6]//显示速度分成显示字符的缓冲区
uint discount=0 //显示位数的定位
uint timecount=0 //定时的次数
uint T0count=0 //to计数器的溢出次数
uint hus=0
uint k=60
uint Vc
uint Vs
uint tm=3000 //外部定时器1的初始值,就是测转最多多少次
uint x
void t0_serv() interrupt 1 //外部定时器0中断延时定时器到了,TOCUNT加一,时间
{ T0count++
}
void t1_serv() interrupt 3 //外部定时器1中断延时定时器到了响应中断
{
PWM=1
TH1=(65536-tm)/256 /定时器1初始化
TL1=(65536-tm)%256
hus++
if(hus==tm) //是否到3000次
{ PWM=0
TH1=(25536+tm)/256 //定时器0初始化
TL1=(25536+tm)%256
}
timecount++ //时间加一
if(timecount==250) //最多多少时间
{
//FLAG=1 //需要显示啦
TR0=0//初始化
hus=0
timecount=0
Vc=T0count*65536+TH0*256+TL0
Vs=144
if(abs(Vc-Vs)>5) /简纯/得到的值与144相比
{ tm=abs(k*(Vc-Vs))
T0count=0
TR0=1
TR1=1
ET0=1
ET1=1
EA=1
}
FLAG=1
TR0=0
timecount=0
}
P0=dispbit[discount]
P1=seg[disbuf[discount]]
discount++
if(discount==6)
{ discount=0
}
}
void main()
{ uint i
TMOD=0x15//设置定时器启动模式
TH0=0//定时器0的初始值
TL0=0
TH1=(65536-tm)/256//定时器1的初始值
TL1=(65536-tm)%256
TR0=1//启动定时器
TR1=1
ET0=1//启动两个中断
ET1=1
EA=1//开中断
while(1)
{ if(FLAG==1)
{ FLAG=0
x=T0count*65536+TH0*256+TL0//显示初始化 0
for(i=0i<6i++)
{temp[i]=0
}
i=0
while(x/10)
{
temp[i]=x%10//将x放入缓冲区
x=x/10
i++
}
temp[i]=x
for(i=0i<6i++)
{
disbuf[i]=temp[i]//将临时缓冲区的数据放入显示缓冲区
}
timecount=0//定时器的归零初始化
T0count=0
TH0=0
TL0=0
T0count=0
TR0=1
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)