1、 习题 5 参考解答1数组是相同数据类型的集合,分为一维数组、二维数组及多维数组。在什么情况下使用数组?在什么情况下使用一维数组?解:当需要处理的数据为相同类型的数据的集合时,可以使用数组。如果这些数据的描述用一个量就可以,这时就用一维数组。例如,一组学生的学号,就可以使用一维数组。2数组元素又称为下标变量,数组元素的下标有何意义?解:下标的意义是对数组的各个数组元素进行标识和区分。由数组名和下标结合起来形成数组元素的名字。3使用字符数组来存储字符串应注意什么问题?解:需要注意的问题是字符数组在存储字符串时是以0作为结束标记的。这个0 是系统自动加上的。所以字符数组的长度需要比它要存储的字符串
2、的长度至少多 1。例如,要存储字符串“abcd“,因为它的长度为 4,所以存储它的字符数组的长度至少为 5。4常用的字符处理函数有哪些?解:常用的字符处理函数有以下 8 个。(1)puts(字符串):作用为将一个字符串输出到终端。 (2)gets(字符数组) :作用为从终端输入一个字符串到字符数组,并且得一个函数值。(3)strcat(字符串 1,字符串 2):作用为进行字符串的连接。(4)strcpy(字符串 1,字符串 2):作用为进行字符串的复制。(5)strcmp( 字符串 1,字符串 2):作用为进行字符串的比较。(6)strlen(字符串):作用为求字符串的长度。(7)strlwr
3、(字符串):作用为将字符串中的大写字母转换成小写字母。(8)strupr(字符串):作用为将字符串中的小写字母转换成大写字母。5随机产生 10 个两位整数存储到一个一维数组中,找出其中的最大数。解:#include#include#define random(x) (rand()%x)int main()int a10,max;int x;for(x=0;xmax)max=ax;printf(“%4d“,ax);printf(“nmax=%dn“,max);return 0;程序运行结果如下:41 67 34 0 69 24 78 58 62 64max=786输入 10 个整数,要求按照从小
4、到大的顺序输出。解:#includevoid main()int i,j,min,t,a10;printf(“请输入 10 个数:n“);for(i=0;iaj) min=j;t=ai;ai=amin;amin=t;printf(“n 排序结果如下:n“);for(i=0;i#define N 10void main()char aN,t;int i;/* 输入 10 个字符并输出 */printf(“请输入 10 个字符:n“);for(i=0;ivoid fun(int b)int i=0;while(biint main() int a33,i,j; for(i=0;iint main(
5、)int k;int a33=1,2,3,4,5,6,7,8,9;for(k=0;k#include int main()char p20=a,b,c,d,q=“abc“,r=“abcde“;strcpy(p+strlen(q),r); strcat(p,q);printf(“%dn%dn“,sizeof(p),strlen(p);return 0;解:2011(5)#include #include void f(char p10,int n ) /* 字符串从小到大排序 */ char t10; int i,j;for(i=0;i0) strcpy(t,pi); strcpy(pi,pj)
6、; strcpy(pi,t); int main()char p510=“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“;f(p,5);printf(“%dn“,strlen(p0);return 0;解:39求一个 33 矩阵对角线元素之和。解:#includemain()float a33,sum=0;int i,j;printf(“请输入矩阵元素:n“);for (i=0;ivoid main()int i,j,k,m,n,flag1,flag2,aNM,max,maxj;printf(“n 输入行数 n:“);scanf(“%d“,printf(“n 输入列数 m:
7、“);scanf(“%d“,for (i=0;imax)max=aij;maxj=j;for (k=0,flag1=1;kakmaxj)flag1=0;if (flag1)printf(“n 第%d 行,第%d 列的%d 是鞍点n“,i,maxj,max);flag2=1;if(!flag2)printf(“n 矩阵中无鞍点!n“);矩阵中有鞍点,运行情况如下:输入行数 n:2输入列数 m:2第 0 行?45第 1 行?464 54 6第 0 行,第 1 列的 5 是鞍点矩阵中无鞍点,运行情况如下:输入行数 n:2输入列数 m:2第 0 行?907第 1 行?5890 75 8矩阵中无鞍点!1
8、1某班有 30 个学生,每个学生参加了 5 门课程的考试,请编程显示该班的期末成绩单,并求出每个学生的所有课程的总分。解:#includevoid main()int score317;int i,j;for(i=1;ivoid main()int array44;int i,j;for(i=0;i#define N 11void main()int i,j,aNN;for(i=1;i#includevoid main()int i,j,min;char t20,str520;printf(“请输入 5 个字符串:n“);for(i=0;i0) min=j;strcpy(t,stri);str
9、cpy(stri,strmin);strcpy(strmin,t);printf(“n 排序结果如下:n“);for(i=0;ivoid main()int i,j,uppn,lown,dign,span,othn;char text580;uppn=lown=dign=span=othn=0;for (i=0;i=Achar ch80,tran80;printf(“请输入字符:“);gets(ch);printf(“n 密码是:%s“,ch);i=0;while (chi!=0) if ( (chi=A)int i;printf(“请输入字符串:“);scanf(“%s“,from);for (i=0; i=strlen(from);i+ )toi=fromi;printf(“复制字符串为:%sn“,to);return 0;程序运行情况如下:请输入字符串:hello复制字符串为:hello