C语言习题集合4(数组)
- 格式:pdf
- 大小:186.29 KB
- 文档页数:23
c语言数组练习题及答案第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) {int i,m=0,aver=0;for(i=0;i<n;i++) aver+=a[i];aver/=n;for(i=0;i<n;i++)if(a[i]<aver) b[m++]=a[i];return m;}第二题:试编一函数:求出1000之间能被7或11整除,但不能同时被7或11整除的所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回. int fun(int a[]){int i,n=0;for(i=1;i<1000;i++)if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0)) a[n++]=i;return n;}第三题:试编一函数:将大于整数m且紧靠m的k个素数存入数组a中. void fun(int m,int k,int a[]) {int i,n,data,flag;data=m+1; n=0;while(n<k){flag=1;for(i=2;i<=data/2;i++)if(data%i==0){flag=0; break;}if(flag) a[n++]=data;data++;}}第四题:试编一函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数平移到数组的最后.如:原始内容: 1,2,3,4,5,6,7,8,9,10; 当p=4时:移后内容: 6,7,8,9,10,1,2,3,4,5void fun(int a[],int n,int p) {int i,j,t;for(i=0;i<=p;i++){t=a[0];for(j=1;j<n;j++) a[j-1]=a[j];a[n-1]=t;}}第五题:试编一函数:在具有n个数据的数组a中,求出次最大值的下标并由函数值返回.int fun(int a[],int n){int i,j,max,may;if(a[0]>a[1]){max=0; may=1;}else {max=1; may=0;}for(i=2;i<n;i++)if(a[i]>a[max]){may=max;amx=i;}else if(a[i]>a[may]) may=i;return may;}第六题:在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小进行升序排列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后的前10个数存入数组b中.(提示:可采用选择排序)int fun(int a[],int n,int b[]) {int i,j,k,t,m=10;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]%1000<a[k]%1000) k=j;else if(a[j]%1000==a[k]%1000 && a[j]>a[k]) k=j;if(k!=i){t=a[i]; a[i]=a[k]; a[k]=t;}}for(i=0;i<m;i++) b[i]=a[i];return m;}第七题:在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数,又有两位数字相同.(如:144,676;)并将符合条件数的个数n由函数值返回,符合条件的数存入数组a中返回.int fun(int a[]){int i,j,hun,ten,data,n=0;for(i=10;i<32;i++){j=i*i;if(j>=100&&j<=999){hun=j/100;ten=j%100/10;data=j%10;if(hun==ten||ten==data||data==hun) a[n++]=j;}}return n;}第八题:判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).当该数是回文数时,函数值返回1,否则返回0.(提示:利用逻辑量flag进行操作). intfun(long m){int i=0,n=0,flag=1,a[20];while(m){a[n]=m%10; m=m/10; n++;}while(i<=n/2 && flag)if(a[i]!=a[--n] flag=0;else i++;return flag;}第九题:在数组a中存有n个数据,试编一函数:依次从数组中取出一个数据,如查该数连续大于该数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并把这些数按从小到大的顺序存入数组b中.int fun(int a[],int n,int b[]) {int i,j,flag,m=0;for(i=0;i<n-5;i++){for(j=i+1;j<=i+5;j++)if(a[i]>a[j]) flag=1;else {flag=0; break;}if(flag==1 && a[i]%2==1) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]>b[j+1]){flag=b[j]; b[j]=b[j+1]; b[j+1]=flag;}return m;}第十题:在数组a中有n个四位数,试编一函数:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序排序.int fun(int a[],int n,int b[]) {int i,j,m,thou,hun,ten,data;for(i=0;i<n;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+data==hun+ten) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]<b[j+1]){data=b[j]; b[j]=b[j+1]; b[j+1]=data;}}第十一题:在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从第s=1个人开始进行从1到m=10的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止,现要求将出圈次序重新存入数组a中.void fun(int a[],int n,int s,int m) {int i,j,k,l,x;i=s-1; k=0; l=n;while(l>0){k++;if(k==m){x=a[i];for(j=i+1;j<n;j++) a[j-1]=a[j];a[n-1]=x;k=0; l--;}else i++;if(i==l) i=0;}}。
若当堂没做完,下周四之前上交也可。
至ftp://211.64.82.253/用户名和密码:stuC语言程序设计练习题——数组一、选择题77、以下对一维数组a的正确说明是_d ___A、char a(10);B、int a[ ];C、int k=5,a[k];D、char a[ ]={'a' , 'b' , 'c'};78、若有说明语句:int a[2][4];,则对a数组元素的正确引用是_a___A、a[0][3]B、a[0][4]C、a[2][2]D、a[2][2+1]79、以下能对二维数组y进行初始化的语句是_b__A、static int y[2][ ]={{1,0,1}, {5,2,3}};B、static int y[ ][3]={{1,2,3}, {4,5,6}};C、static int y[2][4]={{1,2,3}, {4,5} , {6}};D、static int y[ ][3]={{1,0,1,0}, { }, {1,1}};80、若有说明语句:int y[ ][4]={0,0};则下面叙述不正确的是_d___A、数组y的每个元素都可得初值0B、二维数组y的行数为1C、该说明等价于int y[ ][4]={0};D、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值081、以下各组选项中,均能正确定义二维实型数组s的选项是_c___A、float s[3][4];B、float s(3,4);float s[ ][4]; float s[ ][ ]={{0};{0}};float s[3][ ]={{1},{0}}; float s[3][4];C、 float s[3][4];D、float s[3][4];static float s[ ][4]={{0},{0}}; float s[3][ ];auto float s[ ][4]={{0},{0},{0}}; float s[ ][4];82、若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8}; ,则a数组的行数为__a__A、3B、2C、无确定值D、183、若二维数组y有m列,则在y[i][j]前的元素个数为_B___A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+184、下面程序中有错误的行是____1、 main( )2、 {3、 int x[3]={1};4、 int k;5、 scanf("%d", &x);6、 for (k=1; k<3; k++)7、 x[0]=x[0]+x[i];8、 printf("x[0]=%d\n", x[0]);9、 }A、3B、6C、7D、585、若有以下语句,则正确的描述是__b__char x[ ]="12345";char y[ ]={'1', '2', '3', '4', '5'};A、x数组与y数组的长度相同B、x数组长度大于y数组长度C、x数组长度小于y数组长度D、x数组等价于y数组86、以下不正确的数组定义语句是__b__A、double x[5]={2.0, 4.0, 6.0, 8.0, 10.0};B、int y[5]={0, 1, 3, 5, 7, 9};C、char ch1[ ]={'1', '2', '3', '4', '5'};D、char ch2[ ]={'\x10', '\xa', '\x8'};87、以下正确的数组定义语句是_c___A、char a[5]={'1', '2', '3', '4', '5', '\0'};B、int b[2][ ]={{1}, {2}};C、float c[ ][3]={1, 2, 3, 4, 5};D、char d[5]="CHINA";88、判断字符串str1是否大于字符串str2,应当使用__d__A、if (str1>str2)B、if (strcmp(str1, str2))C、if (strcmp(str2, str1)>0)D、if (strcmp(str1, str2)>0)89、下面程序段的运行结果是_c___char x[5]={'a', 'b', '\0', 'c', '\0'};printf("%s", x);A、'a''b'B、abC、ab└┘cD、abc90、有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是_d___A、gets(a, b);B、scanf("%s%s", &a, &b);C、getchar(a); getchar(b);D、gets(a); gets(b);91、有字符数组s1[80]和s2[80],则以下能正确对s1, s2进行输出的语句是___b_A、puts(s1, s2)B、printf("%s, %s", s1, s2);C、putchar(s1, s2);D、puts(s1), puts(s2);92、以下程序段的运行结果是_c___char a[7]="abcdef";char b[4]="ABC";strcpy(a, b);printf("%c", a[5]);A、└┘B、\0C、eD、f93、以下描述正确的是_d___A、两个字符串所包含的字符个数相同时,才能比较字符串B、字符个数多的字符串比字符个数少的字符串大C、字符串"STOP└┘"与"STOP"相等D、字符串"That"小于字符串"The"94、以下对字符数组的描述中错误的是_c___A、字符数组中可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D、不可以用关系运算符对字符数组中的字符串进行比较95、若有语句:char s1[10], s2[10]={"books"},则能将字符串books赋给数组s1的正确语句是_b___A、s1={"books"};B、strcpy(s1, s2);C、s1=s2;D、strcpy(s2, s1);96、以下printf语句的输出结果是____printf("%d\n", strlen("school");A、7B、6C、存在语法错误D、不定值97、下面程序的功能是将字符串s中所有的字符c删除。
第8章函数单选题:1、下列程序执行后输出的结果是#include 〈stdio.h〉f(int a){ int b=0;int c=3;a=c+ +,b+ +;return(a);}main( ){ int a=2,i,k;for(i=0;i〈2;i+ +)k=f(a+ +);printf("%d\n",k);}A.3B.0C.1D.4学生答案: A参考答案: A2、在一个C源程序文件中,若要定义一个只允许本源文件中所用的函数的全局变量,则变量需要使用的存储类别是____A.AutoB.staticC.registerD.extern学生答案: C参考答案: B3、下面程序的输出是int m=13;int fun2(int x,int y){ int m=3;return(x*y-m);}main(){ int a=7,b=5;printf("%d\n",fun2(a,b)/m);}B.2C.7D.10学生答案: B参考答案: B4、以下程序运行后,输出结果是func(int a,int b){ static int m=0,i=2;i+=m+1;m=i+a+breturn(m);}main(){ int k=4,m=1,p;p=func(k,m);printf("%d\n",p);p=func(k,m);printf("%d\n",p);}A.8,15B.8,16C.8,17D.8,8学生答案:参考答案: C5、以下程序的输出结果是int d=1;fun(int p){ d = d+p;printf("%d ",d);return(d);}main( ){int a=3;printf("%d \n",fun(a+fun(d)));}A. 2 6B. 1 7 7C. 2 7 7学生答案: C参考答案: C6、C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是____.A.单纯值传递B.单纯地址传递C.值传递和地址传递都有可能D.由实参传给形参,然后由形参传回给实参,即是双向传递学生答案: B参考答案: A7、下列说法正确的是________.A.调用函数时,实参与形参可以共用内存单元B.调用函数时,实参的个数、类型和顺序与形参可以不一致C.调用函数时形参可以是表达式D.调用函数时,将为形参分配内存单元学生答案: D参考答案: D8、C语言程序由函数组成。
国家二级C语言(数组)机试模拟试卷4(题后含答案及解析)题型有:1. 选择题选择题1.若有定义:int x[10],*pt=x;,则对x数组元素的正确引用是( )。
A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)正确答案:D解析:没有A选项的引用形式。
*与&放在一起作用抵消,但x[10]下标10超出了数组下标范围,所以B选项错误。
最大只能引用到x[9],而*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。
D 选项正确。
知识模块:数组2.有以下程序:#include<stdio.h>main( ){int i,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d\n”,s);}程序的运行结果是( )。
A.20B.25C.45D.36正确答案:B解析:统计1~9这9个数中的奇数和,此题考查指向数组的指针。
C语言规定数组名代表数组的首地址,也就是第一个元素的地址,因此*(t+i)代表数组的第i+1个元素。
程序的运行结果是1+3+5+7+9=25。
知识模块:数组3.有以下程序:#include<stdio.h>main( ){int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)e[s[i]]++;for(i=1;i <5;i++)printf(“%d”,c[i]);printf(“\n”);}程序的运行结果是( )。
A.2 3 4 4B.4 3 3 2C.1 2 3 4D.1 1 2 3正确答案:B解析:在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2,因此B选项正确。
知识模块:数组4.下列定义数组的语句中正确的是( )。
一、单项选择题(共20小题;每小题1分,共20分)
1、一个C语言程序由()组成。
A.子程序B.过程C.函数D.主程序
2、若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3 B.1+2=x2 C.x3=0x12 D.x4=1+2=3;
3、以下符合C语言语法的实型常量是()。
A.1.2E0.5 B.3.14159E C.E15 D.0.5E-3
4、以下不能正确表示代数式2ab/(cd) 的C语言表达式是()。
A.2*a*b/c/d B.a*b/c/d*2 C.a/c/d*b*2 D.2*a*b/c*d
5、设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A.k++ B.k+=1 C.++k D.k+1
6、若有以下函数首部int fun(double x[10],int *n)则下面针对此函数声明语句中正确
的是()。
A.int fun(double x,int *n); B.int fun(double ,int);
C.int fun(double*x,int n); D.int fun(double *,int*);
7、若i为整型变量,则以下循环体执行次数是()。
for(i=2;i==0;) printf("%d",i--);
A.无限次 B. 0次 C. 1次 D. 2次
南京工程学院试卷共8 页第2 页
南京工程学院试卷共8页第6 页。
C语言程序设计第一、二章单项选择题1.将汇编语言编写的程序翻译成目标程序的程序是()A)解释 B)编译 C)汇编 D)目标2.不属于面向机器语言的是()A)符号语言 B)二进制语言 C)汇编语言 D)C 语言3.将高级语言编写的程序翻译成目标程序的程序是()。
A)解释 B)编译 C)汇编 D)二进制4.不属于高级语言的是()。
A)BASICB)CC)ALGOLD)符号语言5.程序段的基本结构中,不包含()。
A)函数结构 B)循环结构 C)顺序结构 D)分支结构6、C语言源程序的最小单位是()。
A、程序行B、语句C、函数D、字符7、以下说法正确的是()。
A、在C语言中,要调用的函数必须在main() 函数中定义B、C语言程序总是从第一个定义的函数开始执行C、C语言程序中, main() 函数必须放在程序的开始部分D、C语言程序总是从main() 函数开始执行8、以下对 C语言描述中正确的是()。
A、C语言源程序中可以有重名的函数B、C语言源程序中要求每行只能书写一条语句C、C语言源程序中,注释可以出现在任何位置D、最小的C源程序中没有任何内容9、对 C语言源程序执行过程描述正确的是()。
A、从main()函数开始执行,到main() 函数结束B、从程序的第一个函数开始执行,到最后一个函数结束C、从 main 函数开始执行,到源程序的最后一个函数结束D、从第一个函数开始执行,到 main 函数结束。
填空题1.能完成某个任务的、有始有终的 C语言 ___称为 C 程序。
2.用来编写程序的计算机语言称为 ____。
3.高级语言编写的程序称为 ____。
4.用C语言编写的源程序简称为“C程序”,扩展名规定为“____”。
5.C 程序经过“编译”后将获得扩展名为“OBJ”的 ____。
6.C 程序经过编译后获得的中间代码文件还需要经过____,才能成为可执行的“程序”,目标程序的扩展名规定为"EXE"。
第四部分数组4.1 选择题1。
以下关于数组的描述正确的是( ).A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C。
数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。
A.int a(10);B. int n=10,a[n];C。
int n; D。
#define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];3。
在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A。
整型常量B. 整型表达式C. 整型常量或整型表达式D。
任何类型的表达式4。
以下对一维数组m进行正确初始化的是( )。
A. int m[10]=(0,0,0,0);B. int m[10]={ };C。
int m[ ]={0}; D。
int m[10]={10*2};5。
若有定义:int bb[ 8];。
则以下表达式中不能代表数组元bb[1]的地址的是( )。
A. &bb[0]+1 B。
&bb[1] C. &bb[0]++ D. bb+16。
假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( ).A。
3 B。
6 C。
10 D. 207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a’,d,g;则数值为4的表达式是( )A。
a[g—c] B。
a[4] C。
a['d'—’c'] D. a['d'-c]8。
以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
#include〈stdio。
h〉main(){int a[10],i=0;while(i〈10) scanf(”%d",________ );┇}A。
一、单选题1、下列描述中不正确的是()A.字符串的结束符是'\0'。
B.可以对字符型数组进行整体输入、输出。
C.字符型数组中能存放字符串。
D.字符串函数声明在ctype.h中。
正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]= " ";B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串"123 "与"123"相等。
B.字符串"123"小于字符串"2"。
C.两个字符串所包含的字符个数不相同时,才能进行大小比较。
D.字符个数多的字符串比字符个数少的字符串大。
正确答案:B5、下面程序段的输出结果是()char a[7]=“123456”;char b[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是__。
A.double a[1][4];B.float a(3)(4);C. floatf a(3,4);D. int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是__。
A. int a[][3]={{1,2,3},{4,5,6}};B.int a[2][]={{1,0,1},{5,2,3}};C.int a [2][4]={{1,2,3},{4,5},{6}};D. int a[][3={{1,0,1},{},{1,1}};正确答案:A8、若有说明: int a[3][4]={0};则下面正确的叙述是__。
C语⾔第四章练习题注意,本套题⽬中有些涉汲到函数的调⽤和指针的使⽤,⼤家⾃已先去看下,不懂就问,培养⾃⼰的⾃学能⼒。
⼀,选择题1.若有以下定义int x[10], *pt=x;则对x数组元素的正确引⽤是A) pt+3B) *&x[10]C) *(pt+10)D) *(x+3)2.有以下程序#includemain(){ int i, s=0, t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2) s+=*(t+i);printf("%d\n",s);}程序执⾏后的输出结果是A) 20B) 25C) 45D) 363.#includemain(){ int c[6]={10,20,30,40,50,60}, *p,*s;p = c; s = &c[5];printf("%d\n", s-p );}程序运⾏后的输出结果是A) 5B) 50C) 6D) 60{ int a[3]={0}, i, j, k=2;for( i=0; ifor( j=0; jprintf("%d\n", a[1] );}程序运⾏后的输出结果是A) 0B) 2C) 15..有以下程序#includemain(){ int a[5]={2,4,6,8,10}, *p,**k;p = a; k = &pprintf("%d ", *( p++ ) );printf("%d\n", **k );}程序运⾏后的输出结果是A) 4 6B) 4 4C) 2 2D) 2 46.以下叙述中正确的是A) ⼀条语句只能定义⼀个数组B) 每个数组包含⼀组具有同⼀类型的变量,这些变量在内存中占有连续的存储单元C) 数组说明符的⼀对⽅括号中只能使⽤整型常量,⽽不能使⽤表达式D) 在引⽤数组元素时,下标表达式可以使⽤浮点数7.以下叙述中正确的是A) 数组下标的下限是1B) 数组下标的下限由数组中第⼀个⾮零元素的位置决定C) 数组下标的下限由数组中第⼀个被赋值元素的位置决定D) char c1, c2, *c3, c4[40];是合法的变量定义语句8.以下叙述中正确的是C) 语句 char a[2] = {"A", "B"}; 是合法的,定义了⼀个包含两个字符的数组D) 语句 char a[3]; a = "AB"; 是合法的,因为数组有三个字符空间的容量,可以保存两个字符9.有以下程序#includemain(){ int a[ ]={ 2,4,6,8,10 }, x, *p, y=1;p = &a[1];for( x=0; x<3; x++ ) y += *(p+x);printf( "%d\n",y );}程序的输出结果是A) 13B) 19C) 1110.有以下程序#includemain(){int a[ ] = { 2,4,6,8 }, *p=a, i;for( i=0; i<4; i++ )a[i]=*p++;printf( "%d\n" ,a[2] );}程序的输出结果是A) 2B) 8C) 4D) 611.以下叙述正确的是A) 不能在数组说明符的⼀对⽅括号中使⽤表达式B) char c1, *c2, **c3, c4[2]; 是C语⾔的合法语句C) 数组下标的最⼩值可以是负值D) 若有数组定义 int array[5]; 则语句printf("%d",array[1.23]);是合法的int b[] = {9};char c[3] = {"A", "B"};char d = "12";以下叙述正确的是A) a, b的定义合法,c, d的定义不合法B) a,b,c,d的定义都是合法的C) a,b,c的定义是合法的,d的定义不合法D) 只有a的定义是合法的12.对于函数声明void fun(float array[], int *ptr);下叙述正确的是A) 调⽤函数时,array数组的元素和ptr都是按值传送B) 函数声明有语法错误,参数 array 缺少数组⼤⼩定义C) 调⽤函数时,array数组中将存储从实参中复制来的元素值D) 函数参数 array, ptr 都是指针变量13.要求定义⼀个具有6个元素的int型⼀维数组,以下选项中错误的是A) int a[2*3] = {0};B) int N = 6, a[N];C) #define N 3int a[N+N];D) int a[] = {1,2,3,4,5,6};14.设有定义:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,若0≤i≤9,则对a数组元素的引⽤错误的是A) *(&a[i])B) a[10]C) p[i]D) a[p-a]15.有以下程序#includeint fun(int x[],int n){static int sum=0, i;for(i=0;ireturn sum;{int a[]={1,2,3,4,5}, b[]={6,7,8,9}, s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执⾏后的输出结果是A) 55B) 50C) 45D) 60⼆,填空题1. #includevoid fun(int *s, int n1, int n2){int i, j, t;i=n1; j=n2;while( i{t=s[i]; s[i]=s[j]; s[j]=t; i++; j--;}}main(){int a[10]={1,2,3,4,5,6,7,8,9,0}, k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d", a[k]);printf("\n");}则输出结果是。
c语言数组练习题C语言数组练习题在学习C语言的过程中,数组是一个非常重要的概念。
数组可以用来存储一系列相同类型的数据,它能够提供快速访问和处理数据的能力。
为了巩固对数组的理解和运用,我们可以进行一些练习题。
1. 数组的初始化数组的初始化是指在定义数组的同时给数组元素赋初值。
例如,我们可以定义一个长度为5的整型数组,并给它的元素赋初值:```cint arr[5] = {1, 2, 3, 4, 5};```请尝试定义一个长度为10的字符型数组,并给它的元素赋初值。
2. 数组元素的访问数组的元素可以通过下标来进行访问。
数组的下标从0开始,最大下标为数组长度减1。
例如,我们可以通过下标访问数组的元素:```cint num = arr[2]; // 获取arr数组中下标为2的元素```请尝试定义一个长度为6的浮点型数组,并访问其中的第4个元素。
3. 数组的遍历数组的遍历是指依次访问数组中的每个元素。
我们可以使用循环语句来遍历数组。
例如,我们可以使用for循环遍历数组并打印每个元素:```cfor (int i = 0; i < 5; i++) {printf("%d ", arr[i]);}```请尝试定义一个长度为8的整型数组,并使用循环语句遍历数组并打印每个元素。
4. 数组的求和数组的求和是指将数组中的所有元素相加。
我们可以使用循环语句遍历数组,并将每个元素累加到一个变量中。
例如,我们可以计算数组中所有元素的和:```cint sum = 0;for (int i = 0; i < 5; i++) {sum += arr[i];}```请尝试定义一个长度为7的整型数组,并计算数组中所有元素的和。
5. 数组的逆序数组的逆序是指将数组中的元素颠倒顺序。
我们可以使用两个指针分别指向数组的首尾元素,并交换它们的值,然后逐步向中间移动。
例如,我们可以将数组逆序:```cint start = 0;int end = 4;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}```请尝试定义一个长度为6的整型数组,并将数组逆序。
第4~5章串和数组自测卷答案一、填空题(每空1分,共20分)1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。
(对应严题集4.1①,简答题:简述空串和空格串的区别)2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为3。
4. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。
5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配成功。
6. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为(n-m+1)*m。
7. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为288 B ;末尾元素A57的第一个字节地址为1282 ;若按行存储时,元素A14的第一个字节地址为(8+4)×6+1000=1072 ;若按列存储时,元素A47的第一个字节地址为(6×7+4)×6+1000)=1276 。
(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A57可知,是从0行0列开始!)8. 〖00年计算机系考研题〗设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为8950 。
答:不考虑0行0列,利用列优先公式:LOC(a ij)=LOC(a c1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=89509. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。