下列函数swap实现数据交换功能功能,请填空。#include<iostream>void swap(int *p,int *q)( int temp;temp=*p;; /1; /2)int main()( int a,b;int *p1,*p2;cout<<"请输入两个正数:";cin>>a>>b;p1=a;p2=b;swap(p1,p2);cout<<"结果a和b的值:"<<a<<","<<b<<endl;)如程序运行时得到以下结果:请输入两个正数:10 20结果a和b的值:20,10答案:(1) *p=*q(2) *q=temp;3.下列函数sort实现对字符串按字典顺序由小到大排序,请填空。#include<iostream>void sort( ) /1( char ; /2int i,j;for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(strcmp( ) /3{ temp=p[j];; /4p[j+1]=temp;)}int main()(char *a[5]={"student","worker","cadre","soldier","apen");sort(a,5);for(int i=0;i<5;i++)cout<<a[i]<<endl;}程序运行结果如下:apencadresoldierstudentworker答案:(1)char *p[],int n(2)*temp(3)p[j],p[j+1])>0(4)p[j]=p[j+1]4.函数find功能是:在指针p所指数组中,查找值为x的元素,找到后,返回该元素的下标,否则返回-1,改正程序中语句错误,能够正确运行。#include<iostream>#include<stdlib.h>const int N=10;int find(int *p,int n,int x) /1( int i ; / 2*(p+n)=x; /3while(*p+i!=x) /4i++; /5if(i!=n) /6return 1; /7elsereturn -1; /8)int main()( int i,pos,x;int *p=new int [N];for(i=0;i<N;i++)*(p+i)=rand()%50;for(i=0;i<N;i++)cout<<*(p+i)<<'t';cout<<"ninput x: ";cin>>x;pos=find(p,N,x);if(pos!=-1)cout<<"index= "<<pos<<" ,value= "<<*(p+pos)<<endl;else cout<<"No find!"<<endl;)答案:(1) 2行语句改为int i=0;(2) 4行语句改为while(*(p+i)!=x);(3) 7行语句改为return i。四、编程题1.写一个函数,将一个n阶方阵转置。具体要求如下:(1)初始化一个矩阵A(5×5),元素值取自随机函数,并输出。(2)将其传递给函数,实现矩阵转置。(3)在主函数中输出转置后的矩阵。(提示:程序中可以使用C++库函数rand( ),其功能是产生一个随机数0~65535,其头文件[1]为stdlib.h)2.使用指针编写函数strcat(),实现两个字符串的首尾连接(将字符串str2接到str1的后面,str1最后面的‘0’被取消)。3.编写从多个字符串中寻找最长串的函数4.编写一个程序,实现在命令行中以参数的形式接收两个整数,输出这两个整数的和。(提示:程序中可以使用C++库函数atoi(),其功能是将字符串转换成整型值,其头文件为stdlib.h)知识点:1.掌握指针、地址、指针类型、空指针(NULL)等概念;2.掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算、指针变量比较运算和指针表达式;3.掌握指针与数组、函数、字符串等的联系;4.掌握引用参数的使用。一、选择题1.若有以下定义,则说法错误的是( )。int a=100,*p=a ;A.声明变量p,其中*表示p是一个指针变量B.变量p经初始化,获得变量a的地址C.变量p只可以指向一个整形变量D.变量p的值为1002.若有以下定义,则赋值正确的是( )。int a ,b , *p;float c, *q;A.p=c B.q=p C.p=NULL D.q=new int3.如果x是整型变量,则合法的形式是( )。A.&(x+5)B.*xC.*xD.*x4.若有语句int a[10]=(0,1,2,3,4,5,6,7,8,9),*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。A.p[i]B.*(*(a+i))C.a[p-a]D.*(a[i])5.以下程序的输出结果是( )。#include <iostream>int main()( int a[3]={10,15,20); / a[0]=10,a[1]=15,a[2]=20int *p1=a,*p2=a[1]; / p1取a[0]地址,p2取a[1]地址*p1=*(p2-1)+5; / a[0]=15,a[1]=15,a[2]=20*(p1+1)=*p1-5; / a[0]=15,a[1]=10,a[2]=20cout<<a[1]<<endl;}A.5B.10C.15D.206.执行以下程序段[2]后,m的值为( )。int a[2][3]=({1,2,3),(4,5,6)};int m,*p=a[0][0];m=(*p)*(*(p+2))*(*(p+4));A.15B.14C.13D.127.以下程序的输出结果是( )。#include <iostream>void fun(int x,int y,int *cp,int *dp)( *cp=x+y; /*cp=30+50=80*dp=x-y; /*dp=30-50=-20)int main()(int a,b,c,d;a=30,b=50;fun(a,b,c,d);cout<<c<<","<<d<<endl;)A.50,30B.30,50C.80,-20D.80,208.要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确执行此功能的函数是( )。A.funa(int *x,int *y)B.funb(int x,int y)( int *p=new int ;{ int t;p=*x;t=x;*x=*y;x=y;*y=*p; y=t;)}C.func(int *x,int *y)D.fund(int x,int y)(*x=*y;{*x=*x+*y;*y=*x;*y=*x-*y;)*x=*x-*y;}9.以下程序的输出结果是( )。#include <iostream>int main()(char *s="12134211";int v1=0,v2=0,v3=0,v4=0;for (int k=0;s[k];k++)switch(s[k]){default:v4++;case '1':v1++;case '3':v3++;case '2':v2++;)cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;}A.4,2,1,1B.4,9,3,1C.5,8,6,1D.8,8,8,810.若有如下语句:int **pp,*p,a=10,b=20;pp=p; /二级指针pp取一级指针p地址p=a; /一级指针p取变量a地址p=b; /一级指针p取变量b地址cout<<*p<<”,”<<**pp<<endl;则输出结果是()。A.10,20B.10,10C.20,10D.20,20________2008-02-07 22:44
下列函数swap实现数据交换功能功能,请填空。#include<iostream>void swap(int *p,int *q){ int temp;temp=*p;; //1; //2}int main(){ int a,b;int *p1,*p2;cout<<"请输入两个正数:";cin>>a>>b;p1=a;p2=b;swap(p1,p2);cout<<"结果a和b的值:"<<a<<","<<b<<endl;}如程序运行时得到以下结果:请输入两个正数:10 20结果a和b的值:20,10答案:(1) *p=*q(2) *q=temp;3.下列函数sort实现对字符串按字典顺序由小到大排序,请填空。#include<iostream>void sort( ) //1{ char ; //2int i,j;for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(strcmp( ) //3{ temp=p[j];; //4p[j+1]=temp;}}int main(){char *a[5]={"student","worker","cadre","soldier","apen"};sort(a,5);for(int i=0;i<5;i++)cout<<a[i]<<endl;}程序运行结果如下:apencadresoldierstudentworker答案:(1)char *p[],int n(2)*temp(3)p[j],p[j+1])>0(4)p[j]=p[j+1]4.函数find功能是:在指针p所指数组中,查找值为x的元素,找到后,返回该元素的下标,否则返回-1,改正程序中语句错误,能够正确运行。#include<iostream>#include<stdlib.h>const int N=10;int find(int *p,int n,int x) //1{ int i ; // 2*(p+n)=x; //3while(*p+i!=x) //4i++; //5if(i!=n) //6return 1; //7elsereturn -1; //8}int main(){ int i,pos,x;int *p=new int [N];for(i=0;i<N;i++)*(p+i)=rand()%50;for(i=0;i<N;i++)cout<<*(p+i)<<'\t';cout<<"\ninput x: ";cin>>x;pos=find(p,N,x);if(pos!=-1)cout<<"index= "<<pos<<" ,value= "<<*(p+pos)<<endl;else cout<<"No find!"<<endl;}答案:(1) 2行语句改为int i=0;(2) 4行语句改为while(*(p+i)!=x);(3) 7行语句改为return i。四、编程题1.写一个函数,将一个n阶方阵转置。具体要求如下:(1)初始化一个矩阵A(5×5),元素值取自随机函数,并输出。(2)将其传递给函数,实现矩阵转置。(3)在主函数中输出转置后的矩阵。(提示:程序中可以使用C++库函数rand( ),其功能是产生一个随机数0~65535,其头文件[1]为stdlib.h)2.使用指针编写函数strcat(),实现两个字符串的首尾连接(将字符串str2接到str1的后面,str1最后面的‘\0’被取消)。3.编写从多个字符串中寻找最长串的函数4.编写一个程序,实现在命令行中以参数的形式接收两个整数,输出这两个整数的和。(提示:程序中可以使用C++库函数atoi(),其功能是将字符串转换成整型值,其头文件为stdlib.h)
知识点:1.掌握指针、地址、指针类型、空指针(NULL)等概念;2.掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算、指针变量比较运算和指针表达式;3.掌握指针与数组、函数、字符串等的联系;4.掌握引用参数的使用。一、选择题1.若有以下定义,则说法错误的是( )。int a=100,*p=a ;A.声明变量p,其中*表示p是一个指针变量B.变量p经初始化,获得变量a的地址C.变量p只可以指向一个整形变量D.变量p的值为1002.若有以下定义,则赋值正确的是( )。int a ,b , *p;float c, *q;A.p=c B.q=p C.p=NULL D.q=new int3.如果x是整型变量,则合法的形式是( )。A.&(x+5)B.*xC.*xD.*x4.若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。A.p[i]B.*(*(a+i))C.a[p-a]D.*(a[i])5.以下程序的输出结果是( )。#include <iostream>int main(){ int a[3]={10,15,20}; // a[0]=10,a[1]=15,a[2]=20int *p1=a,*p2=a[1]; // p1取a[0]地址,p2取a[1]地址*p1=*(p2-1)+5; // a[0]=15,a[1]=15,a[2]=20*(p1+1)=*p1-5; // a[0]=15,a[1]=10,a[2]=20cout<<a[1]<<endl;}A.5B.10C.15D.206.执行以下程序段[2]后,m的值为( )。int a[2][3]={{1,2,3},{4,5,6}};int m,*p=a[0][0];m=(*p)*(*(p+2))*(*(p+4));A.15B.14C.13D.127.以下程序的输出结果是( )。#include <iostream>void fun(int x,int y,int *cp,int *dp){ *cp=x+y; //*cp=30+50=80*dp=x-y; //*dp=30-50=-20}int main(){int a,b,c,d;a=30,b=50;fun(a,b,c,d);cout<<c<<","<<d<<endl;}A.50,30B.30,50C.80,-20D.80,208.要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确执行此功能的函数是( )。A.funa(int *x,int *y)B.funb(int x,int y){ int *p=new int ;{ int t;p=*x;t=x;*x=*y;x=y;*y=*p; y=t;}}C.func(int *x,int *y)D.fund(int x,int y){*x=*y;{*x=*x+*y;*y=*x;*y=*x-*y;}*x=*x-*y;}9.以下程序的输出结果是( )。#include <iostream>int main(){char *s="12134211";int v1=0,v2=0,v3=0,v4=0;for (int k=0;s[k];k++)switch(s[k]){default:v4++;case '1':v1++;case '3':v3++;case '2':v2++;}cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;}A.4,2,1,1B.4,9,3,1C.5,8,6,1D.8,8,8,810.若有如下语句:int **pp,*p,a=10,b=20;pp=p; //二级指针pp取一级指针p地址p=a; //一级指针p取变量a地址p=b; //一级指针p取变量b地址cout<<*p<<”,”<<**pp<<endl;则输出结果是()。A.10,20B.10,10C.20,10D.20,20
________2008-02-07 22:44
题目解答
答案
月儿の迷恋