C++指针函数习题
C语言指针习题(共21张)

for(k=0;k<=7;k++) if(*(p1+k)= =*(p2+k))
printf(“%c”,*(p1+k));} A)gae B)ga C)language D)有语法错误
第17页0.,7共21页。
C程序设计
1.若有说明语句 : int a[10],*p=a; 则对数组元素的正确引用 是: A)a[10] B)p[a] C)*(p+2) D)p+2
B.*(*(a+i)) D.*(&a[i])
答案:B 分析:指针就变量p取得数组a的首地址,由指针与数组关系知,p[i]表示数组元素第i+1元素值, p[i]=a[i]正确,故A不能选。*(a+i)表示一维数组a第i+1元素值,*(*(a+i)表示对第i+1元 素值再取值是错误操作,所以选B。a[p-a]=a[0]正确,故不能选择C。*(&a[i])也正确, 也不能选D。
printf(“sum=%d”,s);}
第19页0.,9共21页。
C程序设计
3.下面程序的运行(yùnxíng)结果是: main( ) {int x[ ]={0,1,2,3,4,5,6,7,8,9}; int s,i,*p; s=0;p=&x[0];
for(i=1;i<10;i+=2) s+=*(p+i); printf(“sum=%d”,s);}
答案:25(1+3+5+7+9=25)
第1100页.1,0共21页。
C程序设计
4.下面程序的功能(gōngnéng)是删除字符串中的数字字符并输出,填空完成 序。 #include”stdio.h” void deln(char *s) {int i,j; for(i=0,j=0;s[i]!=‘\0’;i++) if(s[i]<‘0’ (1) s[i]>’9’) {s[j]=s[i];j++;}
《C++指针》习题参考答案

《C++指针》习题参考答案《C++指针》习题学号姓名一、选择题1、有定义如下:int a[5], *p; 则下列描述错误的是 BA.表达式p=p+1是合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的2、函数定义为Fun(int &i),变量定义n=100,则下面调用该函数正确的是 CA.Fun(20) B.Fun(20+n) C.Fun(n) D.Fun(&n)3、若有说明int I,j=2,*p=&i则能完成i=j赋值功能的语句是 BA.i=*p; B.*p=*&j C.i=&j D.i=**p;4、设已有定义char *st = "how are you";下列程序中正确的是 AA.char a[11],*p;strcpy(p=a+1,&st[4]);B.char a[11];strcpy(++a,st);C. char a[11];strcpy(a,st);D. char a[],*p;strcpy(p=a[1],st+2);5、设有数组int array[3][4],下列引用数组元素的方法中错误的是 DA.array[i][j] B.*(*(array+i)+j)C. *(array[i]+j)D. *(array+i*4+j)6、有定义int s[4][5],(*ps)[5];ps=s;则对数组s中元素引用的正确的是 CA.ps+1 B.*(ps+3) C. ps[0][2] D. *(ps+1)+37、设有说明int b[4][4],以下不能等价表示元素b[3][3]的是: BA.*&b[3][3] B.(*(*(b+3))+3) C.*(b[3]+3) D.*(*(b+3)+3)8、若有说明"char *s[]={"234","5678","9012","3456","7890"};",则表达式*s[1]> *s[3]比较的是 BA."1234"和"9012" B.'5'和'3' C.'l'和'9' D."5678"和"3456"9、设语句"char *s[]={"Student","Teacher","Father","Mother"},*ps=s[2];", 执行语句"cout<<*s[1]<<','<<ps<<','<<*ps<<'\n';",则输出结果是 a="" a.t,father,f="" b.teacher,f,father<="" p=""> C.Teacher,Father,Father D.语法错无输出10、设有以下说明语句:char sl[20]="hello",s2[20]="china";const char *ptr=s1;以下语句中不符合C++语法规则的语句是 DA.strcpy(s2,ptr); B.ptr=s2; C.ptr=ptr+4; D.*ptr=*s2; 11、设s和t分别为指向两个长度相同的字符数组的指针,则循环语句while( C );可以正确实现字符串t到s的完整复制功能。
C语言指针习题和答案精选文档

