数组习题004.doc_第1页
数组习题004.doc_第2页
数组习题004.doc_第3页
数组习题004.doc_第4页
数组习题004.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

二、填空题1、若二维数组a有m列,则计算任一元素aij在数组中位置的公式为( )(假设a00位于数组的第一个位置上。)2、若有说明:int a3=1,2,3,4,5,6,7;则a数组第一维的大小是( )。3、char word10=“hello!”;函数strlen(word)的值为( )。4、char str115=“zhongguo”,数组str1所占的内存空间为( )个字节。5、判断字符串a和b是否相等,应当使用的if条件是( )。6、已知:char a15,b15=I love china;则在程序中能将字符串变量b的值赋给数组a的正确语句是( )。7、已知:char a20= abc,b20= defghi; 则执行语句:printf(%d,strlen(strcpy(a,b);后的输出结果为( )。8、下面程序:main()int i;int a33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)printf(%d ,a2-ii);输出的结果是( )。9、已知 int a32=3,2,1;则表达式a00/a01/a02的值是( )。三、判断题1、C语言中定义整型数组:int a3=1,2,3,4,5,6;,这种形式能对二维数组a进行正确初始化。( )2、int a14=1,2,3,4,5;是正确的定义语句。( )3、有两个字符数组a、b,scanf(%s %s,&a,&b)是正确的输入格式。( )4、已知有三个字符变量a,b,c,gets(a,b,c)是错误的输入格式。( )5、两个字符串所包含的字符个数相同时,才能比较字符串的大小。( )6、字符个数多的字符串比字符个数少的字符串大。( )7、在C语言中,字符串STOP 与stop相等。( ) 8、可以在赋值语句中通过赋值运算符=对字符数组整体赋值。( )9、字符数组的字符串可以整体输入、输出。( )10、不可以用关系运算符对字符数组中的字符串进行比较。( )11、在C语言中引用数组元素时,其数组下标的数据类型允许是整型常量或整型表达式( )12、若有下面的程序段:char s=china;char *p; p=s; 则数组s中的内容和指针变量p中的内容相等。( )13、若有数组定义:char str1234567890;则系统自动为数组str分配11个字节的内存单元。( )14、数组定义:char str4china;则程序将隐含一个未知错误,其后果将可能无法预料。( )15、在C语言中,表达式:(int)3.1415926+45的结果应等于48。( )16、在C语言中,while(条件表达式)循环语句的循环条件是当条件表达式不成立时执行循环体,否则执行while()语句的下一语句。( )17、在C语言中,do while(条件表达式)循环语句的循环条件是:当条件表达式成立时执行循环体,否则执行dowhile语句的下一语句。( )18、在C语言中,for()循环属于直到型循环。( )19、在C语言中,while()循环属于当型循环。( )20、在C语言中,假设有变量定义:int x=10; char ch=A; 则表达式:x+ch是合法的。( )21、在C语言中,每个汉字将占用1个字节的内存空间。( )22、在C语言中介绍的汉字机内码是指汉字在汉字库表中的行列位置值分别+160构成的。( )23、C语言中有如下定义:char str=”中华民族”; 则系统将会为该数组str分配9个字节的存储空间。( )四、程序阅读题1、认真阅读下列程序,写出该程序的功能。 #include main()char s80, str80;int i,j; gets(s); for(i=j=0;si!=0;i+) if(si!=c)strj+=si; puts(str);程序功能:2、认真阅读下列程序,写出程序运行结果。 假定:键盘输入字串为:1234567#include main()char s80; int i=0; scanf(%s,s); while (si!=0) if(si=1)si=si+1; else if (si=5)si=si-1; i+; puts(s);程序运行结果:3、认真阅读下列程序,写出程序运行结果。#include main()char a=morming,t;int i,j=6;for(i=0;i=2;i+) t=ai; ai=aj; aj=t;puts(a);程序运行结果:4、认真阅读下列程序,写出该程序的功能。#include main() int i,max,n1,min,n2,x10;for (i=0;i10;i+)scanf(”%d”,&xi);max=min=x0;n1=n2=0;for (i=1;i10;i+) if (maxxi) min=xi; n2=i; i=xn1;xn1=x0;x0=i;i=xn2;xn2=x9;x9=i;for (i=0;i10;i+)printf(”%d ”,xi);程序功能:5、认真阅读下列程序,写出该程序的功能。#include #include main() int i,j,x55,s=0; randomize(); for (i=0;i5;i+) for (j=0;j5;j+) xij=random(100)+1; for (i=0;i5;i+)s+=xii+xi4-i; printf(”%drn”,s);6、下列程序用于模拟掷5000次骰子,出现点数为1-6之间数的概率(机会)。请认真阅读程序,将程序填写完整。#include #include main() int i,x7,n; _; for (i=1;i7;i+) _ ; for (i=0;i_;i+) n=random(6)+1; _; for (i=1;i7;i+) printf(”%d: %drn”,i, _);7、下列程序的功能是从键盘输入一行长度不大于100的字串,统计其中单词的个数,单词之间用空格分开。说明:假定字串中不含标点符号。#include main() int i,num; char str101; printf(Please input a string :); gets(_); if (str0!= )_; else num=0; for (i=1;stri!=_;i+) if (stri!= ) & (stri-1= )_; printf(num=%drn,_);8、下面是从键盘输入5*5阶矩阵,实现了: 计算对角线元素之和; 计算对角线上行、列都为偶数的元素之积。请认真阅读程序,并将程序填写完整。 说明:对角线交叉点数据只能相加或相乘1次。#include main() int i,j,x55,m=0,_; for (i=0;i5;i+) for (j=0;j5;j+) scanf(%d,_); for (i=0;i5;i+) if (i=2)m+= xii; else m+=xii+_; if (i % 2)=0) if (i=2)n*=_; else n*=_ *xi4-i; printf(m=%d n=%drn,m,n);9、下列程序将输出如下“杨辉三角形”。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 程序思想:用一个二维数组存放该杨辉三角形中的数据,这些数据的特点是:第0列全为1,对角线上的元素全为1,其余左下角元素满足:xij=xi-1j-1+xi-1j规律。说明:共输出9行该杨辉三角形。#include main() int i,j,n; int x99; for (i=0;i9;i+) xii=_ =1; for (i=2;i9;i+) for (j=_;j=i-1;j+) xij=xi-1j-1+_; for (i=0;i9;i+) for (j=0;j=_;j+) printf(%d ,xij); _; 10、下列程序是将如下一个二维矩阵的全部元素右移一列,最后的列移到最左一列。即将矩阵:#include main() int i,j,t,x23=1,4,6,8,10,12; for (i=0;i2;i+) for (j=0;j3;j+)printf(%d ,xij); _; printf(rn); for (i=0;i0;j-)xij=xij-1; xi_=_; for (i=0;i2;i+) for (j=0;j3;j+)printf(%d ,_); printf(rn); 11、请认真阅读下列程序,说明该程序的功能。#include #include main() char str100,ch; int i,j,n; printf(Please input string: ); gets(str); n=strlen(str); for (i=0,j=n-1;ij;i+,j-) ch=stri; stri=strj; strj=ch; printf(%srn,str);程序功能:12、认真阅读下列程序,写出该程序运行结果。#include main() int x66,i,j; for (i=1;i6;i+) for (j=1;j6;j+)xij=(i/j)*(j/i); for (i=1;i6;i+) for (j=1;j6;j+)printf(”%d ”,xij); printf(”rn”); 程序运行结果:五、程序设计题1、随机产生10个10-100之间的整数,按从小到大的排序输出。提示:随机数种子函数:randomize() 随机数函数:random(); 头文件:stdlib.h2、随机产生一个4行5列的矩阵,查找其中最大数所在的行列位置。说明: 随机数取值范围:10-90之间; 随机数种子函数:randomize(),随机函数:random(),头文件:stdlib.h。3、随机产生一个5*5的方阵,编程计算对角线元素之和。说明: 随机数范围:10-50之间; 随机数种子函数:randomize(), 随机函数:random(),头文件:stdlib.h。4、从键盘输入10个整数,试编程逆序输出该整数序列。5、输入一个十进制整数,将其转换为二进制后储存在一个字符数组中,再以字串的形式输出。6、随机产生10个30-80之间互不相同的整数,输出这些数。 说明:随机数种子函数:randomize(),随机数函数:random(),头文件:stdlib.h。7、试编程输出一个7阶方阵,使其对角线元素为1,其余元素全部为0。 说明:7阶方阵是指7行7列的矩阵。8、随机产生一个3行4列的矩阵,试编程找出该矩阵的“鞍点”,如果不存在“鞍点”则输出相应信息;如存在鞍点则输出该鞍点所在行数和列数。说明: 随机数的范围:10-200; 所谓“鞍点”是指该位置上的元素是该行上的最大值,同时也是该列上的最小值; 随机数种子函数:randomize(),随机数函数:random(),头文件:stdlib.h。9、从键盘输入两个字串,不使用字符串比较函数strcmp(),实现比较两个字符串s1、s2大小的功能。10、从键盘输入两个长度不大于50的字串,不使用字串连接函数strcat()(但可使用字串长度测试函数strlen(),将这两个字串连接为一个字串,并将连接结果输出。 说明:字串函数头文件:string.h。11、从键盘任意输入5个长度不大于30的字串,将这5个字串按从小到大排序输出。12、利用随机函数产生100个100500之间互不相同的整数,并按从小到大的顺序排序输出。要求: 分别定义函数myran()和mysort()实现随机数产生和排序; 随机数种子函数:randomize(); 随机数产生函数:random(); 头文件:stdlib.h。13、采用随机数的方法生成50个学生的成绩(成绩范围在0-100之间),试编程统计各分数段的人数。 说明:各分数段人数统计如下: 90:14、一辆以固定速度行驶的汽车,清晨司机发现里程表的读数从左到右和从右到左的读数相同,为95859。7小时后,司机再次发现里程表出现一新的对称数,问汽车的时速为多少?里程表新的读数为多少? 说明:该程序要求用自定义函数来实现问题的求解。六、综合与创新能力测试1、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。2、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。3、使用数组完成两个超长(长度小于100)正整数的加法。为了实现高精度的加法,可将正整数M存放在有N(N1)个元素的一维数组中,数组的每个元素存放一位十进制数,即个位存放在第一个元素中,十位存放在第二个元素中,依次类推。这样通过对数组中每个元素的按位加法就可实现对超长正整数的加法。参考答案:二、填空题答案1、i*m+j+12、33、64、95、if (strcmp(a,b)=0)6、strcpy(a,b)7、68、7 5 39、1三、判断题答案1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23、四、程序阅读题答案1、程序功能:将字符串s中所有的字符c删除。2、22344673、gnimrom4、从键盘输入一个数组的值,将其中最大的与第一个元素交换,最小的与最后一个元素交换,最后输出数组。5、随机产生1个5阶方阵(值在1100之间),计算对角线元素之和。6、randomize() xi=0 5000 xn+ xi7、str num=1 0 num+ num8、n=1 &xij xi4-i xii xii9、xi0 1 xi-1j i printf(rn)10、printf(rn) xi2 0 t xij11、程序功能:从键盘输入一长度不大于100的字串,将该字串逆序存放后输出。12、程序运行结果:1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1五、程序设计题答案1、#include #include main()int i,j,x10,t;randomize();for (i=0;i10;i+)xi=random(91)+10;printf(”%d ”,xi);printf(”rn”);for (i=0;i9;i+) for (j=i+1;jxjt=xi,xi=xj,xj=t;for (i=0;i10;i+)printf(”%d ”,xi);2、#include #include main()int i,j,m,r,c;int x45;randomize();for (i=0;i4;i+) for (j=0;j5;j+) xij=random(81)+10; printf(”%d ”,xij); printf(”rn”);m=x00;r=c=0;for (i=0;i4;i+) for (j=0;j5;j+) if (mxij) m=xij; r=i; c=j; printf(”Max=%d Row=%d Col=%drn”,m,r,c);3、#include #include main()int i,j,sum=0;int x55;randomize();for (i=0;i5;i+) for (j=0;j5;j+) xij=random(41)+10; printf(”%d ”,xij); printf(”rn”);for (i=0;i5;i+)sum+=xii+xi5-i;printf(”Sum=%drn”,sum);4、#include main()int x10,i;printf(rn Please input original array:n);for(i=0;i=0;i-)printf(“%d “,xi);5、#include main()int i,n,rule=0x8000; char str17;printf(Please input a digit:);scanf(%d,&n); for (i=0;i=1; str17:=0;printf(%s,x);6、#include #include main()int i,j,m,x10;randomize();for (i=0;i10;i+)again: m=random(51)+30; for (j=0;ji;j+)if (m=xj)goto again; xi=m;for (i=0;i10;i+)printf(“%d “,xi);printf(”rn”);7、#include main()int i,j,x77;for (i=0;i7;i+) for (j=0;j7;j+)xij=0;for (i=0;i7;i+)xii=xi7-i=1;for (i=0;i7;i+) for (j=0;j7;j+) printf(”%d ”,xij); printf(”rn”);8、#include #include main() int i,j,m,r,k,flag=0; int x34; for (i=0;i3;i+) for (j=0;j4;j+) xij=random(191)+10; printf(%d ,xij); printf(rn); for (i=0;i3;i+) m=xi0; r=0; for (j=0;j4;j+) if (mxij) m=xij; r=j; k=0; for (j=0;jxjr) k=1; break; if (k=0) printf(It have Andian! row=%d Col=%d Value=%drn,i,r,xir); flag=1; if (flag!=1)printf(It have not Andian!rn);9、#include stdio.hmain() char s180,s280; int i=0,k; printf(Please input strings:);gets(s1); gets(s2); k=0;while(s1i!=0) & (s2i!=0) /*比较每一对字符,直到出现0退出循环 */if(s1is2i) k=1; break; else if (s1i %srn,s1,s2); else printf(%s %s rn,s1,s2);10、#include #include main()char s1101,s251;int i,n1,n2;printf(“Please input string1: ”);gets(s1);printf(“Please input string2: ”);gets(s2);n1=strlen(s1);n2=strlen(s2);for (i=0;in2;i+)s1i+n1=s2i;s2n1+n2=0;printf(“%srn”,s2);11、#include #include main()char s531,t31;int i,j;for (i=0;i5;i+)gets(si);for (i=0;i4;i+) for (j=i+1;j0) strcpy(t,si); strcpy(si,sj); strcpy(sj,t); for (i=0;i5;i+)printf(“%srn”,si);12、#include #include void myran(int *x);void mysort(int *x);main()int i,x100;myran(x);for (i=0;i100;i+)printf(“%d ”,xi);printf(“rn”);mysort(x);for (i=0;i100;i+)printf(“%d ”,xi);void myran(int *x)int i,j,t;for (i=0;i100;i+)again: t=random(401)+100; for (j=0;ji-1;j+)if (xj=t)goto again; xi=t;void mysort(int *x)int i,j,t;for (i=0;i99;i+) for (j=i+1;jxj) t=xi; xi=xj; xj=t; 13、#include stdio.h#include stdlib.hmain() int x50,y5,i; randomize(); printf(Score list:rn); for (i=0;i50;i+) xi=random(101); printf(%d ,xi); printf(rnCount list:rn); for (i=0;i5;i+)yi=0; for (i=0;i50;i+) if (xi60)xi=50; if (xi=100)xi=90; yxi/10-5+; for (i=0;i5;i+) if (i=0)printf( 90:%drn,yi); else printf(%d-%d:%drn,(i+5)*10,(i+5)*10+9,yi); 14、#include stdio.hvoid velocity(long,int *,long *);main() long ss=95859,news; int v; velocity(ss,&v,&news); if (v=0)printf(Haventrn); else printf(Motorcars speed per hour: %d, Mileage: %ldrn,v,news);void velocity(long ss,int *v,lo

温馨提示

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

评论

0/150

提交评论