《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语言指针的习题答案

指针练习题1.有以下程序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));}输出结果是A)gm B)rg C)or D)ga2.设有说明int(*ptr)[m];其中的标识符ptr是A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量3.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是A) p+1 B) a+1 C) a++ D) ++p4.若有语句int *point ,a=4;和point =&a;下面均代表地址的一组选项是A. a,point,*&aB. &*a,&a,*pointC. &point,*point,&aD. &a,&*point,point5.下面程序段的运行结果是char a[]=”language”,*p;p=a;while(*p!=’u’) {printf(“%c”, *p-32);p++;}A. LANGUAGEB. LANGuageNGngUAGE6.以下程序的运算结果是*p=1,m=3,n=5 。

#include<stdio.h>void main(){int a[5]={1,2,3,-4,5};int m,n,*p;p=&a[0];m=*(p+2);n=*(p+4);printf("*p=%d,m=%d,n=%d",*p,m,n);}7.写一通用函数slength,求出一个字符串的长度,并用main函数调用slength。

谭浩强C指针课后答案21题全

谭浩强C指针课后答案21题全
min=*p;
max=*p;
for(i=1;i<10;i++)
{
if(*(p+i)<min)
min=*(p+i),lcmin=i;
if(*(p+i)>max)
max=*(p+i),lcmax=i;
}
m=*p;
*p=*(p+lcmin);
*(p+lcmin)=m;
{
scanf("%d",&number);
*(p+i)=number;
}
printf("\n");printf("\n");printf("\n");
return 0;
}
int process(int *p)
{
int m,i=0,lcmin=0,lcmax=0,min,max;
void output(int a[]);
void main()
{
int a[10],i=0;
int *p;
p=a;
input(p);
printf(" 原始数组为:\n");
output(a);
printf("\n");printf("\n");printf("\n");printf("\n");
}
/* for(i=lenth-m;i<=lenth-1;i++)
{
for(num=0;num<=lenth-m,i>0;num++)

c 指针练习题

c  指针练习题

c 指针练习题C指针练习题C语言中的指针是一种强大而又复杂的概念。

它允许我们直接访问内存中的数据,并对其进行操作。

然而,由于指针的灵活性和复杂性,很多初学者在使用指针时会遇到困惑和错误。

为了帮助大家更好地理解和应用指针,下面将给出一些C指针的练习题。

1. 交换两个变量的值这是一个经典的C指针练习题。

请编写一个函数,接受两个整数指针作为参数,并交换这两个指针所指向的变量的值。

例如,如果输入为a=3,b=5,调用函数后,a=5,b=3。

2. 求字符串的长度请编写一个函数,接受一个字符串指针作为参数,并返回该字符串的长度。

注意,字符串的长度是指字符串中字符的个数,不包括字符串结尾的空字符'\0'。

3. 查找数组中的最大值请编写一个函数,接受一个整型数组指针和数组的长度作为参数,并返回数组中的最大值。

提示:可以使用指针来遍历数组,并使用一个变量来保存当前的最大值。

4. 字符串拷贝请编写一个函数,接受两个字符指针作为参数,并将第一个字符串拷贝到第二个字符串中。

注意,第二个字符串必须具有足够的空间来存储第一个字符串的内容。

5. 动态分配内存请编写一个函数,接受一个整数作为参数,并动态分配一个大小为该整数的整型数组。

然后,将数组的每个元素初始化为其下标的平方,并返回指向该数组的指针。

注意,使用完数组后,必须释放动态分配的内存。

6. 字符串反转请编写一个函数,接受一个字符串指针作为参数,并将该字符串反转。

例如,如果输入为"hello",则函数应该将其改为"olleh"。

7. 指针数组排序请编写一个函数,接受一个字符串指针数组和数组的长度作为参数,并按照字母顺序对字符串进行排序。

提示:可以使用字符串比较函数strcmp来比较两个字符串的大小,并使用指针来交换字符串的位置。

8. 指向函数的指针请编写一个函数,接受一个整数和一个指向函数的指针作为参数,并使用该函数对整数进行处理。

c语言指针问题及答案

c语言指针问题及答案
int tmp = *p;*p = *q;*q = tmp;
}
static void foo2(int *p, int *q){
int *tmp = p;p = q;q = tmp;
}
static void test5()
{
int a = 3;int b = 5;
void (*p[2])(int*, int*);
void(*p[2])(int *, int);
定义了一个函数指针的数组p, p有两个指针元素.元素是函数的指针,函数指针指向的函数是一个带2个参数,不返回任何类型值的函数,所带的两个参数分别是指向整型的指针,和整型
p[0] = f1; p[1] = f2 contain address of function .function name without parenthesis represent address of function Value and address of variable is passed to function only argument that is effected is a (address is passed). Because of call by value f1, f2 can not effect b
int (*p)[3] = a;
printf("%d %d\n", (*p)[1], (*p)[2]);
//*(*p + 1) //2 3
p++;
printf("%d %d\n", (*p)[1], (*p)[2]); //5 6
}
//==============================

c语言指针题目及答案

c语言指针题目及答案

c语言指针题目及答案一选择题(7分,每小题0.5分)1.C语言源程序的基本单位是( )。

A 过程B 函数C 子程序D 标识符2.下列程序的输出结果是( )。

main( ){ int a=7,b=5;printf("%d",b=b/a);}A 5B 1C 0 D不确认值3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。

A 7B 8C 9D 24.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534; a=(int)125.521%4; a=5<<2;A 125,31,1B 125,1,20C 125,31,20D 125.534,2,205.建有如下程序段,下面叙述中恰当的就是 ( )。

int k=10; while(k=0) k=k-1;A 循环继续执行一次 B循环就是无穷循环 C循环体语句一次也不继续执行 D循环体语句继续执行一次6.以下程序的输出结果为( )。

int i;void prt( ){ for(i=5;i<8;i++) printf("%c",'*');printf(" ");}main( ){ for(i=5;i<=8;i++) prt( );}A ***B *** *** *** ***C *** ***D * * *7.在C语言程序中,以下说法正确的是( )。

A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和函数的调用都不可以嵌套D函数的定义和函数的调用都可以嵌套8.以下函数调用语句中所含( )个实参。

func((e1,e2),(e3,e4,e5));A 2B 3C 5D 语法错误9.以下程序的输出结果为( )。

#define ADD(x) x*xmain( ){ int a=4,b=6,c=7,d=ADD(a+b)*c;printf("d=%d",d);}A d=70B d=80C d=140D d=70010.未知职工记录叙述如下,在Turbo C中,系统为变量w分配( )字节的空间。

c语言-指针选择提32道+填空题12道

c语言-指针选择提32道+填空题12道

(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()A)*p=*q; B)p=q; C)*p=&n1; D)p=*q;(2)若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是()A)随机值B)0 C)x的地址D)p的地址(3) 以下定义语句中正确的是()A) char a='A'b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a;(4) 有以下程序()main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=p; p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后的输出结果是A) 8,7,8,7 B) 7,8,7,8 C) 8,7,7,8 D) 7,8,8,7(5) 设有定义:int a,*pA=&a;以下scanf语句中能正确为变量a读入数据的是()A) scanf(“%d”,pA) ;B) scanf(“%d”,a) ;C) scanf(“%d”,&pA) ; D) scanf(“%d”,*pA) ;(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A) p=1; B) *q=2; C) q=p; D) *p=5;(7) 有以下程序()以下是引用片段:void fun(char *a, char *b){ a=b; (*a)++; }main (){ char c1="A", c2="a", *p1, *p2;p1=&c1; p2=&c2; fun(p1,p2);printf(“%c%c\n”,c1,c2);}程序运行后的输出结果是A) Ab B) aa C) Aa D) Bb(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是()A) int *i=NULL; B) float *f=NULL;scanf("%d",i); *f=10.5;C) char t="m", *c=&t; D) long *L;*c=&t; L=…\0‟;(9) 有以下程序()以下是引用片段:#inc1udemain(){ printf("%d\n", NULL); }程序运行后的输出结果是A) 0 B) 1 C) -1 D) NULL没定义,出错(10) 已定义以下函数()fun (int *p){ return *p;}该函数的返回值是A) 不确定的值B) 形参p中存放的值C) 形参p所指存储单元中的值D) 形参p的地址值(11) 下列函数定义中,会出现编译错误的是()A) max(int x, int y,int *z) B) int max(int x,y){ *z=x>y ? x:y; } {int z ;z=x>y? x:y;return z ;}C) max (int x,int y) D) int max(int x,int y){ int z; { return(x>y?x:y) ; }z=x>y?x:y; return(z);}(12) 有以下程序段()以下是引用片段:main(){ int a=5, *b, **c;c=&b; b=&a;……}程序在执行了c=&b;b=&a;语句后,表达式:**c的值是A) 变量a的地址B) 变量b中的值C) 变量a中的值D) 变量b的地址(13) 有以下程序()以下是引用片段:main(){ char a,b,c,*d;a=‟\‟; b=…\xbc‟;c=…\0xab‟; d="\017";print("%c%c%c\n",a,b,c,*d);}编译时出现错误,以下叙述中正确的是A) 程序中只有a=‟\‟;语句不正确B) b=…\xbc‟;语句不正确C) d="\0127";语句不正确D) a=‟\‟;和c=…\0xab‟;语句都不正确(14) 若有以下定义和语句()以下是引用片段:#includeint a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是AA) *q=0; B) w=p; C) *p=a; D) *p=*w;(15) 有以下程序以下是引用片段:int *f(int *x,int *y){ if(*x<*y) return x;else return y;}main(){ int a=7,b=8,*p=&a,*q=&b,*r};r=f(p,q);printf(“%d,%d,%d”,*p,*q,*r); }执行后输出结果是()A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8(16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()A) p=q; B) *p=*q; C) n=*q; D) p=n;(17) 有以下程序()以下是引用片段:void fun(char *c,int d){ *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}main(){ char a=‟A‟,b=‟a‟;fun(&b,a); printf(“%c,%c\n”,a,b);}程序运行后的输出结果是A)B,a,B,a B) a,B,a,B C) A,b,A,b D) b,B,A,b(18) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()A) scanf("%d%d%d",&a,&b,d); B) scanf("%d%d%d",&a,&b,&d);C) scanf("%d%d%d",a,b,d); D) scanf("%d%d%d",a,b,*d);(19) 若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为()A) 无确定值B) a的地址C) 512 D) 511(20) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是()A) i=*p; B) p*=*&j; C) i=&j; D) i=**p;(21) 下列程序段的输出结果是()A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2以下是引用片段:void fun(int *x, int *y){ printf(“%d %d”, *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf(“%d %d”,x, y);}(22) 下列程序的运行结果是()A) 6 3 B) 3 6 C) 编译出错D) 0 0以下是引用片段:void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf(“%d %d”, a, b);}(23) 有如下程序段()int *p,a=10,b=1p=&a; a=*p+b;执行该程序段后,a的值为A) 12 B) 11 C) 10 D) 编译出错(24) 有以下函数()char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值B) 一个临时存储单元的地址D) 形参p自身的地址值(25) 请选出正确的程序段()A) int *p; B) int *s, k;scanf("%d",p); *s=100;… …C) int *s, k; D) int *s, k;char *p, c; char *p, e;s=&k; s=&k;p=&c; p=&c;*p='a'; s=p;… *s=1;…(26) 若有以下定义和语句:()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中(27) 以下程序运行后,a的值是()A) 4 B) 1 C) 0 D) 运行时出错,a无定值以下是引用片段:main(){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}(28) 有以下程序()以下是引用片段:int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是A) 50,30 B) 30,J50 C) 80,-20 D) 80,20(29) 若有定义和语句()int **pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);则输出结果是:A)10,20 B)10,10 C)20,10 D)20,20(30) 以下程序的输出结果是()以下是引用片段:#includesubl(char a,char b) {char c; c=a;a=b;b=c;}sub2(char* a,char b) {char c; c=*a;*a=b;b=c;}sub3(char* a,char*b) {char c; c=*a;*a=*b;*b=c;} { char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A) BABBAB B) ABBBBA C) BABABA D) BAABBA(31) 若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是()A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;(32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。

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)。

c和指针课后习题

c和指针课后习题

《C和指针》第三章课后习题解答1、在你的机器上,字符的范围有多⼤?有哪些不同的证书类型,它们的范围⼤是如何?答:在main.c⼤件#include <limits.h>,进⼤limits.h⼤件即可看到各个数据类型的最⼤值最⼤值。

2、在你的机器上,各种不同的浮点数的范围是怎样的?答:同1题。

3.假定你正编写⼤个程序,它必须运⼤于两台机器之上。

这两台机器的缺省整型长度并不相同,⼤个是16位,另⼤个是32位。

⼤这两台机器的长整型长度分别是32位和64位。

程序所使⼤的的有些变量值并不太⼤,⼤以保存于任何⼤台机器的缺省整型变量中,但有些变量的值却较⼤,必须是32位的整型变量才能容纳它。

⼤种可⼤的解决⼤案是⼤长整型表⼤所有的值,但在16位机器上,对于那些⼤16位⼤以容纳的值⼤⼤,时间和空间的浪费不可⼤视。

在32位机上,也存在事件和空间的浪费问题。

如果想让这些变量在任何⼤台机器上的长度都合适的话,你该如何声明它们呢?正确的⼤法是不应该在任何⼤台机器中编译程序前对程序进⼤修改。

提⼤:试试包含⼤个头⼤件,⼤⼤包含每台机器特定的声明。

答:新建⼤个名为DataType.h的头⼤件,在16位机和32位机上该头⼤件的代码分别如下://16位机typedef unsigned char int8;typedef int int16;typedef long int int32;// 32位机typedef unsigned char int8;typedef short int int16;typedef int int32;typedef long int int64;4、假定你有⼤个程序,它把⼤个long整型变量赋值给⼤个short整型变量。

当你编译程序时会发⼤什么情况?当你运⼤程序时会发⼤什么情况?你认为其它编译器的结果是否如此?答:我使⼤的是Visual studio 2012,在上⼤编译和运⼤程序都没有问题。

C语言指针练习题

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】以下程序的输出结果是()。

指针练习题及答案

指针练习题及答案

指针练习题及答案1. 请编写一个程序,交换两个变量的值,并通过指针来实现。

```c#include<stdio.h>void swap(int *a, int *b){int temp = *a;*a = *b;*b = temp;}int main(){int num1 = 10, num2 = 20;printf("交换前的值:num1=%d, num2=%d\n", num1, num2);swap(&num1, &num2);printf("交换后的值:num1=%d, num2=%d\n", num1, num2);return 0;}```2. 编写一个函数,统计字符串中某个字符出现的次数,并通过指针返回结果。

```c#include<stdio.h>int countChar(const char *str, char target){int count = 0;while(*str != '\0'){if(*str == target)count++;str++;}return count;}int main(){char str[] = "hello world";char target = 'l';int count = countChar(str, target);printf("字符 %c 出现的次数为:%d\n", target, count); return 0;}```3. 编写一个函数,找到整型数组中的最大值,并通过指针返回结果。

```c#include<stdio.h>int findMax(const int *arr, int size){int max = *arr;for(int i = 1; i < size; i++){if(*(arr+i) > max)max = *(arr+i);}return max;}int main(){int arr[] = {10, 20, 30, 40, 50};int size = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, size);printf("数组中的最大值为:%d\n", max);return 0;}```4. 编写一个函数,将字符串反转,并通过指针返回结果。

C语言 指针 有答案

C语言  指针 有答案

一、选择题1. 以下程序的运行结果是。

#include<stdio.h>void sub(int x, int y, int *z){*z=y-x;}int main(){int a,b,c;sub(10, 5, &a);sub(7, a, &b);sub(a, b, &c);printf("%4d,%4d,%4d\n",a,b,c);return 0;}A.5,2,3 B.-5,-12,-7C.-5,-12,-17 D.5,-2,-72. 执行以下程序后,a的值为,b的值为。

#include<stdio.h>int main(){int a,b,k=4,m=6, *p1=&k, *p2=&m;a= p1= =&m;b=(-*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);return 0;}A.-1 B.1 C.0 D.4A.5 B.6 C.7 D.103. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误的原因是。

int main(){int *p,*q,a,b,;p=&a;printf("intput a:");scanf("%d",*p);...}A .*p 表示的是指针变量p 的地址B .*p 表示的是变量a 的值,而不是变量a 的地址C .*p 表示的是指针变量p 的值D .*p 只能用来说明p 是一个指针变量4. 有如下语句int a=10,b=20,*p1,*p2; p1=&a; p2=&b; 如左图所示,若要实现右图所示的存储结构,可选用的赋值语句是 。

A .*p1=*p2B .p1=p2C .p1=*p2D .*p1=p25. 若需要建立如图所示的存储结构,且已有说明float *p, m=3.14; 正确的赋值语句是 。

c语言指针习题及答案

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语言指针编程题及详解

c语言指针编程题及详解

c语言指针编程题及详解c语言指针编程是一门用于编程的常见开发技术,通过指针的操作,可以让程序具备更强的表达能力,并且可以极大的减少代码的重复性。

根据其特性,以下列出了c语言指针编程的常见题目及详细解答:一、给定一个整型数组,使用指针把数组中的数字复制到另一个数组中相同的位置:解:#include<stdio.h>int main(){int *ptr1, *ptr2;int array1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int array2[10];ptr1 = array1; //设置指针1指向数组1的第一个元素ptr2 = array2; //设置指针2指向数组2的第一个元素while (ptr1<array1+10){ //当指针1指向的位置小于数组1的最后一个元素时,循环执行以下步骤*ptr2 = *ptr1; //将指针1指向的值赋值给指针2指向的位置ptr1++; //指针1指向下一个数组1中的元素ptr2++; //指针2指向下一个数组2中的元素}return 0;}二、给定两个整型数组,使用指针比较数组元素的大小:解:#include<stdio.h>int main(){int *ptr1, *ptr2;int array1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int array2[10] = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20};ptr1 = array1; //设置指针1指向数组1的第一个元素ptr2 = array2; //设置指针2指向数组2的第一个元素while (ptr1<array1+10) { //当指针1指向的位置小于数组1的最后一个元素时,循环执行以下步骤if (*ptr1 > *ptr2) {printf("数组1元素大于数组2元素\n");} else if (*ptr1 < *ptr2) {printf("数组1元素小于数组2元素\n");} else {printf("数组1元素等于数组2元素\n");}ptr1++; //指针1指向下一个数组1中的元素ptr2++; //指针2指向下一个数组2中的元素}return 0;}三、用指针计算数组的最大值及最小值:解:#include<stdio.h>int main(){int *ptr, max, min;int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//定义指针及最大最小值变量ptr = array;max = *ptr;min = *ptr;//开始循环比较for (ptr=array; ptr<array+10; ptr++){if (*ptr > max) {max = *ptr; //将指针指向元素的值与最大值进行比较,如果指向元素的值大,在赋值给最大值}if(*ptr < min){min = *ptr; //将指针指向元素的值与最小值进行比较,如果指向元素的值小,在赋值给最小值}}printf("max is %d , min is %d\n", max, min); return 0;}四、从指定的字符组件中取得字符串:解:#include <stdio.h>int main(){char arr[12] = "Hello World!", *str;str = &arr[6];printf("String is : %s\n", str);return 0;}。

C语言指针习题及答案

C语言指针习题及答案

指针主要内容的习题及答案一.选择题1.变量的指针,其含义是指该变量的 B 。

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

A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2) 3.若有说明: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.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是 D 。

void print_value(int *x){ printf(“%d\n”,++*x); }A)23 B)24 C)25 D)265.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是C 。

A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ; C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ;6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是D 。

A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p 7.下面判断正确的是 C 。

A)char *a=”china”; 等价于char *a; *a=”china” ;B)char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”;}C)char *s=”china”; 等价于char *s; s=”china” ;D)char c[4]=”abc”,d[4]=”abc”; 等价于char c[4]=d[4]=”abc” ;8.下面程序段中,for循环的执行次数是 C 。

c语言指针例题及解析

c语言指针例题及解析

c语言指针例题及解析题目:已知 char **p 指向一个字符指针数组的首地址,其中数组的每个元素指向一个字符串,要求将数组中的字符串按顺序输出。

解析:首先,需要理解指针的指针的含义。

在 C 语言中,指针的指针是指向指针的指针,即一个指针变量中存储的是另一个指针变量的地址。

在本题中,char **p 指向一个字符指针数组的首地址,即 p 是一个指向指针的指针变量。

接下来,需要了解如何通过指针访问数组元素。

在 C 语言中,可以通过解引用运算符 * 来访问指针所指向的内容。

在本题中,数组的每个元素指向一个字符串,因此可以通过*p[i] 来访问第 i 个字符串。

最后,需要使用 printf 函数输出字符串。

在 C 语言中,printf 函数用于格式化输出,可以通过 %s 格式化符来输出字符串。

根据以上解析,可以使用以下代码实现题目要求的功能:c#include <stdio.h>int main() {char *strs[] = {"hello", "world", "C","language"};char **p = strs; // p 指向 strs 的首地址// 输出每个字符串for (int i = 0; i < 4; i++) {printf("%s\n", *p[i]); // 通过解引用运算符 * 来访问第 i 个字符串}return 0;}在上面的代码中,首先定义了一个字符指针数组 strs,其中包含了四个字符串。

然后定义了一个指向指针的指针变量 p,并将其初始化为 strs 的首地址。

接下来使用 for 循环遍历数组中的每个字符串,并使用 printf 函数输出每个字符串。

在输出时,通过解引用运算符 * 来访问第 i 个字符串。

最后返回 0 表示程序正常退出。

C语言指针章节选择题

C语言指针章节选择题

有问题的题目:40、46、54、55、122、123、1. 若已定义:int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是A) a[p-a] B) *(&a[i])C) p[i] D) a[10]D2. 已知指针p的指向如下图所示,则执行语句*--p;后*p的值是a[0] a[1] a[2] a[3] a[4]┌──┬──┬──┬──┬──┐│10 | 20 | 30 │40 | 50 |└──┴──┴──┴──┴──┘p↑A) 30 B) 20C) 19 D) 29B3. 下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的结果是________。

main( ){ int a,b,*pa,*pb;pa=&a; pb=&b;scanf("%d,%d",pa,pb);*pa=a+b;*pb=a+b;printf("a=%d,b=%d\n",a,b);}A) a=13,b=13 B) a=8,b=8C) a=8,b=13 D) 出错C4. 下面程序段的输出结果是________。

main( ){ char string1[20],string2[20]={"ABCDEF"};strcpy(string1,string2);printf("%s\n",string1+3);}A) EF B) DEFC) CDEF D) ABCDEFB5. 下列程序执行后的输出结果是________。

main(){ int a[3][3],i,*pmul;pmul=&a[0][0];for(i=0;i<9;i++) pmul[i]=i+1;printf("%d\n",a[1][2]);}A) 3 B) 6C) 9 D) 随机数B6. 有如下程序段int *p,a=10,b=1;p=&a; a=*p+b;执行该程序段后,a的值为________。

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

《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,FatherC.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的完整复制功能。

A.*s=*t&&*t!=O B.s++=t++&&*t!=0C.*s++=*t++ D.*(++s)=*(++t)12、设有说明:char s1[10],*s2=s1;则以下正确的语句是 CA.s1[]=”computer” B.s1[10]=”computer”C.s2=”computer” D.*s2=”computer”13、设有说明:int a[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);以下可得数值为9 的表达式是 BA. p+=3,*p++ B.p+=4,*(p++)C.p+=4,*++p D.p+=4,++*p14、设有说明:int a[4][4]={1,2,3,4,5,6,7,8,9,10},*p=a[1],(*q)[4]=a;则以下不能访问数值为7的数组元素的表达式是 AA. *(a+1)+2 B. p[2] C. *(a[1]+2) D. q[1][2]二、填空题1、在如下定义中 float a[ ]={100,200,300}; float *p[ ]={&a[0], &a[1], &a[2]}; 语句cout<<*p[2]的输出是 3002、若有说明语句char *name="newspaper"; 则cout<<name+2的输出是wspaper ,cout<<*(name+3) 的输出是 s 。

3、int a[5]={100, 200,300, 400, 500}, *p1=&a[0]; 则表达式(*p1)++的值是 100 。

4、有如下定义中char *str[ ]={“Follow me”, “BASIC”, “Great Wall”, “Department”}中输出”BASIC”字符串的语句是:cout<< str[1]5、执行以下语句:int a[5]={25,14,27,18},*p=a;(*p)++;则 *p的值为 26 ,再执行语句:*p++;则 * p的值为 14 6、设有说明语句char s[]="123\t456\00089",*p=s;执行以下两个语句:cout<<*(p+5)<<'\n';cout<<(p+5)<<'\n';则输出为 5 和 56 。

7、设有如下函数定义。

如果在主函数中有语句cout<<f(“goodbye!”);则输出 9int f(char *s){ char *p=s;while(*p++);return(p—s);}8、执行以下程序后,y的值是 10int main(){int a[4]={2,4,6}; int y=0,*p=a;for(;*p++;)if(*p)y+=*p;cout<<y<<endl;}9、三、程序阅读题1、写出如下程序的运行结果。

char s[] = "abcdefgh" ,*p = s;p += 3;cout<<strlen(strcpy(p,"ABCD"))<<endl; //4cout<<s<<endl; //abcABCD2、写出如下程序的运行结果。

char *p = "abcdefgh",*r;long *q = (long *)p;q++;r = (char *)q;cout<<r<<endl; //efgh3、写出如下程序的运行结果。

void sub(int x,int y,int *z){*z = y - x;}int main(){int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);cout<<a<<'\t'<<b<<'\t'<<c<<endl; //-5 -12 -7 return 0;}4、写出如下程序的运行结果。

void ss(char *s,char t){while(*s){if(*s==t)*s = t - 'a' + 'A';s++;}}int main(){char str1[100]="abcddfefdbd",c='d';ss(str1,c);cout<<str1<<endl; //abcDDfefDbDreturn 0;}5、void swap(int *p1, int *p2){ int *p;p=p1; p1=p2; p2=p;cout<<*p1<<'\t'<<*p2<<endl;}int main(void){ int a=5, b=9;swap(&a, &b);cout<<a<<'\t'<<b<<endl;return 0;}程序第一行输出 9 5 ,第二行输出 5 96、void exchange(int *x, int *y){ int temp;temp=*x;*x=*y;*y=temp;}void main(void){int data[8]={15,12,20,0,8,-5,17,1};for(int i=0;i<=7;i++){for (int j=i;j<=7;j++){if(data[i]>data[j])exchange(&data[i], &data[j]);}cout<<data[i]<<endl;}}函数exchange的作用是:交换指针变量指向的数,&data[i]表示的是:data[i]的地址,程序的输出结果是: -5 0 1 8 12 15 17 20 7、写出如下程序的输出结果void invert(char*a,int x,int y){char t,*p,*q;p=a+x;q=a+y;while(p<q){t=*p;*p=*q;*q=t;p++;q--;}}int main(){char dt[13]="GoodBookNice";int i=0,n=1;while(i<8){ invert(dt,i,i+5);cout<<"第"<<n++<<"次计算:"<<endl;for(int j=i;j<=i+5;j++)cout<<dt[j]<<',';cout<<endl;i+=6;}cout<<"共执行了"<<i<<"次计算。

相关文档
最新文档