C语言程序设计实例教程课件:数组_第1页
C语言程序设计实例教程课件:数组_第2页
C语言程序设计实例教程课件:数组_第3页
C语言程序设计实例教程课件:数组_第4页
C语言程序设计实例教程课件:数组_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数组数组概述5.1一维数组5.2二维数组5.3字符数组5.45.1数组概述在程序设计中,为了处理方便,对于一批类型相同的数据,如学生成绩,可以利用数组来存储,这样,既能从整个数组出发去处理其中的个别元素,如某一个学生的成绩,也能以统一方式处理数组的一批元素或所有元素,如部分或所有学生的成绩。而后一种处理方式是由一批元素构成的数组和一批独立命名的变量之间的主要区别。5.1数组概述数组是C语言提供的一种常用的构造数据类型。数组是数目固定,类型相同的若干变量的有序集合。在程序中,主要利用数组来处理一批类型相同的数据。每个数组都有一个名字,称为数组名。它表示内存中一块连续的存储区域。组成数组的变量称为数组元素,它们可以是基本数据类型或者是构造数据类型。数组元素按顺序分配在内存中一块连续的存储区域中,每个元素的类型相同并占用相同大小的内存单元。数组元素是一种变量,只是数组中的元素没有独立的变量名,而是用数组名以及元素在数组中的位置号来标识该元素。数组元素在数组中的位置号通常称为下标,所以数组元素也称为下标变量,并通过下标相互区分。数组可以有多个下标,下标的个数称为数组的维数。数组按维数的多少可分为一维数组和多维数组5.2一维数组在C语言中使用数组之前必须先进行定义。数组要占用内存空间,定义时需要指定数组有多少个元素以及类型,使编译系统可以分配相应的内存空间。数组的维数在其定义中给定。5.2.1一维数组的定义与初始化

1.一维数组定义

一般格式为:存储类型数据类型数组名[常量表达式];存储类型与变量声明中的存储类型相同。数据类型可以是所有的C语言数据类型(包括基本数据类型或构造类型)。它指明了数组的数据类型也就是该数组所有元素的数据类型,对于同一个数组,其所有元素的数据类型都是相同的。数组名是标识符。数组名后的一对方括号是必须的,它指明前面的标识符是数组名而不是普通变量名。方括号中的常量表达式表示数组元素的个数,也称为数组的长度。要求必须是整型。

例:数组定义方式#include<stdio.h>#defineSIZE20voidmain(){intn=5;inta1[5];/*可以,整型常量*/inta2[5*2+1];/*可以,整型常量表达式*/staticdoublea3[sizeof(int)];/*可以,sizeof表达式被认为是一个整型常量*/chara4[SIZE];/*可以,符号常量*/inta5[-3];/*不可以,数组大小必须大于0*/inta6[0];/*不可以,数组大小必须大于0*/inta7[4.5];/*不可以,数组大小必须是整数*/inta8[(int)4.5];/*可以,强制转换为整型*/inta9[n];/*C99之前不可以*/}5.2.1一维数组的定义与初始化

一旦定义了一个数组,系统将分配一块连续内存空间来存放它的所有元素,数组元素通过数组名和下标来表示。例如有如下定义:inta[5];在上面的程序中,定义了一个自动(auto)型的整型数组a,方括号“[]”中的整型常量“5”指定该数组共有5个数组元素,分别为:a[0],a[1],a[2],a[3],a[4]。每个元素占用一个整型大小的内存空间。注意:数组元素下标从0开始计算,其它元素顺序编号。2.一维数组的初始化数组初始化是指在数组定义的同时给数组元素赋予初值。数组初始化是在编译阶段进行的,这样将减少运行时间,提高效率。数组初始化的一般格式为:存储类型数据类型数组名[常量表达式]={值,值……值};其中在一对花括号“{}”中的各个值即为各元素的初值,各值之间用逗号间隔。2.一维数组的初始化初始化时,花括号“{}”中的初值的个数通常和数组元素的个数一致。例如:inta[5]={23,57,42,36,89};