C语言指针习题和答案精选文档TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <>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 ""#include ""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;}编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include<>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);}写一个函数,将3 3矩阵转置#include ""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");}}}用指向一维数组的指针做函数参数#include<>#include<>int main(){void sort(char (*s)[6]);3”n",*(month_name+n));elseprintf("It is wrong.\n");}运行结果:① Input month: 2↙It is February.② Input month: 8↙It is August.③ Input month: 13↙It is wrong.9.11c语言:将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。
C指针函数习题

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指向的字符串所占的字节数是()。
C语言指针习题__附答案

一、选择题1.变量的指针,其含义是指该变量的____b____.a)值b)地址c)名d)一个标志2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是___d__.a)a,point,*&a b)&*a,&a,*pointc)*&point,*point,&a d)&a,&*point ,point3.若有说明;int *p,m=5,n;以下正确的程序段的是___d__.a)p=&n; b)p=&n;scanf("%d",&p); scanf("%d",*p);c)scanf("%d",&n); d)p=&n;*p=n; *p=m;4. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是_b__.main(){int *p,*q,a,b;p=&a;printf(“input a:”);scanf(“%d”,*p);……}a)*p表示的是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p只能用来说明p是一个指针变量5. 已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是__d__.void print_value(int *x){ printf(“%d\n”,++*x);}a)23 b)24 c)25 d)266.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是aA) *p=&a;scanf("%ld",p);B) p=(long *)malloc(8);scanf("%ld",p);C) scanf("%ld",p=&a);D) scanf("%ld",&a);7.有以下程序#include<stdio.h>main(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是bA)1,2,1,2 B)1,2,2,1C)2,1,2,1 D)2,1,1,28.有以下程序main(){ int a=1, b=3, c=5;int *p1=&a, *p2=&b, *p=&c;*p =*p1*(*p2);printf("%d\n",c);}执行后的输出结果是cA)1 B)2 C)3 D)49. 有以下程序main(){ int a,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}程序运行后的输出结果是(d)A)4 B)1 C)0 D)运行时出错,无定值10. 在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是(a)A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价11.有以下程序段int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是(d)A)5 B)6 C)8 D)912.若有以下定义,则对a数组元素的正确引用是___d______.int a[5],*p=a;a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)13.若有以下定义,则p+5表示___a____.int a[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设已有定义: int a[10]={15,12,7,31,47,20,16,28,13,19},*p; 下列语句中正确的是(b)A) for(p=a;a<(p+10);a++);B) for(p=a;p<(a+10);p++);C) for(p=a,a=a+10;p<a;p++);D) for(p=a;a<p+10; ++a);15.有以下程序段#include <stdio.h>int main(){ int x[] = {10, 20, 30};int *px = x;printf("%d,", ++*px); printf("%d,", *px);px = x;printf("%d,", (*px)++); printf("%d,", *px);px = x;printf("%d,", *px++); printf("%d,", *px);px = x;printf("%d,", *++px); printf("%d\n", *px);return 0;}程序运行后的输出结果是( a)A)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,2016.设有如下定义:int arr[]={6,7,8,9,10};int *ptr;ptr=arr;*(ptr+2)+=2;printf ("%d,%d\n",*ptr,*(ptr+2));则程序段的输出结果为 dA)8,10 B)6,8 C)7,9 D)6,1017.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是__4____. *(a+5)的值是_12________.18.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是___d___.A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p[0]+2))19.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为___a___.a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j20.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是__8__. *(*(a+1)+0)的值是____8____.21.有以下定义char a[10],*b=a;不能给数组a输入字符串的语句是(b)A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);22.下面程序段的运行结果是____c_____.char *s="abcde";s+=2;printf("%d",s);a)cde b)字符'c' c)字符'c'的地址d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(c)A) char s[10]="abcdefg"; B) char t[]="abcdefg",*s=t;C) char s[10];s="abcdefg"; D) char s[10];strcpy(s,"abcdefg");24.设已有定义: char *st="how are you"; 下列程序段中正确的是(c)A) char a[11], *p; strcpy(p=a+1,&st[4]);B) char a[11]; strcpy(++a, st);C) char a[11]; strcpy(a, st);D) char a[], *p; strcpy(p=&a[1],st+2);25.有以下程序main(){char a[]="programming",b[]="language";char *p1,*p2;int i;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}输出结果是(d)A)gm B)rg C)or D)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是____b____.a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);27.以下正确的程序段是_____c____.a)char str[20]; b)char *p;scanf("%s",&str); scanf("%s",p);c)char str[20]; d)char str[20],*p=str;scanf("%s",&str[2]); scanf("%s",p[2]);28.若有说明语句char a[]="It is mine";char *p="It is mine";则以下不正确的叙述是___d_____.a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运行结果是___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)不确定的值30.有以下程序void f(int *x,int *y){int t;t=*x;*x=*y;*y=t;}main(){int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(*p!=*q){f(p,q);p++;q--;}for(i=0;i<8;i++) printf("%d,",a[i]);}程序运行后的输出结果是__d____。
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#include <stdio.h>int add(int a, int b) {return a + b;}int main() {int (*func)(int, int);int a = 10, b = 20;func = add;int result = func(a, b);printf("%d + %d = %d\n", a, b, result);return 0;}```在这个例子中,我们定义了一个函数指针`func`,它指向了一个名为`add`的函数。
通过将函数指针赋值为`add`,我们可以使用函数指针调用`add`函数进行加法运算。
练习二:使用函数指针作为回调函数```c#include <stdio.h>typedef int (*CallbackFunc)(int);int square(int x) {return x * x;}void applyCallback(CallbackFunc callback, int x) {int result = callback(x);printf("Result: %d\n", result);}int main() {CallbackFunc func = square;int num = 5;applyCallback(func, num);return 0;}```在这个例子中,我们定义了一个函数指针类型`CallbackFunc`,它指向一个接受一个整数参数并返回一个整数结果的函数。
我们实现了一个`square`函数,它返回传入参数的平方。
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语言指针精选习题和答案一、用指针方法编写一个程序,输入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语言函数指针题型1. 编写一个函数指针,用于指向一个返回值为整型,且接受两个整型参数的函数。
```cint add(int a, int b) {return a + b;}int main() {int (*ptr)(int, int); // 函数指针声明ptr = add; // 函数指针指向add函数int result = ptr(2, 3); // 调用add函数printf("Result: %d\n", result); // 输出结果return 0;}```2. 编写一个函数指针数组,数组包含3个指针,分别指向3个接受整型参数并返回值为整型的函数,然后通过循环调用这3个函数。
```cint add(int a, int b) {return a + b;}int subtract(int a, int b) {return a - b;}int multiply(int a, int b) {return a * b;}int main() {int (*ptr[3])(int, int); // 函数指针数组声明ptr[0] = add; // 函数指针指向add函数ptr[1] = subtract; // 函数指针指向subtract函数ptr[2] = multiply; // 函数指针指向multiply函数int i;for (i = 0; i < 3; i++) {int result = ptr[i](2, 3); // 调用相应的函数printf("Result: %d\n", result); // 输出结果}return 0;}```3. 声明一个函数指针,它指向一个接受函数指针作为参数并返回一个函数指针的函数。
```cint (*process(int (*func)(int, int)))(int, int) {return func;}int add(int a, int b) {return a + b;}int main() {int (*ptr)(int, int); // 函数指针声明ptr = process(add); // 将add函数作为参数传递给process函数,并将返回的函数指针赋值给ptrint result = ptr(2, 3); // 调用add函数printf("Result: %d\n", result); // 输出结果return 0;}```。
(完整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)。
c语言数组指针题库

