第七章C语言
- 格式:doc
- 大小:65.50 KB
- 文档页数:7
选择题:1 2 3 9填空题 4一、选择题1.变量的指针,其含义是指该变量的(B).A.值B.地址C.名D.一个标志2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是(D)A.a,point,*&aB.&*a,&a,*pointC.*&point,*point,&aD.&a,&*point ,point3.对于类型相同的指针变量,不能进行哪种运算?(A )A. +B. -C. =D. ==4. 若有以下说明和语句,且0<=i<10, 则下面哪个是对数组元素的错误..引用?(C ) int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i;p=a;A. *(a+i)B. p[i]C. p+iD. *(&a[i])5. 若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确..表示?(B ) int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;p=a;A. &(a+i)B. a++C. &pD. &p[i]6. 以下程序的输出结果是(D )。
#include <stdio.h>main(){int a[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A. 0,5B. 1,5C. 0,6D. 1,67. 若有以下说明和语句,, 则p2-p1的值为多少?(C )int a[10], *p1, *p2;p1=a;p2=&a[5];A. 5B. 6C. 10D. 没有指针与指针的减法8.下列程序段的输出是(C )int a[6]={1,2,3,4,5,6};int x, *p=a;x=(*p)*(*p+2)*(*p+4);printf(“%d”,x);A. 13 B.14 C.15 D.169.若有以下定义:int *p, *q, x, y; 则(B )是合法的运算。
A.p=*xB.p=&xC.p=&qD.p=*q10.若有以下定义,对数组a的元素的正确引用是( A )int a[10],*p=a;A.*(a+2)B.*(p+10)C.a+2D.*&a[10]11.以下程序段输出结果是(B ).int a[10], *p=a;int i;for(i=0;i<5;i++)*p++=i;for(i=0;i<5;i++)printf(“%d,”, *p++);A.0,1,2,3,4,B.五个随机数C.1,2,3,4,5,D.5,6,7,8,9,12.设有以下程序:main(){ int a[10]={0,1,2,3,4,5,6,7,8,9,} , *p;p=&a[0];printf(“%d”,p);printf(“%d”,p+5);}执行此程序,如果第一个printf函数输出的值是2000,则第二个printf 函数输出的是(C )A.2000B.2005C.2020 d.413.下面程序段的运行结果是 (D )char *s="abcde";s+=2;printf("%d",s);A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果14.下面程序的运行结果是 (B )#include <stdio.h>#include <string.h>main(){char *s1="AbDeG";char *s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}A.正数B.负数C.零D.不确定的值15.若有以下定义,则对a数组元素的正确引用是(D ).int a[5],*p=a;A.*&a[5]B.a+2C.*(p+5)D.*(a+2)16.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为( A)A.*(a[i]+j)B.(a+i)C.*(a+j)D.a[i]+j17.若有以下定义,则p+5表示(C )int a[10],*p=a;A.元素a[5]的地址B.元素a[5]的值C.元素a[6]的地址D.元素a[6]的值二、填空题1、下面程序的功能是:用包含指针p的表达式,输出数组中后5个元素的值。
main(){ int a[10]={6,-1,3,2,5,7,6,12,-1,-3};int i, j, *p;p=a+5;for(i=0;i<=4;i++)printf(“%d”,*(p+i) );}2. 已知有以下的说明,int a[]={8,1,2,5,0,4,7,6,3,9};那么a[*(a+a[3])]的值为0.3.以下程序完成求10个数中的最大值。
#include <stdio.h>main(){ int a[10],i,*p, *max;for(p=a;p<a+10;p++)scanf("%d",p+i);max=a;for(p=a+1;p<a+10;p++)if(*p>*max)*max=*p;printf("最大值:%d\n",*max);}4.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。
请填空。
#include "stdlib.h"main(){int *a,*b,*c,num,x,y,z;a=&x;b=&y;c=&z;printf("输入3个整数:");scanf("%d%d%d",a,b,c);printf("%d,%d,%d\n",*a,*b,*c);num=*a;if(*a>*b)sum=*b;if(num>*c)sum=*c;printf("输出最小整数:%d\n",num);}5.下面程序段的运行结果是hELLO!.char s[80],*sp="HELLO!";sp=strcpy(s,sp);s[0]='h';puts(sp);6.下面程序段的运行结果是ef.char str[]="abc\0def\0ghi",*p=str;printf("%s",p+5);7.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是4. *p+2的值是4.8.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是8. *(*(a+1)+1))的值是10.9.以下程序将数组a中的数据按逆序存放,请填空。
#define M 8main(){int a[M],i,j,t;for(i=0;i<M;i++)scanf("%d",a+i);i=0;j=M-1;while(i<j){t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i++;j--;}for(i=0;i<M;i++)printf("%3d",*(a+i));}10.若有定义:int a[3][5],i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用五种形式引用。
它们是:(1)a[i][j](2)*(a[i]+j)(3)*(*(a+i)+j);(4)(*(a+i))[j](5)*(`a+5*i+j)11.下面程序的运行结果是Coble dBase C language Pascal.main(){char *a[]={"Pascal","C language","dBase","Coble "};char (**p)[];int j;p=a+3;for(j=3;j>=0;j--)printf("%s\n",*(p--));}三、改错题1、利用指针变量输出a数组的10个元素#include <stdio.h>main(){ int *p,i,a[10];p=a;/************found****************/for(i=0;i<10;i++)scanf("%d",p++);printf("\n");/************found****************/p=a;for(i=0;i<10;i++,p++)/************found****************/printf("%d ",*p);}2、输出字符串中第6个字符,然后输出全部字符串#include <stdio.h>main(){char *a="I love china!";/************found****************/int i;/************found****************/printf("The sixth charactter is %c\n",a[5]);for(i=0;a[i]!='\0';i++)/************found****************/printf("%c",a[i]);}3、利用指针变量输出二维数组#include <stdio.h>main(){int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int *p,i,j;for(i=0;i<3;i++){for(j=0;j<4;j++)/************found****************/printf("%4d",*(*(a+i)+j));printf("\n");/************found****************/;for(p=a;p< 12;p++){if((p-a[0])%4==0)printf("\n");/************found****************/printf("%4d",*p);}printf("\n");}四、编程题1、利用指针方法,输入三个整数,按由大到小的顺序输出。