为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

数组和函数习题

2020-03-06 23页 doc 41KB 5阅读

用户头像

办公小小子

暂无简介

举报
数组和函数习题数组习题 一、选择题 1.(1) int a[4]={5,3,8,9};其中a[3]的值为( )。 A. 5 B. 3 C. 8 D. 9 2.以下4 个数组定义中,( )是错误的。 A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n]; 3.对字符数组进行初始化,( )形式是错误。 A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ ...
数组和函数习题
数组习题 一、选择题 1.(1) int a[4]={5,3,8,9};其中a[3]的值为( )。 A. 5 B. 3 C. 8 D. 9 2.以下4 个数组定义中,( )是错误的。 A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n]; 3.对字符数组进行初始化,( )形式是错误。 A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ '1', '2', '3', '\0'}; D. char c4[ ]="123"; 4.在数组中,数组名表示( )。 A. 数组第1 个元素的首地址 B.数组第2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后1 个元素的首地址 5.若有以下说明,则数值为4 的表达式是( )。 int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; cha r c=?a?, d, g ; A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 6.合法的数组定义是( )。 A. char a[ ]= "string " ; B. int a[5] ={0,1,2,3,4,5}; C. char a= "string " ; D. char a[ ]={0,1,2,3,4,5} 7.数组定义为int a[3][2]={1,2,3,4,5,6},值为6的数组元素是( )。 A. a[3][2] B. a[2][1] C. a[1][2] D. a[2][3] 8.下面的程序中哪一行有错误( )。 #include main() { float array[5]={0.0}; //第A行 int i; for(i=0;i<5;i++) scanf("%f",&array[i]); for(i=1;i<5;i++) array[0]=array[0]+array[i];//第B行 printf("%f\n",array[0]); //第C行 } A. 第A行 B. 第B行 C. 第C行 D. 没有 9.根据以下说明,写出正确的说明语句:men是一个有10个整型元素的数组。 step是一个有4个实型元素的数组,元素值分别为1.9, -2.33, 0, 20.6。grid是一个二维数组,共有4行,10列整型元素。 10.写出以下初始化数组的长度:①int chn[3];数组chn的长度为___。 ②float isa[]={1.0,2.0,3.0,4.0,5.0};数组isa的长度为___。 ③int doom[8];数组doom的长度为___。 ④float pci[4][2];数组pci的长度为___。 ⑤int ast[3][3];数组ast的长度为___。 ⑥int att[3][4];数组att的长度为___。 ⑦float dell[][3]={{1,4,7},{2,5},{3,6,9}};数组dell的长度为___。 (提示:在VC++中int占多少字节?float占多少字节?) 二阅读程序,分析程序的功能 (1) #include void main( ) { char s[80]; int i ; for(i=0; i<80; i++) { s[i]=getchar( ); if(s[i]= ='\n') break; } s[i]='\0'; i=0; while(s[i]) putchar(s[i++]); putchar(…\n?); } (2) 阅读程序,写出运行结果 #include void main( ) { int a[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j; for(i=0;i<6;i++) { for(j=0;j<6;j++) if(a[i]= =b[j])break; if(j<6) printf("%d ",a[i]); } printf("\n"); } (3)读懂下面的程序并填空。 void main() { char str[80]; int i=0; gets(str); while(str[i]!=0) { if(str[i]>='a'&&str<='z') str[i]-=32; i++; } puts(str); } 程序运行时如果输入upcase, 屏幕显示 程序运行时如果输入Aa1Bb2Cc3, 屏幕显示 三、程序填空题 (1)以下程序以每行10个数据的形式输出a 数组,请填空。void main( ) { int a[50],i; printf("输入50个整数:"); for(i=0; i<50; i++) scanf( "%d", 【1】); for(i=1; i<=50; i++) { if( 【2】) printf( "%3d\n" , 【3】) ; printf( "%3d",a[i-1]); } } (2)下面程序的功能是输出数组s 中最大元素的下标,请填空。 void main( ) { int k, p; int s[ ]={1,-9,7,2,-10,3}; for(p=0,k=p; p<6; p++) if(s[p]>s[k]) ; printf("%d\n" ,k); } (3)这个程序输入了20个数存放在一个数组中,并且输出其中最大者与最小者、20个数的和及它们的平均值。请填空。 void main() { int array 【1】; int max,min,average,sum=0; int i; for(i=0;i< 【2】;i++) { printf("请输入第%d个数:",i+1); scanf("%d", 【3】); } max=array[0]; min=array[0]; for(i=0;i<= 【4】;i++) { if(maxarray[i]) 【6】 sum= 【7】; } average = 【8】; printf("20个数中最大值是%d,",max); printf("最小值是%d,",min); printf("和是%d,",sum); printf("平均值是%d.\n",average); } 函数复习(适合7.1节~7.7节) 一.选择题 1.以下正确的函数定义形式是:() a) double fun(int x,int y) b) double fun(int x;int y) c) double fun(int x,int y); d) double fun(int x,y); 2.以下正确的函数形式是:() a) double fun(int x,int y) { z=x+y; return z; } b) fun(int x,y) { int z; return z; } c) fun(x,y) { int x,y; double z; z=x+y; return z; } d) double fun(int x,int y) { double z; z=x+y; return z; } 3.以下正确的说法是:() a) 实参和与其对应的形参各占用独立的存储单元 b) 实参和与其对应的形参共占用一个存储单元 c) 只有当实参和与其对应的形参同名时才共占用存储单元 d) 形参是虚拟的,不占用存储单元 4.以下程序有语法性错误,有关错误原因的正确说法是:() main() { int G=5,k; void prt_char(); …… k=prt_char(G); …… } a) 语句void prt_char();有错,它是函数调用语句,不能用void说明 b) 变量名不能使用大写字母 c) 函数说明和函数调用语句之间有矛盾 d) 函数名不能使用下划线 5.若使用一维数组名作函数实参,则以下正确的说法是:() a) 必须在主调函数中说明此数组的大小 b) 实参数组类型与形参数组类型可以不匹配 c) 在被调函数中,不需要考虑形参数组的大小 d) 实参数组名与形参数组名必须一致 6.C语言规定,函数返回值的类型是:() a) return语句中的表达式类型所决定 b) 调用该函数时的主调函数类型所决定 c) 调用该函数时系统临时决定 d) 在定义该函数时所指定的函数类型所决定 7.折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试同前。函数binary 的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;若没有找到,返回-1。请选择填空。 int binary(int a[10],int m) { int low=0,high=9,mid; while(low<=high) { mid=(low+high)/2; if(ma[mid]) 【2】; else return(mid); } return(-1); } 1 2 3 4 5 6 7 8 9 10 3 Low=0,high=9 mid=4 5<8 low=mid+1 5>3 high=mid-1 【1】是:() a) high=mid-1 b) low=mid+1 c) high=mid+1 d) low=mid-1 【2】是:() a) high=mid-1 b)low=mid+1 c) high=mid+1 d) low=mid-1 二、填空题 1.以下程序的输出结果是 main() { int i=2,x=5,j=7; fun(j,6); printf(“i=%d;j=%d;x=%d\n”,i,j,x); } fun(int i,int j) { int x=7; printf(“i=%d;j=%d;x=%d\n”,i,j,x); } 2.以下程序的输出结果是_______。 main() { increment(); increment(); increment(); } increment() { int x=0; x+=1; printf(“%d”,x); } 3.若输入一个整数10,以下程序的输出结果是___ ____。 main() { int a,e[10],c,i=0; prin tf(“输入一整数\n”); scanf(“%d”,&a); while(a!=0) { c=sub(a); a=a/2; e[i]=c; i++; } for(;i>0;i--) printf(“%d”,e[i-1]); } sub(int a) { int c; c=a%2; return c; } 4.下面程序的功能是【1】,运行结果是【2】。 long fib(int g) { switch(g) { case 0: return 0; case 1: case 2: return 1; } return(fib(g-1)+fib(g-2)); } main() { long k; k=fib(7); printf(“k=%d\n”,k); } 5.以下程序的运行结果是__ _。 #include f(int a[]) { int i=0; while(a[i]<=10) { printf(“%d”,a[i]); i++; } } main() { int a[]={1,5,10,9,11,7}; f(a+1); } 6.以下程序的运行结果是__ _。 main() { int a[3][3]={1,3,5,7,9,11,13,15,17}; int sum; sum=func(a); printf(“\nsum=%d\n”,sum); } func(int a[][3]) { int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { a[i][j]=i+j; if(i==j) sum=sum+a[i][j]; } return(sum); } 函数复习(7.8~7.10) 1.在一个C源程序文件中,若要定义一个只允许本源文件中所 有函数使用的全局变量,则该变量需要使用的存储类别是:(D ) a) extern b) register c) auto d) static 2.以下不正确的说法是:(D) a) 在不同函数中可以使用相同名字的变量 b) 形式参数是局部变量 c) 在函数内定义的变量只在本函数范围内有效 d) 在函数内的复合语句中定义的变量在本函数范围内有效 3.若有以下程序: #include void num() { extern int x,y; int a=15,b=10; x=a-b; 5 y=a+b; 25 } int x,y; main() { int a=7,b=5; x=a+b; 12 y=a-b; 2 num(); printf(“%d,%d\n”,x,y); } 程序的正确运行结果是:() a) 12,2 b) 不确定 c) 5,25 d) 1,12 4.若有以下程序: main() { int a=2,i; for(i=0;i<3;i++) printf(“%4d”,f(a)); } f(int a) { int b=0; static int c=3; b++; c++; B=1,C=6 return(a+b+c); } 程序的正确运行结果是:() a) 7 7 7 b) 7 10 13 c) 7 9 11 d) 7 8 9 5.若有以下程序: #include main() { int k=4,m=1,p; p=func(k,m); printf(“%d”,p); p=func(k,m); printf(“%d\n”,p); } func(int a,int b) { static int m=0,i=2; i+=m+1; i=2+1=3 i=3+8+1=12 m=i+a+b; m=3+4+1=8 m=12+4+1=17 return(m); } 程序的正确运行结果是:() a)8,17 b) 8,16 c) 8,20 d) 8,8 6.以下程序的运行结果是_ 10,20, 40,40 _。 int x1=30,x2=40; main() { int x3=10,x4=20; sub(x3,x4); sub(x2,x1); 40,10 printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2); } sub(int x,int y) { x1=x; x1=40 x=y; x=20 y=x1; y=10 }
/
本文档为【数组和函数习题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索