以下是一些关于C语言数组指针的题目:题目:以下程序中,函数f 的功能是交换两个整数的值。
请在f 函数中填入适当的语句,使程序能够实现该功能。
c#include <stdio.h>void f(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}int main() {int x = 5, y = 10;printf("Before swap: x = %d, y = %d\n", x, y);f(&x, &y);printf("After swap: x = %d, y = %d\n", x, y);return 0;}答案:在f 函数中,使用指针*a 和*b 分别访问整数变量a 和b 的值,然后交换它们的值。
具体实现如下:cvoid f(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}题目:以下程序中,函数g 的功能是交换两个整数的值。
请在g 函数中填入适当的语句,使程序能够实现该功能。
c#include <stdio.h>void g(int a, int b) {int temp = a;a = b;b = temp;}int main() {int x = 5, y = 10;printf("Before swap: x = %d, y = %d\n", x, y);g(x, y);printf("After swap: x = %d, y = %d\n", x, y);return 0;}答案:在g 函数中,由于参数传递是按值传递的,因此无法直接交换两个整数的值。
为了实现交换功能,需要使用指针来传递变量的地址。
具体实现如下:cvoid g(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}。
C语言指针练习题

C语言指针练习题指针练习题1 填空题【1】下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
int add( int x, int y, ){ =x+y;}【2】若有定义: char ch;(1) 使指针p 可以指向变量ch的定义语句是。
(2) 使指针p指向变量ch的赋值语句是。
(3) 通过指针p给变量ch读入字符的scanf函数调用语句是。
(4) 通过指针p 给变量ch赋字符A的语句是。
(5) 通过指针p输出ch中字符的语句是。
(6) 在16位微机上,指针变量p在内存中所占字节数是,变量ch 在内在所占字节数是。
2 选择题【3】若有说明:int i,j=7,*p=&i则与i=j;等价的语句是()。
A.i=*p;B.*p=*&jC.i=&jD.i=**p;【4】若有定义:int x,*pb;则正确的赋值表达式是()。
A.pb=&xB.pb=xC. *pb=&xD.*pb=*x【5】对于类型相同的指针变量,不能进行的运算是()。
A.< B. = C. + D. –【6】以下程序的输出结果是()。
A.23 B. 24 C. 25 D. 26Void fun ( int *x){ printf(%d\n”,++*x); }main( ){ int a=25;fun (&a);}【7】以下程序的输出结果是()。
A.6 B. 7 C. 8 D. 9main(){int k=2,m=4,n=6;int *pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf("%d\n",n);}【8】以下程序的输出结果是()。
A.100 B. 50 C. 101 D.200main(){int *v,b;v=&bb=100;*v+=b;printf("%d\n",b);}【9】以下程序的输出结果是()。
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(“输入:”);scanf(“%d”,*p);…}a)*p表示的是指针变量p的地址b) *P代表变量a的值,而不是变量a.C的地址)*P代表指针变量P的值d)*p只能用来说明p是一个指针变量5.现有变量定义和函数调用语句:inta=25;打印值(&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=(长*)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,2b)1,2,2,1c)2,1,2,1d)2,1,1,28。
c语言指针习题

