数组编程习题解答.ppt

上传人:小飞机 文档编号:5986266 上传时间:2023-09-11 格式:PPT 页数:60 大小:524.50KB
返回 下载 相关 举报
数组编程习题解答.ppt_第1页
第1页 / 共60页
数组编程习题解答.ppt_第2页
第2页 / 共60页
数组编程习题解答.ppt_第3页
第3页 / 共60页
数组编程习题解答.ppt_第4页
第4页 / 共60页
数组编程习题解答.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《数组编程习题解答.ppt》由会员分享,可在线阅读,更多相关《数组编程习题解答.ppt(60页珍藏版)》请在三一办公上搜索。

1、数组编程讲解,2.求一个3*3的整型矩阵对角线之和,对角线元素怎样描述?,int sum=0,i,a33;for(i=0;i 3;i+)sum=sum+aii;,aii,printf(对角线之和=%6d,sum);,3.输入一个数,将其插入到一个已排好序的数组中,使得原数组依然按原序有序。,main()int a10=5,12,39,60,i,x;scanf(%d,4.将一个数组中的值按逆序存放。,0,1,2,3,4,5,6,7,8,9,原序,逆序,for(i=0;i 10/2;i+)temp=ai;ai=an-1-i;an-1-i=temp;/*n 为数组元素的个数。,5.有一篇文章,有三行

2、文字,每行有80 个字符。要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数,三行文字的存放方式:二维字符数组 ch380;各类字符的个数变量:大写英文字母的个数:uppercase小写英文字母的个数:smallletter数字个数:digit空格个数:blank其他字符个数:others,处理方式:,for(i=0;i=A,6.打印以下图案:,0,for(i=0;i5;i+)for(j=0;ji;j+)putchar();puts(ch);putchar(n);,a,p,p,l,e,ch1,0,a,p,p,l,e,ch2,0,char ch180,ch280;int i;fo

3、r(i=0;i80;i+)ch2i=;gets(ch1);i=0;do ch2i=ch1i;while(ch1i);,7.字符串复制,习题,1 将10个整数放到一维数组中,并按从大到小排序。,定义一个一维整数数组:char a10;,printf(请输入10个整数:n);for(i=0;i10;i+)scanf(%d,输入10个整数:,对数组 a 进行排序:因题目未指定排序方法,所以,可以使用任何方法排序。,对数组 a 进行排序(选择法),for(i=0;ia p)p=j;if(p!=i)med=a i;a i=a p;a p=med;,程序:,for(i=0;ia p)p=j;if(p!=i

4、)med=a i;a i=a p;a p=med;for(i=0;in;i+)printf(%6d,ai);printf(n);,#include#define n 10void main()int an,i,j,p,med;printf(please input);printf(%d integers:,n);for(i=0;in;i+)scanf(%d,2.将20个整数放到一维数组中,输出该数组中的最大值和最小值。,定义一个一维整数数组:char a20;,printf(请输入20个整数:n);for(i=0;i20;i+)scanf(%d,输入20个整数:,找出数组 a 中的最大值和最小

5、值:,.找出数组 a 中的最大值和最小值:,设:max中存放最后找到的最大值;min中存放最后找到的最小值;不妨设:max=a0;min=a0;for(i=0;imax)max=ai;else if(a imin)min=a i;,#include#define n 20void main()int an,i,max,min;printf(please input);printf(%d integers:,n);for(i=0;imax)max=ai;else if(a imin)min=a i;printf(the largest number is%6dn,max);printf(the

6、least number is%6dn,min);,3.将15个整数放到一维数组中,输出该数组中的最大值它的下标。然后将它和数组中的最前面的元素对换。,(1)定义一个一维整数数组:char a15;,printf(请输入15个整数:n);for(i=0;i15;i+)scanf(%d,(2)输入15个整数:,(3)找出数组 a 中的最大值和它的下标:,(3)找出数组 a 中的最大值和它的下标:,设:max中存放最后找到的最大值;k中存放最后找到的最大值的下标;不妨设:max=a0;k=0;for(i=0;imax)max=ai;k=i;,(4)数组 a 中的最大值和第一个数组元素交换:,用te

7、mp作为临时变量交换语句为:temp=a k;ak=a0;a0=temp;,#include#define n 15void main()int an,i,max,k;printf(please input);printf(%d integers:,n);for(i=0;imax)max=ai;k=i;ak=a0;a0=max;printf(the largest number is%6dn,max);printf(the largest numbers order is%6dn,k);,4.将一维数组中的数逆序存放,不使用辅助数组。,#define n 10定义一个一维整数数组:char a

8、n;,printf(请输入%d个整数:n,n);for(i=0;in;i+)scanf(%d,输入n个整数:,将一维数组中的数逆序存放:,a i=a;,a=temp;,方法:将数组a中正数和倒数位置对应相同的元素对调。(正数第1个和倒数第1个,正数第2个和倒数第2个,正数第 i 个和倒数第 i个)i 的最后一个值是什么?,将一维数组中的数逆序存放:,n/2,for(i=0;in/2;i+),n-i-1,n-i-1,temp=a i;,#include#define n 10void main()int an,i,temp;printf(please input);printf(%d integ

9、ers:,n);for(i=0;in;i+)scanf(%d,5.有一封信共有3行,每行20个字符,统计其中有多少英文大写字母,多少英文小写字母,多少数字字符,多少空格。,定义一个字符数组:char str30;,printf(请输入一行字符:n);gets(str);,输入一行字符:,对字符数组中的字符进行统计:,3.对字符数组中的字符进行统计:,for(i=0;stri!=0;i+),if(stri=A,完整程序:,#include#include void main()int i,j,uplet=0,digit=0,space=0,lowlet=0;char str30;printf(现

10、在开始统计.:n);for(j=0;j3;j+)printf(请输入第%d 行字符:n,j+1);gets(str);for(i=0;stri!=0;i+),if(stri=A,6.将字符数组str1中下标为偶数的元素赋给另一字符数组str2,并输出str1和str2。,定义两个字符数组:char str130,str230;,printf(请输入一行字符:n);gets(str1);,输入一行字符到str1中:,对字符数组中的进行复制:,3.对字符数组中的字符进行复制:,for(i=0,j=0;stri!=0;i+),if(i%2=0)str2j=str1i;j+;,完整程序:,#inclu

11、de#include void main()int i,j;char str130,str230;printf(请输入一 行字符:n);gets(str1);for(i=0,j=0;str1i!=0;i+)if(i%2=0)str2j=str1i;j+;str2j=0;printf(复制之前:%snn,str1);printf(复制之后:%snn,str2);,7.有5个国家名,要求按字母先后顺序排列,并按序输出。,定义一个二维字符数组:char str1510;,for(i=0;i5;i+)printf(请输入一行字符:n);gets(str1i);,输入5行字符到str1中:,对字符数组中

12、的字符串进行排序:,3.对字符数组中的字符串进行排序:,for(i=0;i4;i+),for(j=0;j0)strcpy(temp,str1j);strcpy(str1j,str1j+1);strcpy(strj+1,temp);,#include#include void main()int i,j;char str1510,temp10;for(i=0;i0)strcpy(temp,str1j);strcpy(str1j,str1j+1);strcpy(str1j+1,temp);printf(排序之后:nn);for(i=0;i5;i+)puts(str1i);,8.有一行文字,要求删去

13、某个字符,此行文字和要删的字符均由键盘输入。,定义一个一维字符数组:char str 80,c;,printf(请输入一行字符:n);gets(str);Scanf(“%c”,输入一行字符到str中,待删去的字符到c中:,对字符数组中的字符进行处理:,3.对字符数组中的字符进行处理:,for(i=0;str1i!=0;i+),if(str1i=c)break;,for(j=i+1;str1j!=0;j+),str1j-1=str1j;,str1j-1=str1j;,#include#include void main()int i,j,flag=1;char str80,c;printf(请输

14、入一行字符:n);gets(str);printf(请输入要删出的字符:n);scanf(%c,9.打印出杨辉三角,要求打印出n行,n由键盘输入。,定义一个一维整数数组:int a 80,n;,printf(“请输入杨辉三角的行数:n);scanf(“%d”,输入n值到n中:,对数组a中的元素进行计算产生杨辉三角的每一行,并输出:,3.对数组a中的元素进行计算产生杨辉三角的每一行,并输出:,for(i=2;in;i+),ai+1=1;,aj=aj-1+aj;,a0=1;printf(“%6dn”,a0);,a1=1;printf(“%6d%6dn”,a0,a1);,for(j=i;j1;j-)

15、,#include#include void main()int i,j,a80,m;printf(请输入杨辉三角的行数:n);scanf(%d,10.N只猴子选大王,选举方法如下:所有猴子按1,2,3,N编号围坐一圈,从第1个猴子开始报数,报到M号退出圈外,如此循环报数,直到圈内只剩下一个猴子,即为大王。编程输出大王的原始序号。N和M的值由键盘输入。如果你想成为剩下的那一个,在N一定的情况下,你应该站在什么位置上?,#define n 100定义一个一维整数数组:int a n,m;,printf(“将猴子的编号送入相应位置的数组中);for(i=0;in;i+)ai=i+1;,为数组赋值:

16、,对数组a中的元素进行处理:,解决问题:,3.对数组a中的元素进行处理:,for(i=1;im;i+)if(aj!=0)j=(j+1)%n;j=+j%n;printf(“%d 号猴子出列n”,j+1);aj=0;k-;,j=0;k=n;/*现在,圈中还剩下的猴子个数。,while(k1)/*圈中还剩下两个以上的猴子*/,#include#include void main()int i,j,a100=,m,n,k;printf(请输入猴子的个数:n);scanf(%d,while(im)while(aj=0)j=(j+1)%n;i+;j=(j+1)%n;while(aj=0)j=(j+1)%n

17、;printf(%d 号猴子出列n,aj);aj=0;k-;for(i=0;in;i+)if(ai)printf(最后的大王为:%6d号猴子!n,ai);,11.编写一个程序,将两个字符串连接起来。不要使用strcat函数,定义三个一维字符数组:char str180,str220;,printf(“请输入一行字符到str1中:n);gets(str1);printf(“请输入另一行字符到str2中:n);gets(str2);,分别输入2行字符到str1,str2中:,将两个字符数组进行连接:,3.将两个字符数组进行连接:,for(i=0;str1i!=0;i+);/*将str1的下标移到最

18、后一个字符的后面*/,str1i+=str2j;,for(j=0;str2j!=0;j+),str1i=0;,#include#include void main()int i,j;char str180,str220;printf(请输入一行字符到str1中:n);gets(str1);printf(请输入另一行字符到str2中:n);gets(str2);printf(连接之前str1:);puts(str1);printf(连接之前str2:);puts(str2);for(i=0;str1i!=0;i+);for(j=0;str2j!=0;j+)str1i+=str2j;str1i=0

19、;printf(连接之后str1:);puts(str1);,12.编写一个程序,将字符数组a中的全部字符复制到字符数组b中。不要使用strcpy函数。,定义两个一维字符数组:char a80,b80;,printf(“请输入一行字符到a中:n);gets(a);,输入1行字符到a中:,进行字符数组复制:,3.进行字符数组复制:,for(i=0;ai!=0;i+),bi=ai;,bi=0;,#include#include void main()int i;char a80,b80=;printf(请输入一行字符到a中:n);gets(a);printf(n);printf(复制之前a:);p

20、uts(a);printf(n);printf(复制之前b:);puts(b);printf(n);for(i=0;ai!=0;i+)bi=ai;bi=0;printf(复制之后a:);puts(a);printf(复制之后b:);puts(b);,13.编写一个程序,找出3个字符串中的最大者。将它输出。,定义两个一维字符数组:char a80,b80;,printf(“请输入一行字符到a中:n);gets(a);,输入1个字符串到a中:,依次输入另外两个字符串到b中,并和a比较,如果,ba,将b的值赋给a;,3.依次输入另外两个字符串到b中,并和a比较,如果,ba,将b的值赋给a;,for(

21、i=1;i3;i+),if(strcmp(b,a)strcpy(a,b);,printf(“最大的字符串是:”);puts(a);,printf(“请输入一行字符到b中:n);gets(b);,#include#include#define n 3void main()int i;char a80,b80=;printf(请输入一个字符串到a中:);gets(a);printf(n);for(i=1;i0)strcpy(a,b);printf(最大的字符串是:);puts(a);,选择填空,以下运算符中优先级最高的算符是:(A)=(B)(C)|(D)!=,以下合法的数组定义是:,(A)int

22、a=A,B,C;(B)Int a5=0,1,2,3,4,5;(C)char a=A,B,C;(D)int a=0,1,2,3,4,5;,若有以下说明,则数值为4 的表达式是:,int a12=1,2,3,4,5,6,7,8,9,10,11,12;Char c=a,d,g;(a)a g c(b)a 4(c)a d c(d)a d c,main()int n2=0,i,j,k=2;for(i=0;ik;i+)for(j=0;jk;j+)nj=ni+1;printf(%dn,nk);(a)不确定值(b)3(c)2(d)1,以下程序的输出结果是:,main()char c6=0,i=0;for(i=0;i6;i+)putchar(ci);for(i=0;i6;i+)ci=getchar();for(i=0;i6;i+)putchar(ci);,当运行以下程序时,输入三行,每一行都在第一列上开始输入,则输出结果是:,输入数据:a b cdef,(a)abcdef,(b)a b c d e f,a b cd,(d)a b cdef,请选择:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号