组织同类型数据_第1页
组织同类型数据_第2页
组织同类型数据_第3页
组织同类型数据_第4页
组织同类型数据_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序的数据结构基础第2篇数据结构+算法=程序C语言提供的数据持久化技术,用来把数据存储在外部存储器上一种基于变量地址的派生数据类型一种描述一类对象属性的构造型数据类型一种用来组织同类型数据的构造型数据类型数组结构体指针文件这一篇主要介绍C语言提供的4种构造型数据类型:顺序地组织同类型数据——数组类型数组是一种用于组织同类型数据的构造型数据类型,其特征是类型相同、顺序存储、随机访问、空间连续。第5单元5.1数组基础数组定义、数组初始化、数组元素引用5.1.1扑克牌的表示与数组定义1.用数组存储扑克牌101~113,分别表示红桃A~红桃K;201~213,分别表示方块A~方块K;301~313,分别表示梅花A~梅花K;401~413,分别表示黑桃A~黑桃K;501、502,分别表示大王、小王。这样,54张扑克牌可以用一个int类型数组card表示和存储,而每个元素以其在数组中下标(subscript)或索引(index)区分,如card[0]、card[1]、card[2]、…、card[53]分别表示54张扑克牌。2.数组的定义数组定义的一般格式是数组用一个名字存储多个同类型数据。使用数组前,必须先进行定义。存储扑克的数组card可以用如下声明定义。

intcard[54];

数组类型

数组名