表示定义了一个有5个数组元素的数组a,初始化列表花括号“{}”中的初值的个数也是5个。其初始化结果是将各个初值按顺序赋予对应的数组元素。即a[0]=23,a[1]=57,a[2]=42,a[3]=36,a[4]=89。2.一维数组的初始化如果初始值的个数少于数组元素个数,其余的元素将被初始化为零。

例如:intb[5]={23,57,42};

表示定义了一个有5个数组元素的数组b,初始化列表花括号“{}”中的初值个数只有3个。其初始化结果是只给b[0]到b[2]前3个元素赋值,而后2个元素自动赋0值。即b[0]=23,b[1]=57,b[2]=42,b[3]=0,b[4]=0。如果初值的个数多于数组元素的个数,将产生编译错误。2.一维数组的初始化如果初始化时,方括号“[]”中的常量表达式为空,即省略数组元素的个数,那么编译器将用初始化列表花括号“{}”中初值的个数来隐式地指定数组的大小。例如:inta[]={23,57,42,36,89};则编译器根据初始化列表中初值的个数指定数组的大小为5。如果不初始化数组,自动(auto)型的数组元素和未初始化的自动(auto)型普通变量一样,其中存储的是无用的数据。5.2.2一维数组元素的引用数组元素是组成数组的基本单元。对数组的引用最终都是通过对其元素的引用而实现的。数组元素可以通过数组名加上用方括号“[]”括起来的下标表达式来引用。引用数组元素一般格式为:数组名[下标表达式]其中下标表达式可以为常量、变量或表达式,要求必须为整型。下标表达式计算的结果是元素在数组中的下标。实际上,包括下标的方括号“[]”是一个C运算符,称为下标运算符,其优先级和结合性与圆括号“()”相同。下标表达式如果是整型常量,则可直接明确的指定要访问的是那一个数组元素。5.2.2一维数组元素的引用下标表达式如果是变量,则可比较灵活的指定要访问的是哪个数组元素。例如输出数组c中所有的元素#include<stdio.h>voidmain(){intc[10]={6,-30,45,0,12,-89,2,-7,56,93};for(inti=0;i<10;i++)printf("%d\t",c[i]);printf("\n");}【例5.1】输入10个学生的成绩,要求输出所有高于平均分的成绩(用数组处理)。#include<stdio.h>#defineSIZE10voidmain(){inti;floata[SIZE],avg,sum=0;/*定义一个数组用来存放学生成绩*/for(i=0;i<SIZE;i++) {scanf("%f",&a[i]);/*循环中逐个元素的输入*/ sum=sum+a[i];/*求和*/}avg=sum/SIZE;printf("avg=%f\n",avg);

for(i=0;i<SIZE;i++) if(a[i]>avg)/*循环中依次判断各数组元素*/printf("%.2f\t",a[i]);printf("\n");}5.2.2一维数组元素的引用在引用数组元素时要注意,如果用超出数组的合法下标范围的表达式进行数据的访问,会导致越界访问的错误。【例】越界访问示例一#include<stdio.h>voidmain(){intc[10]={6,-30,45,0,12,-89,2,-7,56,93};printf("%d\n",c[10]);/*没有这个数组元素*/}C编译器不会检查下标的合法性。如果使用了错误的下标,程序执行结果是不可知的,程序或者能运行,但是运行结果可能很奇怪,也可能会中断程序的执行。【例】越界访问示例二#include<stdio.h>voidmain(){inta=11,b[2],c=99,i;printf("a=%d\tc=%d\n",a,c);for(i=-1;i<3;i++)b[i]=2*i;for(i=-1;i<4;i++)printf("b[%2d]=%d\n",i,b[i]);printf("a=%d\tc=%d\n",a,c);}程序中通常使用数组存储数据,C语言不支持把数组作为一个整体来赋值,也不支持用花括号括起来的列表形式进行赋值(初始化的时候除外)。下面例子中展示了一些不允许的赋值方式。【例】无效的数组赋值#include<stdio.h>voidmain(){inta[10],b[10]={1,2,3,4,5};/*初始化是可以的*/a=b;/*不允许*/a={1,2,3,4,5};/*不允许*/a[10]={1,2,3,4,5};/*不允许*/}程序中要对数组赋值,只能一个一个元素地逐个赋值,通常是利用循环进行的。【例】数组元素赋值#include<stdio.h>voidmain(){inti,a[5],b[5]={1,2,3,4,5};for(i=0;i<5;i++)a[i]=b[i];/*循环中依次赋值*/for(i=0;i<5;i++)printf("%d\t",a[i]);printf("\n");}程序中不能用scanf()函数直接赋值给整个数组(字符数组除外)。下面例子中展示了一些不正确的用scanf()函数给数组元素赋值的方式。【例】无效的用scanf()函数给数组元素赋值#include<stdio.h>voidmain(){inta[10];scanf("%d%d%d%d%d%d%d%d%d%d",&a);/*不正确*/scanf("%d%d%d%d%d%d%d%d%d%d",a);/*不正确*/scanf("%d",a);/*不正确*/scanf("%d",&a);/*不正确*/

}也不能用printf()函数直接输出整个数组(字符数组除外)。下面例子中展示了一些不正确的用printf()函数输出数组元素的方式。【例】无效的用printf()函数输出数组元素#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};printf("%d\n",a);/*不正确*/printf("%d,%d,%d,%d,%d\n",a);/*不正确*/

}程序中用scanf()函数给数组元素赋值以及用printf()函数输出数组元素值时通常要用到循环。【例】数组元素的输入输出#include<stdio.h>voidmain(){inta[5],i;for(i=0;i<5;i++) scanf("%d",&a[i]);for(i=0;i<5;i++)

