2019/9/9电气与信息工程学院计算机系制作Lesson11数据的组织结构2019/9/9电气与信息工程学院计算机系制作学习目标:31掌握二维数组的使用2019/9/9电气与信息工程学院计算机系制作3字符数组2复习字符串用双引号括起来的一串字符“1234”“Tom”“CLanuageProgram”2019/9/9电气与信息工程学院计算机系制作3字符数组2字符数组:数组元素的类型为字符hello\02019/9/9电气与信息工程学院计算机系制作3字符数组2字符数组的定义charch[10];2019/9/9电气与信息工程学院计算机系制作3字符数组2字符数组的初始化(1)字符数组的初始化的基本方法charch[5]={'h','e','l','l','o'};(2)省略长度说明如:charch[]={'h','e','l','l','o'};(3)使用字符串初始化字符数组:charch[]={“abcde”};charch[]=“abcde”;abcde\02019/9/9电气与信息工程学院计算机系制作3字符数组2字符串在计算机中表示charch[]=“1234”1234\0字符数组字符串结束标志数组ch2019/9/9电气与信息工程学院计算机系制作3字符数组2字符串的输入输出1、gets(str);2、scanf(“%s”,str);gets()函数以换行符或文件结束符EOF作为输入的结束标志,因此在输入的字符串中允许包含空格和制表符;scanf()函数则以空格、制表符、换行符和文件结束符EOF作为输入的结束标志,因此,在输入的字符串中不允许包含这些字符。如果包含了它们,将作为字符串输入的结束标志处理。charstr[100];2019/9/9电气与信息工程学院计算机系制作3字符数组2字符串的输出1、puts(str);2、printf(%s”,str);puts将字符串的内容显示到标准输出设备——屏幕上,并换行。2019/9/9电气与信息工程学院计算机系制作3字符数组2字符串的输出1、puts(str);2、printf(%s”,str);puts将字符串的内容显示到标准输出设备——屏幕上,并换行。2019/9/9电气与信息工程学院计算机系制作3字符数组2运行如下程序第一次:输入face,观察结果第二次:输入123abc,观察结果lesson11_11_1.clesson11_11_2.c#includestdio.h#includestdlib.hintmain(){charnum1[100];gets(num1);puts(num1);return0;}#includestdio.h#includestdlib.hintmain(){charnum1[100];scanf(%s,num1);printf(%s,num1);return0;}2019/9/9电气与信息工程学院计算机系制作3字符数组2练习1:从键盘输入一个单词,然后将其反着输出,例如输入face输出:ecafface\0数组ch2019/9/9电气与信息工程学院计算机系制作3字符数组2练习2:从键盘输入一个字符串,将每个字符往前移动一个位置,最后一个移到第一个。例如输入1234输出23411234\0数组ch2341\0lesson11_ktlx2.c2019/9/9电气与信息工程学院计算机系制作gets(char*str);从键盘输入字符串puts(char*str);将字符串在屏幕上输出atof(char*str);将字符串转换成小数atoi(char*str);将字符串转换成int整数atol(char*str);将字符串转换成long整数itoa(intnum,char*str,intradix);将num转换成radix进制的字符串ltoa(longnum,char*str,radix);将num转换成radix进制的字符串strlwr(char*str);将str转换成小写strupr(char*str);将str转换成大写strlen(char*str);求str的长度strcmp(char*str1,char*str2);比较str1和str2的大小,如果str1str2返回负数,str1==str2,返回0,str1str2,返回正数strcpy(char*str1,char*str2);将字符串str2拷贝到str1中1strcat(char*str1,char*str2);将字符串str2连接到str1后2019/9/9电气与信息工程学院计算机系制作3字符数组2字符串转换成数值类型atof(str);atoi(str);atol(str);其中str是一个字符串。atof()的返回类型是double,它可以将字符串str转换成一个双精度数值;atoi()的返回类型是int,它可以将字符串str转换成普通整型;atol()的返回类型是long,它可以将字符串str转换成长整型(long)。2019/9/9电气与信息工程学院计算机系制作3字符数组2例1:将用户以字符串形式输入的两个实型数值转换成double类型,并显示输出这两个实型数值及它们相加的结果。2019/9/9电气与信息工程学院计算机系制作#includestdio.h#includestdlib.hintmain(){charnum1[20],num2[20];doubled1,d2,sum;printf(\nEnterthefirstnumber:);gets(num1);/*输入第1个用字符串表示的实型数值*/printf(\Enterthssecondnumber:);gets(num2);/*输入第2个用字符串表示的实型数值*/d1=atof(num1);/*将第1个字符串转换成double类型*/d2=atof(num2);/*将第2个字符串转换成double类型*/sum=d1+d2;/*将2个double类型数值相加*/printf(\n%s+%s=%.3lf,num1,num2,sum);/*显示结果*/return0;}lesson11_01.c2019/9/9电气与信息工程学院计算机系制作3字符数组2数值类型转换成字符串itoa(num,str,radix);ltoa(num,str,radix);其中str用于存放结果的字符串,radix是用户指定的进制数,它的取值必须介于2~36之间。在itoa()函数中的num是一个int类型的数值;在ltoa()函数中的num是一个long类型的数值。2019/9/9电气与信息工程学院计算机系制作3字符数组2例2:将用户输入的长整型(long类型)数值转换成以字符串形式表示的十六进制、八进制和二进制数值,并显示输出。2019/9/9电气与信息工程学院计算机系制作#includestdio.h#includestdlib.hintmain(){charstr[33];longvalue;printf(\nEnteralongnumber:);scanf(%ld,&value);/*输入一个long类型的数值*/ltoa(value,str,16);/*转换成用字符串形式表示的十六进制数值*/printf(\nThehexadecimalof%ldis%s,value,str);ltoa(value,str,8);/*转换成用字符串形式表示的八进制数值*/printf(\nTheoctadecimalof%ldis%s,value,str);ltoa(value,str,2);/*转换成用字符串形式表示的二进制数值*/printf(\nThebinaryof%ldis%s,value,str);return0;}lesson11_02.c2019/9/9电气与信息工程学院计算机系制作3字符数组2大小写转换strlwr(str);strupr(str);str是一个字符串。标准函数strlwr()可以将字符串str中出现的所有大写字母转换成小写字母;标准函数strupr()可以将字符串str中出现的所有小写字母转换成大写字母。2019/9/9电气与信息工程学院计算机系制作3字符数组2计算字符串长度strlen(str);这个函数的功能是返回字符串中所包含的字符个数,即字符串长度。字符串结束标志‘\0’不计算在内。字符串比较strcmp(str1,str2);两个字符串进行比较时将依据每个字符对应的ASCII编码决定其大小。2019/9/9电气与信息工程学院计算机系制作3字符数组2例4:假设用户的密码是“administrators”,下面这个程序将用于检测用户输入的密码是否正确。如果不正确,给出相应的提示信息,并请求用户重新输入。分析:循环的从键盘输入一个字符串,用来和administrators比较,如果相等结束循环2019/9/9电气与信息工程学院计算机系制作#includestdio.h#includestring.hintmain(){charpassword[20];/*存放用户输入的密码*/printf(\nEnterpassword:);gets(password);/*输入密码*//*检测用户输入的密码,如果不正确,给出提示,并请求重新输入*/while(strcmp(password,administrators)!=0){printf(\nInvalidpassword\n\n);printf(Enterpassword,again:);gets(password);}printf(OK);/*输入正确,显示OK*/return0;}lesson11_04.c2019/9/9电气与信息工程学院计算机系制作3字符数组2字符串拷贝strcpy(str1,str2);其中str2是将要被拷贝的字符串,str1是用于存放拷贝结果的存储区域。字符串连接strcat(str1,str2);其中str1和str2是两个字符串。这个函数的功能是:将str2连接在str1之后,并在结束处添加一个字符串结束符‘\0’2019/9/9电气与信息工程学院计算机系制作3字符数组2例5:根据用户的选择输出相应的字符串。分析:1、定义好需要输出的字符串2、从键盘输入一个数3、判断输入的数,根据要求连接成一个新的字符串后输出2019/9/9电气与信息工程学院计算机系制作#includestdio.h#includestring.hintmain(){charstr1[80]=Thisisa;charstr2[]=program.;charstr3[]=Java;charstr4[]=Pascal;charstr5[]=C;charstr6[]=C++;intchoice;printf(\n===MENU==\n);/*菜单*/printf(\nJava................1);printf(\nPascal.............2);printf(\nC....................3);printf(\nC++................4);printf(\nchoice:);scanf(%d,&choice);/*用户做出选择*/lesson11_15.c2019/9/9电气与信息工程学院计算机系制作switch(choice){/*根据用户的选择拼接字符串*/case1:strcat(str1,str3);strcat(str1,str2);break;case2:strcat(str1,str4);strcat(str1,str2);break;case3:strcat(str1,str5);strcat(str1,str2);break;case4:strcat(str1,str6);strcat(str1,str2);break;default:strcpy(str1,Error);b