[数组长度

];这个声明语句定义了一个名字为card的数组;它有54个元素——下标变量,称数组大小为54;并且每个元素都是int类型,称这是一个int类型的数组。3.数组初始化数组card的初始化语句为 intcard[54]={101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,302,303,304,305,306,307,308,309,310,311,312,313,401,402,403,404,405,406,407,408,409,410,411,412,413,501,502};注1:C语言允许对数组中左面的部分元素初始化。例如,可以写成intcard[54]={101,102};注2:对于将全部元素都初始化时,在声明语句中可以省略数组长度。例如intcard[]={101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,302,303,304,305,306,307,308,309,310,311,312,313,401,402,403,404,405,406,407,408,409,410,411,412,413,501,502};这样,只有前两个元素被初始化,后面元素的值还是不确定的只对部分元素初始化时,不可以省略数组大小。4.数组的特点各元素具有相同类型。这个类型称为数组基类型。元素之间具有顺序性——逻辑上的顺序性和物理存储上的顺序性,并用下标表示这种顺序关系。(1)(2)一个数组的所有元素占有一片连续的内存空间。(3)数组的元素可以用下标随机访问。注意:下标从0开始(4)5.1.2扑克牌查找:数组元素引用与数组名参数1.数组元素的引用数组名加上括在方括号中的下标。例如card[0]、card[1]、card[2]、card[3]、…的语法意义,就相当于一组变量,称为下标变量。用下标变量可以随机地访问数组中的任何一个元素,对其赋值或引用其值。代码5.1用赋值方法给给定每张扑克克牌的值,输输出各张扑克克牌的值并搜搜索一张牌。。#include<stdio.h>intmain(void){intcard[54],i,j,k,x,flag=-1;/*数组元素赋值值*/for(i=0;i<4;i++)/*在重复结构中中给前52个元素赋值*/for(j=0;j<13;j++)card[i*13+j]=100*(i+1)+j+1;card[52]=501;/*给最后两张扑扑克牌赋值*/card[53]=502;/*输出各张牌的的值*/for(i=0;i<=53;i++){printf("card[%d]=%d,",i,card[i]);}/*搜索一张扑克克牌*/printf("\n输入要查找的的牌:");scanf(“%d”,&x);for(k=0;k<54;k++)/*搜索为x的牌 */if(card[k]==x){flag=k;break;}if(flag==-1)printf("\n找不到要找的的牌!");elseprintf("\n这张牌是第%d张牌。",k);return0;}2.用函数实现数数组操作功能能与数组名参参数代码5.3扑克牌搜索函函数。intsearchCard(intpk[54],intx){intk;for(k=0;k<54;k++)/*搜索为为x的牌*/if(pk[k]==x){returnk;}return-1;}代码5.4函数searchCard()的测试试主函函数。。#include<stdio.h>intsearchCard(intpk[],intx);intmain(void){intx,f;intcard[54]={101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,302,303,304,305,306,307,308,309,310,311,312,313,401,402,403,404,405,406,407,408,409,410,411,412,413,501,502};printf("\n输入要要查找找的牌牌:");scanf("%d",&x);f=searchCard(card,x);if(f==-1)printf("\n找不到到要找找的牌牌!\n");elseprintf("\n要找的的是第第%d张牌!!\n",f);return0;}在C语言中中数组组名有有两种种含义义:一是用用来标标识数数组;;二是代代表数数组的的首地地址。。因此,,数组组名作作为函函数参参数,,在函函数被被调用用时所所传递递的不不是数数组的的内容容,而而是数数组在在内存存中的的起始始地址址。使用数数组名名作为为函数数参数数,需需要用用一对对方括括号明明确地地指明明它是是一个个数组组,并并且要要指出出其数数组类类型。。除非特特殊情情况,,一般般数组组的大大小可可以不不传输输。因因为在在调用用时,,会用用实际际数组组参数数的大大小来来初始始化形形式数数组参参数的的大小小。3.函数的的测试试要测试试函数数,需需要为为之设设计一一个驱驱动函函数。。在C语言中中,一一般用用主函函数作作为驱驱动函函数。。驱动动函数数要为为被测测试函函数准准备所所需要要的实实际参参数。。对于于函数数searchCard(),需要要有一一个为为之提提供可可操作作的数数组。。扑克洗洗牌的的随机机模拟拟1.一次洗洗牌模模拟算算法在0~53之间产产生一一个随随机数数rdm,将card[0]与card[rdm]交换;;在1~53之间产产生一一个随随机数数rdm,将card[1]与card[rdm]交换;;在2~53之间产产生一一个随随机数数rdm,将card[2]与card[rdm]交换;;……在i~53之间产产生一一个随随机数数rdm,将card[i]与card[rdm]交换;;……这个过过程可可以描描述为为:12…0i…rdm53…已洗好部分未洗好部分下标内容tempfor(i=0;i<54;++i){在i到53之间产产生随随机数数rdm;将card[i]与card[rdm]交换;}代码5.5一次洗洗牌模模拟函函数。。#include<stdlib.h>#include<time.h>voidshuffle(intcard[]){inti,rdm,temp;srand(time(00));/*用时间间函数数作为为伪随随机数数序列列种子子*/for(i=0;i<54;++i){rdm=rand()%(54-i)+i;/*生成一一个[i,53]之间的的随机机数*/temp=card[i];/*交换两两个数数组元元素的的值*/card[i]=card[rdm];card[rdm]=temp;}}代码5.6多次洗洗牌模模拟函函数。。#include<stdlib.h>#include<time.h>voidshuffle(intcard[]){inttimes=1;/*洗牌次次数*/inti,j,rdm,temp;srand(time(00));/*用时间间函数数作为为伪随随机数数序列列种子子*/printf("\n请输入入洗牌牌次数数:");scanf("%d",×);for(j=0;j<times;++j){/*重复n次*/for(i=0;i<54;++i){rdm=rand()%(54-i)+i;/*生成一一个[i,53]之间的的随机机数*/temp=card[i];card[i]=card[rdm];card[rdm]=temp;}}}扑克牌牌整理理:数数组元元素排排序1.冒泡排排序算算法每当一一场扑扑克游游戏结结束后后,人人们总总要把把玩后后被搞搞得乱乱序的的牌进进行整整理,,即按按照一一定的的顺序序排列列好。。对于于本例例来说说,就就是把把card数组中中的元元素进进行排排序。。排序((sorting)也称称分类类,是是指将将一列列数据据按一一定的的规则则排列列。排排序方方法很很多,,例如如,有有交换换法、、选择择法、、希尔尔法、、插入入法等等,不不同的的方法法效率率不同同。本本节仅仅介绍绍一种种在算算法上上具有有代表表性的的交换换排序序算法法——冒泡排序序。7 5 3 9 1 5 7 3 9 1 5 3 7 9 1 5 3 7 9 1 5 3 7 1 9 3 5 1 7 9 3 1 5 7 9 1 3 5 7 9 开始第1轮(n-1)次比较第2轮(n-2)次比较结束第n-1轮…2.扑克牌整整序函数数代码代码5.7使用冒泡泡排序法法的扑克克整理((排序))函数。。voidcardSort(intcard[]){/*扑克整理理方法*/inttemp,i,j;for(j=0;j<53-1;j++)/*总轮数*/for(i=0;i<53-j;i++)/*每轮中次次数*/if(card[i]>card[i+1]){temp=card[i];card[i]=card[i+1];card[i+1]=temp;}}3.扑克牌输输出函数数代码补充代码码:扑克输出出函数。。voidprintCards(intcard[],intcardNum){inti;for(i=0;i<cardNum;i++){printf("card[%d]=%d,",i,card[i]);}}4.整牌函数数的测试试#include<stdlib.h>#include<stdio.h>#include<time.h>/*time()要求的头头文件*/voidshuffle(intcard[]);/*洗牌函数数原型*/voidcardSort(intcard[]);/*整牌函数数原型*/voidprintCards(intcard[],intcardNum); /*输出各张张扑克牌牌*/intmain(void){intcard[]={101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,302,303,304,305,306,307,308,309,310,311,312,313,401,402,403,404,405,406,407,408,409,410,411,412,413,501,502};printf(“\n扑克牌的的初始序序列:\n");printCards(card,54);shuffle(card);printf(“\n洗牌后的的扑克牌牌序列::\n");printCards(card,54);cardSort(card);printf(“\n整牌后的的扑克牌牌序列::\n");printCards(card,54);return0;}扑克发牌牌:二维维数组应应用1.问题描述述与算法法框架发牌(deal)就是把把洗好的的牌,按按照约定定张数逐逐一发送送到玩家家(hand)手中。。hand1hand2hand3hand453…1314121617157861011919201821120453ij代码5.8发牌算法法的C语言描述述。inti=0,j;for(j=0;j<cardNumber;++j){/*cardNumber为每人发牌数数目*/hand1[j]=card[i];card[i]=0;++i;/*card[i]=0象征牌已经被被取走*/hand2[j]=card[i];card[i]=0;++i;/*++i为下一张牌下下标*/hand3[j]=card[i];card[i]=0;++i;hand4[j]=card[i];card[i]=0;++i;}2.用二维数组表表示玩家手中中的牌即一维维用于于表示示玩家家,另另一维维用于于表示示玩家家手中中的牌牌。例例如,,二维维数组组hand采用声声明语语句inthand[4][12];声明后后,就就表示示开辟辟了一一个4××12个int类型存存储空空间,,4表示4个玩家家,12表示每每人手手中有有12张牌。。每个个下标标变量量分别别表示示某个个人手手中的的某张张牌。。例如如,hand[2][5]表示第第3个玩家家手中中的第第6张牌。。(1)引用用二维维数组组元素素,要要使用用两个个下标标,并并且它它们都都用从从0开始的的整型型常量量或整整型表表达式式表示示。(2)二维维数组组初始始化:例如::inta[3][2]={{1,2},{3,4},{5,6}};例如::inta[3][2]={1,2,3,4,5,6};(1)(2)例如::inta[][2]={{1,2},{3,4},{5,6}};(3)例如::inta[3][2]={{1},{3},{5}};可以将将行((第1维)的的长度度省略略,但第2维的大大小不不可以以省略略(4)还可以以对部部分元元素初初始化化,但这时时不可可缺省省第1维的大大小。。3.使用二二维数数组的的发牌牌方法法使用二二维数数组inthand[][]后,用用第1维表示示玩家家;用用第2维表示示给每每位玩玩家的的发牌牌数,,各人人手中中的牌牌分别别是::hand[0][0]、hand[0][1]、hand[0][2]、……、hand[0][11];第1人手中中的牌牌为hand[1][0]、hand[1][1]、hand[1][2]、……、hand[1][11];第2人手中中的牌牌为hand[2][0]、hand[2][1]、hand[2][2]、……、hand[2][11];第3人手中中的牌牌为hand[3][0]、hand[3][1]、hand[3][2]、……、hand[3][11];第4人手中中的牌牌为对于更更一般般的情情况,,需要要先确确定玩玩家数数(handNumber)和每每人发发牌数数(cardNumber)代码5.9使用二二维数数组的的发牌牌函数数。#definecardNumber12/*cardNumber为每人人发牌牌数目目*/#definehandNumber4/*handNumber为玩家家数目目*/voiddeal(intcard[],inthand[][cardNumber]){inti=0,j,k;for(j=0;j<cardNumber;++j)for(k=0;k<handNumber;++k){hand[k][j]=card[i];card[i]=0;++i;}}代码码5.10不传传递递二二维维数数组组的的发发牌牌函函数数。。#definecardNumber12/*cardNumber为每每人人发发牌牌数数目目*/#definehandNumber4/*handNumber为玩玩家家数数目目*/voiddeal(intcard[]){inti=0,j,k;inthand[handNumber][cardNumber];for(j=0;j<cardNumber;++j)for(k=0;k<handNumber;++k){hand[k][j]=card[i];card[i]=0;++i;}for(k=0;k<handNumber;++k){printf("\n第%d人手手中中的的牌牌为为:",k+1);for(j=0;j<cardNumber;++j)printf("%d",hand[k][j]);}}4.发牌牌函函数数的的测测试试使用用代代码码5.9中的的发发牌牌函函数数,,调调用用函函数数需需要要为为其其传传输输如如下下数数据据::·每人人发发牌牌数数目目cardNumber。·玩家家数数目目handNumber。·存储储扑扑克克牌牌的的数数组组首首地地址址。。·存储储玩玩家家手手中中牌牌的的二二维维数数组组首首地地址址。。同时时,,调调用用函函数数还还需需要要对对扑扑克克牌牌数数组组进进行行了了初初始始化化。。#include<stdio.h>#definecardNumber12#definehandNumber4voiddeal(intcard[],inthand[][cardNumber]);voidprintCards(intcard[],intcardNum);/*输出出各各张张扑扑克克牌牌*/intmain(void){inti;intcard[54]={101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,302,303,304,305,306,307,308,309,310,311,312,313,401,402,403,404,405,406,407,408,409,410,411,412,413,501,502};printf("\n扑克克牌牌的的初初始始序序列列::");printCards(card,54);printf("\n发牌牌情情况况::");deal(card);printf("\n发牌牌后后的的底底牌牌::");printCards(card,54);return0;}#include<stdio.h>#definecardNumber12#definehandNumber4voiddeal(intcard[],inthand[][cardNumber]);voidprintCards(intcard[],intcardNum);/*输出出各各张张扑扑克克牌牌*/intmain(void){inthand[handNumber][cardNumber];inti;intcard[54]={101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,302,303,304,305,306,307,308,309,310,311,312,313,401,402,403,404,405,406,407,408,409,410,411,412,413,501,502};printf("扑克牌的初初始序列::");printCards(card,54);deal(card,hand);printf("发牌情况::");for(i=0;i<handNumber;i++){printf("玩家%d手中的牌为为:",i);printCards(hand[i],cardNumber);printf("\n");}printf("发牌后的底底牌:");printCards(card,54);return0;}5.2字符串C语言的字符符串是基于于字符数组组的字符串与字字符数组1.字符串的概概念在C语言中,把把用一对双双撇号括起起来的零个个或多个字字符序列称称为字符串串常数。如如“hello”、“ProgramminginC””等。字符串中的的字符数称称为该字符符串的长度度。如上述述字符串的的长度分别别为5和16。2.字符串中的的特殊字符符(1)转义字符的的书写。字符串以双双撇号为定定界符,但但双撇号并并不属于字字符串。要要在字符串串中插入撇撇号,应借借助转义字字符。例如如,要处理理字符串"Isay:"Goodbye!""时,可以把把它写为"Isay:\"Goodbye!\""(2)格式字符串串中的格式式字符。格式化输入入输出函数数的格式参参数都是一一个字符串串也称格式式字符串,,其中的格格式字符((如c、d、f等)都要以以%开头书写。。所有的转义义字符,在在字符串中中都要以反反斜杠开头头书写。3.字符串的存存储与字符符数组在C语言中,字字符串用字字符数组存存储,并且且在字符串串的末尾加加一个字符符串结束标标志——转义字符“\0”。如字符串串“hello”在内存中存存储为注意字符常常数与字符符串常数的的区别,例如:‘A’是一个字符符常数,用用65存储;而““A”是一个字符符串常数,,用65\0存储。‘’表表示一个空空格,用32存储;而““”表示一一个空字符符串,用\0存储。hello\04.字符数组的的定义及初初始化字符数组是是以字符为为元素的数数组,它的的定义与初初始化方法法与一维数数组相同。。例如:charstr1[]={'C','h','i','n','a'};charstr2[12]={'C','','p','r','o','g','r','a','m','i','n','g'};字符串是特特殊的字符符数组,以以字符串结结束标志'\0'为最后一个个元素。5.字符串的定定义和初始始化可以有有如下几种种形式:charstr1[6]={‘‘C’,‘‘h’,‘‘i’,‘‘n’,‘‘a’,‘‘\0’};/*基于字符的初初始化*/charstr1[6]={““China”};/*字符串形式的的初始化*/charstr1[6]=“China””;/*字符串形式的的初始化*/charstr1[]={‘C’’,‘h’’,‘i’’,‘n’’,‘a’’,‘\0’};/*基于字符的初初始化*/charstr1[]={“China”};/*字符串形式的的初始化*/charstr1[]=“China”;/*字符串形式的的初始化*/使用字符串形形式的初始化化方式,C编译器将自动动加上一个'\0'标志。因此给给定的字符数数组的大小要要比实际存储储的字符串中中的有效字符符数多1。6.为字符串常量量添加下标C++语言也允许用用下标来引用用字符串常量量中的一个字字符,例如charch;ch=“Iamastudent.”[8]printf(“%c””,ch);将输出字符‘‘t’。这在某些情情况下会比较较方便。字符串输入输输出在定义了一个个字符串后,,可以采用两两类库函数进进行输入/输出操作。使使用这两类库库函数,必须须在程序中使使用文件包含含语句#include<stdio.h>。输入函数输出函数格式化输入输出库函数scanf()printf()非格式化输入输出库函数gets()puts()1.使用%s格式的格式化化输入函数scanf()在scanf()/printf()函数中使用%s格式,可以实实现字符数组组内容的一次次性输入/输出。若字符符串变量名为为str,则可以使用用下面的语句句进行整体的的键盘输入::scanf("%s",str);注意(1):在scanf()函数中,若数数据参考处使使用的是数组组名,则数组组名前不可以以加取地址符符&。因为数组名名本身就是一一个地址。注意(2):使用%s格式的scanf()函数进行字符符串的键盘输输入时,遇到到一个空白类类字符(空格格、制表符,,Enter等)就表示一一个字符串的的结束,系统统会就此给它它加上一个字字符串结束标标志‘\0’。例如对于语语句:scanf("%s",str);若从键盘上键键入Computer&C↙则在变量str中保存的是Computer\0注意(3):若用已经经定义的长度度较大字符数数组存储字符符串,则数组组中的空余元元素将用'\0'填充。例如charstr1[9],str2[9],str3[9];scanf("%s%s%s",str1,str2,str3);若从键盘上键键入Computer&C↙则这三个数组组中的存储情情况为:str1str2str3Computer\0&\0\0\0\0\0\0\0\0C\0\0\0\0\0\0\0\02.使用%s格式的格式化化输出函数printf()使用下面的语语句可以进行行字符串的整整体输出printf("%s",str);注意:输出的的内容中不包包括字符串结结束标志'\0'。3.使用字符串处处理函数gets()和puts()实现非格式化化输入输出puts()函数用来输出出一个字符串串,它的作用用与printf(“%s””,字符串)相同。但用puts()函数一次只能能输出一个字字符串,不能能企图用puts(str1,str2)的形式一次输输出两个字符符串。gets()函数是一个用用来输入一个个字符串的函函数。代码5.11#include<stdio.h>#defineN13intmain(void){charstr[N];printf("请输入一个字字符串:\n");gets(str);puts(str);puts(str);return0;}(1)用gets()可以读入包括括空格字符的的字符串。(2)用puts()输出时,将““\0”字符转换成换换行符,因此此用puts()时一次输出一一行,不必另另加换行符。。(3)gets()和puts()函数都是具有有返回值的函函数,它们执执行成功时将将返回字符数数组首元素的的地址。请输入一个字字符串:Computer&C↵Computer&CComputer&C代码5.12#include<stdio.h>#defineN13intmain(){charstr[N];printf("请输入一一个字符符串:\n");printf("gets的返回值值为:%d\n", printf("puts的返回值为:%d\n",puts(str));return0;}字符串的的其他操操作1.字符串操操作库函函数字符串不不能直接接用系统统定义的的操作符符进行赋赋值、比比较等操操作。下下表是其其中应用用较多的的几个字字符串操操作库函函数。函数的一般形式功能说明返回值strlen(字符串)求字符串长度有效字符个数strcpy(字符串1,字符串2)将字符串2复制到字符串1中字符串1的起始地址strcmp(字符串1,字符串2)比较两个字符串字符串1==字符串2,返回0;字符串1>字符串2,返回正整数;字符串1<字符串2,返回负整数strchr(字符串,字符)在字符串中找字符找到,返回字符第1次出现位置;找不到,返回空地址;strcat(字符串1,字符串2)将字符串2连接到字符串1中有效字符后返回字符串1的首地址这些库函函数的声声明都包包含在头头文件string.h中代码5.13字符串函函数的简简单应用用#include<stdio.h>#include<string.h>/*字符串处处理函数数头文件件*/#defineN120#defineN28intmain(void){charc charstr1[N1]="abcdefg",str2[N2]="hijklm"; /*定义并初始化两个字符串*/ printf("\nstr1=%s,str2=%s\n",str1,str2); /*输出两个字符串初始值*/ printf("\nstrcat的返回值:%ld\n",strcat(str1,str2)); /*将str2连接到str1*/ printf("\n连接后的str1=%s\n",str1); printf("\n输入要查找的字符\n"); /*在str1中查找字符 */ scanf("%c",&c); printf("\nstrchr的返回值:%ld\n",strchr(str1,c));

