懂C语言帮忙注释下这个程序!

懂C语言帮忙注释下这个程序!,第1张

struct person st[MAX];

int n=0;

/

@brief

选择排序:

假定数组中存在一个分界值,

分界值前面的为已排序部分,分界值后面为未排序部分(最初已排序部分为0个,所以第0个数据就是分界值)。

选择排序外层循环进行n-1次,每次选出未排序部分的最小值来与分界值交换。

这样当前的分界值就加入到“已排序部分”,分界值位置向后移动一个。

当分界值到达n-1时,排序完成。

@param 无

无参数;

隐含入参:全局变量struct person数组st

隐含入参:全局变量n,表示数组st中数据的个数

@return void

/

void sort()

{

struct person temp; / 用于交换的临时变量 /

int i,j,k; / i,j为循环变量,k用于记录未排序部分和分界值的最小值的下标 /

/ 以下的“最小值”均指“未排序部分和分界值”中的最小值 /

for(i=0;i<n-1;i++) / 外层循环n-1次,i就是分界值下标; 找到新的最小值之后,i++,表示分界值后移 /

{

k=i; / k为最小值下标,默认分界值最小 /

for(j=i+1;j<n;j++)/ 对所有未排序部分进行查找 /

if(st[k]no>st[j]no) / 如果有比当前最小值更小的,就把k改为那个更小值的下标 /

k=j;

if(k!=i) / 如果k==i,表示分界值就是最小值,则不用交换;k!=i则需要交换 /

{

/ 这里进行交换(分界值与最小值) /

temp=st[k];

st[k]=st[i];

st[i]=temp;

}

}

}

#include <cstdio>

void main()

{

int stre(char[]);//函数声明

char str[10], p = str ;//定义一个指向char类型的指针,其赋初值,使其指向数组str的首个元素

gets(p);//从终端获取一串字符,长度要小于10

printf("%d\n", stre(p));//打印stre的返回值

}

int stre(char str[])

{

int num = 0 ;

while( (str + num) != '\0' ) num ++ ;//这句相当于while(str[num]!='\0')num++;统计字符串字符的个数

return (num);

}

#include <reg52h>//头文件

sbit LED = P3^0;//位定义 指定P3^0口为led的输出口,并把P3^0的名称用LED来代替

unsigned char a=0;//定义变量a,并把a的初值设为0

void main (void)

{

TMOD =0x01;   //设置定时器0(T0)的模式为1

TH0  =0xd8;  //给定时器TH0的高8位赋初始值

TL0  =0xf0;   //给定时器TL0的低8位赋初始值

TR0  =1; //启动T0定时器

IE0  =1;   //   开放外部中断0

TF0  = 0;//把定时器T0的中断请求标志清零

while (1)    //while循环 如果while (1)中的1不为0,那么while 的顺环将一直持续下去, 由于去由于while (1)中所带的参数1是常量 永远不可能为0,所以这个顺环将永远持续下去;

{

if (TF0 != 0)    //这部分其实就是一段延时程序,如果TF0=1,也就是当定时器0溢出时,TF0将变成1,那么执行执行下面的语句

{

a++; //   a=1 //变量a自增1;相当于a=a+1

TH0  =0xd8;//给定时器T0高位赋初值

TL0  =0xf0;//给时器T0低位赋初值 TF0  = 0;

if (a >50)//如果a>50

{

a=0;  //如果a>50 那么把a的值清零 为下一次循环做好准备

LED =~LED;//把LED取反因为开始定义了sbit LED = P3^0,相当于把P3口的0位取反(这句话也可以这样理解:如果原来是+1  那么现在要变成-1的意思,反之也一样)

}

}

}//程序返回到大顺环的入口处

}

这就是C语言的代码,没有语法错误,可以成功运行

下面是我的注释

#include <conioh>

#include <stdioh>

//判读是否是字母的函数

int ischar(char ch)

{

return ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) 1 : 0;

}

//主函数

int main(int argc, char argv[])

{

int charnum[256];//存放对应字符的个数,下标与字符的ASCII码对应

int charcount = 0;//计算字符个数

int words = 0;//计算单词

int isword = 0;//是否是单词

int maxlen[2] = {0, 0};//记录单词的最大长度

int cumax = 0;//用来做下标逻辑的

char ch;//读取到的字符

char longword[2][256];//存放 单词,用来找出最长的单词

int i;//循环变量

FILE fp1;//文件指针

char srcfilename[255];//文件名

printf("input file name: ");//输入用户名

gets(srcfilename);//获取用户名

//数组值全部初始化为0

for (i = 0; i < 256; i++)

{

charnum[i] = 0;

}

//打开文件,失败则返回

if ((fp1 = fopen(srcfilename, "rb")) == NULL)

{

printf("can not open source file\n");

return 1;

}

//循环读取文件内容,直至文件结尾

while (!feof(fp1))

{

ch = fgetc(fp1);//读取

charnum[ch]++;//对应字符的个数加1

printf("%c", ch);//输出该字符

if (ischar(ch))//是否是字母

{

if (isword == 0)//是单词

{

words++;//单词数加1

isword = 1;//单词状态置为1,表示正在单词中读取字符

}

charcount++;//字母计数加1

longword[cumax][maxlen[cumax]++] = ch;//2维数组,存储的长度小的那个重新存储下一个单词

}

else

{//非单词

isword = 0;//单词状态置为0,即一个单词已读取结束

longword[cumax][maxlen[cumax]] = '\0';//给保存单词的加上字符串结束标记

if (maxlen[cumax] > maxlen[1 - cumax])//判断保存单词的二维数组的长度,短的用来存储下一个单词

cumax = 1 - cumax;

maxlen[cumax] = 0;//短的长度置为0

}

}

fclose(fp1);//关闭指针

//输出

printf("\n\n\nwords: %d\n", words);

printf("tab: %d\n", charnum[9]);

printf("space: %d\n", charnum[32]);

printf("total charater: %d\n", charcount);

printf("the longest word: %s\n", longword[1 - cumax]);

printf("length of the longest word: %d\n", maxlen[1 - cumax]);

return 0;

}

汇编语言的注释是每行从分号“;”开始的,分号之后的内容都属于注释。一般而言,汇编语言的注释在以下几个地方:

1、程序的最前面,注释内容一般说明该程序总的说明,解释程序的主要功能,程序的版本号,程序的修改日志,程序的编制人等等

2、子程序的前面,一般说明该子程序或函数完成的功能,输入参数,输出参数,影响的标志位等等。

3、指令行的后面,注释该行语句的功能。

比如以下简单程序的注释。

;--------------------------------------

;该程序完成一个LED灯的闪烁

;编制时间:XXXXX

;完成人:XXXX

;--------------------------------------

ORG

0000H

LJMP

MAIN:

ORG

0030H

MAIN:

CLR

P10

;led置低

LCALL

DELAY

;延时

SETB

P10

;LED置高

LCALL

DELAY

;延时

SJMP

MAIN

;转MAIN循环

;------------------------------

;延时子程序

;输入参数:无

;输入参数:无

;------------------------------

DELAY:

MOV

R2,#200

D1:

MOV

R3,#250

DJNZ

R3,$

DJNZ

R2,D1

RET

END

以上就是关于懂C语言帮忙注释下这个程序!全部的内容,包括:懂C语言帮忙注释下这个程序!、请高手给下面程序给点详细的注释,多谢!、帮我注释一下这段程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9969474.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存