C语言程序设计习题5_第1页
C语言程序设计习题5_第2页
C语言程序设计习题5_第3页
C语言程序设计习题5_第4页
C语言程序设计习题5_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、习题 5 参考解答1数组是相同数据类型的集合,分为一维数组、二维数组及多维数组。在什么情况下使用数组?在什么情况下使用一维数组?解:当需要处理的数据为相同类型的数据的集合时,可以使用数组。 如果这些数据的描述用一个量就可以,这时就用一维数组。例如,一组学生的学号,就可以使用一维数组。2数组元素又称为下标变量,数组元素的下标有何意义?解: 下标的意义是对数组的各个数组元素进行标识和区分。由数组名和下标结合起来 形成数组元素的名字。3使用字符数组来存储字符串应注意什么问题?解: 需要注意的问题是字符数组在存储字符串时是以'0'作为结束标记的。这个 '0'是系1。例如

2、,要存5。统自动加上的。所以字符数组的长度需要比它要存储的字符串的长度至少多 储字符串 "abcd" ,因为它的长度为 4,所以存储它的字符数组的长度至少为4常用的字符处理函数有哪些?解:常用的字符处理函数有以下 8 个。puts(字符串):作用为将一个字符串输出到终端。gets(字符数组):作用为从终端输入一个字符串到字符数组,并且得一个函数值。strcat(字符串1,字符串2):作用为进行字符串的连接。strcpy(字符串1,字符串2):作用为进行字符串的复制。strcmP(字符串1,字符串2):作用为进行字符串的比较。strlen(字符串):作用为求字符串的长度。7)

3、8)strlwr( 字符串 ) :作用为将字符串中的大写字母转换成小写字母。strupr(字符串):作用为将字符串中的小写字母转换成大写字母。5随机产生 10 个两位整数存储到一个一维数组中,找出其中的最大数。解:#include<stdio.h>#include<stdlib.h>#define random(x) (rand()%x)int main()int a10,max;int x;for(x=0;x<10;x+)ax=random(100);max=a0;for(x=0;x<10;x+)if(ax>max)max=ax;printf(&qu

4、ot;%4d",ax);printf("nmax=%dn",max);return 0;程序运行结果如下:41 67 34 0 69 24 78 58 62 64max=786输入 10 个整数,要求按照从小到大的顺序输出。解:#include<stdio.h>void main()int i,j,min,t,a10;printf(" 请输入 10 个数 :n");for(i=0;i<10;i+)scanf("%d",&ai);for(i=0;i<10-1;i+)min=i;for(j=i;j

5、<10;j+)if(amin>aj) min=j;t=ai;ai=amin;amin=t;printf("n 排序结果如下 :n");for(i=0;i<10;i+)printf("%5d",ai);程序运行情况如下:请输入 10 个数 :6 90 45 56 1 15 44 78 58 101排序结果如下 :1 6 15 44 45 56 58 78 90 1017输入 10 个字符,并将它们的顺序颠倒后输出。解:#include<stdio.h>#define N 10void main()char aN,t;/* 输入

6、 10 个字符并输出 */ printf(" 请输入 10 个字符 :n");for(i=0;i<10;i+)int i;scanf("%c",&ai);/* 顺序颠倒 */ for(i=0;i<N/2;i+)t=ai;ai=aN-i-1;aN-i-1=t;printf(" 顺序颠倒后的字符: n");for(i=0;i<N;i+)printf("%c",ai);程序运行情况如下:请输入 10 个字符 :0123456789/顺序颠倒后的字符:98765432108写出下列程序的运行结果。

7、1 ) #include<stdio.h>void fun(int b)int i=0;while(bi<=10)bi+=2;int main()i+;int i,a=1,5,7,9,11,13,15;fun(a+2);for(i=0;i<7;i+)printf("%5d",ai);return 0;解:9 11 11 13 15#include<stdio.h> int main()int a33,i,j;for(i=0;i<3;i+) for(j=0;j<3;j+)aij=i;for(i=0;i<3;i+)print

8、f("%5d",a1i);return 0;解:#include<stdio.h> int main()int a33=1,2,3,4,5,6,7,8,9;for(k=0;k<3;k+)printf("%d ",ak2-k);return 0;int k;int main()解:#include <stdio.h> #include <string.h> int main()char p20='a','b','c','d',q="abc&q

