<stdio.h>
#define
N
4
//定义一个常量N为4
int
strcomp(char
*s1,char
*s2)
//一个int返回值的函数
{
for(*s1==*s2&&*s1&&*s2s1++,s2++)
//for循环,分号第一个可以为空,表示不进行初始化,当S1等于S2且都不为空,则停止,返回0
return(*s1-*s2)
}
void
main()
{
char
str[N][50]//定义一个4*50大小的二维字符数组,用于接受4个字符串
int
i,j
for(i=0i<Ni++)
{
printf("String
#%d:",i+1)//输出待输入的字符串编号
gets(str[i])//读取用户输入的字符串
}
for(j=0,i=1i<Ni++)
if(strcomp(str[j],str[i])>0)
j=i//比较两个字符串大小,j始终保存最大字符串的编号
printf("Min
string
is:%s\n",str[j])//输出编号
}
//用第一个不相同字符的ASCII码大小来判断两个字符串的“大小”
int
strcomp(char
*s1,char
*s2)
{
for(*s1==*s2&&*s1&&*s2s1++,s2++)//如果两个字符串当前被指针指向字符的ASCII码相同,且都不是‘\0’(即都还没结束)
就分别指向各自字符串的下一个字符
return(*s1-*s2)
//返回各自字符ASCII码值相减的结果。
}
重载输出 *** 作符 <<
为了与标准库IO *** 作一致,重载 << *** 作符函数应把ostream&作为其第一个参数,对类类型const对象的引用作为第二个参数,并返回对ostream形参的引用。
一般而言,“<<”应输出对象的内容,进行最小限度的格式化,尤其不应输出换行符,而让用户自己控制输出细节。
“<<” *** 作符应定义为非成员函数。因为对于类的成员函数,左 *** 作数为该类类型的对象,这样只能将第二个参数作为ostream&,使用时:
这与“<<”的正常使用习惯相反。所以“<<” *** 作符应定义为非成员函数,并将其作为所 *** 作类的友元。
其实简单的理解,你就把cout当做dos窗口,<<就表示把后面的内容输出到窗口中,其中引号内的内容直接输出,不带引号的是输出变量的值,最后的是换行符。
包含一个头文件(头文件里面提供有一些可以直接使用的东西,比如函数方法,)。
把uchar定义为 unsigned char 型变量的简称,目的是方便打代码少写几个英文。
注释(做一些代码的注解,不被编译)
定义一个叫redLED的常量,它的值为PORTC.0。这方便在写代码的时候辨识是哪个灯,这就不用去记忆PORTC.0对应的LED灯是红灯。
同上
main函数,就是主函数。这是整个程序的入口点。程序运行的时候,就是从这个函数开始的。
DDRC(应该是寄存器)置位为0xff。
同上
同上
同上
死循环(不断反复执行while{}里面的语句,除非整个程序停止或者用break关键字跳出,否则永远循环执行下去)。
这是个判断。PIND&0x01,把PIND跟0x01相与,当PIND=1,这个式子结果就是1,if里的值为真,执行下面花括号里的语句;而如果PIND为0,这个式子结果就是0,if里的值为假,执行else下面的语句。
redLED 置1,给这个对应的引脚输出一个高电平,把灯点亮(或者熄灭,我没学过你们的这个单片机,不知道 置1 会是什么结果)。
redLED 置1,给这个对应的引脚输出一个低电平。同上。
如果PIND&0X01的结果为0时,执行下面{}中的语句。
同13、14。
同13、14。
以上内容为大概解析,本人没有使用过这款单片机,所以有一些具体的内容可能我无法准确描述(比如寄存器与io口的配置)。仅供参考,欢迎纠正。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)