77范文网 - 专业文章范例文档资料分享平台

指针 习题九及参考答案

来源:网络收集 时间:2020-06-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

习题九 一、 单选题 1、 已知:int *p,a;则语句\;\中的运算符\的含义是( )。

A)位与运算 B)逻辑与运算 C)取指针内容 D)取变量地址 2、已知:int a,x;则正确的赋值语句是( )。

A)a=(a[1]+a[2])/2 B)a*=*a+1; C)a=(x=1,x++,x+2); D)a=\3、已知:int a,*p=&a; 则下列函数调用中错误的是( )。

A)scanf(\)scanf(\)printf(\D)printf(\4、main(argc,argv)中形式参数argv的正确说明形式应当为( )。

A)char *argv[ ] B)char argv[ ][ ] C)char argv[ ] D)char *argv 5、说明语句\的含义是( )。 A) p是一个指向一维数组的指针变量

B) p是一个指针变量,指向一个整型数据

C) p是一个指向函数的指针,该函数的返回值是一个整型 D) 以上都不对

6、设有说明int(*ptr)[M];其中的标识符ptr是( )。 A) M个指向整型变量的指针

B) 指向M个整型变量的函数指针

C) 一个指向有M个整型元素的一维数组的指针

D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型变量 7、已知:double *p[6]; 它的含义是( )。

A)p是指向double型变量的指针 B)p是double型数组 C)p是指针数组 D)p是数组指针 8、已知函数说明语句:void *f(); 则它的含义是( )。

A)函数f的返回值是一个通用型的指针 B)函数f的返回值可以是任意的数据类型 C)函数f无返回值 D)指针f指向一个函数,该函数无返回值 9、已知:char s[10],*p=s,则在下列语句中,错误的语句是( )。 A)p=s+5; B)s=p+s; C)s[2]=p[4]; D)*p=s[0]; 10、已知:char b[5],*p=b; 则正确的赋值语句是( )。

A)b=\)*b=\ C)p=\ D)*p=\11、下列对字符串的定义中错误的是( )。

A)char str[7]=\ B)char str[ ]=\

C)char *str=\)char str[ ]={'F','O','R','T','R','A','N','\\0'} 12、已知:char s[20]=\则不能引用字母o的表达式是( )。 A)ps+2 B)s[2] C)ps[2] D)ps+=2,*ps

13、已知:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示数组a中元素的表达式是(A)*p B)a[10] C)*a D)a[p-a] 14、已知:char **s; 正确的语句是( )。

A)s=\; B)*s=\; C)**s=\)*s='A’; 15、已知:char c[8]=\则下面的输出语句中,错误的是( )。 A)printf(%s\\n\B)printf(\ C)for(i=0;i<7;i++) D)for(i=0;i<7;i++)

printf(\

16、已知:int i=0,j=1,*p=&i,*q=&j; 错误的语句是( )。 A)i=*&j; B)p=&*&i; C)j=*p++; D)i=*&q; 17、已知:char *p,*q; 选择正确的语句( )。 A)p*=3; B)p/=q; C)p+=3; D)p+=q;

18、已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为( ); A)*&p B)*p C)p[0] D)*&a

19、C语言主函数main()最多允许有( )个参数。 A)1 B)2 C)0 D)3

。 ) 20、已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10}; int(*ptr)[3]=a,*p=a[0]; 则以下能够正确表示数组元素a[1][2]的表达式是( )。

A)*((ptr+1)[2]) B)*(*(p+5)) C)(*ptr+1)=2 D)*(*(a+1)+2)

二、填空题

1、下面的函数是求两个整数之和,并通过行参传回结果。

int add(int x, int y,________z) (int *) {________=x+y;} ( *z )

