资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
函数指针函数指针1定义定义含义含义int i; i是整型变量是整型变量 int *p; p是指向整型数据的指针变量是指向整型数据的指针变量 int aN; a是整型数组,它有是整型数组,它有N个整型元素个整型元素int *pN; p是指针数组,它由是指针数组,它由N个指向整型数据的指针元素组成个指向整型数据的指针元素组成 int f( ); f是返回值是整型的函数是返回值是整型的函数int *p(); p是返回一个指针的函数,该指针指向整型数据是返回一个指针的函数,该指针指向整型数据 int (*p)( ); p是指向函数的指针变量,该函数返回整型数据是指向函数的指针变量,该函数返回整型数据 int *p; p是指针的指针变量,它指向一个指向整型数据的指针变量是指针的指针变量,它指向一个指向整型数据的指针变量一、有关指针的数据类型一、有关指针的数据类型21、指、指针变针变量量a所指的字符串所指的字符串长长度度为为 ,这这个个长长度是可以用度是可以用strlen(a)测测出来的。出来的。char *a=“nMy Name iswang fei.n;(1)26 (2) 27 (3) 28 (4) 24 (5)232、下下面面程程序序的的作作用用是是,将将两两个个变变量量中中的的值值互互换换,请请检检查查程程序序能能否否正正确确,如如不不正正确确的的,请请矫矫正。正。#include void main ( )int a=3,b=4;int *p1 , *p2 , *p;p1=&a,p2=&b;p=p1;p1=p2;p2=p;printf(“a= %d,b= %dn,a,b); 这里改里改为:int *p1,*p2,p;这里改里改为:p=*p1;*p1=*p2;*p2=p;33、已设、已设p1和和p2为指针变量,且已指向同一个整为指针变量,且已指向同一个整 型数组中的元素,型数组中的元素,a是一个整型变量,问下面是一个整型变量,问下面 哪一个语句不能正确执行哪一个语句不能正确执行? (1) a=*p1 (2) a=*p1+*p2 (3) a=*p1-*p2 (4) p1=a-p24、有一个二维数组、有一个二维数组a34,2行行3列元素的正确表列元素的正确表 示方法为。示方法为。 (1) &a23 (2)a2+3 (3) *(a+2)+3 (4)*(a2+3)45、假、假设设有有语语句句:int a=4,*p=&a;下面均代表地址的一下面均代表地址的一组选项组选项是是: 1) a,p,&*a 2) *&a,&a,*p 3) &a,p,&*p 4) *&p,*p,&a6、以下程序段的、以下程序段的输输出出结结果果为为: char a =“Program,*ptr; ptr =a; for ( ;ptra+7;ptr+=2)putchar(*ptr); 1) Program 2) Porm 3) 有有语语法法错误错误; 4) Por57、下面阐明不正确的选项是:、下面阐明不正确的选项是:1) int *a4; 3) float (*p)();2) int *p; 4) char *(*a) ;8 、以下程序段的输出结果为:、以下程序段的输出结果为:#include void main()int s =1,2,3,4,5,6,7,8,9,*p;p=s; *(p+5)=22; p+;printf (%d,%dn,*p,*(p+4); 输出出结果是:果是:2,2269、以下程序的输出结果是:、以下程序的输出结果是: #include void main()int a5=2,4,6,8,10,*p,*k;p=a;k=&p;printf(%d ,*(p);printf(%dn,*k);A)4 4 B)2 2 C)2 4D)结果错误结果错误710、写出下面程序的运转结果。、写出下面程序的运转结果。#include stdio.h#include string.hvoid main()char a30=nice to meet you!;int b;b=strlen(a)-9;strcpy(a+b,you);printf(%sn,a); 运运转结果:果:nice to you!811、以下程序的输出结果是多少?、以下程序的输出结果是多少?#include void fun(int *a,int *b) int k;k=5;*a=k;*b=*a+k;void main() int *a,*b,x=10,y=15;a=&x;b=&y;fun(a,b);printf(%d,%dn,*a,*b);printf(%d,%dn,x,y);运运转结果:果:5,105,10912、以下程序段的输出结果是、以下程序段的输出结果是()#include void main() int a10=9,8,7,6;int *p;p=a;printf(%d,%dn,*p,*(p+2);运运转结果:果:9,71013、已有变量定义和函数调用语句:、已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是下面函数的正确输出结果是( )。void print_value(int *x) printf(%dn,+(*x); A23 B24 C25 D261114、阅读阅读下面程序,下面程序,输输出出结结果是多少?果是多少?#include stdio.hvoid main()int c6=1,2,3,4,5,6;int *p;p=c;printf(%d,*+p);p=p+3;printf(%dn“,*p-);运运转结果:果:2,51215、阅读下面程序,那么程序的输出结果是多少?、阅读下面程序,那么程序的输出结果是多少?#include void main()int i;char *p;char *name =Ann,Hare,Jack,Mary;printf(n Studentss names are:n);for(i=2;i4;i+)p=name+i;printf(%sn,*p);运运转结果:果: JackMary1316、写出程序的运转结果。、写出程序的运转结果。#include #include void fun(char *s)int i;char a10=opqrst;for(i=0;ai!=0;i+)*(s+i)=ai;void main()char *p,a =abcdef;p=a;fun(p);printf(%s,p);运运转结果:果: opqrst1417、写出程序的运转结果。、写出程序的运转结果。#include #include void fun(char *s)char a10;strcpy(a,opqrst);s=a;void main()char *p,a =abcdef;p=a;fun(p);printf(%s,p); 运运转结果:果: abcdef1518、写出程序的运转结果、写出程序的运转结果#include void fill(char *p)p=opqrst;void main()char t =abcdef;fill(t);printf(%s,t); 运运转结果:果: abcdef1619、写出程序的运、写出程序的运转结转结果果#include void fun(char *s)s=“opqrst;void main()char *p=abcdef;fun(p);printf(%s,p);运运转结果:果: abcdef1720、写出程序的运转结果、写出程序的运转结果#include void main()char *p =BOOL,OPK,H,SP;int i ;for(i=3; i =0; i-,i-)printf(%c,*pi);printf(n);运运转结果:果: SO18#include void main()char *month13=january,february,march,april,may,june,july,august,september,october,november,decenber; int n; printf(input month:); scanf(%d,&n); printf(%sn,*(month+n-1); 编一个程序,输入月份号,输出该月份的英文月名。编一个程序,输入月份号,输出该月份的英文月名。19有有n个整数,使前面各数顺序向后移个整数,使前面各数顺序向后移m个位置,最后个位置,最后m个数变成最前面个数变成最前面m个数。个数。20#include void input(int *p,int n) int i;printf(请输入%d个整数:,n); for(i=0;in;i+) scanf(%d,p+i);void output(int *p, int n) int i; for(i=0;i=p;h-) for(i=0;im;i+) t=*(h+i); *(h+i)=*(h+i+1); *(h+i+1)=t; void main() int m,a10; input(a,10); output(a,10); printf(请输入要把后面多少个整数挪动到前面?);scanf(%d,&m); move(a,10,m); output(a,10); 21有一字符串,包含有一字符串,包含n个字符,写一函数,将此字符串中从第个字符,写一函数,将此字符串中从第m个字符开个字符开场的全部字符复制成为另一个字符串。场的全部字符复制成为另一个字符串。22#include #define M 5 /从第个字符开场复制(可以行更改/*定义函数:把指针head处开头的字符串从第m个字符开场复制到指针cpy开头的字符数组*/char *stringcpy(char *head, int m, char *cpy)char *h,*c; /定义两个义务指针int i=0; h=head; c=cpy; /义务指针分别指向源字符串和目的字符串while(i=m-1)h=head+i;if(*h=0)break;i+; /这个循环是为了把指针h指向第m个字符while(*h!=0)*c=*h;c+;h+; /这个循环是从第个字符开场逐个字符进展复制*c=*h; /复制源字符串末尾的字符0return cpy; /给函数前往目的字符串首地址void main()char c181,c281; /c1是源字符串,c2是目的字符串printf(请输入源字符串:n);gets(c1); /输入源字符串printf(目的字符串是:n);puts(stringcpy(c1,M,c2);/输出目的字符串23有有N个人围成一圈,顺序排号,从第一个人开场报数从一到三报数,凡报个人围成一圈,顺序排号,从第一个人开场报数从一到三报数,凡报到三的人退出圈子,问最后留下的是原来第几号的那位?到三的人退出圈子,问最后留下的是原来第几号的那位?24#include void main()int i,k,m,n,num50,*p; scanf(%d,&n); p=num; for(i=0;in;i+)*(p+i)=i+1; i=0;k=0;m=0; while(mn-1)if(*(p+i)!=0) k+; if(k=3) *(p+i)=0; k=0; m+; i+; if(i=n) i=0; while(*p=0) p+; printf(%dn,*p);i是数组计数变量是数组计数变量k是按是按1,2,3报数是的计数变量报数是的计数变量m是退出的人数的计数变量是退出的人数的计数变量P12345000025
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号