printf("\nstrlen的返回值:%d\n",strlen(str1));/*求字符串str1的长度 */return0;}代码5.14输入5个字符串串,输出出其中最最小的字字符串。。#include<stdio.h>#include<string.h>#defineN10intmain(void){charstr[N],min inti; printf("先输入第1个字符串:"); gets(min); /*先输入一个字符串到min中*/ for(i=2;i<=5;i++){ /*输入后面第2~5个字符串 */ printf("输入第%d个字符串:",i); gets(str); if(strcmp(min,str)>0) /*总把最小的字符串放到min中*/ strcpy(min,str); }printf("\n最小的字符串是:%s\n",min); return0;}字符串之之间不能能进行赋赋值操作作,只能能采用复复制的方方法把一一个字符符串保到到另一个个字符串串空间((即字符符数组))中。2.字符串操操作代码码分析字符串函函数库中中的标准准函数都都是设计计得非常常精辟的的一些函函数。分分析这些些代码,,对于提提高程序序设计能能力非常常有用。。下面举举例分析析这些函代码5.15计算字符符串长度度。intstrlenth(chars[]){inti=0,len=0;while(s[i++])len++;returnlen;}代码5.16字符串复复制。voidstrcopy(chardest[],charsrc[]){inti=0,j=0;while((dest[i++]=src[j++])!=’\0’);}d\0destcbaidef\0srccba\0\0\0jTheendThankYou!9、静夜四无邻邻,荒居旧业业贫。。1月-231月-23Sunday,January1,202310、雨中黄叶叶树,灯下下白头人。。。20:51:0920:51:0920:511/1/20238:51:09PM11、以我独沈沈久,愧君君相见频。。。1月-2320:51:0920:51Jan-2301-Jan-2312、故人江海海别,几度度隔山川。。。20:51:1020:51:1020:51Sunday,January1,202313、乍乍见见翻翻疑疑梦梦,,相相悲悲各各问问年年。。。。1月月-231月月-2320:51:1020:51:10January1,202314、他乡生生白发,,旧国见见青山。。。01一一月20238:51:10下午午20:51:101月-2315、比不不了得得就不不比,,得不不到的的就不不要。。。。。一月238:51下下午午1月-2320:51January1,202316、行行动动出出成成果果,,工工作作出出财财富富。。。。2023/1/120:51:1020:51:1001January

温馨提示

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

最新文档

评论

0/150

提交评论