C指针函数习题

合集下载

C语言指针-练习

C语言指针-练习

复习题(二)一、基础题1、设有:int k[]={2,4,6,8,10,12}, *p=k+2; 表达式*(p+2)*p[2] 的值:100 。

2、设有:int a[10], *p1, *p2; 则执行语句:p1=a; p2=&a[5]; 则p2-p1的值:5。

3、设有:int x[]={4,3,2,1},q,*p=&x[1];则执行语句:q=(*--p)++ ; 后;变量q的值为4。

4、设有:int *p, a=10, b=1; 则执行以下语句:p=&a; a=*p+b; 后;a的值为:11。

5、下列程序段的输出结果是2,1 。

int k=1, j=2, *p=&k, *q=p;p=&j;printf("%d, %d",*p, *q);6、设x为整型变量,p为指向整型的指针变量,则让p指向x变量的赋值表达式是P=&x。

7、设有变量定义:float d[]={1.0,2.0,3.0,4.0,5.0}, *p=d+3;请写出printf("\n %f %f", *p, d[0]); 的输出结果为:4.0和 1.0。

8、设有变量定义如下:char s[]="Hello!", *p=s; int i;执行完for(i=0; *(p+i); i++); 后,变量i的值是_6_;*(p+i)的值是‟\0‟_。

9、函数void f(char s[ ], char t[ ]){ int k=0;while (s[k]=t[k]) k++;}等价于void f(char *s, char *t)1、{ while (*s++=*t++); }二、选择题1、下面的程序段用来定义指针并赋值,请选出语法正确的程序段( C )。

A)int *p; scanf(“%d”,p); B)int *s,k; *s=100;C) int *s,k; D) int *s,kchar *p,*c; char *p,*c;s=&k; p=&c; s=&k; p=&c;*p=‟a‟; s=p; *s=1;2、程序段:int *p,a,b=1; p=&a; *p=10; a=*p+b; 执行后,a的值(B)。

c语言指针试题

c语言指针试题

c语言指针试题
以下是一些关于C语言指针的试题,供您参考:
1.什么是指针?指针在C语言中的作用是什么?
2.指针变量如何声明和初始化?
3.指针运算符有哪些?它们的作用是什么?
4.指针如何进行算术运算和关系运算?
5.什么是空指针?如何声明和使用空指针?
6.指针如何进行类型转换?有哪些类型转换需要注意?
7.什么是函数指针?如何声明和使用函数指针?
8.什么是数组指针?如何声明和使用数组指针?
9.指针如何用于动态内存分配?有哪些常见的动态内存分配函数?
10.指针在使用中需要注意哪些问题?如何避免常见的指针错误?。

C指针函数习题精编版

C指针函数习题精编版

C指针函数习题文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)C++指针函数习题一、选择题1.以下程序的运行结果是()。

sub(intx,inty,int*z){ *z=y-x;}voidmain(){ inta,b;sub(10,5,&a);sub(7,a,&b);cout<<a<<”,”<<b;}A)5,2B)-5,-2C)-5,-12D)5,-22.函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。

A)称为函数的直接递归调用B)称为函数的间接递归调用C)称为函数的循环调用D)C语言中不允许这样的递归调用3.变量的指针,其含义是指该变量的()。

A)地址B)值C)名D)一个标志4.已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。

A)k=*ptr1+*ptr2;B)ptr2=k;C)ptr1=ptr2;D)k=*ptr1*(*ptr2);5.(去掉)若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是A)*p=&a;scanf(“%lf”,p);B)*p=&a;scanf(“%f”,p);C)p=&a;scanf(“%lf”,*p);D)p=&a;scanf(“%lf”,p);6.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是()。

A)a,point,*&aB)&*a,&a,*pointC)*&point,*point,&aD)&a,&*point,point7.设char*s="\ta\103bc";则指针变量s指向的字符串所占的字节数是()。

c语言(函数,数组,指针)练习题

c语言(函数,数组,指针)练习题