printf("%d\n",a[i]);

}5.2.3一维数组作为函数参数

数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参和实参使用。1.数组元素作函数实参数组元素作为函数实参使用与处理普通变量没有什么差别,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。如果在函数中形参发生改变,对作为实参的数组元素是没有影响的。【例5.2】数组元素作函数实参2.数组名作为函数参数

【例5.3】数组名作为函数参数注意:数组名作为函数参函数时,形参和实参都必须是类型相同的数组。另外,为了防止越界访问,将数组传递给被调函数时,通常也将其长度同时传递给被调函数,注意:在用数组名作函数参数时,不是把实参数组的每一个元素的值都赋予形参数组的各个元素。编译器不为形参数组分配内存。函数调用时,形参数组名从实参数组那里取得首地址之后,也就等于有了实际的存储空间(与实参数组共用)。5.2.4一维数组应用举例

1.统计【例5.4】有一个学院在学生会换届选举中由全体学生无记名投票直选学生会主席,共有10名候选人,每个人的代号分别用1,2,3,…,10表示。每个学生填写一张选票,若同意某名候选人则在其姓名后画个圆圈即可(只能选一个)。编写一个程序根据所有选票统计出每位候选人所得票数,其中每张选票上所投候选人的代号从键盘输入,当输入完所有选票后用-1作为数据输入结束的标志。

2.排序【例5.5】已知有10个整数:24,56,8,47,63,82,27,15,90,39,编写一个程序按照从小到大的顺序输出。第一趟j=0第二趟j=1245684763824475663i=1245684763第三趟j=2i=2248

564763824475663i=3248475663i=42484756633.查找【例5.6】已知有10个整数:22,10,44,17,31,51,89,68,120,95,从键盘输入一个给定值x,在该序列中查找是否有与给定值x相等的一个数。1)顺序查找2)二分查找4.插入【题目】已知有10个整数:3,6,18,28,54,68,87,105,127,162,已从小到大排好序,编写一个程序将一给定值x插入到该序列中并保持原来的从小到大的顺序不变。给定值x从键盘输入。思考题:5.3二维数组5.3.1二维数组的定义与初始化1.二维数组的定义二维数组定义的一般格式是:存储类型数据类型数组名[整型表达式1][整型表达式2]二维数组定义的要求和一维数组定义的一样,只是多了一对方括号“[]”极其整型表达式。其中整型表达式1表示第一维(行)的长度,整型表达式2表示第二维(列)的长度。【例】二维数组定义#include<stdio.h>voidmain(){inta[3][4];introw=2,col=3;doubleb[row][col];/*变长数组,C99之前不可以*/}假设第一维(行)的长度为m,第二维(列)的长度为n,则整个数组的元素个数为m×n个。二维数组的数组元素用数组名和两个下标表示,则数组元素行下标的取值范围是0~m-1之间的m个整数,列下标的取值范围是0~n-1之间的n个整数。例如,上面程序中定义的二维数组a,共有3×4=12个数组元素,行下标的取值范围是0~2;列下标的取值范围是0~3。2.二维数组的初始化1)按行分组赋值将初值分别用花括号“{}”

括起来进行按行分组,例如:【例】按行分组初始化#include<stdio.h>voidmain(){inta[2][3]={{80,75,92},{61,65,71}};}2)按行连续赋值初值之间没有用花括号“{}”按行分组,只有最外面的一对花括号“{}”。例如:【例】按行连续初始化#include<stdio.h>voidmain(){inta[2][3]={80,75,92,61,65,71};}系统将自动用初值按顺序一行一行初始化各数组元素。5.3

.2二维数组数组元素的引用

二维数组的元素也称为双下标变量,其表示使用的格式为:数组名[下标表达式][下标表达式]其中下标表达式可以为常量、变量或表达式,要求必须为整型。对行下标和列下标都要进行运算来唯一指定二维数组中的一个元素使用二维数组的元素同使用一维数组的元素和普通变量一样,既可以用它存储数据,又可以取出它的值参与运算。【例】引用数组元素时两个下标都为整型常量#include<stdio.h>voidmain(){inta[3][4]={{20,51,-64,8},{42,97,33,84},{102,76,12,9}};printf("%d\n",a[0][1]);}【例】引用数组元素时行下标为整型常量,下列标为整型变量#include<stdio.h>voidmain(){inta[3][4]={{20,51,-64,8},{42,97,33,84},{102,76,12,9}};intcolumn;for(column=0;column<4;column++)a[1][column]*=2;for(column=0;column<4;column++)printf("%d\t",a[1][column]);printf("\n");}【例】引用数组元素时两个下标都为变量#include<stdio.h>voidmain(){inta[3][4]={{20,51,-64,8},{42,97,33,84},{102,76,12,9}};inttotal=0,row,column;for(row=0;row<3;row++)for(column=0;column<4;column++)total+=a[row][column];printf("%d\n",total);}5.3.3二维数组应用举例【例5.7】有下列一个3×4的矩阵,要求编写程序输出其中值最大的那个元素,以及其所在的行号和列号。12-349876-1016-52【例5.8】一个小组有5位学生,每个人有三门课程的考试成绩,如下表所示。编写一个程序计算全组学生的各门课程的分科平均成绩和总平均成绩。

课程成绩姓名语文数学英语张三807592王五616571李四536370赵一858790周六7677855.4字符数组5.4.1字符串与字符数组字符串是一个或多个字符的序列。下面是一个字符串的例子:"Howareyou"这里双引号“”不是字符串的一部分。他们只是通知编译器其中包含了一个字符串。C语言中没有为字符串定义专门的变量类型,而是把它存储在字符数组中。双引号中的字符加上编译器自动添加的结束符‘\0’,作为一个字符串被存储在相邻的内存单元中,每个字符占用一个单元。字符数组就是数据类型为字符型的数组,每个元素可以用来存放一个字符。如果字符数组包含了空字符‘\0’,那么字符数组的内容就构成一个字符串,其中空字符‘\0’标志着字符串的结尾。但如果字符数组中没有空字符‘\0’,则不能表示一个字符串。

5.4.2字符数组的定义与初始化

1.字符数组定义

字符数组定义形式与其它类型数组相同。例如,下面定义了一个有10个元素的字符数组c(其中每个数组元素中可以存放一个字符):【例】字符数组定义#include<stdio.h>voidmain(){charc[10];}字符数组也可以是二维或多维数组。例如,下面定义了一个5行10列的二维字符数组:【例】二维字符数组定义#include<stdio.h>voidmain(){chard[5][10];}2.字符数组初始化

字符数组也允许在定义时作初始化赋值。【例】字符数组初始化#include<stdio.h>voidmain(){charstr1[10]={‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,’m’};}当对全体元素赋初值时也可以省去长度说明。例如:【例】省去长度说明的字符数组初始化#include<stdio.h>voidmain(){charstr2[]={‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,’m’};}【例】用字符串常量进行初始化#include<stdio.h>voidmain(){charstr4[50]="Youcanseeit.";}当然,进行初始化时如果省略数组大小,让编译器决定数组大小是很方便的。例如:【例】用字符串常量进行初始化时省略数组大小#include<stdio.h>voidmain(){charstr5[]="program";}5.4.3字符数组的引用

字符数组的引用和其他类型数组一样,通过数组名加上用方括号“[]”括起来的下标表达式来引用数组中的各个元素。【例5.9】字符数组中各元素的访问#include<stdio.h>voidmain(){inti=0;charstr[]="program";while(str[i]!='\0')//判断字符串是否结束

{str[i]=str[i]-32;//小写字母转化为大写

printf("%c",str[i]);//单个元素(字符)输出

i++;}printf("\n");}5.4.4字符串输出和输入

1.字符串输出(1)printf()函数在程序中还可以使用带%s格式控制符的printf()函数,输出一个字符串,但需要一个字符串地址如字符数组名作为对应的输出项。【例】printf()函数带%s格式控制符输出#include<stdio.h>voidmain(){ charstring[]="stringliteral";printf("%s\n",string);//字符数组名作为输出项

printf("%s\n",&string[3]);//数组元素的地址作为输出项}(2)puts()函数使用puts()函数输出字符串,只需要给出字符串地址作为参数。【例】puts()函数示例#include<stdio.h>voidmain(){charstring[]="stringliteral";puts("Thisisanexample");//字符串常量作为参数puts(string);//字符数组名作为参数

puts(&string[3]);//数组元素的地址作为参数}puts()函数和printf()函数都可以用于输出字符串,例如,下面两条语句效果一样。printf("%s\n",string);puts(string);printf()函数与puts()函数主要区别在于:printf()函数并不会自动添加换行符而在新行上输出每个字符串。使用printf()函数时,必须明确指出需要另起一行的位置,并添加换行符‘\n’

进行换行。所以printf()函数使用起来没有puts()函数方便,需要键入更多的代码,不过用printf()函数可以很简单的在一行上输出多个字符串。2.字符串输入

要把一个字符串读到程序中,必须首先预留存储字符串的空间,然后使用输入函数来获取这个字符串。最简单的方法是定义一个足够大小的字符数组,用来存放该字符串。(1)scanf()函数使用带%s格式控制符scanf()函数可以用来读入一个字符串。【例】scanf()函数带%s格式控制符输入#include<stdio.h>voidmain(){charname[51];printf("What'syourname?\n");scanf("%s",name);printf("Nicename,%s.\n",name);}scanf()函数开始读取输入后,会在遇到的第一个空白字符:空格(blank)、制表符(tab)或换行符(newline)处停止读取。因此,使用%s的scanf()函数只会把一个单词而不是把整个语句作为字符串读入。(2)gets()函数使用gets()函数可以从系统的标准设备(通常是键盘)获取一个字符串。因为字符串没有预定的长度,所以gets()函数需要知道输入何时结束。解决方法是读字符串直到遇到一个换行符(newline),按回车键可以产生这个字符。gets()函数将读取换行符之前(不包括换行符)的所有字符,并在这些字符后添加一个空字符‘\0’。然后把这个字符串交给调用它的程序。gets()函数会将读取的换行符丢弃,这样下一次读取就会在新的一行开始。【例】gets()函数示例#include<stdio.h>voidmain(){charname[51];printf("What'syourname?\n");gets(name);printf("Nicename,%s.\n",name);}scanf()函数和gets()函数主要区别在于如何决定字符串何时结束。scanf()函数遇到的第一个空白字符(空格、制表符或换行符)停止读取。gets()函数在遇到的第一个换行符停止读取。scanf()函数更基于获取单词而不是获取字符串。5.4.5字符数组应用举例