C) p = &data.a; D) *p = data.a; 25. 已知 enum week {sun,mon,tue,wed,thu,fri,sat}day;则正确的赋值语句是 。 A) sun=0; B) san=day; C) sun=mon; D) day=sun; 26. 已知 enum color {red,yellow=2,blue,white,black}ren;执行下述语句的输出结果是 printf("%d",ren=white); A) 0 B) 1 C) 3 D) 4 。 27. 已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出是 man=0; switch(man) { case 0: printf("People\n"); case 1: printf("Man\n"); case 2: printf("Woman\n"); default: printf("Error\n"); } A) People B) Man C) Woman D)Error 。 28. 下述关于枚举类型名的定义中,正确的是 A) enem a={ one,two,three }; B) enem a { one=9,two=-1,three }; C) enem a={"one","two","three"}; D) enem a {"one","two","three"}; 29. C语言中标准输入文件 stdin 是指 。 A) 键盘 B) 显示器 C) 鼠标 D) 硬盘 。 30. 要打开一个已存在的非空文件"file"用于修改,选择正确的语句 A) fp=fopen("file", "r"); B) fp=fopen("file", "a+"); C) fp=fopen("file", "w"); D) fp=fopen('file", "r+"); 。 31. 当顺利执行了文件关闭操作时,fclose 函数的返回值是 A) -1 B) TRUE C) 0 D) 1 。 32. fscanf 函数的正确调用形式是 A) fscanf (文件指针, 格式字符串, 输出列表); B) fscanf (格式字符串, 输出列表, 文件指针); C) fscanf (格式字符串, 文件指针, 输出列表); D) fscanf (文件指针, 格式字符串, 输入列表); 。 33. 使用 fgetc 函数,则打开文件的方式必须是 A) 只写 B) 追加 C) 读或读/写 D) 参考答案 B 和 C 都正确 34. 已知宏定义 #define N 3 #define Y(n) ((N+1)*n) 执行语句 z=2*(N+Y(5+1));后,变量 z 的值是 。 A) 42 B) 48 C) 52 D) 出错 35. 已知宏定义 #define SQ(x) x*x,执行语句 printf("%d",10/SQ(3));后的输出结果是 A) 1 B) 3 C) 9 D) 10 36. 下 面 程 序 的 输 出 结 果 是 。 vo id main() { int a[]={1,2,3,4,5,6} ; int *p ; p=a ; pr int f("%d ",*p) ; pr int f("%d ",*(++p)) ; pr int f("%d ",*++p) ; pr int f("%d ",*(p--)) ; p+=3 ;
c语言指针习题及答案

c语言指针习题及答案C语言指针习题及答案C语言作为一门广泛应用于软件开发和系统编程的编程语言,指针是其重要的特性之一。
掌握指针的使用对于理解和编写高效的C程序至关重要。
本文将介绍一些常见的C语言指针习题,并提供相应的答案,帮助读者更好地理解和掌握指针的概念和用法。
1. 习题一:交换两个变量的值请编写一个函数,接受两个整型指针作为参数,实现交换两个变量的值。
例如,如果输入a=10,b=20,函数执行后,a=20,b=10。
答案:```cvoid swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}```2. 习题二:查找数组中的最大值和最小值请编写一个函数,接受一个整型数组和数组长度作为参数,返回数组中的最大值和最小值。
例如,对于数组[5, 2, 9, 1, 7],函数应该返回最大值9和最小值1。
答案:```cvoid findMinMax(int *arr, int length, int *max, int *min) {*max = *min = arr[0];for (int i = 1; i < length; i++) {if (arr[i] > *max) {*max = arr[i];}if (arr[i] < *min) {*min = arr[i];}}}```3. 习题三:计算字符串长度请编写一个函数,接受一个字符串作为参数,返回字符串的长度。
例如,对于字符串"Hello, World!",函数应该返回12。
答案:```cint stringLength(char *str) {int length = 0;while (*str != '\0') {length++;str++;}return length;}```4. 习题四:复制字符串请编写一个函数,接受两个字符串指针作为参数,将第一个字符串复制到第二个字符串中。
C习题指针部分

指针一、选择题1.变量的指针,其含义是指该变量的____________。
A.值B.地址C.名D.一个标志2.已知int *p,a;则语句“p=&a;”中的运算符“&”的含义是____________。
A. 逻辑与运算B.位与运算C.取指针内容D.取地址变量3.对于类型相同的指针变量,不能进行()运算。
A.+B.—C. =D.==4.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是____________。
A.a,point,*&aB.&*a,&a,*pointC.*&point,*point,&aD.&a,&*point ,point5.设指针x指向的整型变量值为28,则printf(“%d\n”,++*x);的输出是____________。
A.27B.28C. 29D.306.若有说明:int *p,m=5,n;以下正确的程序段是____________。
A.p=&n; scanf(“%d”,&p);B.p=&n; *p=m;C.scanf(“%d”,&n); *p=n;D.p=&n; scan(“%d”,*p);7.若有以下定义和语句:则下列说法正确的是____________。
double r==99,,*p=&r*p=r;A.以上两处的*p含义相同,都说明给指针变量p赋值B.在double r==99,*p=&r,把r的地址赋给了p所指的存储单元C.语句“*p=r”,把变量r的值赋给指针变量pD.语句“*p=r”,取变量r的值放回r中8.执行下面程序段后,变量a的值为____________。
int *p,a,b=1;p=&a;*p=l0;a=*p+b;A.12B.11C.10D.编译错误9.若有说明:int i, j=7,*p=&i; 则i与j;等价的语句是____________。
C指针练习题带答案

C指针练习题带答案1、设有下列定义char s[ ]={“12345”},*p=s,则下列表达式中不正确的是()。
A、p+1B、*(s+2)C、P=“abcd”D、*S=”ABC”2、设有下列定义static int x,*p=&x,*q;q=p;scanf(“%d,%d”,p,q);若输入“3,4”,则x的值为()A、3 B、4 C、0 D、无法确定3、以下程序的运行结果是:A、6 B、6789 C、‘6’ D、789includemain(){char b[10]={'1','2','3','4','5','6','7','8','9','\0'},*p=b;int k;k=8;p=b+k;printf("%s\n",p-3);}4、有以下程序的输出结果是()main(){int v[]={1,3,5,7,2,4,6,8};int I,*p;p=v;for(i=0;i<8;i++) if(*(p+i)==i+1) printf((“%d”,*(p+i));A、1B、18C、35D、165、若有语句int* p,a=4;p=&a下面均代表地址的一组选项是A.a,p,*&aB.&*a,&a,*pC.*&p,*p,&aD.&a,&*p,p6.若有说明int* p,m=5,n;以下正确的程序段是A.p=&nscanf("%d",&p);B.p=&n scanf("%d",*p);C.scanf("%d",&n); *p=n;D.p=&n *p=m;7.下列程序的运行结果是:swap(int *pt1,int *pt2){int p;p=*pt1;*pt1=*pt2;*pt2=p;}main(){int a=5,b=7,*p1,*p2;p1=&ap2=&bswap(p1,p2);printf("*p1=%d,*p2=%d\n",*p1,*p2);printf("a=%d,b=%d\n",a,b);}A、*p1=7,*p2=5B、*p1=7,*p2=5C、*p1=7,*p2=7D、*p1=5,*p2=5 a=5,b=7 a=7,b=5 a=5,b=5 a=5,b=7 (7)下列程序的运行结果是:main(){void swap1();void swap2();int a=3,b=4;swap1(a,b);printf(“%d,%d\n”,a,b);a=3,b=4;swap2(&a,&b);printf(“%d,%d”,a,b);}void swap1(x,y)int x,y;{int t;t=x;x=y;y=t;}void swap2(x,y)int *x,*y;{int t;t=*x;*x=*y;*y=t;}A、3,4B、4,3C、3 4D、4 34,3 3,4 4 3 3 48.若有定义int a[]={2,4,5,8,10,12},*p=a;则*(p+1)的值是()*(a+5)的值是()*p+1的值是()。
C语言指针习题及答案

C语言指针习题及答案1.变量的指针,其含义是指该变量的地址。
2.已有定义int k=2.int *ptr1.*ptr2.且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是ptr2=k。
3.若有说明:int *p。
m=5.n。
以下程序段正确的是p=*p=m。
4.已有变量定义和函数调用语句:int a=25.print_value(&a)。
下面函数的输出结果是26.void print_value(int *x){ printf("%d\n"。
++*x)。
}5.若有说明:int *p1.*p2.m=5.n。
以下均是正确赋值语句的选项是p1= p2=p1.6.若有语句:int *p。
a=4.和p=&a;下面均代表地址的一组选项是&*p。
&a。
p。
7.下面判断正确的是char *s="china"。
等价于char *s。
s="china";8.下面程序段中,for循环的执行次数是6.char*s="\ta\018bc"。
for (。
*s!='\0'。
s++) printf("*");9.下面能正确进行字符串赋值操作的是charstr[10]="china"。
1.strcmp1(char *s,char *t)改写为:int strcmp1(char *s。
char *t) { while (*s == *t) {if (*s == '\0') {return 0;s++;t++;return (*s - *t);2.strcmp2(char *s,char *t)改写为:int strcmp2(char *s。
char *t) {while (*s++ = *t++) {if (!*s) {return 0;return (*s - *t);3.strcmp3(char *s,char *t)改写为:int strcmp3(char *s。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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<iostream.h>#include<string.h>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<iostream.h># 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<iostream.h>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<iostream.h>#include<string.h>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)结构中最后一个成员所需存量28.C语言结构体类型变量在程序执行期间()。
A)所有成员一直驻留在存中B)只有一个成员驻留在存中C)部分成员驻留在存中D)没有成员驻留在存中29.以下程序的结果是()。
#include<iostream.h>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.num<<”,”<< b.num ; }执行后的输出结果是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<iostream.h>int i = 1;test(){ int i;cout<<i;i = 2;return(i);}int main(){ cout<<i;i = test();cout<<i/3;}2.下面程序的运行结果是。