2、下面程序通过指向整型的指针将数组a[3][4]的内容按3行4列的格式输出,请给printf()填入适当的参数,使之通过指针p将数组元素按要求输出。 #include \

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a; main() {int i,j;

for(i=0;i<3;i++) {for(j=0;j<4;j++)

printf(\ } }

3、下面程序的功能是:从键盘上输入一行字符;存入一个字符数组中,然后输出该字符串。

#include \main()

{char str[81],*sptr; int i;

for(i=0;i<80;i++) {str[i]=getchar();

if(str[i]=='\\n')break; }

str[i]=___________; ('\\0' ) sptr=str; while(*sptr)

putchar(*sptr_______); ( ++ ) }

4、下面的程序实现从10个数中找出最大和最小值。

#include \int max,min;

find_max_min(int *p,int n) {int *q;

max=min=*p;

for(q=________;________;q++) (q=p qmax) else if (________)min=*q; (*q

main()

{int i,num[10];

printf(\ for(i=0;i<10;i++) scanf(\find_max_min(num,10);

printf(\

}

三、编程题

1、编写一函数,其功能是交换两个变量x、y的值。编程序实现对数组a[100],b[100]调用此函数,交换a、b中具有相同下标的数组元素的值,且输出交换后的a、b数组。

/*p279_1.c*/

#include \

void swap(int *pa,int *pb) {int t;

t=*pa;*pa=*pb;*pb=t; }

main()

{int a[100],b[100],i;

for(i=0;i<100;i++) /*产生数组a和b */ {a[i]=random(100); b[i]=random(100); }

printf(\输出交换前数组a */ for(i=0;i<100;i++) printf(\ printf(\

printf(\输出交换前数组b */ for(i=0;i<100;i++) printf(\ printf(\

for(i=0;i<100;i++) /*a、b数组元素交换 */ swap(&a[i],&b[i]);

printf(\输出交换后数组a */ for(i=0;i<100;i++) printf(\ printf(\

printf(\输出交换后数组b */ for(i=0;i<100;i++) printf(\ printf(\ }_

2、用数组方案和指针方案分别编写函数insert(s1,s2,f),其功能是在字符串s1中的指定位置f处插入字符串s2。 解1:

/* P279_2A.c */

#include \

insert(char *sa,char *sb,int n) {char sf[80],*p,*q; int i=0;

for(p=sa+n;*p!='\\0';p++) sf[i++]=*p; sf[i]='\\0';

for(p=sa+n;*sb!='\\0';p++,sb++) *p=*sb;

for(q=sf;*q!='\\0';p++,q++) *p=*q; *q='\\0'; }

main()

{char s1[80]=\ char s2[40]=\ int n;

puts(s1);puts(s2); n=strlen(s1);

printf(\ scanf(\ insert(s1,s2,n); puts(s1); }

解2:

/* P279_2B.C */

#include \

insert(char sa[],char sb[],int n) {char sf[80]; int i=0,k=0;

while(sa[n+i]!='\\0') sf[i]=sa[n+i++]; sf[i]='\\0'; i=0;

while(sb[i]!='\\0') sa[n+i]=sb[i++]; while(sf[k]!='\\0') sa[n+i++]=sf[k++]; sa[n+i]='\\0'; }

main()

{char s1[80]=\ char s2[40]=\ int n;

puts(s1);puts(s2); n=strlen(s1);

printf(\ scanf(\ insert(s1,s2,n); puts(s1); } 解3

#include \main()

{char s1[80],s2[30]; int n; gets(s1); gets(s2);

printf(\ do

scanf(\

while(n>=strlen(s1));

insert(s1,s2,n); puts(s1); }

insert(char *p1,char *p2,int k)

{char tem[80];

strcpy(tem,p1+k); /*保存第k个字符开始的字符*/

*(p1+k)='\\0'; /*使第k个字符之前的字符为一个独立字符串*/ strcat(p1,p2); /*将p2复制到p1之后*/

strcat(p1,tem);/*再将保存再tem中的字符串连接到p1末尾*/ }

3、用指针编写比较两个字符串s和t的函数strcmp(s,t)。要求st时,返回1。 解1:

/* P279_3.C */

int strcmp(char *s1,char *t1) { while(*s1!='\\0'&&*t1!='\\0') {if(*s1>*t1)return 1; if(*s1<*t1)return -1;

if(*s1++==*t1++)continue; }

if(*s1>*t1)return 1; if(*s1==*t1)return 0; if(*s1<*t1) return -1; }

main() {int k;

char s[80]=\ char t[40]=\ puts(s);puts(t); k=strcmp(s,t);

if(k==1)printf(\ if(k==0)printf(\ if(k==-1)printf(\解2:

/*P279_3b.c */

#include \

int sstrcmp(char *s,char *p)

{while(*s!='\\0'&&*p!='\\0'&&*s++==*p++); if(*s>*p)return 1; else if (*s==*p)return 0; else return -1; } main()

{char a[80],b[80]; int k;

gets(a);gets(b); k=sstrcmp(a,b);

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库指针 习题九及参考答案在线全文阅读。

指针 习题九及参考答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1103427.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: