《C语言程序设计基础》课程单元总结与单元练习 答案
{int b=0; //定义b为自动变量 static int c=3; //定义c为静态局部变量 b=b+1; c=c+1; return b+c; } void main( ) {int a1,a2; a1=f(); a2=f();
printf(\}
5.以下程序输出结果为 。
#include
void main() { }
int i,j=0; for(i=1;i<3;i++)
j+=fun(i); printf(\if(n==1) return 1; else return fun(n-1)+1;
6.以下程序输出结果为 。
#include
void main() { }
int b[5]={1,2,3,4,5}; fun(b,5);
for(int i=0;i<5;i++) printf(\for(int i=0;i if(a[i]>0) a[i]*=2; ******************************************************************************* 习题答案: 一.选择题 《C语言程序设计基础》课程单元总结与单元练习 答案 1.A 2.A 3.D 4.A 5.B 6.B 7.B 二.填空题 1.11 2.3,2 2,3 3.3,9 4.5,6 5.3 6.2 4 6 8 10 ******************************************************************************* 《C语言程序设计基础》课程单元总结与单元练习 答案 单元八 指针的使用 单元总结提升 在本单元中,对指针的理解,以及利用指针访问不同形式的数据是核心内容。通过本单元的学习,我们应该知道: 6. 内存地址就称为指针。C语言允许用一个变量来存放指针,这种变量称为指针变量,而指针变量的值就是某个内存单元的地址。 7. 定义指针变量的一般格式为: 类型标识符 *指针变量名 ,其中: (1)“指针变量名”前面的“*”,表示该变量是指针变量,不能省略。 (2)“类型标识符”表示该指针变量所指向的变量的数据类型。 (3)当一个指针变量已确定指向某类型的变量时,不能再指向另一种类型的变量。 3.指针变量被赋值后即可引用,引用指针变量的一般方法为: *指针变量名 。 4.指针和数组有着密切的关系,任何通过控制数组下标实现的对数组的操作,都可用指针来实现。要通过指针操作数组,首先要建立指针变量与数组之间的关系,然后才能通过指针变量访问数组元素。若有语句段: int a[10]; int *p; p=a;,则对于数组元素的访问方式有 a[i]、 *(p+i) 、 p[i] ,对数组元素地址的表示方式有 a+i 、 p+i 、 &a[i] 。 5.数组名代表数组的首地址,利用函数处理一维数组数据时,函数之间的参数传递为 数组首地址 。将数组的首地址作为实参传递给函数的形参以后,实参数组和形参数组其实是同一段内存中的数据。 6.字符串是存放在某存储区域的一串字符序列,可通过字符数组和字符指针两种方式操作字符串。 7.函数返回值可以是地址(指针类型),返回值为地址的函数定义形式为: <类型标识符> *<函数名> ([形参列表]); 。 通过本单元的学习,应明确地址和指针的关系,掌握使用指针访问内存数据的基本方法。 单元练习 一.选择题 《C语言程序设计基础》课程单元总结与单元练习 答案 1.假设整型变量a的值是12,a的地址是2200,若想使整型指针变量p指向a,以下赋值正确的是( )。 A.&a=2200; B.*p=12; C.*p=2200; D.p=&a; 2.若有定义int *p,m=5,n;,以下正确的程序段是( )。 A.p=&n; scanf\ C.scanf(\ B.p=&n; scanf(\D.p=&n; *p=m; 3.以下合法的定义是( )。 A.str[]={\ B.char *p=\D.char str[13]; str[]=\ C.char *p; strcpy(p, \ 4.若有定义int a[ ]={1,3,5,7,9,11}, *p=a;,则能够正确引用该数组元素的是( )。 A.a B.a[6] C.*(p--) D.*(--p) 5.以下程序运行结果为( )。 #include char a[]=\char *p,*q; int k; p=a;q=b; for(k=0;k<8;k++) if(*(p+k)==*(q+k)) printf(\ A.gae B.ga C.Language D.programe 二.填空题 1.给出以下程序的执行结果 。 #include int *p1,*p2,*p; int a=10,b=12; p1=&a;p2=&b; if(a {p=p1;p1=p2;p2=p;} printf(\printf(\ 《C语言程序设计基础》课程单元总结与单元练习 答案 } 2.以下程序的功能是把数组元素的最大值放入a[0]中,则条件表达式应为 。 #include int a[10]={6,7,2,9,5,10,4,3,8,1}; int *p=a,i; for(i=0;i<10;i++,p++) if( ) *a=*p; printf(\ 3.以下程序的输出结果是 。 #include int a[2][3]={{1,2,3},{4,5,6}}; int m,*ptr; ptr=&a[0][0]; m=(*ptr)*(*(ptr+2))*(*(ptr+4)); printf(\ 4.下列函数功能是计算str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str) { } char *p; for(p=str; !='\\0';p++); return( ); 5.以下程序中,函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。试问当程序运行时依次输入:abcd、abba和abc三个字符串,则输出结果为 。 #include char *scmp(char *s1,char *s2) { if(strcmp(s1,s2)<0) return(s1);