9、uot;,r="abcde"strcpy(p+strlen(q),r); strcat(p,q);printf( "%dn%dn",sizeof(p),strlen(p);return 0;解:2011#include <stdio.h>#include <string.h>*/void f(char p10,int n )/* 字符串从小到大排序char t10;int i,j;for(i=0;i<n-1;i+)for(j=i+1;j<n;j+)if(strcmp(pi,pj)>0)strcpy(t,pi);

10、strcpy(pi,pj); strcpy(pi,t); char p510="abc","aabdfg","abbd","dcdbe","cd"f(p,5);printf("%dn",strlen(p0);return 0;解:9.求一个3X3矩阵对角线元素之和。解:#include<stdio.h>main()float a33,sum=0;int i,j;printf(" 请输入矩阵元素:n");for (i=0;i<3;i+) f

11、or (j=0;j<3;j+)scanf("%f",&aij);for (i=0;i<3;i+ )sum=sum+aii;printf(" 对角线元素之和=%.2fn",sum);程序运行情况如下:请输入矩阵元素 :对角线元素之和 =15.0010找出一个二维数组中的鞍点, 所谓鞍点是指该位置上的数在该行最大, 在该列最小。需要注意的是,并不是所有的二维数组都有鞍点。解:#define N 10#define M 10#include <stdio.h>void 3ain()in 二 jKmnf-agl J-ag2b-N=

12、MLmaxmaxrprinrnvl 鸯>弐蒲 nDscanf(=wd=en=prinrnvl 鸯>亘蒲 30Scanf(=%d=e3=for (nouAn 二+ )prinm- Ms n2rrDfor 0jAm j+ )scanf(=fcrca=NPfor 0亍3 j+ )prinff(=%5cra 三曰=prinmvr).f-ag2Ha3axHa=orRlaxjHPfor 0 二言+ )if (a三曰vmax)maxua三目maxj=j 八for (k=0,flag1=1;k<n && flag1;k+ )if (max>akmaxj)flag1=0;

13、if (flag1)printf("n 第%d 行,第 %d 列的 %d 是鞍点 n”,i,maxj,max);flag2=1;if(!flag2)printf("n 矩阵中无鞍点 !n");矩阵中有鞍点,运行情况如下: 输入行数n:2 / 输入列数m:2/ 第 0 行?4/ 5/第 1 行?4/6/第 0 行,第 1列的 5 是鞍点矩阵中无鞍点,运行情况如下: 输入行数 n:2/输入列数 m:2/第 0 行?90/ 7/第 1 行?5/ 8/90 7矩阵中无鞍点!11某班有 30 个学生,每个学生参加了 5 门课程的考试,请编程显示该班的期末成绩单,并求出每个学

14、生的所有课程的总分。解:#include<stdio.h> void main()int score317;int i,j;for(i=1;i<=30;i+)scorei0=i;printf(" 请依次输入 30 个学生的五门课的成绩 n");for(i=1;i<=30;i+)printf(" 请依次输入第 %d 个学生的五门课的成绩 n",i);for(j=1;j<=5;j+)scanf("%d",&scoreij);for(i=1;i<=30;i+)scorei6=0;for(j=1;j

15、<=5;j+)scorei6+=scoreij;1"," 课程 2","课程 3","课程printf(" 期末成绩单 n");printf("%10s%10s%10s%10s%10s%10s%10sn"," 学号"," 课程4"," 课程 5","总分 ");for(i=1;i<=30;i+)for(j=0;j<=6;j+)printf("%10d",scoreij);prin

16、tf("n");程序运行情况如下:请依次输入 30 个学生的五门课的成绩请依次输入第1 个学生的五门课的成绩7889 989698 /请依次输入第2 个学生的五门课的成绩8995 9897 96/请依次输入第3 个学生的五门课的成绩78 79 7478 75/按照上面示例自行输入27 个学生的五门课的成绩。期末成绩单学号课程 1课程 2课程 3课程 4课程 5总分178899896984592899598979647537879747875384程序将在此处依次打印出另外 27 个学生的成绩。12打印出如下方阵:13141516910111256781234解:#in el

17、ude <stdio.h>void main()int array44;int i,j;for(i=0;i<=3;i+)for(j=0;j<=3;j+)arrayij=(3-i)*4+(j+1);for(i=0;i<=3;i+)for(j=0;j<=3;j+)prin tf("%10d",arrayij);prin tf("n");13.打印出以下的杨辉三角形(要求打印出10行):1111111234513 16 4 110 10 5 1解:#in clude<stdio.h>#defi ne N 11vo

18、id main()int i,j,aNN;for(i=1;i<N;i+)aii=1;ai1=1;for (i=3;i<N;i+)for(j=2;j<=i-1;j+)aij=ai-1j-1+ai-1j;for(i=1;i<N;i+)for(j=1;j<=i;j+)printf("%6d",aij);printf("n");printf("n");程序运行结果如下:121133114641151010511615201561721353521182856705611289 36 84 126 126 84 3

19、614输入 5 个字符串,按照 ASCII 码值由小到大顺序输出。解:#include<stdio.h> #include<string.h> void main()int i,j,min;char t20,str520;printf(" 请输入 5 个字符串 :n");for(i=0;i<5;i+)gets(stri);for(i=0;i<5-1;i+)min=i;for(j=i;j<5;j+)if(strcmp(strmin,strj)>0) min=j;strcpy(t,stri);strcpy(stri,strmin)

20、;strcpy(strmin,t);printf("n 排序结果如下 :n");for(i=0;i<5;i+)puts(stri);程序运行情况如下:请输入 5 个字符串 : flash/ action/ p hoto/ dream/ weaver / 排序结果如下 : action dream flash photo weaver15有一篇文章,共有 5 行文字,每行有 80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。解:#include<stdio.h> void main()int i,j,uppn,lown,di

21、gn,span,othn;char text580;uppn=lown=dign=span=othn=0;for (i=0;i<5;i+)printf("n 请输入第 %d 行 :n",i);gets(texti);for (j=0;j<80&&textij!='0'j+)if(textij>='A'&&textij<='Z')uppn+=1;else if(textij>='a' && textij<='z')

22、lown+=1;else if(textij>='0'&&textij<='9')dign+=1;else if(textij=' ')span+=1;elseothn+=1;for (i=0;i<5 ;i+ )printf("%sn",texti);printf(" 大写字母的个数 :%dn",uppn);printf(" 小写字母的个数 :%dn",lown);printf(" 数字的个数 :%dn",dign);printf(&

23、quot; 空格的个数 :%dn",span);printf(" 其他字符的个数 :%dn",othn);程序运行情况如下:请输入第0行:abc请输入第1行:+请输入第2行:ABC请输入第 3 行:123请输入第 4 行:*大写字母的个数:3小写字母的个数:3数字的个数 :3空格的个数 :0其他字符的个数:616有一行电文,已按下面规律译成密码:At Z即第1个字母变成第26个字母,第i个字母变成第(26-i+1 )个字母。非字母字符不变。要求编写程序将密码译回原文,并打印出密码和原文。解:#include <stdio.h>main()int i,n;

温馨提示

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

评论

0/150

提交评论