C语言第2次练习题一.选择题1)一个C程序的执行是________.A.从程序的main( )函数开始执行。

B.从本程序的第一个函数开始执行。

C.从本程序第一条语句开始执行D.从#include 处开始执行3) 定义 int a, *p1; 若使p1指向a,在程序中应使用_______。

A.*p1=&a; B. p1=&a; C. p1=a; D. p1=*a;4) 下列为一维数组初始化时, 正确的是_______.A)int a[ ]={1,3,5,….15};B) int a[5]=1; C) int a[3]={5,6,8,3}; D) int a[5]={0};5).下列要将2,4,6,8存入数组a中,不正确的是______.B)int a[4]={2,4,6,8}; B) int a[ ]={2,4,6,8};C) int a[4]; a={2,4,6,8}; D) int a[4]; a[0]=2;a[1]=4,a[2]=6;a[3]=8;6).下列二维数组定义并初始化中, 正确的是A) int a[2][ ]={{3,4},{5,10,15}};B) int a[2][3]={2,3,4,5,6,7,8,9};C) int a[ ][3]={{0},{1,2},{3,4,5}};D) int a[ ][4]={(1,2,4,5),(2,3),(3,4,9),(5,6,8)};7). 若有说明: int a[5][5]; 则对数组元素的正确引用是______.A) a[3+2][3] B) a[0,3] C) a[4][1+2] D) a[ ][2]8).若有定义: char ch[ ]=”book120”; 则数组ch的存储长度是____;A) 7 B) 8 C)9 D)109) 设有定义: char s[20]; 向数组s中输入含有中间空格的字符串应使用的语句是______.A)scanf(“%s”,&s);B) scanf(“%s”,s);C)s=getchar(); D)gets(s);10).在数组: int a[][3]={{1},{3,2},{4,5,6},{0}}; 中, 数组元素a[2][1]的值是________.A)3 B) 4 C) 5 D) 211) 以下字符串赋值错误的是________。

C++指针函数习题

C++指针函数习题

C++指针函数习题一、选择题1.以下程序的运行结果是()。

sub(intx,inty,int*z){ *z=y-x;}voidmain(){ inta,b;sub(10,5,&a);sub(7,a,&b);2.)。

4.5.(去掉A)cdeB)字符'c'C)字符'c'的地址D)无确定的输出结果9.设有下面的程序段:则下列叙述正确的是()。

chars[]="china";char*p;p=s;A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)*p与s[0]相等D)s数组长度和p所指向的字符串长度相等10.若有定义inta[5],*p=a;则对a数组元素的正确引用是()。

A)*&a[5]B)a+2C)*(p+5)D)*(a+2)11.若已定义chars[10];则在下面表达式中不表示s[1]的地址的是()。

A)s+1B)s++C)&s[0]+1D)&s[1]12.下面程序的运行结果是()。

#include<iostream.h>#include<string.h>intmain(){ char*s1="AbDeG";char*s2="Abdeg";s1+=2;s2+=2;cout<<strcmp(s1,s2);}A)负数B)正数C)零D)不确定的值18A)p=max;B)*p=max;C)p=max(a,b);D)*p=max(a,b);19.下面程序段的运行结果是()。

chara[]="language",*p;p=a;while(*p!='u'){cout<<(*p-32);p++;}A)LANGUAGEB)languageC)LANGD)language20.关于语句int*ptr();以下说法正确的是()。

C语言指针精选习题和答案

C语言指针精选习题和答案