【例5.10】编写一个程序,实现从键盘上输入一个字符串,将该字符串中的小写字母变为大写字母,而其它字符保持不变。分析:先定义一个足够大小的字符数组str,存放从键盘上输入一个字符串。从该字符数组第一元素str[0](存放着字符串第一个字符)开始,每个数组元素逐一(即字符)判断,看是否为小写字母,如果是就进行转换。如果不是则不变,直到该字符串结束【例5.11】“回文”是从前向后和从后向前读起来都一样的句子。例如英文中的:“level”、“radar”等。编写一个程序判断一个字符串是否为一个“回文”。分析:先用字符串的第一个字符和最后一个字符进行比较看是否相等,如果相等就继续比较第二个字符和倒数第二个字符,以此类推。比较过程中只要有一次比较不相等,则可判断不是“回文”,如果比较到最中间的字符时都相等则可以判断是“回文”。5.4.6字符串处理函数

由于字符串的使用非常广泛,C标准库提供了许多专门处理字符串的函数(参见附录C),这些函数的原型在头文件“string.h”里说明。要使用标准字符串处理函数时,程序前部应写:#include<string.h>1.求字符串长度函数strlen()函数原型:intstrlen(constchars[])本函数的功能是求出字符串的长度,也就是字符串里的字符个数。在计算字符个数时不计表示字符串结束的空字符‘\0’。该函数只有一个类型为字符的数组参数,参数前面使用了关键字const表示该参数的内容在函数执行中是不允许改变的。该函数对应的实参可以是任何形式的字符串,如一个字符串常量、一个一维字符数组等。函数的返回值是求出的字符串长度。【例】求字符串长度函数示例#include<string.h>#include<stdio.h>voidmain(){chara[10]="",b[]="a",c[20]="StringLength";printf("alengthis:%d\n",strlen(a));//调用字符串长度函数

printf("blengthis:%d\n",strlen(b));printf("clengthis:%d\n",strlen(c));printf("constantlengthis:%d\n",strlen("constant"));}2.字符串复制函数strcpy()函数原型:char*strcpy(char*dest,constchar*src)本函数的功能是把第二个参数src所指字符串复制到第一个参数dest所指的存储空间(即dest字符数组)中。该函数有两个字符指针参数,因为每个字符指针是指向相应字符串的首地址。而字符数组名就是所在字符串的首地址。所以字符数组名也就是一个字符指针。字符指针参数说明同字符数组参数说明是等价的,既该函数的两个参数说明同chardest[]和constcharsrc[]是等价的。参数dest或src都能接受由实参传递来的一个字符指针,既一个字符串存储空间的首地址。因为该函数只需要从第二个参数src字符串中读取内容,不需要修改它,所以用const修饰,而对于第一个参数dest,需要修改它的内容,所以就不能用const修饰。函数的返回值是一个字符指针,即dest字符数组的首地址。dest应是一个足够大的字符数组,以保证字符串复制不越界。

【例】字符串复制函数示例#include<string.h>#include<stdio.h>voidmain(){chara[10],b[10]="strcopy",c[20];strcpy(a,b);//调用字符串复制函数

strcpy(c,"constant");printf("a=%s\tb=%s\t",a,b);printf("c=%s\n",c);}1.字符串比较函数strcmp()函数原型:intstrcmp(constchar*s1,constchar*s2)本函数的功能是比较s1所指字符串与s2所指字符串的大小,若字符串s1大于字符串s2时返回一个大于0的值(C标准没有规定采用什么值);若两个字符串s1和s2相同时返回0;若字符串s1小于字符串s2时返回一个小于0的值。判断字符串大小的标准是字典序(普通英语词典里排列单词词条时所用的顺序)。该函数有两个字符指针参数,各自指向相应的字符串。函数的返回值为整型。

【例】字符串复制函数示例#include<string.h>#include<stdio.h>voidmain(){chara[10]="int",b[10]="double",c[20]="float";printf("%d\n",strcmp(a,b));//调用字符串复制函数

printf("%d\n",strcmp(b,c));printf("%d\n",strcmp("int",a));}4.字符串连接函数strcat()函数原型:char*strcat(char*dest,constchar*src)。本函数的功能是把第二个参数src所指字符串复制到第一个参数dest所指字符串中已有字符的后面,形成相当于两个串连在一起的字符串。这里要求dest所指字符串之后有足够大的存储空间用于存储src串。该函数有两个字符指针参数,各自指向相应的字符串。函数的返回值为dest的指针。【例】字符串连接函数示例#include<string.h>#include<stdio.h>

voidmain(){charb1[40]="Programming",b2[10]="C";strcat(b1,"language");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论