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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数组习题课.docx

1、数组习题课第六章数组 习题课内容回顾:1、 数组定义:类型标识符 数组名整型常量表达式;类型标识符 数组名整型常量表达式 整型常量表达式;如:int a10,b34; double f10;2、 数组初始化int x10=1,2,3,4,5,6,7,8,9,10;float score5=89.5,90.8,67.8,65,88;3、 数组的引用使用下标变量 与普通变量的使用一样。4、 字符数组char str6=“hello”;char str16=h,e,l,l,o,0char s1310 = h,e,l,l,o,c,h,i,n,a,w,o,r,l,d;char s2310 =“hello

2、”,”china”,”world”;5、 字符串处理函数Char s120=“hello”;strcat(s1,”world”); helloworld strcpy(s1,”china234234llo”);strcmp(字符串1,字符串2); 结果:1, 0, -1strlen(字符串); #include 1、 例6.5:将矩阵的行和列互换。A矩阵:1 2 3 B矩阵: 1 4 4 5 6 2 5 3 6关键算法:bji=aij主要流程:(1)用双重循环实现数据的输入; (2)用双重循环实现矩阵转置; (3)用双重循环实现A矩阵数据的输出; (4)用双重循环实现B矩阵数据的输出;#inc

3、lude void main()int a23,b32,i,j; printf(“please input 6 integers:n”); for(i=0;i=1;i+) for (j=0; j=2;j+) scanf(%d,&aij); /输入一个23的矩阵存入数组a for(i=0;i=1;i+) for (j=0; j=2;j+) bji=aij; /将数组a中矩阵转置后存入数组b printf(“nmatrix a is :n”); for(i=0;i2;i+) for(j=0;j3;j+) printf(%4d,aij); printf(n); /输出数组a中的23矩阵 printf

4、(“nmatrix b is :n”); for(i=0;i3;i+) for(j=0;j2;j+) printf(%4d,bij); printf(n); /输出数组b中的32矩阵 2、 例6.6:求N行N列正方阵的两条对角线元素之和(每个元素不得重复加)。3*3矩阵: 1 2 3 4*4矩阵: 1 2 3 4 4 5 6 5 6 7 8 7 8 9 9 10 11 12 13 14 15 16关键算法:(1)sum=sum+aii+aiN-i-1 (2)sum=sum-aN/2N/2(当N为奇数时)主要流程:(1)用双重循环实现N*N方阵元素数据的输入; (2)用双重循环实现N*N方阵元素

5、的输出; (3)用单循环实现N*N方阵两对角线元素的累加; (4)根据判断方阵行(列)是否奇数,和值减去中心元素。#include #define N 3void main() int aNN=1,2,3,4,5,6,7,8,9;int i,j,sum=0;/用双重循环实现N*N方阵元素数据的输入 printf(nPlease input %d %d matrix:n,N,N); for(i=0; iN; i+) for(j=0; jN; j+) scanf(%d,&aij);/用双重循环实现N*N方阵元素的输出 printf(nThe %d %d matrix:n,N,N); for(i=0

6、; iN; i+) for(j=0; jN; j+) printf(%4d,aij); printf(n);/用单循环实现N*N方阵两对角线元素的累加 for(i=0; iN; i+) sum+=aii+aiN-i-1;/根据判断方阵行(列)是否奇数,和值减去中心元素 if(N%2!=0) sum-=aN/2N/2; / 判断N是不是奇数 printf(nThe sum of all elements on 2 diagnal is %d.n,sum);3、 例6.11:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。例如,输入:this is a c program. 输出:5关键

7、算法:(1)单词开始标志的清零与置位。 (2)字符串结束标志的判断。主要流程:(1)从第0个字符开始,依次与空格字符比较,如果是空格,标志word=0;如果是非空格,若word=0,则新单词开始,置标志位word=1,累计单词个数;否则,继续读下一个字符。 (2)输出单词数。#include stdio.hvoid main() char string81; int i, num=0, word=0; char c; gets(string); for(i=0;(c=stringi)!=0;i+) if(c= ) word=0; /连续空格时word重复赋0 else if(word=0) /

8、新的单词开始了 word=1; num+; printf(There are %d words in the line.n,num);4、 类似例6.11例6.13:输入一个字符串到str字符数组,将该字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除;串中剩余字符所形成的一个新串放在s字符数组中。例如,输入:0123456789 输出:02468关键算法:(1)求余。 (2)在新串s末尾加上字符串结束标记0。主要流程:(1)对字符串str中的字符逐个判断,若某个字符的下标为偶数、同时ASCII值也为偶数,则将该字符存入s字符数组中。 (2)输出新字符串s。#includ

9、e #include void main() char str100,s100; int i,j=0,n;/scanf(%s,str);gets(str); n=strlen(str); /取字符串str长度 for(i=0;in;i+) if(i%2=0 & stri%2=0) /判断字符i是否符合条件 sj=stri; /将偶数下标及偶数ASCII码的字符放入新串 j+; /新串长度加1 sj=0; /新串添加结束符 printf(nThe result is : %sn,s);5、例6.14:输入一个字符串,然后逆置。例如,输入:ABCDE 输出:EDCBA关键算法:借助第三方变量交换数

10、据。 ch=si; si=sj; sj=ch;主要流程:(1)读入一个字符串; (2)用单循环实现前后数据的交换; (2)输出逆置后的新字符串s。#include #include #define M 60void main() char sM,ch; int j,m; printf(Input a string:); gets(s); m=strlen(s)-1; /m=4 for(j=0; jm; j+, m-) ch=sj; sj=sm; sm=ch; printf(The reversal string :%sn,s);6、例6.15:编写程序,将一个数字字符串转换为一个整数,不得使用