C语言指针精选习题和答案一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <stdio.h>void swap(int *pa,int *pb) {int temp;temp = *pa;*pa = *pb;*pb = temp;}void main(){int a,b,c,temp;scanf("%d%d%d",&a,&b,&c); if(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(a>c)swap(&a,&c);printf("%d,%d,%d",a,b,c); }二、C语言用指针方法输入3个字符串按由小到大顺序输出#include "stdio.h"#include "string.h"int main(int argc, char* argv[]){char *t;char *p1=NULL,*p2=NULL,*p3=NULL;char ch1[20]={0},ch2[20]={0},ch3[20]={0}; p1=ch1;p2=ch2;p3=ch3;printf("No1:");scanf("%s",p1);fflush(stdin);printf("No2:");scanf("%s",p2);fflush(stdin);printf("No3:");scanf("%s",p3);fflush(stdin);if(strcmp(p1,p2)>0){t=p1;p1=p2;p2=t;}if(strcmp(p1,p3)>0){t=p1;p1=p3;p3=t;}if(strcmp(p2,p3)>0){t=p2;p2=p3;p3=t;}printf("%s\n%s\n%s\n",p1,p2,p3);return 0;}9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include<stdio.h>void main(){int a=0,b=0,c=0,d=0,e=0,i=0; char *p,s[20];while((s[i]=getchar())!='\n')i++; p=s;while(*p!=10){if(*p>='A'&&*p<='Z') a++;else if(*p>='a'&&*p<='z') b++;else if(*p==' ')c++;else if(*p>='0'&&*p<='9') d++;else e++;p++;}printf("大写字母 %d 小写字母 %d\n",a,b); printf("空格 %d 数字 %d 非字符 %d\n",c,d,e); }9.5写一个函数,将3 3矩阵转置 #include "stdio.h"void Transpose(int (*matrix)[3]) {int temp;int i, j;for(i=1;i<3;i++)/*转置*/{for(j=0;j<i;j++){temp = *(*(matrix+j)+i);*(*(matrix+j)+i) = *(*(matrix+i)+j);*(*(matrix+i)+j) = temp;}}}void main(){int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; Transpose(a);for(int i = 0;i<3;i++){for(int j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n");}}}9.6用指向一维数组的指针做函数参数 #include<stdio.h>#include<string.h>int main(){void sort(char (*s)[6]);//一维数组的指针做函数参数int i;char str[10][6];char (*p)[6];//定义一维数组的指针做函数参数printf("please input string:/n");for(i=0;i<10;i++)scanf("%s",&str[i]);p=str;//将str一维数组指针,赋值给p;sort(p);printf("the output sequence :/n");for(i=0;i<10;i++)printf("%s/n",str[i]);return 0;}void sort(char (*s)[6])//s指向一维数组的指针做函数参数; {int i,j;char temp[6], *t;t=temp;for(i=0;i<9;i++)//i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,for(j=0;j<9-i;j++)//第一次比较需要9次就是i=0到i=8共九次;第二次需要比较8次;依次类推;if(strcmp(s[j],s[j+1])>0){strcpy(t,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],t);}}9.7编一程序,用指针数组在主函数中输入十个等长的字符串。

C语言指针习题 附答案

C语言指针习题      附答案

C语言指针习题附答案c语言指针习题--附答案一、选择题1.变量的指针,其含义就是指本变量的_________.a)值b)地址c)名d)一个标志2.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是_____.a)a,point,*&ab)&*a,&a,*pointc)*&point,*point,&ad)&a,&*point,point3.若有说明;int*p,m=5,n;以下正确的程序段的是________.a)p=&n;b)p=&n;scanf(\scanf(\c)scanf(\d)p=&n;*p=n;*p=m;4.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________.main(){int*p,*q,a,b;p=&a;printf(“inputa:”);scanf(“%d”,*p);……}a)*p则表示的就是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p 只能用来说明p是一个指针变量5.尚无变量定义和函数调用语句:inta=25;print_value(&a);下面函数的恰当输入结果就是________.voidprint_value(int*x){printf(“%d\\n”,++*x);}a)23b)24c)25d)266.若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是a)*p=&a;scanf(\,p);b)p=(long*)malloc(8);scanf(\,p);c)scanf(\,p=&a);d)scanf(\,&a);7.有以下程序#includemain(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(\}程序运行后的输出结果是a)1,2,1,2c)2,1,2,18.存有以下程序main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(\}继续执行后的输入结果就是a)19.有以下程序main(){inta,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf(\}程序运行后的输出结果是()a)410.在16十一位编译系统上,若存有定义inta[]={10,20,30},*p=&a;,当继续执行p++;后,以下观点错误的就是()a)p向低地址安远了一个字节c)p向低地址安远了两个字节b)p向高地址移了一个存储单元d)p与a+1等价b)1c)0d)运行时出错,无定值b)2c)3d)4b)1,2,2,1d)2,1,1,211.存有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()a)5b)6c)8d)912.若有以下定义,则对a数组元素的正确引用是_________.inta[5],*p=a;a)*&a[5]b)a+2c)*(p+5)d)*(a+2)13.若有以下定义,则p+5表示_______.inta[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设尚无定义:inta[10]={15,12,7,31,47,20,16,28,13,19},*p;以下语句中恰当的就是()a)for(p=a;ad)for(p=a;a15.存有以下程序段#includeintmain(){intx[]={10,20,30};int*px=x;printf(\printf(\px=x;printf(\printf(\px=x;printf(\printf(\px=x;printf(\printf(\return0;}程序运行后的输入结果就是()a)11,11,11,12,12,20,20,20b)20,10,11,10,11,10,11,10c)11,11,11,12,12,13,20,20d)20,10,11,20,11,12,20,2016.设有如下定义:intarr[]={6,7,8,9,10};int*ptr;ptr=arr;*(ptr+2)+=2;printf(\则程序段的输出结果为a)8,10b)6,8c)7,9d)6,1017.若有定义:inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______.*(a+5)的值是_________.18.若存有以下表明和语句,intc[4][5],(*p)[5];p=c;能够恰当提及c数组元素的就是______.a)p+1b)*(p+3)c)*(p+1)+3d)*(p[0]+2))19.若存有定义:inta[2][3],则对a数组的第i行j列元素地址的恰当提及为______.a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j20.若有以下定义:inta[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____.*(*(a+1)+0)的值是________.21.存有以下定义chara[10],*b=a;不能给数组a输入字符串的语句是()a)gets(a)b)gets(a[0])c)gets(&a[0]);d)gets(b);22.下面程序段的运行结果是_________.char*s=\s+=2;printf(\a)cdeb)字符'c'c)字符'c'的地址d)并无确认的输入结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()a)chars[10]=\c)chars[10];s=\24.设已有定义:char*st=\下列程序段中正确的是()a)chara[11],*p;strcpy(p=a+1,&st[4]);b)chara[11];strcpy(++a,st);c)chara[11];strcpy(a,st);d)chara[],*p;strcpy(p=&a[1],st+2);25.存有以下程序main(){chara[]=\char*p1,*p2;inti;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf(\}输出结果是()a)gmb)rgc)ord)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.a)c=*p1+*p2;b)p2=cc)p1=p2d)c=*p1*(*p2);27.以下正确的程序段是_________.a)charstr[20];b)char*p;scanf(\scanf(\c)charstr[20];d)charstr[20],*p=str;scanf(\scanf(\28.若有说明语句chara[]=\char*p=\则以下不正确的叙述是________.a)a+1则表示的就是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运转结果就是_______.#include#include。

