1、程序设计基础(C语言)程序设计基础(C语言)数组概念程序设计基础(C语言) stdio.h#include mainmain()()float cj1,cj2,cj3,float cj1,cj2,cj3,cj10;/cj10;/*定义定义1010个变量个变量*/float pj float pj;scanf scanf(“%f”,&cj1%f”,&cj1);/;/*输入输入1010个数据个数据*/scanf scanf(“%f”,&cj2%f”,&cj2);scanf scanf(“%f”,&cj10%f”,&cj10);pj pj=cj1+cj2+=cj1+cj2+cj10;+cj10;pj
2、 pj=pj/10;/=pj/10;/*求平均值求平均值*/*打印低于平均成绩的同学成绩打印低于平均成绩的同学成绩*/if(cj1pj)printf if(cj1pj)printf(“%fn”,cj1%fn”,cj1);if(cj1pj)printf if(cj1pj)printf(“%fn”,cj2%fn”,cj2);if(cj1pj)printf if(cj1pj)printf(“%fn”,cj10%fn”,cj10);例例2:计算:计算10个同学的成绩:计算平均成绩、打印个同学的成绩:计算平均成绩、打印低于平均成绩的同学成绩低于平均成绩的同学成绩如果增加如果增加1000个成绩?个成绩?程
3、序设计基础(C语言) stdio.h#include main()main()float cj10;/float cj10;/*定义一个实型数组存放定义一个实型数组存放1010个成绩个成绩*/float pj;int float pj;int i;i;for(i=0;i10;i+)/for(i=0;i10;i+)/*输入输入1010个数据个数据*/scanf(%f,&cji scanf(%f,&cji););for(i=1,pj=0;i10;i+)/for(i=1,pj=0;i10;i+)/*求平均值求平均值*/pj=pj+cji pj=pj+cji;pj pj=pj/10;=pj/10;fo
4、r(i=0;i10;i+)/for(i=0;i10;i+)/*打印低于平均成绩的同学成就打印低于平均成绩的同学成就*/if(cjipj if(cjipj)printf(cj printf(cj=%d=%fn,i+1,cji);=%d=%fn,i+1,cji);例例2:计算:计算10个同学的成绩:计算平均成绩、打印个同学的成绩:计算平均成绩、打印低于平均成绩的同学成绩低于平均成绩的同学成绩程序设计基础(C语言) 根据数组下标的多少,数组可以分为一维数组和多维数组n一维只有一个下标,例如:cj10n二维有两个下标,例如:grade34程序设计基础(C语言) 可以准确访问到数组中的每一个元素提示nC
5、语言是一个有趣的语言,它从0开始计数,而不是从1开始,所以例题中10个元素的编号是从0到9a10a10 a a0 0 a a1 1 a a2 2 a a9 9 数组名数组名数组元素名数组元素名数组长度数组长度程序设计基础(C语言)一维数组程序设计基础(C语言) 数组名常量表达式;n说明:数据类型是数组全体数组元素的数据类型数组名用标识符表示 符合表示服的命名规则整型常量表达式代表数组具有的数组元素个数 必须是正的整型常量表达式,不能出现变量或非整型值提示n编译程序为数组开辟连续的存储单元,用来顺序存放数组的各数组元素用数组名表示该数组存储区的首地址数组元素的下标一律从0开始n一维数组元素按顺序
6、存放,其所占字节数的计算公式:数组所占总字节数=sizeof(type)*size程序设计基础(C语言) int a5,b5;float c10;n说明:定义了整型数组a和 b以及实型数组c a和 b的 数组元素的类型都是int c的 数组元素的类型都是float a数组有5个数组元素,b数组有5个数组元素,c数组有10个元素n以a5为例a数组的数组元素是a0,a1,a2,a3和a4 共5个数组元素 a数组元素的下标大于等于0,且小于5定义了int型数组a编译程序将为a数组在内存中开辟5个连续的存储单元(每个int存储单元占2个字节),用来存放a数组的5个数组元素a0代表这片存储区的第一个存储
7、单元 数组名a代表a数组的首地址,即a0存储单元的地址ai实际上代表这片存储区序号为i的存储单元 ai就是一个带下标的int型变量a数组是这些int型下标变量的集合程序设计基础(C语言) N 5 int aN;/*N是符号常量,其值为5*/nint b2+3;/*2+3是常量表达式,其值为5*/nint c10;错误的数组定义nint aj;/*j不是常量*/nint x=10,bx;/*?*/nint M(4);/*不能用圆括号定义数组*/nint n1.0;/*?*/程序设计基础(C语言) 中给出各数组元素的初值 各初值之间用逗号分开 把 中的初值依次赋给各数组元素数据类型数据类型 数组名
8、数组名整型常量表达式整型常量表达式=初值初值1,初值,初值2,;程序设计基础(C语言) num 4=1,2,3,4;表示把初值1,2,3,4依次赋给num 0,num1,num2,num 3相当于执行如下语句int num 4;num 0=1;num 1=2;num 2=3;num 3=4;n提示初始化的数据个数不能超过数组元素的个数,否则出错 例如:int a4=1,2,3,4,5;是错误的一维数组程序设计基础(C语言) num5=1,2,3;numnumnum0 num1 num2 num3 num4num0 num1 num2 num3 num4 1 2 3 0 01 2 3 0 0该语
9、句执行该语句执行:num0=1;num1=2;num2=3;num3=0;num4=0;num0=1;num1=2;num2=3;num3=0;num4=0;程序设计基础(C语言) n数组的元素不能自动初始化采用语句 int cj10=0;将数组cj的元素初始化为0n若数组元素的个数定义省略,则系统根据初值的个数来确定数组元素的个数例如:int a3=1,2,3;数组有3个数组元素:a0=1,a1=2,a2=3若省略数组元素个数的定义,则初值必须完全给出 C 语言编译系统将自动根据初始化数据的个数来确定数组的长度程序设计基础(C语言) 1:intint a2;a2;scanf scanf(“%
10、d%d”,&a1,&a2%d%d”,&a1,&a2);?错误:错误:在在C C语言中数组元素的下标由语言中数组元素的下标由 0 0开始,一个数组的下标的合法开始,一个数组的下标的合法范围在范围在0 0n-1n-1,因此该题正确的写法是:,因此该题正确的写法是:intint a2 a2;scanfscanf(“%d%d”,&a0,&a1%d%d”,&a0,&a1););错误:错误:数组元素是通过数组名数组元素是通过数组名 下标下标 来访问的,其中下标必须是来访问的,其中下标必须是大于大于0 0的整数、整型变量或整型表达式,在这段程序中,的整数、整型变量或整型表达式,在这段程序中,i i是浮是浮点
11、数,不能做数组元素的下标。点数,不能做数组元素的下标。问题问题2 2:intint a10 a10;float i=3float i=3;ai=10ai=10;?一维数组程序设计基础(C语言) SIZE 10#define SIZE 10mainmain()()intint aSIZE=aSIZE=1,2,35,6,39,47,53,4,5,101,2,35,6,39,47,53,4,5,10;intint i i,x x;printfprintf(“please enter a x:n”please enter a x:n”););scanfscanf(“%d”,&x%d”,&x););fo
12、r for(i=0i=0;i=SIZE-1i=SIZE-1;i+i+)ifif(ai=xai=x)breakbreak;if if(i SIZEi SIZE)printfprintf(“%d,poster is%dn”,x,i%d,poster is%dn”,x,i););else else printf printf(“no find%d n”,xno find%d n”,x););程序设计基础(C语言) SIZE 10#define SIZE 10mainmain()()intint aSIZE=1,2,35,6,39,47,53,4,5,10 aSIZE=1,2,35,6,39,47,5
13、3,4,5,10;intint i i,j j,x x;for for(i=0i=0;iSIZEiSIZE;i+i+)printfprintf(“%4d”,ai%4d”,ai););printfprintf(“please enter a x:n”please enter a x:n”););scanfscanf(“%d”,&x%d”,&x););for for(i=0i=0;iSIZEiSIZE;i+i+)ifif(ai=xai=x)breakbreak;for for (j=i;jSIZE-1;j+j=i;jSIZE-1;j+)aj=aj+1aj=aj+1;for for(i=0;iSIZ
14、E-1;i+i=0;iSIZE-1;i+)printf(“%4d”printf(“%4d”;aiai););printfprintf(“n”n”););说明:说明:做删除操作时,首先要做删除操作时,首先要找到删除元素的位置,找到删除元素的位置,找到后,立即用找到后,立即用breakbreak语语句推出循环并进行删除句推出循环并进行删除操作,删除操作实质是操作,删除操作实质是把一些数组元素向前移把一些数组元素向前移动一位。最后一位的删动一位。最后一位的删除不必移位,直接输出除不必移位,直接输出前前size-1size-1位。位。程序设计基础(C语言) N 10main()int aN,k,max
15、,min;for(k=0;kN;k+)/*将将N个数输入到个数输入到a数组中数组中*/scanf(%d,&ak);max=a0;for(k=1;kN;k+)/*依次比较各数,找出最大值依次比较各数,找出最大值max*/if(maxak)max=ak;min=a0;for(k=1;kak)min=ak;printf(max=%d,min=%dn,max,min);求求10个数中的最大值和最小值。个数中的最大值和最小值。把以上求最大值的程序和求最把以上求最大值的程序和求最小值的程序按串行方式写入一小值的程序按串行方式写入一个程序中。程序中先求最大值,个程序中。程序中先求最大值,然后再求最小值然后再
16、求最小值程序设计基础(C语言) N 10#include stdio.hmain()int aN,k,max,min;for(k=0;kN;k+)/*将将N个数输入到个数输入到a数组中数组中*/scanf(%d,&ak);max=min=0;/*假定最大值和最小值均为假定最大值和最小值均为a0,记录它们的下标,记录它们的下标0*/for(k=1;kN;k+)/*依次比较各数依次比较各数,找出最大值和最小值的下标找出最大值和最小值的下标max、min*/if(amaxak)min=k;/*找出最小值下标找出最小值下标min*/printf(max=a%d=%d,min=a%d=%dn,max,a
17、max,min,amin);在上面程序中必须增加记忆最大值下标和最小值在上面程序中必须增加记忆最大值下标和最小值下标的语句。即每当产生一个最大(小)值时,下标的语句。即每当产生一个最大(小)值时,立即记录它的下标。若最大值下标是立即记录它的下标。若最大值下标是max,最小,最小值下标是值下标是min,则,则amax就是最大值,就是最大值,amin就就是最小值是最小值程序设计基础(C语言)二维数组程序设计基础(C语言) 格式n说明数据类型是数组全体数组元素的数据类型数组名用标识符表示两个整型常量表达式分别代表数组具有的行数和列数 数组元素的下标一律从0开始n例:int array34;类型说明符
18、类型说明符 数组名数组名常量表达式常量表达式1常量表达式常量表达式2;程序设计基础(C语言) 0 1 2 3第第0列列 第第1列列 第第2列列 第第3列列 数组名数组名行下标行下标列下标列下标 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 该二维数组包含三行四列,因此称为该二维数组包含三行四列,因此称为34数组。数组。数组中的每一个数组中的每一个元素都用元素都用aij的形式表示。的形式表示。所以:所以:该例中定义了一个该例中定义了一个3*4(3行行4列)的数组,我们可以将其视为列)的数组,我们可以将其视为一个有一个有3个元素个元素a0、a1、a
19、2组成的一维数组,而组成的一维数组,而a0、a1、a2又是包含又是包含4个元素的一维数组。因此,可以将个元素的一维数组。因此,可以将a0、a1、a2分别看成是三个一维数组的名字。分别看成是三个一维数组的名字。二维数组程序设计基础(C语言) a00 a01a02a03a10 a a00 a01.a22 a23二维数组存储所占的内存字节数的计算公式为:二维数组存储所占的内存字节数的计算公式为:数组总字节数数组总字节数=sizeof(type)*size1*size2程序设计基础(C语言) 数组名整常量表达式 整常量表达式=初始化数据;n在 中给出各数组元素的初值各初值之间用逗号分开把 中的初值依次
20、赋给各数组元素初始化方式n分行进行初始化例:int a23=1,2,3,4,5,6;在 内部再用 把各行分开提示n初始化的数据个数不能超过数组元素的个数,否则出错程序设计基础(C语言) a23=1,2,3,4,5,6;把 中的数据依次赋给a数组各元素(按行赋值)为部分数组元素初始化n例:int a23=1,2,4;省略第一维的定义,但不能省略第二维的定义n系统根据初始化的数据个数和第2维的长度可以确定第一维的长度n例:int a 3=1,2,3,4,5,6;na数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2n省略第一维的定义时,第一维的大小按
21、如下规则确定:n初值个数能被第二维整除,所得的商就是第一维的大小;若不能整除,则第一维的大小为商再加1n例如int a 3=1,2,3,4;等价于:int a23=1,2,3,4;程序设计基础(C语言) a23=a23=5,65,6,7,87,8;5,6,05,6,07,8,07,8,0intint a23=a23=5,6,7,85,6,7,85,6,75,6,78,0,08,0,0程序设计基础(C语言) a进行正确初始化的语句是:进行正确初始化的语句是:(A A)intint a2=1,0,1,2,0,2;a2=1,0,1,2,0,2;(B B)intint a3=1,2,3,4,5,6;a
22、3=1,2,3,4,5,6;(C C)intint a24=1,2,3,4,5,6;a24=1,2,3,4,5,6;(D D)intint a3=1,0,1,a3=1,0,1,,2,3;2,3;例:例:已知已知 intint a3=0 a3=0,1 1,2 2,3 3,4 4,5 5,6 6;则数组;则数组 的第一维的大小是多少?的第一维的大小是多少?(A A)2 2 (B B)3 3 (C C)4 4 (D D)无确定值)无确定值 程序设计基础(C语言) 数组名下标1下标2;每个元素同一般变量一样使用例:int a24;a02=a13*4;例:int a23,i=1,j=2,k=0;n合法引
23、用aik,aj-1i,a1j+k aik=ai-1j+a1j;n错误引用a23下标越界a32,行下标越界a1,0 a(1)(2)nC语言不进行数组的越界检查,在引用时不要使数组越界程序设计基础(C语言) m33=1,2,3;int n33=1,2,3;main()()printf(”%dn”,m10+n00););/*1.结果结果*/printf(”%dn”,m01+n10););/*2.结果结果*/1.结果:结果:A)0 B)1 C)2 D)32.结果:结果:A)0 B)1 C)2 D)3 程序设计基础(C语言) int a66 a66,m m,n n;forfor(m=1m=1;m6m6;
24、m+m+)forfor(n=1n=1;n6n6;n+n+)amn=(m/n)amn=(m/n)*(n/m)(n/m);forfor(m=1m=1;m6m6;m+m+)for for(n=1n=1;n6n6;n+n+)printfprintf(”%2d”%2d”,amnamn););printfprintf(”n”n”););A)1111111111111111111111111B)0000100010001000100010000C)1000001000001000001000001D)1000101010001000101010001 二维数组程序设计基础(C语言) n将一个二维数组的每个元
25、素按逆序存放在另一个数组中main()main()int int a23=1,2,3,4,5,6;a23=1,2,3,4,5,6;int int b23;b23;int int i,j;i,j;printf(array printf(array a:n);a:n);for(i=0;i2;i+)for(i=0;i2;i+)for(j=0;j3;j+)for(j=0;j3;j+)printf(%4d,aij);printf(%4d,aij);bi2-j=aij;bi2-j=aij;printf(n printf(n););printf(array printf(array b:n);b:n);fo
26、r(i=0;i2;i+)for(i=0;i2;i+)for(j=0;j3;j+)for(j=0;j3;j+)printf(%4d,bij);printf(%4d,bij);printf(n printf(n););456123b654321a关系:关系:bi2-j=aij bi2-j=aij 程序设计基础(C语言) a33=1,3,7,13,19,27,37,49,63;int sum1=0,sum2=0,m,n;for(m=0;m3;m+)for(n=0;n3;n+)if(m=n)sum1=sum1+amn;for(m=0;m=0;n-)if(m+n=2)sum2=sum2+amn;prin
27、tf(“sum1=%d,sum2=%dn”,sum1,sum2);程序设计基础(C语言) main()()int days212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31;int year,month;int leap;程序设计基础(C语言) printfprintf(“enter a yearenter a year:n”n”););scanfscanf(“%d”%d”,&year&year););printfprintf(“enter a monthenter a month:n”n”);
28、);scanfscanf(“%d”%d”,&month&month););if(month=1&month=12)if(year%4=0&year%100!=0)|(year%400=0)leap=1;else leap=0;i=daysleapmonth-1;printf(“%dyear%dmonth%ddays”,year,month,i););else printf(“enter error month!n”);演示演示 66.c程序设计基础(C语言) a(10);B、int a;C、int k=5,ak;D、char a=a,b,c;2.若有说明语句:若有说明语句:int y 4=0,
29、0;则下面叙述不正确的是。则下面叙述不正确的是。A、数组、数组y的每个元素都可得初值的每个元素都可得初值0B、二维数组、二维数组y的行数为的行数为1C、该说明等价于、该说明等价于int y 4=0;D、只有元素、只有元素y00和和y01可得到初值可得到初值0,其余元素均得不到初值其余元素均得不到初值0 程序设计基础(C语言) 的数据个数多于数组元素的个数越界访问数组元素程序设计基础(C语言)字符数组与字符串 程序设计基础(C语言) str10;/*含有10个字符的一维字符型数组*/char stree310;/*含有3*10个字符的二维字符型数组*/也可以将其看成3行并且每行各含有10个字符的
30、一维字符数组程序设计基础(C语言) str10;str0=A;str1=;str2=n;str3=e;str4=w;str5=;str6=y;str7=e;str8=a;str9=r;str A n e w y e a rstrstr开辟的连续存储单元中存放的是:开辟的连续存储单元中存放的是:A new yearA new year。(一串字符)。(一串字符)程序设计基础(C语言) name4;main()()name0=c;name1=+;name2=+;name3=0;此程序段建立了一个四个元素的字符型数组。此程序段建立了一个四个元素的字符型数组。基本概念n字符数组字符串n串就是一组字符n
31、C语言没有提供内部串的类型串是由字符数组创建的n实际上字符串就是带有若干限制的字符型数组其中一个限制条件是用0(NULL)来表示串的结束str A n e w y e a r0程序设计基础(C语言) message 6=“hello”;或或 char message=“hello”;char message=h,e,l,l,o;不是字符串;不是字符串;char message=h,e,l,l,o,0;是字符串;是字符串;程序设计基础(C语言) char message5=h,e,l,l,o;存放方式:字符串常量 char message=“hello”;存放方式 h e l l h e l l
32、 o 0o 0char message=h,e,l,l,o,0;h e l h e l l ol o程序设计基础(C语言) t h i s i k !0 P .C H I N A 0 0 0 J A P A N 0 0 0 0 0 C A N A D A 0 0 0 0 char str16=“This is a book!”;或省略或省略,直接写成:,直接写成:char str16=“This is a book!”;char str1310=“P.CHINA”,“JAPAN”,“CANADA”;程序设计基础(C语言) 如果在一个数组中先后存放多个长度不同的字符串,数组长度的定义应大于最长字
33、符串的长度 如果字符串的长度大于存储它的字符数组的长度,由于C语言不提供越界检查。超出字符数组长度的部分就会将内存中字符数组后面的数据覆盖掉n赋初值时,初值个数要少于数组的维长度,否则进行系统编译时越界例如:char str23=“this”,“is”,“a”,“book”;程序设计基础(C语言) 1】下面有关字符数组和字符串说法正确的是:】下面有关字符数组和字符串说法正确的是:A A)字符数组中存放的一定是一个字符串。)字符数组中存放的一定是一个字符串。B B)所有的字符数组都可以被当作字符串处理。)所有的字符数组都可以被当作字符串处理。C C)对存放字符串的字符数组可以像一般数组一样对数组
34、中)对存放字符串的字符数组可以像一般数组一样对数组中 的单个元素进行操作。的单个元素进行操作。D D)一个字符数组可以认为就是一个字符串。)一个字符数组可以认为就是一个字符串。【例【例2】合法的数组说明语句是】合法的数组说明语句是 。A.int a=“string”;B.int a5=0,1,2,3,4,5;C.char a=“string”;D.char a=0,1,2,3,4,5;在在 C语言中,字符变语言中,字符变量中存放的是与字符对应量中存放的是与字符对应的的ASCII码。数值码。数值 0,1,2,3,4,5 所对应的所对应的ASCII字符虽然是不可字符虽然是不可显示的字符,但是这些显
35、示的字符,但是这些都可以作为控制字符。都可以作为控制字符。程序设计基础(C语言) 。char x=“12345”;char y=1,2,3,4,5;A.X数组和数组和y数组的长度相同数组的长度相同B.X数组长度大于数组长度大于y数组长度数组长度C.X数组长度小于数组长度小于y数组长度数组长度D.X数组等价与数组等价与y数组数组【例【例4 4】阅读下面的程序给出执行结果。】阅读下面的程序给出执行结果。main()()int i=0;char a33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)printf(“%d”,ai1););A)50,53,56 B)49,52,55 C
36、)2,5,8 D)1,4,7 基本概念程序设计基础(C语言) i i,string15 string15;for for(i=0i=0;i15i15;i+i+)scanfscanf(“%c”%c”,&stringi&stringi);printfprintf(“%c”%c”,stringi stringi););演示演示7C3.C7C3.C程序设计基础(C语言) 数组名在数组中代表着首地址,所以scanf函数中的变量地址表中的输入变量只需写数组名string 不能写成:n为什么?scanf(“%c”,&stringi)针对的是某一变量元素的地址,取一字符串中一个元素的地址 scanf(“%s”
37、,string)是要读入一串字符,数组名即是首地址程序设计基础(C语言) is a book则数组中的存储格式为:例例:main()()int i;char string15;scanf(“%s”,string););t h i s 0为什么?为什么?程序设计基础(C语言) This is a book在内存中的存放格式为:main()()int i;char string15;gets(string););T h i s i s a b o o k 0 程序设计基础(C语言) puts(字符串名)或 puts(字符串常量)main()()int i=0;char ch,text80;puts
38、(“Enter a line of text:”););while(ch=getchar()!=n)texti+=ch;texti=0;/*在字符串的最后加入一个在字符串的最后加入一个NULLNULL字符字符*/puts(“nThe line ertered was:”););puts(text););演示演示7C6。C程序设计基础(C语言) n strcpy(s1,s2)将s2拷贝到 s1n strcat(s1,s2)将s2连接到 s1的尾部n strlen(s1)返回s1的长度(不包括0)n strcmp(s1,s2)若s1与s2相等,返回值为0 若s1s2,返回值大于0程序设计基础(C语
39、言) if(str1str2str1str2)printfprintf(“true!”true!”););非法非法if if(strcmpstrcmp(str1str1,str2 str2)=1=1)printfprintf(“true!”true!”););合法合法程序设计基础(C语言) main()int i,c;char s120,s220;printf(First string:);gets(s1);printf(Second string:);gets(s2);i=0;程序设计基础(C语言) while(s1i!=0&s2i!=0)if(s1is2i)c=1;break;else i
40、f(s1is2i)c=-1;break;else i=i+1;字符串运算函数程序设计基础(C语言) if(s1i!=0&s2i=0)c=1;if(s1i=0&s2i!=0)c=-1;if(s1i=0&s2i=0)c=0;if(c=0)printf(%s=%sn,s1,s2);else if(c=-1)printf(%s%sn,s1,s2);字符串运算函数程序设计基础(C语言) C语言中,常用二维字符数组的形式建立字符串数组数组的第一个下标(左下标)决定字符串的个数第二个下标(右下标)说明每个串的最大长度n例如:char str_array3080;说明 定义了一个可以存放30个字符串的字符串数
41、组,每个串的最大长度为80个字符提示n在 C语言中,一维字符数组的最普遍的用法是作为字符串n使用数组处理字符串的另一种常见的形式是字符串数组程序设计基础(C语言) str_array中的第一个字符串为参数调用函数gets()实际上是将 str_array0作为指针处理的 它指向字符数组元素str_array00的地址 上述语句等价于gets(&str_array00);提示n定义字符串数组时,数组的第二个下标应比实际字符串长度大1,以存放字符串的结束标志0程序设计基础(C语言) MAX 100#define LEN 80 char text MAXLEN;main()()register in
42、t t,i,j;for(t=0;tMAX;t+)/*逐行输入字符串逐行输入字符串*/printf(“%d:”,t););gets(textt););if(!textt0)break;/*空行退出空行退出*/for(i=0;it;i+)for(j=0;textij;j+)putchar(textij););putchar(n););该程序输入文本行直该程序输入文本行直至遇到一个空行为止至遇到一个空行为止,而后每次一个字符地而后每次一个字符地重新显示各行重新显示各行.字符串数组n字符串数组引用例:以一个字符串数组为基础做简单的文本编辑处理程序设计基础(C语言) i,j;char s80;gets(
43、s););for(i=j=0;si!=0;i+)if(si!=c)sj+=si;sj=0;puts(s););演示演示7CC。C程序设计基础(C语言) main()()char prompt30=“What is yourpassword?:”;char password10;printf(“%sn”,prompt););gets(password););if (strcmp(password,“000”)=0)printf(“password is:%sn”,password););printf(“ok!n”););else printf(“password is:%sn”,password
44、););printf(“Invalid password!”););字符串应用n字符数组在人机交互系统中的应用。程序运行时要求用户输入口令并验证,若输入口令为“000”,则显示字符串“OK!”否则显示“Invalid password”程序设计基础(C语言) main()()char s20,str320;int i;for(i=0;i3;i+)gets(stri););strcpy(s,(,(strcmp(str0,str1)0?str0:str1););if(strcmp(str2,s)str2)B、if(strcmp(str1,str2)C、if(strcmp(str2,str1)0)D
45、、if(strcmp(str1,str2)0)3.若有语句:若有语句:char s110,s210=“books”,则能将字符串,则能将字符串books赋给赋给数组数组s1的正确语句是的正确语句是A、s1=books;B、strcpy(s1,s2);C、s1=s2;D、strcpy(s2,s1);程序设计基础(C语言) x3=1;4、int k;5、scanf(%d,&x);6、for(k=1;k3;k+)7、x0=x0+xi;8、printf(x0=%dn,x0);9、A、3 B、6 C、7 D、5程序设计基础(C语言) main()char str120,str220;int i,k,num;gets(str1);gets(str2);i=strlen(str1);k=strlen(str2);num=?:;printf(%dn,num);