1、7、下面程序段的运行结果是( )char *s1=AbcdEf,*s2=aBs1+; t=(strcmp(s1,s2)0);,t);8、下面程序段的运行结果是( )char str=abc0def0ghi char *p=str;%s,p+5)9、若有以下定义和语句: int a4=0,1,2,3,*p; p=&a1; 则+(*p)的值是( )。10、若有定义:int a23=2,4,6,8,10,12;则*(&a00+2*2+1)的值是( ),*(a1+2)的值( )。11、若有定义:int a=2,4,6,8,10,12,*p=a;则*(p+1)的值是( ),*(a+5)的值是( )。12
2、、若有以下定义和语句:a2; 则*-p的值是()。13、若有以下定义和语句: int s23=0,(*p)3; 则(*(p+1)+2)的值是()。14、若有定义: 则a10的值是( ),*(*(a+1)+0)的值是( )。15、若有定义:int a=2,4,6,8,10,12,14,16,18,20,22,24,*q3,k;则下面程序段的输出是()。for(k=0;k3;k+) qk=&ak*4;,q23);16、若有以下输入:1,2(=0;j-) printf(,*(p-);18、以下程序的执行结果是()。 char *p1,*p2,str20=xyz p1=abcd p2=ABCDstrc
3、py(str+1,strcat(p1+1,P2+1);,str);19、若输入的值分别是1 3 5,下面程序的运行结果是()int a=0,i,*p,sum;a; for(i=0;=2;i+) scanf(,p); sum=s(p);sum=%d,sum); s(int *p)int sum=10; sum=sum+*p; return(sum);20、下面程序段的运行结果是()char s20= char *sp=s; sp+; puts(strcat(sp,);21、下面程序段的运行结果是()char a=12345,*p; int s=0;for(p=a;*p!=0p+) s=10*s+
4、*p-0,s);22、下面程序段的运行结果是()123456789 int i=0; p=a;while(*p) if(i%2=0) *p=* p+;i+; puts(a);23、下面程序的运行结果是()。 char *str=PascalC languageDbaseCobol; char *p; int k;p=str;k+) printf(%s,*(p+);二、选择题1、以下程序的运行结果是()void sub (int x,int y,int *z) *z=y-x; int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);%4d,%4d,%4
5、dn,a,b,c);A) 5, 2, 3 B) -5, -12, -7C) -5, -12, -17 D) 5, -2, -72、执行以下程序后,b的值为()int b,k=4,m=6,*p1=&k,*p2=&m; b=(-*p1)/(*p2)+7;,b);A)5 B)6 C)7 D)103、下面程序应能对两个整型变量的值进行交换。以下正确的说法是()int a=10,b=20;,a,b); swap(&a,&swap(int p,int q) int t; t=p;p=q;q=t;A)该程序完全正确B)该程序有错,只要将语句swap(&中的参数改为a,b即可C)该程序有错,只要将swap()
6、函数中的形参p和q以及t均定义为指针(执行语句为变)即可D)以上说法都不正确4、设*p,i;以下正确的语句是()。A)*p=&i; B)i=p; C)i=*p; D)p=2*p+1;5、设char s10;int i=1;以下正确的表达式是()。A)i+2 B)*(s+i) C)*(&s+i) D)*(s+)+i)6、设有语句:int a10=0,1,2,3,4,5,6,7,8,9,*p=a;以下对a数组的元素值不正确的引用是()。A)ap-a B)*(&ai) C)pi D)*(a0+1)7、设有说明int(*ptr)M;其中ptr是()。A)M个指向整型变量的指针 B)指向M个整型变量的函
7、数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每一元素只能指向整型量8、如下程序的执行结果是()。main() int i; char *s=ansi!ni+) printf(%c,*(s+i);)a )a )a )a9、有四组对指针变量进行操作的语句,以下判断正确的选项是()(1)int *p,*q;q=p; int a,*p,*q;*p=*q=&(2)int a,*p,*q;q=&p=*q; int a=20,*p;*p=a;(3)int a=b=0,*p;p=&b=*p; int a=20,*p,*q=&*p=*q;(4)int a=20,*p,*
8、q=& int p,q;p;A)(1)正确,其余错 B)(1),(4)正确,其余错C)(3)正确,其余错 D)以下结论都不正确10、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是() int *p,*q,a,b;,*p);. A)*p表示的是指针变量p的地址B)*p表示的是变量a的值,而不是变量a的地址C)*p表示的是指针变量p的值D)*p只能用来说明p是一个指针变量11、若有以下定义,则*(p+5)表示()。int a10,*p=a;A)元素a5的地址 B)元素a5的值 C)元素a6的地址 D)元素a6的值12、若有定义:int *p4;则标识符p()。A)是一个指
9、向整型变量的指针 B)是一个指针数组C)是一个指针,它指向一个含有四个整型元素的一维数组。D)说明不合法13、若有以下定义,且0=i6,则正确的赋值语句是()。int s46,t64,(*p)6;A)p=t; B)p=s; C)p=si; D)p=ti;int a46;则能正确表示a数组中任一元素aij(此处04,0=j6)地址的表达式是()A)&a00+6*i+j B)&a00+4*j+I C)&a00+4*i+j D)&a00+6*j+i15、以下选项中,对指针变量p的正确操作是()A)int a5,*p; B)int a5,*p;C)int a5;int *p=a=1000 D)int
10、a5;int *p1,*p2=a;*p1=*p2;16、若有以下定义,且05,则对数组a元素的非法引用是()int a5,*p=a;A)ai B)*(a+i) C)*(p+i) D)*(&a+i)17、设有以下定义:char *cc2=12345678 则正确的叙述是()A)cc数组的两个元素中各自存放了字符串和的首地址B)cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址C)cc是指针变量,它指向含有两个数组元素的字符型一维数组D)cc数组元素的值分别是18、若有以下定义:int x43=1,2,3,4,5,6,7,8,9,10,11,12; int (*p)3=x;则能够正确
11、表示数组元素x12的表达式是()A)*(*p+1)2) B)(*p+1)+2 C)*(*(p+5) D)*(*(p+1)+2)19、以下正确的叙述是()A)C语言允许main函数带形参,且形参个数和形参名均可由用户指定。B)C语言允许main函数带形参,形参名只能是argc和argv。C)当main函数带有形参时,传给形参的值只能从命令行中得到。D)若有说明,main(int argc,char *argv),则形参argc的值必须大于1。20、main函数的正确说明形式是()A)main(int argc,char *argv)B)main(int abc,char *abv)C)main(
12、int argc,char argv)D)main(int c,char *v)21、以下程序能找出数组x中的最大值和该值所在的元素下标,数组元素值从键盘输入。int x10,*p1,*p2,k;10;k+) scanf(,x+k);for(p1=x,p2=x;p1-x*p2) p2=p1;MAX=%d,INDEX=%dn, *p2,);A)p1-x B)p1C)p2-x D)x-p222、若有说明:char *language=FORTRANBASICPASCALJAVA则表达式*language1*language3比较的是()A)字符F和字符P B)字符串BASIC和字符串JAVAC)字
13、符B和字符J D)字符串FORTRAN和字符串PASCAL23、若有说明:则language2的值是()A)一个字符 B)一个地址 C)一个字符串 D)一个不定值24、语句int(*ptr)();的含义是()A)ptr是指向一维数组的指针变量 B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值的指向int型数据的指针25、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是()A)(*p)max(a,b); B)*pmax(a,b); C)(*p)(a,b); D)*p(
14、a,b);26、已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是()A)p=max B)*p=max; C)p=max(a,b) D)*p=max(a,b)27、已有定义int(*p)();指针p可以()。A)代表函数的返回值 B)指向函数的入口地址C)表示函数的类型 D)表示函数返回值的类型28、若要对a进行+运算,则a应具有下面说明()A)int a32; B)char *a=12ab C)char (*a)3; D)int b10,*a=b;29、下面正确的程序段是()A)char str20;str); B)char *p;C)char str20;str
15、2); D)char str20,*p=str;,p2);30、下面程序段的运行结果是()char str=ABC,*p=str;,*(p+3);A)67 B)0 C)字符C的地址 D)字符31、下面程序段的运行结果是()char *p=abcdefgh p+=3;,strlen(strcpy(p,);A)8 B)12 C)4 D)732、下面说明不正确的是()A)char a10=china B)char 10,*p=a; p=C)char *a; a= D)char a10,*p; p=a=33、若有说明语句It is mine则以下不正确的叙述是()A)a+1表示的是字符t的地址B)p指
16、向另外的字符串时,字符串的长度不受限制C)p变量中存放的地址值可以改变D)a中只能存放10个字符34、若已定义char s10;则在下面表达式中不表示s1的地址是()A)s+1 B)s+ C)&s0+1 D)&s135、下面程序段的运行结果是()char s6; strcpy(s,%sA) B)abcd C)abcd D)编译出错36、若有说明:A)language2表示字符串pascalB)*language2的值是字母PC)language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针D)language是一个字符型指针数组,它包含5个元素,其初值分别是:37、
17、设char s10,*p=s;以下不正确的表达是()A)p=s+5; B)s=p+s; C)s2=p4; D)*p=s0;38、设char *s;A)s=computer B)*s= C)*s= D)*s=c39、选择i的正确结果()。int i;a045+045b*s+;i+);A)7 B)8 C)11 D)1240、如下程序的执行结果是()。ann35bi=%dn,i);A)i=5 B)i=6 C)i=7 D)i=841、如下程序的执行结果是()。) ) ) )不正确42、如下程序的执行结果是()。 )a43、如下执行的程序结果是()。static int a =1,2,3,4,5,6;i
18、nt *p;*(p+3)+=2;%d,%dn,*p,*(p+3);)1,3 )1,6 )3,6 )1,444、以下正确的说明语句是()A)int *b=1,3,5,7,9; B)int a2; int *num2=&a0,&a1;C)int a=1,2; int *num2=a0,a1;D)int a34,(*num)4; num1=&a13;45、若有以下定义,且04,则不正确的赋值语句是()int b46,*p,*q4;A)qi=bi; B)p=b; C)p=bi; D)qi=&b00;46、若有定义:int a=2,4,6,8,10,12,14,16,18,20,22,24,*q4,k;
19、则下面程序段的输出是()ak*3;,q30);A) 8 B)16 C) 20 D)结果不确定47、若有以下定义,则数值不为3的表达式是()int x10=0,1,2,3,4,5,6,7,8,9,*p1;A)x3 B)p1=x+3,*p1+ C)p1=x+2,*(p1+)D)p1=x+2,*+p148、下面程序的运行结果是()int x5=2,4,6,8,10,*p,*pp;p=x;pp=&%3dn,*pp);A)4 4 B)2 4 C)2 2 D)4 649、若有以下说明和语句:char *q;q=language+2;则语句printf(%on,*q);A)输出的是language2元素地址
20、 B)输出的是字符串PASCALC)输出的是language2元素的值,它是字符串PASCAL的首地址D)格式说明不正确,无法得到确定的输出50、下面程序段的运行结果是()char *format=%s,a=%d,b=%dn int a=1,b=10; a+=b;printf(format,a+=bA)for,ab B)format, C)a+=b,a=11,b=10 D)以下结果都不对三、编程题1、有3个学生,每人考5门课,求每个学生的平均分和每门课的平均分数2、输入一个字符串,内有数字和非数字字符,如:a123x456 1760?302ab567,将其中连续的数字作为一个整数依次存放到一数
21、组a中,如123存放到a0中,456存放到a1中。3、求定积分:计算0,1之间函数1+x2、0,2之间函数1+x+x2+x3、0,3.5之间函数x/(1+x2)的定积分。附录:答案一、 填空题1、2 2、f 3、654321 4、12 5、one:two:three 6、HELLO! 7、1 8、of 9、2 10、12 12 11、4 12 12、113、0 14、8 8 15、24 16、12 17、LBCP 18、xbcdBCD 23、Pascal,C language,Dbase,Cobol二、 选择题15 BCCCB 610 DBCCB 1115 BCBCB 1620 DADCD 2
22、125 BCBDC 2630 ABDCB 3135 ADDBA 3640 CBBBB 4145 DABBA 4650 CBBCC 1、main( )float stu_ave(float (*p)5); float cour_ave(float *pt);float score35=100,60,70,80,67,62,71,98,45,57,90,39,89,39,90;int I;for(I=0;II+) printf(“%f”,stu_ave(score+i);5; printf(“%f”,cour_ave(score0+i);float stu_ave(float (*p)5) int j; float sum; float sum=0,ave; for(j=0;jj+) sum=sum +*(*p+j); re
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2