第九周C++作业(part 1)
2014-05-03 09:11
357 查看
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
/********理解指针的几种表现形式****************/ #include <iostream> using namespace std; int main() { int a=10; int*p; p=&a; cout<<"a = "<<a<<endl; cout<<"p = "<<p<<endl; cout<<"&a = "<<&a<<endl; cout<<"*p = "<<*p<<endl; cout<<"&p = "<<&p<<endl; cout<<endl; *p=15; cout<<"a = "<<a<<endl; cout<<"p = "<<p<<endl; cout<<"&a = "<<&a<<endl; cout<<"*p = "<<*p<<endl; cout<<"&p = "<<&p<<endl; return 0; }
/********输入两个整数,由大到小的顺序输出****************/ #include <iostream> using namespace std; int main() { int a,b,tp; int *p=&a,*q=&b; cout<<"please input a and b"<<endl; cin>>a>>b; if(a<b) { tp=*p;*p=*q;*q=tp; } cout<<"从大到小排序后的数为: "<<a<<" "<<b<<endl; cout<<"从大到小排序后的数为: "<<*p<<" "<<*q<<endl; return 0; }
/********使用字符指针变量实现将字符串a赋值到字符串b中****************/ #include <iostream> using namespace std; int main() { char a[]="hello world",b[20],*p,*q; p=a,q=b; for(;*p!='\0';p++,q++) *q=*p; *q='\0'; cout<<"string1 is: "; cout<<a<<endl; cout<<"string2 is: "; cout<<b<<endl; return 0; }
/********通过改变指针变量的值输出下面的字符串**********/ #include <iostream> using namespace std; int main() { char *p = "student"; for(;*p!='\0';p++) cout<<p<<endl; return 0; }
/********用下标形式引用字符串中的字符**********/ #include <iostream> using namespace std; int main() { char *p ="student"; for(int i=0;p[i]!='\0';i++) cout<<p[i]; cout<<endl; return 0; }
/********利用指针相减的运算,计算字符串的长度**********/ #include <iostream> using namespace std; int main() { char s[50]; char *p; cout<<"please input a string: "; cin.get(s,50); p = s; for(; *p!='\0';) p++; cout<<"the length is :"<<p-s<<endl; //p指向最后一个地址,s指向第一个地址 return 0; }
/********多级指针举例**********/ #include <iostream> using namespace std; int main() { int i =5,*p,**pp; p=&i; pp=&p; cout<<&i<<'\t'<<i<<endl; cout<<&p<<'\t'<<p<<'\t'<<*p<<endl; cout<<&pp<<'\t'<<pp<<'\t'<<*pp<<'\t'<<**pp<<endl; return 0; }
/********指针数组举例**********/ #include <iostream> using namespace std; int main() { int a[5]={1,2,3,4,5}; int *p[5]={&a[0],&a[1],&a[2],&a[3],&a[4]}; for(int i = 0;i<5;i++) cout<<*p[i]<<'\t'; cout<<endl; return 0; }
/********用字符串初始化字符指针数组**********/ #include <iostream> using namespace std; int main() { char *weekname[]={"sunday","monday","tuesday","wednesday","thursday","friday","saturday"}; int i; while(1) { cout<<"please input week NO."<<endl; cin>>i; if(i<0||i>6) break; cout<<"week NO."<<i<<"-->"<<weekname[i]<<endl; } return 0; }
/********将若干字符串按英文字典排序(由小到大)**********/ #include <iostream> using namespace std; int main() { char *p[]={"Rebacca","Heaven","Michael Chang","Linda Tsai"}; char * temp; int i, j, n=4; for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if(strcmp(p[j],p[j+1])>0) { temp=p[j],p[j]=p[j+1],p[j+1]=temp; } for(i=0;i<n;i++) cout<<p[i]<<endl; return 0; }
/********用指针数组处理二维数组**********/ #include <iostream> using namespace std; int main() { int a[2][3],*p[2]; int i,j; p[0]=a[0]; p[1]=a[1]; for(i=0;i<2;i++) for(j=0;j<3;j++) a[i][j]=j+i; for(i=0;i<2;i++) for(j=0;j<3;j++) { cout<<"a["<<i<<"]["<<j<<"]:"; cout<<*(p[i]+j)<<endl; } return 0; }
/********利用二级指针处理二维数组**********/ #include <iostream> using namespace std; int main() { int a[2][3],*p[2],**pp; int i,j; p[0]=&a[0][0]; p[1]=&a[1][0]; pp=p; for(i=0;i<2;i++) for(j=0;j<3;j++) pp[i][j]=j+i; for(i=0;i<2;i++) for(j=0;j<3;j++) { cout<<"a["<<i<<"]["<<j<<"]:"; cout<<*(*(pp+i)+j)<<endl; } return 0; }
/********利用二级指针处理多个字符串**********/ #include <iostream> using namespace std; int main() { char *a[]={"Rebacca","Heaven","Michael Chang",NULL}; char **pp; pp=a; while(*pp!=NULL) //为什么不是**pp!=NULL cout<<*pp++<<endl; return 0; }
/********利用数组指针处理二维数组**********/ #include <iostream> #include <iomanip> using namespace std; int main() { int a[2][3] = {1,2,3,4,5,6}; int (*p)[3]; int i,j; p=a; for(i=0;i<2;i++) { for(j=0;j<3;j++) cout<<setw(3)<<(*p)[j]; p++; } cout<<endl; return 0; }
/********指针作为函数参数的实例**********/ #include <iostream> using namespace std; void display(int *,int *); int main() { int a=5,b=10; int *pa = &a; int *pb = &b; display(pa,pb); return 0; } void display(int *p1, int *p2) { cout<<"parameter 1 is "<<*p1<<endl; cout<<"parameter 2 is "<<*p2<<endl; }
/********通过指针变量调用函数**********/ #include <iostream> using namespace std; void display(int *,int *); int main() { int func(int a,int b); int(*pf)(int a,int b); //定义一个函数指针变量pf pf=func; //将函数func的入口地址赋给了函数指针pf,从而使函数指针指向了该函数 cout<<"please input two integers: "<<endl; int m,n; cin>>m>>n; int result=(*pf)(m,n); //等价于reslut=func(m,n) cout<<"the result is "<<result<<endl; return 0; } int func(int a, int b) { return a+b; }
/********设置一个函数process,在调用它的时候,每次实现不同的功能, 输入a和b两个数,第一次调用时找出a和b中大者,第二次调用找出a和b中 的小者,第三次调用时求a和b之和**********/ #include <iostream> using namespace std; int max(int x,int y) { int z; if(x>y)z=x; else z=y; return z; } int min(int x,int y) { int z; if(x<y)z=x; else z=y; return z; } int add(int x,int y) { int z; z=x+y; return z; } void process(int x,int y,int (*fun)(int,int)) { int result; result=(*fun)(x,y); cout<<result<<endl; } int main() { int a,b; cout<<"enter a and b: "<<endl; cin>>a>>b; cout<<"max = "; process(a,b,max); cout<<"min = "; process(a,b,min); cout<<"sum = "; process(a,b,add); return 0; }
相关文章推荐
- 第九周C++作业(part 2)
- 第九周C++作业报告六 (第八周四)
- 第六周C++作业(part 1)
- 第六周C++作业(part 2)
- c++作业第六章例题部分(第九周)
- 第九周c++作业
- C++作业4——循环结构程序设计
- C++课程作业 类别说明
- C++第二次作业(补)
- 第四次c++上机作业
- c++乘法表作业
- C++作业2
- The Best Questions for Would-be C++ Programmers, Part 1
- The C++ Programming Language 第六章 作业
- 补、C++第九次作业
- C++ 第二次上机实验(作业)
- C++补做作业2
- c++作业6
- 第九周作业
- C++作业4