(完整word版)C语言指针练习+答案+讲解

(完整word版)C语言指针练习+答案+讲解

第七章指针7.1 选择题1.若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D)。

A. p=q; B. *p=*q; C. a=*q; D. q=a;a是整型数,int *p,*q定义了指针,p,q是指向整型的指针.p取得a的地址,而q取得p的地址p,q是指针(也就是一个地址),而*p和*q是这个指针指向的整型数值(存放在这个地址的值).A)把q的地址赋给p,则p和q完全一样了,都指向一个数2B)把q中数据个pC)把q中数据给aD)a中数据是2,不能够给一个地址。

除非*q=a2.若定义:int a=511, *b=&a;,则printf("%d\n”, *b);的输出结果为:D A.无确定值 B. a的地址 C. 512 D. 511int a=511,*b=&a;a 是整形变量b 是整形指针变量,指向 aprintf("%d\n",*b);就是输出指针变量 b,所指变量的值输出结果5113.已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是(B)。

A. a=*p1+*p2; B. p1=a; C. p1=p2; D. a=*p1*(*p2);47、已知在程序中定义了如下的语句:int *P1,*P2;int k;p1=&k;p2=&k;则下列语句中不能正确执行是( B )A、k=*P1+*P2;B、p2=k;C、P1=P2;D、K=*P1 * (*P2);P1 P2是指针,K是整型变量,变量怎么可以赋值给指针呢?A其实是执行了K=K+K(P1和P2都指向K,所以*P1 *P2其实都是指K)C是赋值语句D其实执行了K=K*K4.变量的指针,其含义是指该变量的(B)。

A.值 B.地址 C.名 D.一个标志5.若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++指针函数习题一、选择题1.以下程序的运行结果是()。

sub(int x, int y, int *z) { *z=y-x; }void main(){ int a,b;sub(10,5,&a);sub(7,a,&b);cout<<a<<”,”<<b;}A) 5, 2 B) -5,-2 C) -5,-12 D) 5, -22. 函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则()。

