5. 将一个数组中的元素按逆序重新存放。例如原来的顺序为:8,5,7,4,1, 要求改为:
1,4,7,5,8 。 #define N 7 void main()
{ int a[N]={12,9,16,5,7,2,1},k,s; printf(\初始数组:\\n\ for (k=0;k { s=a[k]; a[k]= (2) ; (3) =s; } printf(\交换后的数组:\\n\ for (k=0; (4) ;k++) printf(\ } 6. 有一行文字,要求删去某一个字符。此行文字和要删去的字符均由键盘输入,要删去 的字符以字符形式输入(如输入 a表示要删去所有的 a字符)。 #include { /*str1表示原来的一行文字,str2表示删除指定字符后的文字*/ char str1[100],str2[100]; char ch; int i=0,k=0; printf(“please input an sentence:\\n”); gets(str1); scanf(\ for (i=0; (2) ;i++) if (str1[i]!=ch) { str2[ (3) ]=str1[i]; k++; } str2[ (4) ]='\\0'; printf(\ } 7. 找出10个字符串中的最大者。 25 #include { char str[20],s[N][20]; int i; for (i=0;i strcpy(str,s[0]); for(i=1;i if ( (2) >0) strcpy(str,s[i]); printf(\ } 8. 某人有四张 3分的邮票和三张 5分的邮票,用这些邮票中的一张或若干张可以得到 多少种不同的邮资? main() { static int a[27]; int i,j,k,s,n=0; for (i=0;i<=4;i++) for (j=0;j<=3;j++) { s= (1) ; for (k=0;a[k];k++) if (s==a[k]) (2) ; if ( (3) ) { a[k]=s; n++;} } printf(\ for (k=0; (4) ;k++) printf(\ } 9. 求矩阵的马鞍点。马鞍点即它的值在行中最大,在它所在的列中最小。 26 #define N 10 #define M 10 main() { int i,j,k,m,n,flag1,flag2; int a[N][M],max; printf(\输入行数 n:\ scanf(\ printf(\输入列数 m:\ scanf(\ for (i=0;i printf(\ (2) ; } flag2=0; for (i=0;i { max= (3) ; for (j=1;j if (!flag2) printf(\矩阵中无鞍点!\\n\ } 27 第六单元 函 数 一、选择题 1. 在C语言中,当函数调用时 。 A. 实参和形参各占一个独立的存储单元 B. 实参和形参共用存储单元 C. 可以由用户指定实参和形参是否共用存储单元 D. 由系统自动确定实参和形参是否共用存储单元 2. 以下函数调用语句中实参的个数为 。 exce((v1,v2),(v3,v4,v5),v6); A. 3 B. 4 C. 5 D. 6 3. 如果在一个函数的复合语句中定义了一个变量,则该变量 。 A. 只在该符合语句中有效,在该符合语句外无效 B. 在该函数中任何位置都有效 C. 在本程序的原文件范围内均有效 D. 此定义方法错误,其变量为非法变量 A. float型 B. int型 C. long型 D. double型 5. C语言规定,函数返回值的类型是由 。 A. return语句中的表达式类型所决定 B. 调用该函数时的主调函数类型所决定 C. 调用该函数时系统临时决定 D. 在定义该函数时所指定的函数类型决定 6. 在C语言程序中,以下描述正确的是 。 A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和函数的调用均不可以嵌套 D. 函数的定义和函数的调用均可以嵌套 7. 以下叙述中正确的是 。 A. 全局变量的作用域一定比局部变量的作用域范围大 B. 静态(static)类别变量的生存期贯穿于整个程序的运行期间 C. 函数的形参都属于全局变量 28 4. C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 。 D. 未在定义语句中赋初值的auto变量和static变量的初值都是随机值 8. 以下程序的运行结果是: #include { int a[]={1,2,3,4},i,x=0; for(i=0;i<4;i++){ sub(a,x);printf("%d",x);} printf("\n"); } A)1234 9. 以下程序的运行结果是: main() { int w=5;fun(w);printf("\n");} fun(int k) { if(k>O) fun(k-1); printf(" %d",k); } A)5 4 3 2 l B)0 1 2 3 4 5 C)1 2 3 4 5 D)5 4 3 2 1 0 10. 以下所列的各函数首部中,正确的是_______。 A)void play(vat a:Integer,var b:Integer) C)void play(int a,int b) A)数组的长度 B)void play(int a,b) D)Sub play(a as integer,b as integer) B)432l C)0000 D)4444 11. 当调用函数时,实参是一个数组名,则向函数传送的是_______。 B)数组的首地址 D)数组每个元素中的值 B)单向值传递 C)数组每一个元素的地址 A)地址传递 12. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。 C)由实参传给形,再由形参传回实参 D)传递方式由用户指定 13. 以下函数值的类型是_______。 fun(float x) { float y; y=3*x-4; return y; 29