版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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;x10;x+) ax=random(100); max=a0; for(x=0;xmax) max=ax; printf(%4d,ax); printf(nmax=%dn,max); return 0;程序运行结果如下:41 67 34 0 69 24 7
4、8 58 62 64max=786输入10个整数,要求按照从小到大的顺序输出。解:#includevoid main()int i,j,min,t,a10;printf(请输入10个数:n);for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i10-1;i+)min=i;for(j=i;jaj) min=j;t=ai;ai=amin;amin=t;printf(n排序结果如下:n);for(i=0;i10;i+)printf(%5d,ai);程序运行情况如下:请输入10个数:6 90 45 56 1 15 44 78 58 101排序结果如下: 1 6 15 44 45
5、 56 58 78 90 1017输入10个字符,并将它们的顺序颠倒后输出。解:#include#define N 10void main()char aN,t;int i;/* 输入10个字符并输出*/printf(请输入10个字符:n);for(i=0;i10;i+) scanf(%c,&ai); /*顺序颠倒*/ for(i=0;iN/2;i+)t=ai;ai=aN-i-1;aN-i-1=t;printf(顺序颠倒后的字符:n); for(i=0;iN;i+)printf(%c,ai);程序运行情况如下:请输入10个字符:顺序颠倒后的字符: 8写出下列程序的运行结果。 (1)#inclu
6、de void fun(int b) int i=0; while(bi=10) bi+=2; i+;int main() int i,a=1,5,7,9,11,13,15; fun(a+2); for(i=0;i7;i+) printf(%5d,ai); return 0; 解: 1 5 9 11 11 13 15(2)#includeint main() int a33,i,j; for(i=0;i3;i+)for(j=0;j3;j+)aij=i; for(i=0;i3;i+)printf(%5d,a1i); return 0;解: 1 1 1(3)#include int main()
7、int k; int a33=1,2,3,4,5,6,7,8,9; for(k=0;k3;k+) printf(%d ,ak2-k); return 0; 解: 3 5 7(4)#include #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 ) /* 字符串从小到大排序 */
8、char t10; int i,j; for(i=0;in-1;i+) for(j=i+1;j0) strcpy(t,pi); strcpy(pi,pj); 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;i3;i+)for (j=0;j3;j+)scanf(%f,&aij
9、);for (i=0;i3;i+ )sum=sum+aii;printf(对角线元素之和=%.2fn,sum);程序运行情况如下: 请输入矩阵元素: 1 2 3 4 5 6 7 8 9 对角线元素之和=15.0010找出一个二维数组中的鞍点,所谓鞍点是指该位置上的数在该行最大,在该列最小。需要注意的是,并不是所有的二维数组都有鞍点。解:#define N 10#define M 10#include void main()int i,j,k,m,n,flag1,flag2,aNM,max,maxj;printf(n输入行数n:);scanf(%d,&n);printf(n输入列数m:);sca
10、nf(%d,&m);for (i=0;in ;i+ ) printf(第%d行?n,i); for (j=0;jm ;j+ ) scanf(%d,&aij);for (i=0;in ;i+ ) for (j=0;jm ;j+ ) printf(%5d,aij); printf(n);flag2=0;for (i=0;in ;i+ ) max=ai0; maxj=0; for (j=0; jmax)max=aij;maxj=j;for (k=0,flag1=1;kakmaxj)flag1=0;if (flag1)printf(n第%d行,第%d列的%d是鞍点n,i,maxj,max);flag2
11、=1;if(!flag2)printf(n矩阵中无鞍点!n); 矩阵中有鞍点,运行情况如下:输入行数n:2输入列数m:2第0行?45第1行?464546第0行,第1列的5是鞍点 矩阵中无鞍点,运行情况如下:输入行数n:2输入列数m:2第0行?907第1行?58907 58矩阵中无鞍点!11某班有30个学生,每个学生参加了5门课程的考试,请编程显示该班的期末成绩单,并求出每个学生的所有课程的总分。解:#includevoid main()int score317;int i,j;for(i=1;i=30;i+) scorei0=i;printf(请依次输入30个学生的五门课的成绩n);for(i
12、=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=5;j+) scorei6+=scoreij;printf(期末成绩单n);printf(%10s%10s%10s%10s%10s%10s%10sn,学号,课程1,课程2,课程3,课程4,课程5,总分);for(i=1;i=30;i+)for(j=0;j=6;j+)printf(%10d,scoreij);printf(n);程序运行情况如下:请依次输入30个学生的五
13、门课的成绩请依次输入第1个学生的五门课的成绩78 89 98 96 98请依次输入第2个学生的五门课的成绩89 95 98 97 96请依次输入第3个学生的五门课的成绩78 79 74 78 75 按照上面示例自行输入27个学生的五门课的成绩。期末成绩单学号 课程1 课程2 课程3 课程4 课程5 总分1 78 89 98 96 98 4592 89 95 98 97 96 4753 78 79 74 78 75 384程序将在此处依次打印出另外27个学生的成绩。 12打印出如下方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4解:#include void
14、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+)printf(%10d,arrayij);printf(n); 13打印出以下的杨辉三角形(要求打印出10行): 11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 解:#include#define N 11void main()int i,j,aNN;for(i=1;iN;i+)aii=1;ai1=1;for (i=3;iN;i+)for(j=2;j=
15、i-1;j+)aij=ai-1j-1+ai-1j;for(i=1;iN;i+)for(j=1;j=i;j+)printf(%6d,aij);printf(n);printf(n);程序运行结果如下:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 114输入5个字符串,按照ASCII码值由小到大顺序输出。解:#include#includevoid main()int i,j,min;char t
16、20,str520;printf(请输入5个字符串:n);for(i=0;i5;i+)gets(stri);for(i=0;i5-1;i+)min=i;for(j=i;j0) min=j;strcpy(t,stri);strcpy(stri,strmin);strcpy(strmin,t);printf(n排序结果如下:n);for(i=0;i5;i+)puts(stri);程序运行情况如下:请输入5个字符串:flashactionphotodreamweaver排序结果如下:actiondreamflashphotoweaver15有一篇文章,共有5行文字,每行有80个字符。要求分别统计出其
17、中英文大写字母、小写字母、数字、空格以及其他字符的个数。解:#includevoid main()int i,j,uppn,lown,dign,span,othn;char text580;uppn=lown=dign=span=othn=0;for (i=0;i5;i+)printf(n请输入第%d行:n,i);gets(texti);for (j=0;j=A&textij=a & textij=0&textij=9)dign+=1;else if(textij= )span+=1;elseothn+=1;for (i=0;i5 ;i+ )printf(%sn,texti);printf(大
18、写字母的个数:%dn,uppn);printf(小写字母的个数:%dn,lown);printf(数字的个数:%dn,dign);printf(空格的个数:%dn,span);printf(其他字符的个数:%dn,othn);程序运行情况如下:请输入第0行:abc请输入第1行:+请输入第2行:ABC请输入第3行:123请输入第4行:*大写字母的个数:3小写字母的个数:3数字的个数:3空格的个数:0其他字符的个数:6 16有一行电文,已按下面规律译成密码: A Z a z B Y b y C X c x 即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。要求编写程序将密码译回原文,并打印出密码和原文。解:#include main()int i,n;char ch80,tran80;printf(请输入字符:);gets(ch);printf(n密码是:%s,ch);i=0;while (chi!=0) if ( (chi=A)&(chi=a)&(chi=z)trani=26+96-chi+1+96;else trani=chi;i+;n=i;printf (n原文是:);for (i=0;in;i+)putchar (trani);程序运行情况
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程造价实习报告(10篇)
- 24.3.2 三角形一边的平行线 同步练习
- 物业公司试用期工作总结简短(3篇)
- 食堂食品安全自查制度
- 社区元旦活动主持稿
- 第二十六章 二次函数(单元重点综合测试)
- 统编版三年级上册语文第一学期期末考试卷(三)(含答案)
- 广东省揭阳市2024-2025学年高二上学期期中考试英语试题(含答案)
- 广东高考语文三年模拟真题(21-23年)知识点汇编-名篇名句默写
- MES系统如何帮助中小企业实现数字化转型
- 2023年中级经济师考试真题及答案完整版
- Unit4ExploringpoetryExtendedReading公开课课件高中英语牛津译林版(2020)选择性
- 天线技术在智能电网通信系统中的关键技术研究-第2篇
- 急诊科护士培训计划(6篇)
- 安装发光字验收单
- 中职英语新高教版基础模块1unit4school-life
- 无线网络规划流程及方法
- 河道修防工高级技师技能操作试题
- 华为HCIP H31-341 V2.5传输认证考试题库大全-下(判断、填空题汇总)
- 天津高考英语词汇3500
- 扑克牌搭高塔 课件(16张PPT) 小学班会活动
评论
0/150
提交评论