C程序设计复习 if(a>b) c=1;else if(a==b) c=0;else c=-1; return (c);}
6.以下程序输出的结果是( D )。
A.0 B.1 C.6 D.无定值
fun(int a,int b,int c) { c=a*b;} main() { int c;
fun(2,3,c);printf(“%d\\n”,c);} 7.以下程序输出的结果是( A )。
A.5.500000 B.3.000000 C.4.000000 D.8.25 double f(int n) { int i;double s;
s=1.0;for(i=1;i<=n;i++) s+=1.0/i;return s;} main()
{ int i,m=3;float a=0.0; for(i=0;i A.函数不能嵌套定义,但可以嵌套调用 B.main函数由用户定义,并可以被调用 C.程序的整个运行最后在main函数中结束 D.在C语言中以源文件而不是以函数为单位进行编译 9.以下概念正确的是( B ) A.形参是虚设的,所以它始终不占用存储单位 B.实参与它所对应的形参占用不同的存储单元 C.实参与它所对应的形参占用一个存储单元 D.实参与它所对应的形参同名时可占用一个存储单元 10.以下不正确的说法是 C A.在C语言中允许函数递归调用 B.函数值类型与返回值类型出现矛盾时,以函数值类型为准 C.形参可以是常量、变量或表达式 D.C语言规定,实参变量对形参变量的数据传递是“值传递” 11.以下正确的函数首部是 B A.float swap(int x,y) B.int max(int a,int b) C.char scmp(char c1,char c2); D.double sum(float x;float y) 12.在函数中未指定存储类别的变量,其隐含存储类别为( B) 第 25 页 共 43 页 C程序设计复习 A.静态 B.自动 C.外部 D.存储器 13.在一个文件中定义的全局变量的作用域为 D A.本程序的全部范围 B.离定义该变量的位置最近的函数 C.函数内全部范围 D.从定义该变量的位置开始到本文件结束 14.以下函数的返回值类型是(A ) fun(int x) {printf(“%d\\n”,x);} A.void类型 B.int类型 C.没有 D.不确定的 15.在一个函数中的复合语句中定义了一个变量,则该变量的有效范围是(A ) A.在该复合语句内 B.在该函数中 C.本程序范围内 D.非法变量 16.若用数组名作为函数调用的实参,传递给形参的是(A ) A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数 ㈢.程序设计题: 1.用递归法求n!。 2.用递归法求1+2+??+n。 第七章 数组 一.知识点 1.数组的概念与定义 2.数组的初始化 3.数组元素的引用 4.字符数组的定义、使用、字符串处理函数 5.数组数据的一般处理方式 【要点归纳】 1、一维数组 任何数组在使用之前必须先说明,即指定数组名称,大小和元素类型。一旦说明了一个数组,系统就会为它在内存中分配一个所申请大小的存储空间 ( sizeof(类型)*长度)。 ⑴一维数组的说明 第 26 页 共 43 页 C程序设计复习 类型说明符 数组名[常量表达式]; 说明:①数组名是一个地址常量,不允许对其值进行修改。 ②“常量表达式”表示该数组拥有多少个元素,即数组的大小,它必须是正数数。 ⑵一维数组元素的引用 数组名[下标] 说明:下标是某个数组元素到数组开始元素的位置偏移量;数组下标从 0开始。 ⑶一维数组的初始化 z 对数组的全部元素赋初始值; z 对数组的部分元素赋初始值; z 在对数组的全部元素赋初值时,也可以将数组定义为一个不确定长度的数组(形式上的不确定)。 2、二维数组 ⑴二维数组的说明 类型说明符 数组名[常量表达式 1][常量表达式 2]; 注:①二维数组中元素的顺序是:按行优先存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素,依此类推。 ②二维数组可看成是一个特殊的一维数组,它的元素又是一维数组。 ⑵二维数组元素的引用 数组名[下标 1][下标 2] 例: int A[M][N] 其元素 A[i][j] 排在第 i*N+j+1 个存储位置上。 ⑶二维数组的初始化 z 分行给二维数组赋初始值; z 按数组存储的排列顺序赋初始值; z 允许省略第一维长度说明来给二维数组赋初始值。 3、字符数组 字符数组是用来存放若干个字符的数组,其定义和引用方式与其它数组相同。 4、字符串数组 字符串数组的每个元素又都是一个字符串。字符串数组是二维数组。 5、字符串处理函数 ⑴puts(字符数组) ⑵gets(字符数组) ⑶strcat(字符数组 1,字符数组 2) ⑷strcpy(字符数组 1,字符数组 2) ⑸strcmp(字符串 1,字符串 2) ⑹strlen(字符串) ⑺strlwr(字符串) ⑻strupr(字符串) 第 27 页 共 43 页 C程序设计复习 二.练习 ㈠.填空题: 1.若有定义:double w[10];则w数组元素下标的上限是 9 ,下限是 0 。 2.以下程序的输出结果是 12 。 main() { int arr[10],i,k=0; for(i=0;i<10;i++) arr[i]=i; for(i=0;i<4;i++) k+=arr[i]+i; printf(“%d\\n”,k); } 3.以下程序的输出结果是 -850 2 0 。 main() { int i,j,row,col,m; int arr[3][3]={{100,200,300},{28,72,-30},{-850,2,6}}; m=arr[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(arr[i][j] 4.在C语言中,二维数组元素在内存中的存放顺序是 按行存放 。 5.若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为 (i+1)*(j+1)/m,j 。 6.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是 0 ,a[2][1]得到的初值是 6 。 7.若有说明char s[20];如果想从键盘上把字符串“This is a book.”输入到数组s中,应当调用的函数是 gets ;函数调用语句的形式是 s=gets(); 。 8.若有char str1[20]={“a good”},str2[ ]={“ student”};能把str2中的字符串接到str1中的字符串后面的函数调用语句是 strcat(str1,str2) 。 9.以下findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。 findmax(int s[ ],int t) { int k,p; for(p=0,k=p;p if(s[p]>s[k]) s[k]=s[p] ; return s[k] ; } 10.以下程序统计从终端输入的字符中每个大写字母的个数,num[0]中统计字母A的个数,其它依次类推。用#号结束输入,请填空。 #include “stdio.h” #include “ctype.h” main() { int num[26]={0},i; char c; while( ( c=getchar() ) !=‘#’) 第 28 页 共 43 页