A)称为函数的直接递归调用 B)称为函数的间接递归调用C)称为函数的循环调用 D)C语言中不允许这样的递归调用3.变量的指针,其含义是指该变量的()。

A)地址 B) 值 C)名 D)一个标志4.已有定义 int k=2; int * ptr1,* ptr2; 且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。

A)k=*ptr1 + *ptr2; B)ptr2=k; C)ptr1=ptr2; D)k=*ptr1*(*ptr2);5.(去掉)若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是A)*p=&a; scanf(“%lf”,p); B)*p=&a; scanf(“%f”,p);C) p=&a; scanf(“%lf”,*p); D)p=&a; scanf(“%lf”,p);6.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是()。

A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point7.设char *s="\ta\103bc";则指针变量s指向的字符串所占的字节数是()。

A)9 B)5 C)6 D)78.下面程序段的运行结果是()。

char *s="abcde"; s+=2; cout<<s;A)cde B)字符'c' C)字符'c'的地址 D)无确定的输出结果9.设有下面的程序段:则下列叙述正确的是()。

char s[]="china"; char * p; p=s;A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等C) *p与s[0]相等 D) s数组长度和p所指向的字符串长度相等10.若有定义 int a[5], * p=a; 则对a数组元素的正确引用是()。

A)*&a[5] B)a+2 C)*(p+5) D)*(a+2)11.若已定义char s[10]; 则在下面表达式中不表示s[1]的地址的是()。

A)s+1 B)s++ C)&s[0]+1 D)&s[1]12.下面程序的运行结果是()。

#include<>#include<>int main(){ char * s1="AbDeG";char * s2="Abdeg";s1+=2; s2+=2;cout<<strcmp(s1,s2);}A)负数 B) 正数 C)零 D)不确定的值13.若有定义: int *p[4]; 则标识符p()。

A)是一个指向整型变量的指针 B)是一个指针数组名C)是一个指针,它指向一个含有四个整型元素的一维数组 D)说明不合法14.若有int a[10] , *p=a; 则p+5表示()。

A)元素a[5]的地址 B)元素a[5]的值 C)元素a[6]的地址 D)元素a[6]的值15.设有以下定义:则正确的叙述是()。

char *cc[2]={"1234","5678"};A)cc数组的两个元素中各自存放了字符串"1234"和"5678"的首地址B)cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址C)cc是指针变量,它指向含有两个数组元素的字符型一维数组D)cc数组元素的值分别是"1234"和"5678"16.若有以下定义,则能够正确表示数组元素x[1][2]的表达式是()。

int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=&x[0][0];A)p[1][2] B)(*p+1)+2 C)p+5 D)p[5]17.语句int (*ptr)( );的含义是()。

