C++实验13

xiaoxiao2021-02-28  114

一、指数输入数

#include<iostream> using namespace std; void main() { int a[10]; int *p=a; int i=0,sum=0; while(i<10) { cin>>*(p+i); sum=sum+*(p+i); i++; } for(i=0;i<10;i++) { cout<<*(p+i)<<'\t'; } cout<<endl; cout<<"sum="<<sum<<'\t'<<"ave="<<sum/10.0; }

二、指针求交集

#include<iostream> using namespace std; void creat2array(int *p1,int *p2) { cout<<"请输入第一个数组,-1结束:\n"; int n; for(int i=0;;i++) { cin>>n; if(n==-1) break; else *(p1+i)=n; }//该方法创建的数组末尾依然是0 cout<<"请输入第二个数组,-1结束:\n"; for(int i=0;;i++) { cin>>n; if(n==-1) break; else *(p2+i)=n; } } void findinter(int *p1,int *p2,int *p3) { int k=0; for(int i=0;i<10;i++) { if(*(p1+i)==0) break; for(int j=0;j<10;j++) { if(*(p2+j)==0) break; if(*(p1+i)==*(p2+j)) { *(p3+k++)=*(p2+j); break; } } } } void printsigle(int *p) { for(int i=0;i<10;i++) { if(!*(p+i)) break; cout<<*(p+i)<<'\t'; } cout<<endl; } void print(int *p1,int *p2,int *p3) { cout<<"a[]="; printsigle(p1); cout<<"b[]="; printsigle(p2); cout<<"c[]="; printsigle(p3); } void main() { int a[10]={0},b[10]={0},c[10]={0}; int *p1=a, *p2=b, *p3=c; creat2array(p1,p2); findinter(p1,p2,p3); printsigle(p3); //for循环用于除p3中重复的交集,如(1 1 1 3)和(1 3 5)按照上述计算会得到(1 1 1 3) for(int i=0;i<10&&*(p3+i);i++) //等于0时结束,否则死循环 for(int j=i+1;j<10;j++) { if(*(p3+i)==*(p3+j)) { for(int k=j;k<9;k++) *(p3+k)=*(p3+k+1); i=i-1; //退后i,防止(1 1 1 3)只变成(1 1 3) break; //跳出内层循环,也很重要 } } print(p1,p2,p3); }

三、回文

#include<iostream> #include<string> using namespace std; //string a; //char *p=&a[0]; //string 类用指针的方法 void main() { string b; char a[40]; cin.get(a,40); int n=strlen(a); cout<<n; char *p1,*p2; p1=&a[n-1]; p2=p1+1; while(true) { *p2++=*p1--; if(p1==a) { *p2=*p1; break; } } *(p2+1)='\0'; cout<<a; }
转载请注明原文地址: https://www.6miu.com/read-65518.html

最新回复(0)