数组编程习题解答.ppt_第1页
数组编程习题解答.ppt_第2页
数组编程习题解答.ppt_第3页
数组编程习题解答.ppt_第4页
数组编程习题解答.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

数组编程讲解,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. 有一篇文章, 有三行文字, 每行有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; for(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) med=a i; a i=a p; a p=med; for( i=0; in; i+) printf(“%6d“, ai); printf(“n“); ,#include #define n 10 void 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 中的最大值和最小值:,.找出数组 a 中的最大值和最小值:,设: max中存放最后找到的最大值; min中存放最后找到的最小值; 不妨设:max=a0; min=a0; for ( i = 0; imax ) max=ai; else if( a imin) min=a i;,#include #define n 20 void 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 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 中的最大值和第一个数组元素交换:,用temp作为临时变量 交换语句为: temp=a k; ak=a0; a0=temp;,#include #define n 15 void 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 an;,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 10 void main() int an, i, temp ; printf( “please input “); printf( “%d integers: “, 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(“现在开始统计. :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+;,完整程序:,#include #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中:,对字符数组中的字符串进行排序:,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. 有一行文字,要求删去某个字符,此行文字和要删的字符均由键盘输入。,定义一个一维字符数组: 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(“请输入一行字符: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-),#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;,为数组赋值:,对数组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; 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的下标移到最后一个字符的后面 */,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; 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: “); puts(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( i=1; i3; i+),if (strcmp( b, a) strcpy( a, b ); ,printf( “最大的字符串是: ”); puts(a);, printf(“请输入一行字符到b中:n“); gets(b);,#include #include #define n 3 void main() int i; char

温馨提示

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

评论

0/150

提交评论