C语言指针练习题解析

}

4.使用指针编写函数strcat(),实现两个字符串的首尾连接(将字符串str2接到str1的后面,str1最后面的‘\\0’被取消)。

void strcat(char *str1,char *str2) {int i,m=0;

while(str1[m]!='\\0') m++; //求数组str1长度 i=0;

while(str2[i]!='\\0')

{str1[m+i]=str2[i];i++;} //将字符串str2中有字符依次装入字符串str1中 str1[m+i]='\\0'; }

5.编写从多个字符串中寻找最长串的函数

char *maxstr(char *str[ ],int n)

其中,str是字符串数组,n是字符串个数。函数返回值为最长串地址。 char *maxstr(char *str[],int n) {int i,len,j=0;

len=strlen(str[j]); //求数组str[0]长度并赋给变量len for(i=1;i

if(strlen(str[i])>len) {j=i;len= strlen(str[i]) ;}

//从第2个字符串开始,只要字符串长度大于len,就赋给len并保留其下标 return str[j]; }

6.写一个函数,将一个n阶方阵转置。具体要求如下:

(1)初始化一个矩阵A(5×5),元素值取自随机函数,并输出。 (2)将其传递给函数,实现矩阵转置。

(3)在主函数中输出转置后的矩阵。(提示:程序中可以使用C++库函数rand( ),其功能是产生一个随机数0~65535,其头文件为stdlib.h)

见本章例15

7.编写一个程序,实现在命令行中以参数的形式接收两个整数,输出这两个整数的和。 (提示:程序中可以使用C++库函数atoi(),其功能是将字符串转换成整型值,其头文件为stdlib.h)

#include #include

void main(int argc,char *argv[]) { int a,b; a=atoi(argv[1]); b=atoi(argv[2]);

cout<

8.使用引用参数编制程序,实现两个字符串变量的交换。例如开始时:

char *ap=”hello”; char *bp=”how are you”; 交换后使ap和bp指向的内容别是: ap:”how are you” bp:”hello”

#include #include

void swap(char *p,char *q) {char temp[20]; strcpy(temp,p); strcpy(p,q); strcpy(q,temp); }

void main()

{char a[20]=\ char b[20]=\ cout<<\交换前字符串值:\\n\ cout<<\cout<<\swap(ap,bp);

cout<<\交换后字符串值:\\n\ cout<<\cout<<\}

9.下列程序能够生成由10个整数组成的安全数组。其中put()函数的作用是将值放入数组中,get()函数的作用是取出数组中某元素的值,如果在put()函数和get()函数中遇到下标越界则给出提示信息 “range error!”并退出程序。请完成put()函数和get()函数的定义。

#include

#include int &put(int n); int get(int n); int array[10]; int error=-1; void main()

{ put(0)=10; put(1)=20; put(9)=40;

cout< cout< cout< put(12)=1; …… } 运行结果是: 10 20 30

range error!

请完成put()函数和get()函数的定义。 答:

int &put (int m)

{ if(m>=0 && m<10) return array[m]; else {cout<<\

}

int get(int m)

{ if(m>=0 && m<10) {return array[m];} else { cout<<\} 四、练习题

1. 选择题

(1)若有以下定义,则变量p所占内存空间的字节数是(float *p;

A.1 B.2 C.4 D.8

(2) 若有以下定义,则赋值错误的是( )。

int a,*p,*q;

A. *p=&a ; B.p=new int ; C.q=NULL; D.p=q

(3) 下列程序运行结果是( )。

#include void main() {int a=10,*q; if(q==NULL)

cout<<\ else q=&a;

cout<<*q<

)。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4