11、c语言提供的转换函数(atoi(“123”) itoa(1234)。例如,输入:”123” 输出:123关键算法:(1)数字字符的ASCII码减去0(或0x30或48),即得0-9的数值。(2)不断进行高位乘10运算,再累加。(3)考虑负号。主要流程:(1)读入一个字符串; (2)判断第0个字符是否为-号;是,即从第1个字符开始转换,否则从第0个字符开始转换。 (2)用循环实现每个数字字符到对应数值的转换、累加; (3)输出转换后的数值。#include #include void main() char str80; long x=0; int i=0,n; printf(please in

12、put a string:n); gets(str); printf(nstring is : %sn,str); n=strlen(str); if(str0=-) i+; for( ; in; i+) x=x*10+stri-0; if(str0=-) x=-x; printf(nvalue=%dnn,x);7、习题3.1:用“两路合并法”,把两个已按升序排列的数组合并成一个升序数组。例如,输入a:8 9 10 11输入b:12 32 55 67 78 输出c:12 15 32 34 48 55 67 78 98关键算法:(1)a、b数组中两个元素大小比较(2)a、b、c三个数组下标控制。

13、主要流程:(1)用循环读入两个数组的元素(也可以使用初始化元素); (2)循环比较a、b两个数组中的元素,把小的元素放入c中,注意下标控制。 (3)用循环实现把a数组中剩余元素移入c中; (4)用循环实现把b数组中剩余元素移入c中; (5)用循环输出排序后的数组。#include #define M 4#define N 5void main() int aM=15,34,48,98; int bN=12,32,55,67,78; int cM+N+1; int i,j,k; i=j=k=0;/用循环实现两个数组元素的输入 printf(nPlease input array a %d:n,M

14、); for(i=0; iM; i+) scanf(%d,&ai); printf(nPlease input array b%d:n,N); for(i=0; iN; i+) scanf(%d,&bi);/循环比较a、b两个数组中的元素,把小的元素放入c中,注意下标控制。 i=j=0; while(iM & jN) if (aibj) ck=ai; k+; i+; else ck=bj; k+; j+; /用循环实现把a数组中剩余元素移入c中; while( iM & j=N ) ck=ai; i+; k+; /用循环实现把b数组中剩余元素移入c中; while( jN & i=M ) ck

15、=bj; k+; j+; /用循环输出排序后的数组c。 printf(nresult:n); for(i=0;ik;i+) printf(%5d,ci); printf(n);8、习题3.2:求能整除k且是偶数的数,把这些数保存在数组中,并按从大到小输出。例如,输入k:100 输出:50 20 10 4 2关键算法:(1)求余运算。 (2)从大到小输出的方法。主要流程:(1)用循环从1到k,逐个求余,把满足条件的数存入数组中; (2)用循环输出数组元素。# include # include main() int i,j=0,k,a100; scanf(%d,&k); for(i=1; i=0

16、;i-) printf(%d ,ai);8、习题3.3:把一个整数转换成字符串,并倒序保存在字符数组a中。例如,输入n:123 输出s:“321”关键算法:(1)求余、整除运算。 (2)数值转换为ASCII码字符方法:+0; (3)添加字符串结束标志0。主要流程:(1)对数值n,循环和10求余后,+0后存入数组中,并对数值n整除10,数组下标增1。 (2)添加字符串结束标志0。 (3)输出字符串。#include #include #define M 80void main() long int n=1234567; char sM; int j=0; printf(please input

17、n:n); scanf(%d,&n); while(n0) sj=n%10+0x30; n /=10; j+; sj=0; printf(nReverse order result:%snn,s);9、习题4.2:利用“插入排序法”对一个字符串中的字符按照从小到大顺序排序。例如, 输入s:china 输出str:achin关键算法:(1)先对字符串中序; (2)把第三个字符顺序插入到前两个字符中; (3)把第四个字符顺序插入到前三个字符中;。主要流程:(1)输入一个字符串。 (2)从第1个字符开始到n-1循环处理每一个字符。 (3)把前两个字符排序。 (4)依次把后面的字符顺序插入到前面的字符

18、中。#include #include #define N 100void main() int i,j; char strN=asdfsdfsdf,ch; for(i=1;i=0) & (chstrj) strj+1=strj; /当字符ch小于strj,依次向后移动一个字符 j-; strj+1=ch; /把ch插入到排序的位置 printf(The string after sorting : %snn,str);10、习题4.3:计算一个字符串中包含子字符串的数目。例如,输入字符串s1:this is a c program 子字符串s:is 输出:2关键算法:(1)字符串结束标志0;

19、 主要流程:(1)输入一个字符串和一个子串。 (2)从字符串的第0个字符开始,直到结束标志0为止; (3)依次和子串的第一个字符比较,从相等的字符开始,直到子串结束,包含子串的数目加1。 (4)循环进行步骤(3),直到字符串结束为止。#include #include #define M 80void main() char s1M,s2M; int num,i,j=0; printf(please input a string s1:n); gets(s1); /输入字符串 printf(please input sub string s2:n); gets(s2); /输入子字符串 num=0; for(i=0; s1i!=0; i+)/依次取母串的下一个字符,直到结束 if(s2j=s1i) /比较子串与母串的各个字符是否相等 j+; /取子串的下一个字符 if(s2j=0) /直到子串结束 num+; /包含子串数目加1 j=0; /子串下标清零,为找下一个子串做准备 printf(nThe result is:num=%dn,num);

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

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