C语言程序设计第5章
《C语言程序设计第5章》由会员分享,可在线阅读,更多相关《C语言程序设计第5章(69页珍藏版)》请在装配图网上搜索。
1、 莆田学院现代教育技术中心 2004年年3月月 制作制作莆田学院现代教育技术中心 2004年3月本章主要内容n数组(概述/定义/引用)n数组作为函数参数n与数值数组有关的常用算法 排序:起泡法/选择法/插入法查找:顺序查找法/折半查找法矩阵运算n字符数组和字符串 n与字符数组有关的常用算法 莆田学院现代教育技术中心 2004年3月一、概述nC的数据类型:P38基本类(简单类)字符型/整型/实型/枚举型构造类(组合类)数组/结构体/共用体指针类空类型(void)莆田学院现代教育技术中心 2004年3月一、概述对于变量n基本类型单个出现的变量,每个变量可以代表一个确定的数据(变量值),且具有一定属
2、性。如 static int x,y;但变量间不存在确定的相互关系。n构造类型由基本类型按一定规则组成。其中:数组:由一组有序数据(数组元素)组成。每个元素:有相同类型,统一数组名;用下标(index)确定其顺序;但可以取各自值。如 static int a5;其中:表示a是个数组,而不是一个简单变量a。5表示该数组共有5个元素 元素编号从0开始,a0表示第1个元素,a4表示第5个元素(最后一个)莆田学院现代教育技术中心 2004年3月一、概述n数组的用处很多。简单例子:要读入某班全体50位同学某科学习成绩,然后进行简单处理(求平均成绩、最高分、最低分)n若用简单变量,需50个不同变量名,要用
3、很多个scanf命令。如 int score1,score2,score50;scanf(“%d,%d,%d”,&score1,&score2,&score3);scanf(“%d,%d,%d”,&score4,&score5,&score6);n而用数组,可共用一个scanf命令,并利用循环结构读取。int score50,i;for(i=0;i50;i+)scanf(“%d”,&score(i);莆田学院现代教育技术中心 2004年3月示例程序如下:#define NUM 50 main()int i,scoreNUM,highest;float sum=0,average;clrscr(
4、);/*依次读入全班同学分数*/for(i=0;iNUM;i+)printf(请输入第%d位同学的成绩:,i+1);scanf(%d,&scorei);/*公布全班同学分数*/printf(n全班同学成绩公布如下:n);for(i=0;iNUM;i+)printf(%d号同学:%5dn,i+1,scorei);if(i%10=9)printf(n);/*求平均成绩并显示出来*/for(i=0;iNUM;i+)sum+=scorei;average=sum/NUM;printf(n全班平均成绩是:%.1fn,average);/*求最高分并显示出来*/highest=score0;for(i=0
5、;ihighest)highest=scorei;printf(n最高分是:%dn,highest);莆田学院现代教育技术中心 2004年3月二、数组的定义 n同变量一样,数组也必须“先定义,后使用”。n定义内容:数组名(同变量名:字母、下划线、数字;字母或下划线开头;长度32)类型(存储属性/数据类型)大小(维数/元素个数)n定义的一般形式:存储属性 数据类型 数组名常量表达式常量表达式注意:数组长度必须是常量表达式 常量或符号常量,其值必须为正,不能为变量。数组长度(数组元素最大个数)莆田学院现代教育技术中心 2004年3月二、数组的定义 错误:int n=5;int an;正确:#def
6、ine N 5 int aN;正确:int a10,b54;char name8,ch23;static float x8*2+1,table234;#define NUM 40;int aNUM,bNUM+2;莆田学院现代教育技术中心 2004年3月一维数组和多维数组n一维数组 用一个下标来确定各元素在数组中的顺序。可用排列成一行的元素组来表示。如 int a5;(右上图)n二维数组 用两个下标来确定各元素在数组中的顺序。可用排列成ij列的元素组来表示。如 int b23;(右下图)nn维数组 用n个下标来确定各元素在数组中的顺序。如 int c324;n3时,维数组无法在平面上表示其各元素
7、的位置。a0 a1 a2 a3 a4b00b01b02b10b11b12n维数组的元素总数等于各维长度之积。特别注意数组名表示每个数组的首地址,即:a 表示&a0 b 表示&b00莆田学院现代教育技术中心 2004年3月more about multidimensional arrays 为了便于理解,可以把多维数组看成一维数组的扩展:n二维数组(nm)可以看成n行m个元素的一维数组;n三维数组(pnm)可以看成p页n行m个元素的一维数组,即p页二维数组(nm);n四维数组(vpnm)可以看成v册p页n行m个元素的一维数组,即v册三维数组(pnm)n以此类推。莆田学院现代教育技术中心 2004
8、年3月三、数组的存储结构n根据数组的数据类型,为每一元素安排相同长度的存储单元。n根据数组的存储属性,将其安排在内存动态、静态存储区或寄存器区。莆田学院现代教育技术中心 2004年3月四、数组的初始化(赋初值)n旧版标准:只允许对外部或静态的数组初始化n新版标准:也允许对auto数组初始化(只能用常量表达式)。n一般形式:int a5=1,2,3,4,5;int b23=1,2,3,4,5,6;或 int b23=1,2,3,4,5,6;【演示】设置watch,观看下列数组初值情况:int a23;static b23;int c23=1,2;莆田学院现代教育技术中心 2004年3月四、数组的
9、初始化(赋初值)n简略形式:1、省略第一维数组大小。如:int a=,b3=;2、省略元素值。如:int x6=1,2,3,4;(x4、x5自动用0补足)int a5=0;int b32=0;(全部元素初始 化为0)莆田学院现代教育技术中心 2004年3月四、数组的初始化(赋初值)【例一】以下程序的运行结果是什么?main()int a3=1,2,3,4,5,6,0;printf(%d,%d,%dn,a11,a21,a31);1 2 34 5 06 0 00 0 0结果:5,0,0【例二】若int a 3=1,2,3,4,5,6,7,则a数组的第一维大小是多少?1 2 34 5 67 0 0说
10、明:静态/外部数组未初始化,默认初值是0(数值)或空格(字符)auto数组未初始化,初值为某个随机数。莆田学院现代教育技术中心 2004年3月五、数组的引用(使用数组元素)n原则:先定义后引用n引用形式:数组名下标n只能逐个引用数组元素,不能一次引用整个数组。n引用数组元素要注意下标不要出界(编译程序不检查是否“出界”)。n每个数组元素均可按一个简单变量的方式进行处理(如参加运算、赋值等)。莆田学院现代教育技术中心 2004年3月五、数组的引用(使用数组元素)(设已有定义int a36,x,y,i=0,j=0;)a23=4;/*下标为常量*/scanf(“%d”,&aij);y=sqrt(a2
11、3);aij=20;/*下标为 int 型变量i,j)*/ai+1j*3+1=1;/*下标为一个复杂的整型表达式*/错误:a2,3=1调试时,可将数组名或数组元素名设置为watch进行跟踪.莆田学院现代教育技术中心 2004年3月讨论:如果下标值小于0或超过数组长度时会出现什么情况?例:main()int a=1,b5,c=2,i;for(i=0;i=5;i+)bi=i+1;运行程序或单步执行观察变量变化情况可以看到,变量c的值因数组越界而被悄悄破坏了(可能产生严重的错误后果!)12345601 2 3 4 5 6莆田学院现代教育技术中心 2004年3月数组常用的循环形式n法一int i,a1
12、00;for(i=0;i100;i+)ai=i;n法二int i,a100;for(i=0;i=99;i+)ai=i;C程序中常用的是第一种方法。注意在此法中,循环变量的终值是“小于”而非“等于”数组长度!否则将导致“越界”的发生。莆田学院现代教育技术中心 2004年3月如何使两个数组的值相等:/*错误编程*/main()int a4=1,2,3,4,b4;b=a;解决方法n法1:逐个元素赋值 b0=a0;b1=a1;b2=a2;b3=a3;n法2:通过循环赋值 int i;for(i=0;i4;i+)bi=ai;原因:数组名表示数组的首地址,其值不可改变!莆田学院现代教育技术中心 2004年
13、3月莆田学院现代教育技术中心 2004年3月应用示例:下列程序的功能是显示如下图形,请填空。1 0 0 0 02 1 0 0 0 3 2 1 0 04 3 2 1 05 4 3 2 1main()int a55,i,j;clrscr();for(i=0;i5;i+)for(j=0;j5;j+)if(【1】)aij=0;else aij=【2】;printf(%3d,aij);printf(n);a55分析:a00 a01 a02 a03 a04a10 a11 a12 a13 a14a20 a21 a22 a23 a24a30 a31 a32 a33 a34a40 a41 a42 a43 a44
14、ij i+1-j【分析】这类题的元素值排列很有规律,所以一般要从分析行数 i、列数 j与元素值的关系着手。分析下图可知,当 i=j时,元素值随行数 i 增加而增加,随列数 j 增加而减小,这样就很容易得出其元素值与 i,j 的关系是 i+1-j。莆田学院现代教育技术中心 2004年3月应用示例:分析以下程序的功能是什么?#include main(void)int c,i,cs10=0;clrscr();while(c=getchar()!=EOF)if(c=0&c=9)csc-0+;for(i=0;i10;i+)printf(Num of%d=%dn,i,csi);putchar(n);ge
15、tch();原题要求:写一个程序,统计由键盘输入的各个数字字符出现的次数(按Ctrl+Z结束)。莆田学院现代教育技术中心 2004年3月六、数组作为函数参数1、用数组元素作函数实参 P164此时可把数组元素看作普通变量(单向的值传送)。p 特点:主调函数中的实参数组元素 (带下标)被调函数中的形参普通变量p 调用结果:形参值的变化对实参值无影响 (二者分占不同内存)。莆田学院现代教育技术中心 2004年3月【例一】以下程序的功能是什么?#include main()int i;float sum=0,x10;float mean(float,int);clrscr();for(i=0;i0)p
16、rintf(%f的平方根是:%fn,a,sqrt(a);return sqrt(a);else printf(x%d=%fn,i,a);return 0.0;在主函数中输入10个数值,并调用功能函数求其正数的算术平方根之和。莆田学院现代教育技术中心 2004年3月什么是单向“值传送”方式?莆田学院现代教育技术中心 2004年3月六、数组作为函数参数2、用数组名作函数实参 P165 若 int a6;则数组名a表示数组的起始地址。所以用数组名,实际上是把实参数组的起始地址“传给”形参数组。p本质:对应的数组元素(不是形参与实参)共享同一段内存单元(所谓“双向的地址传送”)。p特点:主调函数中的实
17、参数组名(不带下标)被调函数中的形参数组名或数组定义式p调用结果:两数组同下标者为同值。莆田学院现代教育技术中心 2004年3月【例二】以下程序的运行结果是什么?f(int b,int n)int i,t;t=0;for(i=1;i=n;i+)t=t+bi;return t;main()int x,a=1,2,3,4,6;x=f(a,a3);printf(%dn,x);注意1、形参数组和实参数组应分别在各自函数中定义;2、形参数组可不定义大小(用空方格);3、二者大小可一致或不一致(C编译程序不检查形参),但注意引用形参时不要超过实参界。结果:15莆田学院现代教育技术中心 2004年3月什么是
18、双向的“地址传送”方式?f(int b,int n)int i,t;t=0;for(i=1;i=n;i+)t=t+bi;return t;main()int x,a=1,2,3,4,6;x=f(a,a3);printf(%dn,x);实质是共享同一段内存单元莆田学院现代教育技术中心 2004年3月【例三】分析以下程序功能,完善程序。#include#define NUM 10int i,s=0;void sum(int b)for(i=0;iNUM;i+)s+=bi;printf(Sum=%dn,s);void aver(int b)printf(Aver=%f,(float)s/(NUM);
19、main()int a=100,90,80,70,60,50,40,30,20,10;clrscr();sum(a);aver(a);/*max(a);求数组元素最大值 min(a);求数组元素最小值*/莆田学院现代教育技术中心 2004年3月【例四】分析以下程序的运行结果。main()int a5=5,10,-7,3,7,i;sort(a,5);for(i=0;i5;i+)printf(%d,ai);sort(int x,int n)int j,t;for(j=0;jxj+1)t=xj;xj=xj+1;xj+1=t;结果:5 7 3 7 10【讨论】如何通过数组技术将一列数据中最大或最小的数
20、移前或移后?莆田学院现代教育技术中心 2004年3月七、与数值数组有关的常用算法n排序:起泡法/选择法/插入法n查找:顺序查找法/折半查找法n矩阵运算1、常用排序算法起泡法(冒泡法/气泡法)P124 有n个杂乱无序的数,要求将这n个数从小到大(或从大到小)排序后输出。莆田学院现代教育技术中心 2004年3月【例一】排序原理示意如下(n=5):-813357221排序前第1轮(i=1)第2轮(i=2)第3轮(i=3)第4轮(i=4)35-821721335211372-83521-87213132135-872 共需进行n-1=4轮;从第1个开始,两两比较,大者交换到后面(右边);每轮从第1个比
21、到第n-i个。这种排序方法之所以叫“冒泡法”,是因为在排序过程中,较小的数象气泡一样逐渐往前冒(向上冒),大的数逐渐向后沉,最终完成排序。莆田学院现代教育技术中心 2004年3月流程图和程序如下:#define N 5 main()int i,j,t,aN+1;for(i=1;i=N;i+)scanf(%d,&ai);for(i=1;i=N-1;i+)for(j=1;jaj+1)t=aj;aj=aj+1;aj+1=t;for(i=1;i=N;i+)printf(%d,ai);莆田学院现代教育技术中心 2004年3月选择法n从算法优化的角度对“冒泡法”进行改进。n冒泡法每一轮都要将数组中的数两两
22、比较,并根据大小交换之效率低。n选择法改进处:两两比较后并不马上交换,而是找到最小数后记下其下标。在一轮比较完毕后,再将最小的数一次交换到位。比较次数不变,交换次数减少。莆田学院现代教育技术中心 2004年3月流程图和程序如下:法1:从左到右依次从小到大排放#define N 5main()int i,j,t,p aN+1=0,5,10,-7,3,7;for(i=1;i=N-1;i+)p=i;for(j=i+1;jaj)p=j;if(p!=i)t=ap;ap=ai;ai=t;for(i=1;i=N;i+)printf(%d,ai);printf(n);莆田学院现代教育技术中心 2004年3月流
23、程图和程序如下:法2:从右到左依次从大到小排放#define N 5main()int i,j,t,p,aN+1=0,5,10,-7,3,7;for(i=1;i=N-1;i+)p=N-i+1;for(j=1;jap)p=j;if(p!=N-i+1)t=ap;ap=aN-i+1;aN-i+1=t;for(i=1;i=N;i+)printf(%d,ai);printf(n);莆田学院现代教育技术中心 2004年3月插入法main()int a5=4,7,2,5,8;int i,j,m;for(i=1;i=0&maj)aj+1=aj;j-;aj+1=m;for(i=0;i=0&maj)莆田学院现代教
24、育技术中心 2004年3月2.查找main()int a8=25,57,48,37,12,92,86,33;int i,x;clrscr();printf(请输入要查找的数 x=);scanf(%d,&x);for(i=0;i8;i+)if(x=ai)printf(找到了!是第%d个元素。n,i);break;if(i=8)printf(没找到!n);顺序查找法【例一】莆田学院现代教育技术中心 2004年3月2.查找main()int a9=25,57,48,37,12,92,86,33;int i,x;printf(请输入要查找的数 x=);scanf(%d,&x);a8=x;i=0;whi
25、le(ai!=x)i+;if(iamid)说明x在右边,让low=mid+1;else 说明x在左边,让high=mid-1重复b和c两步操作,直到x=mid(找到)或lowhigh(找遍了)为止。莆田学院现代教育技术中心 2004年3月main()int a9=6,12,18,42,44,52,67,94,99;int low=0,mid,high=8,x;clrscr();printf(请输入要查找的数 x=);scanf(%d,&x);do mid=(low+high)/2;if(x=amid)printf(找到了!是第%d号元素。n,mid);break;else if(xamid)l
26、ow=mid+1;else high=mid-1;while(lowhigh)printf(没找到!n);莆田学院现代教育技术中心 2004年3月3、矩阵运算【例一】有一34矩阵,编程求其元素最大值并输出其行、列号。main()int i,j,x,y,max;int a4=3,5,8,1,6,9,7,12,-6;max=a00;for(i=0;i3;i+)for(j=0;jmax)max=aij;x=i;y=j;printf(max is a%d%d=%dn,x,y,max);3 5 8 1 6 9 7 12-6 0 0 0要点:用两重循环遍历所有元素。【讨论】如果求最小值?莆田学院现代教育技
27、术中心 2004年3月【例二】求矩阵a、b乘积,结果存入矩阵c中并按矩阵形式输出。【说明】矩阵相乘的规则:一个mp矩阵A=(aij),可以右乘一个pn矩阵B(bij),得到一个mn矩阵C(cij),其中(i=1,2,m,j=1,2,n):pkkjikpjipjijibabababacij12211数组a:2 -1 -4 0 3 1数组b:7 -9 -8 10数组c:22 -28 -28 36 13 -17莆田学院现代教育技术中心 2004年3月main()int a32=2,-1,-4,0,3,1;int b22=7,-9,-8,10;int i,j,k,s,c32;for(i=0;i3;i+
28、)for(j=0;j2;j+)for(k=s=0;k2;k+)s+=aik*bkj;cij=s;for(i=0;i3;i+)for(j=0;j2;j+)printf(%6d,cij);printf(n);pkkjikpjipjijibabababacij12211莆田学院现代教育技术中心 2004年3月八、字符数组和字符串 P130【字符数组】存放字符(每个数组元素存放一个字符)1、字符数组的定义 如:char a10;char a23;字符数组各个元素分别存放一个字符的数组。字 符 串“”(字符串常量)以“0”结尾。实际使用中,可以将字符串看成是特殊的字符数组(以“0”为最后一个元素值)。如
29、字符串”ab12”可以看成:int a5=a,b,1,2,0;ab120莆田学院现代教育技术中心 2004年3月2、字符数组的初始化 单字符方式 char a10=A,B,C,D;char b23=A,B,C,D,E,F;【注意】如果初值个数小于数组长度,则多余的数组元素自动为空字符(0)P130 字符串方式 char a5=“ABCD”;char c=”ABCD”;char a25=A,B,C,0,x,y,0;char a25=“ABC”,”XY”;二维字符数组可以认为由若干个一维字符数组(字符串)组成。莆田学院现代教育技术中心 2004年3月示例【例一】比较以下字符数组长度是否相同:cha
30、r a=”ABCD”;char b=“ABCD”;char c=A,B,C,D;【例二】下列程序段的运行结果是:char a5=a,b,0,d,0;printf(“%s”,a);如果 printf(“%s”,a+1);结果是?说明:%s的作用是输出一个字符串,直到遇到0为止。莆田学院现代教育技术中心 2004年3月注意:在二维数组中,双下标引用表示某行某列的某个元素 单下标引用表示某行的字符串【例三】分析以下程序的运行结果:main()char word310;int i;for(i=0;i3;i+)scanf(%s,wordi);printf(%s,wordi-2);运行时,输入:12345
31、abcdef ABCDEFGwordi表示第i+1行word元素首地址(二维数组用单下标表示某行的字符串)结果:abcdef莆田学院现代教育技术中心 2004年3月3、字符数组的输入(赋值)如果定义有 char a10;除了直接在定义时初始化,定义后赋值的方法有:法1:逐个元素赋值 a0=A,a1=X;法2:循环+scanf(“%c”,&);for(i=0;i10;i+)scanf(“%c”,&ai);莆田学院现代教育技术中心 2004年3月字符数组的输入(赋值)法3:scanf(“%s”,字符数组名);用于从键盘接收不带空格的字符串。如:scanf(“%s”,a);/*数组名前不可加&号*/
32、此法可自动在所输入的字符串末尾加上0。但输入的字符串中不能有空格。(C语言规定scanf用%s时,以空格或回车符作为字符串的间隔符。所以,上例中,如果从键盘输入“Computer”然后回车,则数组a存放的是”Computer0”。如果输入“Turbo C“,数组a中实际只存放”Turbo0”)。法4:gets(字符数组名);用于从键盘接收一个任意字符串。gets(a)执行时,将一直读取用户从键盘输入的所有字符,直到遇到回车符(n)为止。成功:返回数组a首地址,否则返回NULL。gets(a)亦会自动在字符串末尾加上0(代替n)。莆田学院现代教育技术中心 2004年3月示例 main()char
33、 name20;printf(Whats your name?);gets(name);printf(Hi,%s,nice to meet you!n,name);运行程序时,从键盘输入:XXX(XXX为考生姓名)结果:Hi,XXX,nice to meet you!(XXX为考生姓名)莆田学院现代教育技术中心 2004年3月示例 main()char a10;gets(a);printf(%sn,a+2);运行程序时,从键盘输入:abc defg 结果:c defg 莆田学院现代教育技术中心 2004年3月4、字符数组的输出法1:逐个元素输出 循环+printf(“%c”,);法2:字符串输
34、出 printf(“%s”,字符数组名);法3:字符串输出 puts(字符数组名);将一个以NULL(0)结尾的字符串输出到屏幕上,并自动换行。莆田学院现代教育技术中心 2004年3月示例已知函数isaplha(ch)的功能是判断自变量ch是否为字母,若是,该函数值为1,否则为0。以下程序的输出结果是 。#include#include void fun(char str)int i,j;for(i=0,j=0;stri;i+)if(!isalpha(stri)strj+=stri;strj=0;main()char str100=Current date is Sat 12-30-2000.
35、;clrscr();fun(str);printf(%sn,str);结果:12-30-2000 莆田学院现代教育技术中心 2004年3月示例讨论p常用si 作循环条件,当循环(i递增)到字符串结束处(0)便自动结束循环。p典型结构:如果s是字符串,则下列结构可以将s中不符合 条件的字符删去。int i,j;for(i=0,j=0;stri;i+)if(条件)strj+=stri;strj=0;p思考:如果上题中去掉if(!isalpha(stri)中的!号,结果是什么?p如果将isalpha()函数改为islower、isupper、isdigit,结果是什么?(教材P383-384)(Cu
36、rrentdateisSat)(urrentdateisat、CS、12302000)莆田学院现代教育技术中心 2004年3月5、字符串运算函数gets()和puts()字符串输入/输出函数strcpy()字符串考贝函数 (包含在string.h中,下同)形式:strcpy(目的字符数组,源字符串);作用:将源字符串考贝到目的字符数组中,直到遇到源字符串的终止符0为止。函数返回值:目的字符数组的地址。注意:目的字符数组要定义得足够大。若要将一个字符串常量或从某一首地址开始的字符串复制给别的数组,只能用本函数或指针。莆田学院现代教育技术中心 2004年3月示例 main()char a=abcd
37、e;char b10;b=abcde;b=a;/*编译出错*/*编译出错*/【讨论】编译出错原因何在?a,b都是两个数组定义时分配的内存存储单元首地址,是个常量,不能改变(不能赋值)。莆田学院现代教育技术中心 2004年3月示例#include“string.h”main()char s10,sp=”HELLO”;strcpy(s,sp);s0=h;s6=!;puts(s);结果:hELLO【讨论】结果为什么不是:hELLO!如果让s5=!,结果又会如何?莆田学院现代教育技术中心 2004年3月如果只需考贝字符串的一部分 如果是考贝字符串的一部分,可用函数strncpy(目的字符数组,源字符串
38、,考贝字符数)#include“string.h”main()char s=”This is a source string.”,b20;strncpy(b,s,16);b16=0;printf(“%sn”,b);结果:This is a source 莆田学院现代教育技术中心 2004年3月more string functionsstrcat()字符串连接函数 形式:strcat(目的字符数组,源字符串);作用:将源字符串连接到目的字符数组后面。函数返回值:目的字符数组的地址。注意:目的字符数组要定义得足够大。莆田学院现代教育技术中心 2004年3月示例#include string.hm
39、ain()char a=abcde;char b=12345;strcat(b,a);printf(%s,%sn,a,b);结果:abcde,12345abcde 数组b长度定义不够,将数组b的长度定义11,则出错消失?【讨论】为什么程序执行完后出错?莆田学院现代教育技术中心 2004年3月示例#include string.hmain()char a80=”AB”,b80=”LMNP”;int i=0;strcat(a,b);while(ai+!=0)bi=ai;puts(b);结果:LBLMNP 【注意】bi=ai是从i=1开始 莆田学院现代教育技术中心 2004年3月more strin
40、g functionsstrcmp()字符串比较函数 形式:strcmp(字符串1,字符串2);作用:对两个字符串从各自第一个字符开始进行逐一比较,直到对应字符不相同或到达串尾为止。函数返回值:确定了比较结果 小于0 字符串1小于字符串2 等于0 字符串1等于字符串2 大于0 字符串1大于字符串2莆田学院现代教育技术中心 2004年3月示例#include main()int i;char str10,temp10=Control;for(i=0;i4;i+)gets(str);if(strcmp(temp,str)0)strcpy(temp,str);puts(temp);结果:PAGE 从
41、键盘输入:BOOKCUTGAMEPAGE莆田学院现代教育技术中心 2004年3月more string functionsstrlen()字符串长度函数 形式:strlen(字符串)作用:测试所给字符串的实际字符个数(不包括0)函数返回值:实际字符个数以下程序段的运行结果是什么?char a=”tr0willn”;printf(“%d,%d”,sizeof(a),strlen(a);结果:10,3莆田学院现代教育技术中心 2004年3月more string functionsstrupr()和strlwr()大小写转换函数 strupr(字符串)小写大写 strlwr(字符串)大写小写#in
42、clude main()char s50;clrscr();printf(Input the string of lower case:);gets(s);strupr(s);printf(The string after strupr is:%sn,s);第五章作业 一、编程题 【要求】所有编程题须上机调试通过,源程序及运行结果用作业本 上交。源程序要求按缩进形式书写,文字端正整齐。不合格者退回重做。1、编一个程序,产生30个随机整数,存入数组,用冒泡法和选择法分别对其进行排序。要求显示排序前后的数据情况,且循环结构中的数组下标应从0开始。2、编一个程序,由键盘输入26个英文字母中的任何一个
43、,程序应能显示该字母的位置。由键盘连续30个英文字母后,能够按字母顺序显示出来(输入字母时可以随机输入,重复的字母只显示一次)。第五章作业3、有17个人围成一圈(编号为016),从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩一个人为止。编程求此人原来的编号是多少号。(答案:10)二、上机考核题2003年1月等级考试题第3大题第2小题(上机抽查)阶段项目程序题(Projects)n要求:每个项目程序必须有一个软件封面,显示软件名称、作者、简要功能及使用方法,结束时应有告别辞。其余要求同第一题,但源程序不需用作业本上交,可通过电子邮件提交或上机检查。n提交时间:本章授课结束后三周内。在第三章编程作业题第7题程序的基础上(循环求任意系数值的一元二次方程任意根的通用程序),加入软件封面、说明和帮助文档功能,并加入密码验证功能(使用所编写一元二次方程通用程序时必须先输入正确密码),如果连续三次密码输入均错,程序自动结束。
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。