C习题数组部分_第1页
C习题数组部分_第2页
C习题数组部分_第3页
C习题数组部分_第4页
C习题数组部分_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、数组一、选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是A.整型常量整型表达式c.整型常量或整型表达式任何类型的表达式2.假定 int 类型变量占用两个字节,其有定义: int x10=0 , 2, 4 ;,则数组 x 在内存中所占字节数是A. 3. 10. 203.若有说明:int a10 ;则对a 数组元素的正确引用是A. a104.对于数组定义. a3 . 5int a5,n=2 ;则对数组. a(5)a 元素的正确引用是D . a10 10A. a5 B5. 以下能对一维数组A. int a10=(0,0c. int a10=10*1;. a3 . 5 ca 进行正确初

2、始化的语句是 , 0,0,0); BD. a(5)D. an+16. 以下程序的输出结果是main()int i,a10 ;for(i=9printf(; i>=0 ; i-) ai=10-i;“ d d d”, a3 ,a6 ,A.258B . 7417.以下数组定义中不正确的是A.int a23c.8.(A.9. int a10=; . int aa9) ;. 852. int b3=0int c100100=0若二维数组a有m列,则计算任一元素=0;. 369l , 2, 3 ;,l ,2,3,D. int d3=1,2aij 在数组中位置的公式为假设 a00 位于数组的第一个位置

3、上。i*m+jB. j*m+i c以下程序的输出结果是main()A. i*m+j-1l,2, 3,4 ;. i*m+j+17 , 8, 9 ;printf( ” d % d% d % dn ”,a03, a12, a21int a44=l0680,2,3,4,5,6,a30). 1590. 3570.输出值不定10.以下程序的输出结果是#include ”stdio.hmain()int a33=0,1,2,0,1,2,0,1,2,i,k=1;for( i=0;i<3;i+)k=t+aaiii; printf(“%dn” ,k);A 3B45911以下数组定义中不正确的是Aint a2

4、3;Cint c100100=012若二维数组int b3=0Dint d3=1,2 a 有 m 列,则计算任一元素, l , 2 , 3 ;, l , 2, 3 , laij 在数组中位置的公式为,2, 3,4 ;( 假设 a00位于数组的第一个位置上。A i*m+j13以下程序的输出结果是Bj*m+ii*m+j-1i*m+j+1main()int a44=l, 2, 3, 4, 5, 6,printf( ” d % d% d % dn ”,a037 ,8, 9 ;,a12 , a21a30)A068015903570输出值不定14以下程序的输出结果是#include ”stdio.hmai

5、n()int a33=0,1,2,0,1,2,0,1,2,i,k=1;for( i=0;i<3;i+)k=t+aaiii;printf(“ %dn”,k);A 3B45915设有数组定义:char array=result0”; 则数组array所占的空间为。字节。7 个D 8个16下面是对s 的初始化,其中不正确的是Achar s5char s5a,b,c;C char s517下列描述中不正确的是II IID char s5abcdef ;AB字符型数组中可以存放字符串可以对字符型数组进行整体输入、输出C可以对整数数组进行整体输入、输不能在赋值语句中通过赋值运算符18若有以下说明:D

6、=”对字符型数组进行整体赋值int a12=1, 2, 3, 4, 5, 6, 7,char c= ' a', d, g ;则数值为 4 的表达式是 。8,9,10,ll ,12;Aa 'd'-'c'19执行下列程序时输入:Ba'123 456#inlcude“ stdio.h ”main()d'-c<779>C ag-c D/,输出结果是a4char s100;int c,i; scanf( “ %c%d%”s ,&c,&i,s); printf( “%c,%d,%s”,c,i,s); 1,456,7

7、79D 1,23,456A 123,456,789C 1,23,456,77920.当执行下面程序且输入:ABC时,输出的结果是default: continue;#include “ stdio.h ”main()char ss10= ” 12345”;gets(ss);printf( “%sn” ,ss);A ABCABC4512345ABCABC1234521下列语句可以判断字符串S1、S2 是否相等的是Aif (s1 = s2 ). if ( s1= =s2 )C. if ( strcmp (s1, s2)= =0) 22.若有定义: char st=”qqn012n则执行语句: pr

8、intf(“%d”,strlen(st);if ( strcmp ( s1, s2)后,输出结果是A 3 B 4C 612=0)23下列程序执行后的输出结果是 #include<stdio.h> main()char arr24; strcpy(arr, ”boy” );strcpy(arr1,girl ”);arr03= '! ' ; printf( “%sn” ,arr);A boy!girlboy girlarr24下面程序的运行结果是 #include <stdio.h> main()char str="tudent",c;i

9、nt k;for(k=1;(c=strk)!='0'k+)switch(c)case 't': putchar('#');case 'n': putchar('$');break;putchar('*');A $*#$*$#$#$*$*#$*D#$#$二、填空题1数组名定义规则和变量名相同,都遵循2在 C 语言中,引用数组只能通过引用实现。 元素 数组名3定义一维数组时,如果对全部元素赋初值,则元素个数 ,定义二维数组时,如果对全部元素赋初值,则可以省略 。可以省略 一维下标(行数)4数组在内存中占

10、一片连续的存储区,由 代表它的首地址。 数组名5. C语言程序在执行过程中,不检查数组下标是否 。越界6设有定义语句: int i=3,a=1,2,3,4;则数组 a 的数据类型是_;数组元素 ai 的值是_,定义规则。 标示符 ,来实现,而不能通过整体引用,来;该数组的下标最大值是int 3 47. C语言中,二维数组元素在内存中的存放顺序是 。按行8. 定义一个名为 x 的整型二维数组,其大小为 3*4,要求每行第一个元素为 1,其余均是 0,则定义语句是 。 int x34=1,1,1;,s2 中的字符是9. 设有定义: char s5= a','b' 则 s1

11、中的字符是 b 0'10设有定义语句: char s= 符是 。 80 '11设有定义语句: char s5= 中存放的字符是 。12设有定义语句: char s1= ”abcdef0 ”; 则数组 s 的长度是;数组元素 s6 中存放的字。8“abed” ; 则二维数组 s 中一共有5 a'个数组元素,s00study ”,s210; 把 s1 中的字符串赋值给 s2 的语句是strcpy(s2,s1)三、程序阅读1 分析下列程序,写出运行结果#include ”stdio.h ”。 n=3main()int a10=1,3,5,7,9,2,4,6,8,10,i,n=

12、0; for( i=0;i<10;i+) if(i%2=1&&ai%2=0) n+; printf(“n=%dn” ,n);2 分析下列程序,写出运行结果#include ”stdio.h ”。6 5 4 3 2 1main()int a6=1,2,3,4,5,6,i,j,t; for( i=0,j=5;i<j;i+,j-) t=ai;ai=aj;aj=t; for(i=0;i<6;i+) printf( “%dn”,ai);3 分析下列程序,写出运行结果。30,11,88,12main()int a15=2,19,-25,30,11,-26,88,-8,0,

13、5,-129,-92,2,4,12,b15;int i,j=0,temp;for(i=0;i<15;i+) if(ai>=10) bj+=ai;for(;j<15;j+) bj=-1;for( i=0;i<15;i+) if(bi>0) printf( “ %d” ,bi);4 分析下列程序,写出运行结果#include ” stdio.h ”main() int a23=1,3,5,2,4,6 int i, j;for(i=0;i<=1;i+)for(j=0;j<=2;j+) printf( “%3d”,aij); printf( “n ”);5分析

14、下列程序,写出运行结果#include ” stdio.h ”main() int i,j,t,row=0,col=0;int s43=8,32,14,10,12,3,11,2,33,6,7,27;t=s00;for(i=0;i<4;i+)for(j=0;j<3;j+) if(sij<t)t=sij;row=i;col=j; printf( “%d,%d,%dn, ”,t,cow,col); 2,2,1 找出最小元素及其下标6 分析下列程序,写出运行结果main() int s3=1,3,5,7,2,4,6,8,9;int i, j,s1=0,s2=0;for( i=0;i&

15、lt;=2;i+) for(j=0;j<=2;j+) if(i=j) s1=s1+sij;if(i+j=2) s2=s2+sij; printf( “%d,%n” ,s1,s2);12,137 分析下列程序,写出运行结果#include <stdio.h> main() char a= ” 123456789 a4= ' 0 'printf( “%sn ”,a);1234 8分析下列程序,写出运行结果 #include “ stdio.h ”main() char s20= ” abcdefg ”int i;for(i=0;si;i+);if(i%2=0) s

16、i= puts(s);,bd,f, 9分析下列程序,写出运行结果 #include <stdio.h> main() char s18,s28,s38,s48;scanf( “ %s%”s ,s1,s2) gets(s3);gets(s4);puts(s1);puts(s2);puts(s3);puts(s4); 运行时输入以下数据:AAA BBB回车 >CCC DDD回车 >AAABBB 10分析下列程序,写出运行结果 #include <stdio.h> main()char ch= ”632”;int a,s=0;for(a=0;cha>= &#

17、39;0' &&cha< = '9'a+)s=10*s+cha- 0' printf( “ %dn” ,s);632CCC DDD 11分析下列程序,写出运行结果 main()char x=A', '' A'' , 'A', '' A' , 'A'int i,j,k;for(i=0;i<3;i+) printf(“n ”);for(j=0;j<i;j+) printf(for(k=0;k<5;k+) printf(“”);%c”

18、,xk);AAAAAAAAAAAAAAA12.运行下列程序,键盘输入 Test System /,写出运行结果#include <stdio.h>main()char str20,tstr80=int i;gets(str);for(i=0;stri!=if(stri)>='0 'i+)'a'&&stri<= 'z' )tstri=stri-32;else tstri=stri; tstri= '0 'puts(tstr);TEST SYSTEM13分析下列程序,写出运行结果#include

19、“ stdio.h ”。6385main()char str25= int i,j,s=0;6934”, ”8254 ”;for(i=0;i<2;i+)for(j=0;strij>= s=10*s+strij- printf(“ %dn,s);'0' &&strij<='9'j+=2);0'14分析下列程序,写出运行结果#include “stdio.h ”。 How are you !#include “ string.h ”main()char s110=”How”,s210= ”are”,s310= ”you! ”

20、strcat(s1,strcat(s2,s3);puts(s1);四、程序填空1 .下面程序以每行4个数据的形式输出a数组,请填空。#define N 20main()int aN,i;);& aifor(i=0;ivN;i+)scanf("%d",for(i=OivN;i+)if (.i%4=0 p rintf(n );p rintf("%3d",ai);p rintf("n");2.下列程序的功能是:从键盘输入不相同的10个数存入数组a中,求最大数和次最大数,请填空。#include “stdio.h ”main() in

21、t i,max1,max2,a10;for(i=0;i<10;i+)scanf(“d',&ai);max仁max2=for(i=1;i<10;i+)if(max1<ai)max2=max1=ai;else if(max2<ai)a0 max1 max2=ai3.下面程序的功能是将变量 x的值转换成二进制数,所得二进制数的每一位数放在一维数组a中返回,二进制数的最低位放在下标为0的元素中,其他依此类推。请填空。main()int xprintf( scanf(,a10,k=0,r;“ in put x :” );“ d”,&x);dor=x%rak

22、+=rx=;x/rwhile(x);4.以下程序的功能是:从键盘上输入若干个(不多于100)学生的成绩,计算出平均成绩,并输出高于平均main()float a1 00,sum=0.0,ave,num;int n=0,i;printf(“请录入成绩:n );scanf(“% f”,& num);while()num>0.0sum+=numan=num;n+;scanf(“% f ”,&num);ave= (sum/nprintf(“高于平均分的同学的分数:n ”for(i=0;ivn;i+)分的学生成绩,用输入负数结束输入。请完整程序。);if()p rintf(5.本程

23、序用改进冒泡法对数组“ fN ”,ai); ai>avean的元素从小到大排序,请在程序空白处填空。#define N 10int aN=IO,7,4,1,9, 6,3, 8,5,2;int j, k, jmax,temp ;jmax=Ndok=0;for(j=0;jvjmax;j+)if(.aj>aj+1temp=ajaj=aj+1aj+l=te mp;k+jmax=jmax-1whiIe(jmax>0&k)for(j=j=0;jvN;j+)printf( printfl(% 5d“ha”);,aj);main()6.完整程序。该程序功能是,有一个已排好序的数组,今

24、输入一个数,要求按原来的顺序规律将它插入到 数组中。#define N 10main()int ifloat aN+1,P;for(i=0;i<N ;i+)scanf(,&ai);scanf(“ f“ f”,&x);for(i=0,p=N ; ivN ; i+)if(x<ai);P=ibreakfor(i=N-l ; i>=p ;i-);ai+1=aiap =xfor(i=0;i<;i+) Nprintf(“ 8. 2fif(i+1)% 5=0)printf( n );” ,ai)7.将矩阵中主对角线除外的下三角中各元素加I。main()int a44=

25、1,2,3,4, 5,6, 7,8, 9,10,1l,12, 13,14, 15,16;int i, jfor(i=0 ; i<4 ; i+)for(j=0; j<4;j +)if()i<j aij+=1for(i=0 ; i<4 ; i+)for(j=0; j<4; j+)“ 6d” ,aij) n );printf(printf(8完善程序,使5*5数组的对角线元素为1,其他为0,即输出5*5的对角矩阵。#include “stdio.h ”main()int j,k,a55;for(j=0;jv5;j+)for(k=0;kv5;k+)if(else.;for

26、(j=0;j<5;j+)for(k=0;k<5;k+) printf(“ d' ,aij);printf(“n ” );j=k ajk=1 ajk=09.若有定义语句:char s100(注意:不得使用逗号表达式。,d100 ; int j=0 , i=0 ;,且s中已赋字符串,请填空以实现字符串拷贝。while(si)dj=j+si10.以下程序的功能是将字符串di!=' 0t中,如:str中的字符正序和逆序进行连接,形成一个新串存放字符串 str字符串ABCD _则t的内容为:ABCDDCBA请填空。#include “stdio.h ”main() char

27、str30,t30;int i,j; gets(str);for(i=0,j=0;stri!=;i+)tj+=stri;for(-i;i>=;i-)tj+=stri;tj=.puts(t); 0 ' 0'0 '11程序功能是:将字符数组str按字符ASCII表顺序排序后输出,请填空。#include <stdio.h>#include <string.h>main()char str80,ch;int i,j,lenth;gets(str);lenth=for(j=i+1;j<lenth;j+)for(i=0;i<lenth-1

28、;i+)if(ch=stri;stri=strj;strj=ch; printf( “ %sn ” ,);strlen(str) stri>strj str12请完整以下程序。程序功能是用来对从键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如,输入的两个字符串分别为abcdefg和abceef,则输出为d' - e'的值-1。#includevstdiomain()char strl80,str280,c;int jprintf(s;“请输入第一条字串:scan(printf( scanf(while(strli=str2i)&a

29、mp;&)stri!= ' 0“ s” ,strl);“请输入第二条字串:“ S” ,str2); float x1000sum=0.0 , ave , a ;i+;s=printf(_; stri-str2i“ dn”,s);五、编程题1. 从键盘上输入10个数存入一维数组中,求这 10数中的最大值与最小值并输出。#include "stdio.h" main() int a10,max,min;for(i=0;iv10;i+)scanf("%d", &ai);max=a0;for(i=1;i<10;i+)if(ai>

30、;max)max=ai;min=a0;for(i=1;i<10;i+)if(ai<min)min=ai;printf("%d %d",max,min); 2.从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。main()int n=0printf("Enter mark:n") ;scanf("%f" , &a);while(a>=0.0&& n<1000) sum+=a ;xn=an+scanf("%f",&a

31、) ;ave= sum/nprintf("Output:n") ;printf("ave=%fn",ave) ;for (i=0;i<n;i+)ifxi<ave )printf ( “%f n”,x i);3. 将一个数组中的值按逆序存放。例如原来顺序为:8,6, 5, 4,1。要求改为 1,4,5, 6, 8。# define N 5main()int aN,i,temp;for(i=0;i<N;i+) scanf( “ %d” ,&ai);for(i=0;i<N;i+) printf(“ %d” ,ai);for(i=

32、0;i<N/2;i+)temp=ai;ai=an-i-1;an-i-1=temp;for(i=0;i<N;i+)printf( “%d” ,ai);4. 定义一个数组: a10=-12,234,34,-34,65,21,-1,-45,-23,0,然后对数组元素进行从小到大排序。main()int a10=-12,23,45,-1,-342,13,25,76,3,90;int i,j,n=10,temp;for (i=0;i<n-1;i+)for(j=i+1;j<n;j+)if (ai>aj)temp=ai;ai=aj;aj=temp;printf("a%

33、d=%dn",j,aj);for(j=0;j<10;j+)5.试编程求一个 3行4列二维整型数组的最大元素。1. #include <stdio.h> void main() int i,j,max;int a34;for (i=0;i<=2;i+)for (j=0;j<=3;j+)scanf(%d”,&aij);max=a00;for (i=0;i<=2;i+)for (j=0;j<=3;j+)if (aij>max) max=aij;printf("max=%dn",max);6.有一个M*N的矩阵,编程

34、求出其中值最小的那个元素的值,以及相应的行号和列号。#define M 4#define N 3main()int i ,j,row=0,colum=0,min ;int aMN=1, 12, 3, 4, 25, 6, 17, 8, 19, 0, 11, 12 ;min=a00for(i=0 ;i<=3 ;i+) for(j=0;j<=2;j+)if (min>aij)min=aij;row=icolum=jprintf(“min= %d, row=%d, coium= %dn”, min, row,colum) ; 7.求一个4 X 4的整型矩阵对角线元素之和。(10分)m

35、ain() int a44,sum=0;int i,j;printf( “ input data:n ” );for (i=0;i<4;i+)for (j=0;j<4;j+)scanf(“ %d”,&aij);sum=sum+aii;printf(“sum=%dn” ,sum);for (i=0;i<4;j+)8编程打印杨辉三角形。 杨辉三角的标准格式如下:1 5 10 10 5 11 6 15 20 15 6 ll 7 2l 35 35 2ll 8 28 56 70 5628 8 1main()int i,j, aN+1N+1 ;for(i=l; i<=N ;

36、 i+)aii=l5ai1=l5for(i=3; i<N ; i+)for(j=2; j<N; j+)aij= ai-1j-1+ai-1jfor(i=l; i<N ; i+)j=N-l-i;while(j>0)printf(“”for(j=1;j<=i;j+)printf(“ 6d”, aij)printf(“ n”);printf(“ n”);#define N 10) ; j- ; 9. 找出一个二维数组的鞍点,即该位置上的元素在该行最大,在该列最小。也可能没有鞍点。要求:(1)整个程序由两个函数组成,一个为主函数,一个为求鞍点的函数;(2) 找鞍点函数的函数头为int Andian(int b 4, int n) ,该函数的返回值为所找

温馨提示

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

评论

0/150

提交评论