7 数组 上期 上机 - 答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// // //}
cout<<"The number of even is:"<<evennum<<endl; cout<<"The number of odd is:"<<oddnum<<endl;
选做:
5. 实现模拟彩票的程序设计:随机产生 6 个在 1~32 之间的不同数,与用户输 入的数进行比较, 输它们相同数的个数。 注意保证输入的 6 个数也必须在 1~ 32 之间,且互不相同。编程时请用以下函数完成相应的功能:(去掉函数就 在数组一章考核,加入函数放在指针一章考核)
第七章 数组
上机作业
1. 编写一个函数判断一个整数是否是回文数。如果一个数从正的方向读和从反 的方向读的结果相同,则该数就是回文数。例如:66,676,12321 等。
#include<iostream> using namespace std; int palin(int k) { int i,j=0, a[10]; while(k>0) { a[j++]=k%10; k=k/10; } for(i=0;i<j;i++) { if(a[i]!=a[j-i-1]) return 0; } return 1; } void main(void) { int k,x; cout<<"请输入一个整数:"<<endl; cin>>x; k=palin(x); if(k) //等同于 if(k!=0) cout<<x<<"是回文。"<<'\n'; else cout<<x<<"不是回文。"<<'\n'; }
4. 利用全局变量并编写函数统计数组中奇数和偶数的个数。如果不允许使用全 局变量,定义函数完成上述功能。
//全局变量不利于代码的维护和保护,一般主张不使用全局变量,当使用函数完成统计功能时可通过 静态变量或引用做参数代替全局变量的功能。 #include<iostream> #include<iomanip> #include<cstdlib> #include<ctime> using namespace std; int count(int a[],int n,int& odd); //通过引用odd返回奇数个数,通过返回值返回偶数的个数 void main() { int n,i,a[100]; cout<<"数组元素的个数n: "<<endl; cin>>n; srand(time(0)); for(i=0;i<n;i++) a[i]=rand()%100;// 如果要产生三位数,如何修改?? cout<<"Array a is:"<<endl; for(i=0;i<n;i++) cout<<setw(4)<<a[i];
同学们还可以增加一些文字提示信息, 比如设置中奖规则: 按相同数 字的个数确定,当输完数字后显示中了几等奖。
# include <iostream> #include <iomanip> #include<ctime> #include<cstdlib> using namespace std; bool IsRepeat(int a[],int n,int x);//判断x是否与数组a中的数据相同 int *SameNum(int a[],int b[],int n,int &num);//判断a和b中有几个数据相同,并返回这些相同 的数 void main() { srand(time(0)); int nums[6]={0};
Βιβλιοθήκη Baidu
2. 编写一个函数实现数制的转换。在主函数中输入一个十进制数,输出相应的 十六进制数。要求用数组实现。
#include<iostream> using namespace std;
int DtoH(int n,int c[]) { int i; for( i=0; n>0; i++) { c[i]=n%16; n/=16; } return i-1; } void main( ) { char h[]="0123456789ABCDEF"; int c[20],n,i; cout<<"请输入一个十进制整数:"; cin>>n; i=DtoH(n,c); for(;i>=0;i--) cout << h[c[i]]; cout << endl; }
//以下代码可实现十进制向任意进制的转换
//以下代码可实现十进制向任意进制的转换 #include<iostream> using namespace std; void hex(int n,int r); void main(){ int n; cout<<"输入一个十进制数:"; cin>>n; hex(n,16);//调用函数将n转换成16进制 } void hex(int n,int r){ //n代表要转换的数,r代表要转换成的进制 int a[10],i=0; while(n>0){ a[i]=n%r; i++; n=n/r; } for(int j=i-1;j>=0;j--) if(a[j]>=10)
1)bool IsRepeat(int a[],int n,int x);判断 x 是否与数组 a 中的数据相同 2)int *SameNum(int a[],int b[],int n,int &num);判断 a 和 b 中有几个数 据相同,在函数中创建动态数组存放相同的数,通过参数 num 返回相同数据的 个数。 编程要求: 不得使用全局变量,否则不得分; 输出样例:
int i,j; bool repeat=false; nums[0]=1+rand()%32; for( i=1;i<6;i++){ do{//保证随机产生的数与前面的数不同 nums[i]=1+rand()%32; repeat=IsRepeat(nums,i,nums[i]); }while(repeat==true); } int inputs[6]={0}; int n=0; for( i=0;i<6;i++){ do{//保证输入的数与前面的数不同 do{//保证输入的数在1~32之间 cout<<"enter a different integer 1~32: "; cin>>inputs[i]; }while(inputs[i]<1||inputs[i]>32); repeat=IsRepeat(inputs,i,inputs[i]); }while(repeat==1); } int *same=SameNum(nums,inputs,6,n); cout<<"中 奖 号 码 是:"; for( i=0;i<6;i++) cout<<setw(5)<<nums[i]; cout<<endl; cout<<"您输入的号码是:"; for( i=0;i<6;i++) cout<<setw(5)<<inputs[i]; cout<<endl; cout<<"共有 "<<n<<" 个数字相同: "; for( i=0;i<n;i++) cout<<setw(5)<<same[i]; cout<<endl; delete[]same; } bool IsRepeat(int a[],int n,int x){//判断x是否与数组a中的数据相同 bool repeat=0; for(int j=0;j<n;j++) if(a[j]==x){ return 1; } return 0; }
int t=x;x=y;y=t; } void input(int a[],int n){//输入 for(int i=0;i<n;i++) a[i]=40+rand()%51; //40-90 } void show(int a[],int n){//输出 for(int i=0;i<n;i++) cout<<setw(5)<<a[i]; cout<<endl; } void bubllesort(int a[],int n){//排序 int i,j; for(i=0;i<n-1;i++){ for(j=0;j<n-1-i;j++){ if(a[j]>a[j+1]){ swap(a[j],a[j+1]); } } } } void selectsort(int a[],int n){//排序 int i,j,min; for(i=0;i<n-1;i++){ min=i; for(j=i+1;j<n;j++){ if(a[j]>a[min]) min=j; } if(min!=i) swap(a[min],a[i]); } } void inverse(int a[],int n){// 逆序 int i,j; for(i=0,j=n-1;i<j;i++,j--){ swap(a[i],a[j]); } } int find(int a[],int n,int x){// for(int i=0;i<n;i++) if(x==a[i]){ cout<<x<<" is in return i; position "<<i+1<<endl; 查找
cout<<endl; int odd=0; int even=count(a,n,odd); cout<<"The number of even is:"<<even<<endl; cout<<"The number of odd is:"<<odd<<endl; } int count(int a[],int n,int& odd){ //通过引用odd返回奇数个数,通过返回值返回偶数的个数 int even=0,i; for(i=0;i<n;i++) { if(a[i]%2==0) odd++; else even++; } return even; } //用全局变量完成 //#include<iostream> //using namespace std; //#include<iomanip> // //int oddnum=0,evennum=0; //void main() //{ // // // // // // // // // // // // // // // // // } else evennum++; int n,i,a[100]; cout<<"Enter n:"<<endl; cin>>n; cout<<"input array a:"<<endl; for(i=0;i<n;i++) cin>>a[i]; cout<<"Array a is:"<<endl; for(i=0;i<n;i++) cout<<setw(4)<<a[i]; cout<<endl; for(i=0;i<n;i++) { if(a[i]%2==0) oddnum++;
cout<<char(a[j]-10+'A'); //当余数大于9以后输出字符ABCDEF else cout<<a[j]; cout<<endl; }
3. 定义 6 个函数分别完成整型数组的输入、输出、冒泡排序、选择排序、查找、 逆序存放,然后在主函数中对这些函数进行测试。
#include<iostream> #include<iomanip> #include<cstdlib> #include<ctime> using namespace std; //#define N 5 const int N=5; void input(int a[],int n);//输入 void show(int a[],int n);//输出 void bubllesort(int a[],int n);//排序 void selectsort(int a[],int n);//排序 void inverse(int a[],int n);// 逆序 int find(int a[],int n,int x);// void swap(int& x,int& y); int main(){ int a[N]; srand(time(0)); input(a,N);//输入 show(a,N);//输出 inverse(a,N);//逆序 show(a,N); // bubllesort(a,N);//排序 selectsort(a,N);//排序 show(a,N);//查找*/ int x; cout<<"输入要查找的数:"; cin>>x; // } void swap(int& x,int &y){//by address find(a,N,x); binaryfind(a,N,x); 查找 int binaryfind(int a[],int n,int x);// 查找
} cout<<"not found\n"; return -1; } int binaryfind(int a[],int n,int x){// 按升序 int low=0,up=n-1,mid; while(low<=up){ mid=(low+up)/2; if(x==a[mid]) { cout<<x<<" is in position "<<mid+1<<endl; return mid+1; } else if(x<a[mid]) low=mid+1; else up=mid-1; } cout<<x <<" not found\n"; } ,查找
相关文档
最新文档