A)ptr是指向一维数组的指针变量B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值是指向int型数据的指针18.已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是()。

A)p=max; B)*p=max; C)p=max(a,b); D)*p=max(a,b);19.下面程序段的运行结果是()。

char a[]="language", * p ; p=a;while(*p!='u') { cout<<( *p-32 ); p++; }A)LANGUAGE B)language C)LANG D)language20.关于语句 int *ptr( ); 以下说法正确的是()。

A)ptr是一个指针变量B) *ptr是一个函数名C)这个语句是定义函数的语句D) ptr是一个函数名,该函数的返回值是指向int型数据的指针21. 以下叙述中正确的是()。

A)局部变量说明为static存储类,其生存期将得到延长B)全局变量说明为static存储类,其作用域将被扩大C)任何存储类的变量在未赋初值时,其值都是不确定的D)形参可以使用的存储类说明符与局部变量完全相同22. 有以下程序,程序运行后的输出结果是()。

A)64, 28 B)4, 4 C)4, 3 D)64, 64#include<># define f(x) (x*x)int main( ){ int i1, i2;i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;cout<<i1<”,”<<i2; }23.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。

A) 地址传递 B) 单向值传递C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定24.有以下程序 ,#include<>int fun(int n){ if(n==1) return 1;else return (n+fun(n-1)); }int main( ){ int x;cin>>x;x=fun(x);cout<<x;}程序执行时,给变量x输入10,程序的输出结果是 ( )A)55 B) 54 C) 65 D) 4525. 已有定义:char a[]="xyz", b[]={'x','y','z'};,以下叙述中正确的是()。

A)数组a和b的长度相同B)a数组长度小于b数组长度C)a数组长度大于b数组长度D)上述说法都不对26. 以下程序的输出结果是()。

#include<>#include<>main(){ char st[20]= “hello\0\t\\”;cout<<strlen(st)<<”,”<<sizeof(st); }A) 9 9 B) 5 20 C) 13 20 D) 20 2027.当说明一个结构体变量时系统分配给它的内存是()。

A)各成员所需内存量的总和 B)结构中第一个成员所需内存量C)成员中占内存量最大者所需内存 D)结构中最后一个成员所需内存量语言结构体类型变量在程序执行期间()。

A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在内存中 D)没有成员驻留在内存中29.以下程序的结果是()。

#include<>struct WWW { int X; int Y; };void main( ){ struct WWW A[3]={{7,8},{9,10},{12,13}};int a;a=A[1].X+A[2].Y;cout<<a; }A) 17 B) 22 C) 16 D) 2130.以下程序的输出结果是()。

struc STU{ char name[10]; int num;};void f1(struct STU c){ struct STU b={“LiSiGuo”,2042}; c=b;}void f2(struct STU *c){ struct STU b={“SunDan”,2044}; *c=b;}main(){ struct STU a={“YangSan”,2041},b={“WangYin”,2043};f1(a); f2(&b);cout<<<<” ,”<< ;}执行后的输出结果是A)2041 2044 B)2041 2043 C)2042 2044 D)2042 2043二、填空题1.若想输出b数组的十个元素,下面存在错误的程序行是。

(每个程序行前面的数字代表行号)1 int main()2 { int b[10]={1,3,5,7,9,2,4,6,8,10},k;3 for(k=0;k<10;k++,b++)4 cout<<*b;5 }2.若有定义语句int x[10] , *p=x ; 在程序中引用数据元素x[i]的四种形是:,,和x[i](假设i已正确说明并赋值)。

3. C++语言中,数组名是一个不可改变的,不能对它进行赋值运算;数组在内存中占用一段连续的存储空间,它的首地址由表示。

4.在C++语言中,形参的缺省存储类是。

三、读程序写结果。

1. #include<>int i = 1;test(){ int i;cout<<i;i = 2;return(i);}int main(){ cout<<i;i = test();cout<<i/3;}2.下面程序的运行结果是。

相关文档
最新文档