ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:23.01KB ,
资源ID:11004387      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11004387.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计习题5.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计习题5.docx

1、C语言程序设计习题5 习题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 6

4、9 24 78 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排

5、序结果如下: 1 6 15 44 45 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个字符:09顺序

6、颠倒后的字符:10 8写出下列程序的运行结果。 (1)#include 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

7、0;解: 1 1 1(3)#include int main() 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(

8、char p10,int n ) /* 字符串从小到大排序 */ 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

9、=0;i3;i+) for (j=0;j3;j+) scanf(%f,&aij); for (i=0;i3;i+ ) sum=sum+aii; printf(对角线元素之和=%.2fn,sum); 程序运行情况如下: 请输入矩阵元素: 1 2 3 4 5 6 7 8 9 对角线元素之和=10找出一个二维数组中的鞍点,所谓鞍点是指该位置上的数在该行最大,在该列最小。需要注意的是,并不是所有的二维数组都有鞍点。解:#define N 10#define M 10#include void main() int i,j,k,m,n,flag1,flag2,aNM,max,maxj; printf(n

10、输入行数n:); scanf(%d,&n); printf(n输入列数m:); scanf(%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; i

11、f (flag1) printf(n第%d行,第%d列的%d是鞍点n,i,maxj,max); flag2=1; if(!flag2) printf(n矩阵中无鞍点!n); 矩阵中有鞍点,运行情况如下:输入行数n:2输入列数m:2第0行45第1行46 4 5 4 6第0行,第1列的5是鞍点 矩阵中无鞍点,运行情况如下:输入行数n:2输入列数m:2第0行907第1行58 90 7 5 8矩阵中无鞍点!11某班有30个学生,每个学生参加了5门课程的考试,请编程显示该班的期末成绩单,并求出每个学生的所有课程的总分。解:#includevoid main() int score317; int i,j

12、; 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=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+

13、) for(j=0;j=6;j+) printf(%10d,scoreij); printf(n); 程序运行情况如下:请依次输入30个学生的五门课的成绩请依次输入第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个

14、学生的成绩。 12打印出如下方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4解:#include 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+) printf(%10d,arrayij); printf(n); 13打印出以下的杨辉三角形(要求打印出10行): 解:#include#define N 11void main() int i,j,aNN; for(i=1

15、;iN;i+) aii=1; ai1=1; for (i=3;iN;i+) for(j=2;j=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码值由

16、小到大顺序输出。解:#include#includevoid main() int i,j,min; char t20,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个字符串:flashactionphotodreamwea

17、ver排序结果如下:actiondreamflashphotoweaver15有一篇文章,共有5行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。解:#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; el

18、se if(textij= ) span+=1; else othn+=1; for (i=0;i5 ;i+ ) printf(%sn,texti); printf(大写字母的个数:%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 1

19、6有一行电文,已按下面规律译成密码: 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; pri

20、ntf (n原文是:); for (i=0;in;i+) putchar (trani); 程序运行情况如下:请输入字符:ZYXzyx密码是:ZYXzyx原文是:ABCabc17编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。要求不使用 strcpy函数。复制时,0也要复制过去。0后面的字符不复制。解:#include #include int main()char from80,to80;int i; printf(请输入字符串:); scanf(%s,from);for (i=0; i=strlen(from);i+ ) toi=fromi;printf(复制字符串为:%sn,to);return 0; 程序运行情况如下: 请输入字符串:hello 复制字符串为:hello

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1