武汉大学遥感院复试上机练习(节选)_第1页
武汉大学遥感院复试上机练习(节选)_第2页
武汉大学遥感院复试上机练习(节选)_第3页
武汉大学遥感院复试上机练习(节选)_第4页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现有一数组, 其元素值见文件test.txt ,要求通过编程的方法求出这组数中值最大的元素、值最小的元素和中值元素。结果通过编程的方法写入文本文件中输出。#include <iostream>#include <fstream>usingnamespace std;intmain()intnum;ifstreamfilein(if(!filein)cout <<"cannot open the file!"return0;filein >> num;int*data =new int num;for ( inti = 0; i

2、 < num; i+)filein >> datai;机试复习 2004testtest.txt");filein.close();intswap;for(inti = 0; i < num-1;i+)for(intj = i + 1; j < num; j+)if (datai>dataj)swap = datai; datai = dataj;dataj = swap;elsecontinue ;/ 冒泡法排序ofstream fileout(机试复习2004testtest2.txt");if(!fileout)cout <&

3、lt;"cannot open the file!"return0;fileout <<"max:" << datanum-1 << endl;fileout <<"min:"<< data0 << endl;fileout <<"medium:" << datanum/2 << endl;fileout.close();delete data,data=NULL;return1;编写调试程序从磁盘的数据文件

4、“SourceData.txt ”中读入 10000 个数据,先理解为125× 80的矩阵, 使用卷积矩阵1 进行卷积, 再理解为100×100 的矩阵, 使用卷积矩阵2 进行卷积。00100010012101511216210100121000100卷积矩阵1卷积矩阵2a11a12a1nb11b12b1ka21a22a2nb21b22b2 klkcijal ii , jkbijjii , jjii1 jj 122am1am2amnbl1bl 2blk例:由卷积模板B (3× 3)对 A 矩阵 (5×6)进行卷积得到结果矩阵Ca11a12a13a14a1

5、5a16a21a22a23a24a25a26a31a32a33a34a35a36b11b12b13a41a42a43a44a45a46b21b22b23a51a52a53a54a55a56b31b32b33BAC 中的元素 c33 为:c33a22 b11 a23 b12 a24 b13 a32 b21 a33 b22 a34 b23 a42 b31 a43 b32 a44 b33#include <iostream>#include <fstream>usingnamespace std;intmain()int*data =new int 10000;ifstrea

6、mfilein(机试复习 2005testSourceData.txt");if(!filein)cout <<"cannot open the file!"return0;for ( inti = 0; i < 10000; i+)filein >> datai;filein.close();intMat133 = 0, -1, 0, -1, 5, -1, 0, -1, 0 ;intMat255 = 0, 0, -1, 0, 0, 0, -1, -2, -1, 0, -1, -2, 16, -2, -1,0, -1, -2, -1,

7、 0, 0, 0, -1, 0, 0 ;intMatrix112580, MatrixNew112580 = 0 ;intMatrix2100100, MatrixNew2100100 = 0 ;intk = 0;for(inti = 0; i < 125; i+)for(intj = 0; j < 80; j+)Matrix1ij = datak;k+;k = 0;for ( inti = 0; i < 100; i+)for ( intj = 0; j < 100; j+)Matrix2ij = datak;k+;for ( inti = 1; i < 124

8、; i+)for ( intj = 1; j < 79; j+)for ( intm = -1; m <= 1; m+)for ( intn = -1; n <= 1; n+)MatrixNew1ij += Matrix1i + mj + n * Mat1m + 1n + 1;for ( inti = 2; i < 99; i+)for ( intj = 2; j < 99; j+)for ( intm = -2; m <= 2; m+)for ( intn = -2; n <= 2; n+)MatrixNew2ij += Matrix2i + mj

9、+ n * Mat2m + 2n + 2;ofstreamfileout(机试复习 2005testtest2.txt");if(!fileout)cout << "cannot open the file!"return0;for( inti = 1; i < 124; i+)for(intj = 1; j < 79; j+)fileout << MatrixNew1ij <<"" fileout << endl;fileout.close();delete data,data=NU

10、LL;return1;( 1)利用随机函数rand()生成 (0, 1)区间的 100 个均匀分布随机数;提示: 首先利用“ srand(unsigned)time(NULL)”语句设置产生随机数的开始点(需要包含 time.h 头文件);产生随机数的函数为 rand() ,为了将该随机数转换为( 0, 1)围的数,利用“ rand()*1.0/RAND_MAX ”可实现此目的。( 2)利用正态分布随机数的产生函数生成正态分布随机数。正态分布随机数生成函数如下:y2lnxcos2 x *0.3+1( 3)计算出100 个正态分布随机数y 的均值和方差,计算公式如下:nnnxxi /n ,22/

11、 n) - (xi / n)2( xii1i 1i1其中,自变量x 即为 100 个均匀分布的随机数。#include<iostream>#include<fstream>#include<time.h>#include<cmath>#definePI 3.1415926using namespace std;int main()double *data = new double 100;srand(unsigned )time(NULL);for( inti = 0; i < 100; i+)datai = rand()*1.0 /RAN

12、D_MAX;double *data2 =new double 100;for ( inti = 0; i < 100; i+)data2i = 1 + 0.3*cos(2 *PI*datai)*sqrt(-2 * log(datai);double average = 0, variance = 0;for ( inti = 0; i < 100; i+)average += datai;variance += datai * datai;average /= 100;variance = variance/100 - average*average;/ 输出略delete da

13、ta, data =NULL;delete data2, data2 =NULL;return1;题目:已知某多光谱遥感影像一个样区的数据。 分别计算该样区数据的均值向量和协方差矩阵。计算公式如下 :1 N1mi1)均值向量 :N kxikT0M mm. m12n2)协方差矩阵:11121n21222 n式 中 :1N1( xik mi )( x jk mj )xik 表ijN kn1n2nn示第 i0个波段样区的第k 个像元值, N 为样区像元总个数。multispectral.h中:#include <iostream>#include <vector>usingn

14、amespace std;/=/ 计算多光谱影像每个波段的均值/average:输出每个波段的均值/num: 每个波段的像元总数/band: 每个波段的波段数/data:多光谱影像的像素值/=void Average( double *average,intnum,intband,vector <int > *data);/=/ 说明略/=void Matrix( vector <double > *matrix,double *average,vector <int > *data,intband, intnum);Multispectral.cpp中:#

15、include"multispectral.h"voidAverage(double * average , intnum, int band,vector<int> * data )for(inti = 0; i <band; i+)average i = 0;for(inti = 0; i <num; i+)for( int j = 0; j <band; j+)average j += ( double ) data ji /num; voidMatrix(vector <double > * matrix, double *

16、 average , vector<int > * data , int band, int num)for(inti = 0; i <band; i+)for(intj = 0; j <band; j+)matrix i.push_back(0);for(inti = 0; i <band; i+)for(intj = 0; j <band; j+)for ( intk = 0; k <num; k+)matrix ij += (double ) data ik -( double ) data jk -average i)*average j) /

17、num;主函数中:#include <iostream>#include <fstream>#include <vector>#include "multispectral.h"usingnamespace std;intmain()intband, num;ifstreamfilein(机试复习 2006data.txt"); / 判断略filein >> band;filein >> num;vector <int > *data= new vector<int >band;i

18、ntcount;for(inti = 0; i < band; i+)for(intj = 0; j < num; j+)filein >> count;datai.push_back(count);filein.close();double *average =new double band;vector <double > *matrix =new vector <double >num;Average(average, num, band, data);Matrix(matrix, average, data, band, num);del

19、ete data, data =NULL;delete matrix, matrix =NULL;delete average, average =NULL;/ 输出略 return 1;外包矩形的概念如下图所示:(点落在部和边缘上)用编制的程序判断哪些点落在矩形外包部,输出落在外包的点号。#include <iostream>#include <fstream>#include <vector>usingnamespace std;structPOINTdouble x; double y;POINT() memset( this , 0,sizeof (

20、 POINT); ;intmain()int num;ifstreamfilein(机试复习 2007test.txt");if(!filein)cout << "cannot open the file!"return 0;filein >> num;vector <POINT> data;POINTpoint;for( inti = 0; i < num; i+)filein >> point.x; filein >> point.y;data.push_back(point);filein.c

21、lose();double xmax = data0.x, xmin = data0.x, ymax = data0.y, ymin = data0.y;for(inti = 1; i < num; i+)if(datai.x>xmax)xmax = datai.x;if(datai.x<xmin)xmin = datai.x;if(datai.y>ymax)ymax = datai.y;if(datai.y<ymin)ymin = datai.y;cout <<"部点有: " ;for(inti = 0; i < num;

22、i+)if(datai.x != xmax&&datai.x != xmin&&datai.y != ymax&&datai.y != ymin)cout << i + 1 <<" " ;cout << endl;return1;程序改:(将判断点放在文件中,以点名(字符),x, y 方式储存)structPOINTJudgedouble x;double y;char name10;POINTJudge()x = 0.0;y = 0.0;ifstreamfilein2(机试复习 2007

23、外包矩形if(!filein2)cout <<"cannot open the file!"return0;vector <POINTJudge> record;while (!filein2.eof()POINTJudgejugde;filein2 >> >>jugde.x>>jugde.y;if(jugde.x < xmax&&jugde.x > xmin&&jugde.y < ymax&&jugde.y > ymin)

24、record.push_back(jugde);filein2.close();cout <<" 部点有: " ;for ( inti = 0; i < record.size(); i+)欲判断点 .dat");cout << <<""<< recordi.x <<" "<< recordi.y <<" " <<endl ;cout << endl;题目:编程统计某

25、专业的一门课程考试成绩的 最高分、最低分、平均分以及考试成绩分布的 均方差。说明:均方差计算公式如下:X :考试成绩;N:成绩总个数#include <iostream>#include <cmath>#include <fstream>usingnamespace std;intmain()int num = 0;double max = 0, min = 100, sum1 = 0, sum2 = 0;ifstreamfilein(if(!filein)cout <<"cannot open the file!"retur

26、n1;filein >> num;double *data =new double num;for ( inti = 0; i < num; i+);新建文件夹2008年score.txt");filein >> datai;if(datai>max)max = datai;if(datai < min)min = datai;sum1 += datai;sum2 += datai * datai;filein.close();double average = 0.0, jun = 0.0;average = (double )sum1 /

27、num;jun = sqrt(double )sum2 / num - average*average);ofstream fp2(机试复习 2008result.txt");if(!fp2)cout <<"cannot open the file!"return0;fp2 <<" 最高分为 " << max << endl <<" 最低分为 " << min << endl;fp2 <<" 平均分为 " &l

28、t;< average << endl<<" 均方差为 " << jun << endl;fp2.close();delete data,data=NULL;return1;试题:文件 test.txt 中存贮了一串字符串, 请统计该文件中各字母出现的次数 (字母的大小写不加区分,如 a与A算同一字母,标点符号不统计) ,并按出现次数的多少由高到低进行排列输出 ,最后将字母及出现次数的排列写入 result.txt 文件中。#include <fstream>#include <iostream>

29、#include <vector>usingnamespace std;structalpint num; char d;alp() memset(this , 0,sizeof ( alp ); ;intmain()ifstreamfp(机试复习 2009source.txt"char data3000;/char *data =new char3000;intal26 = 0 ;intw = 0;);while (!fp.eof()dataw = fp.get();w+;fp.close();for( intj = 0; j < w; j+)if(dataj -

30、 65 >= 0 && dataj - 65 <= 25)aldataj - 65+;if(dataj - 97 >= 0 && dataj - 97 <= 25)aldataj - 97+;vector <alp > alph;alp me, ma;for( into = 0; o < 26; o+)me.d = 'A' + o; me.num = alo;alph.push_back(me);for ( inti = 0; i < 25; i+)for ( intj = i + 1; j <

31、; 26; j+)if (alphi.num>alphj.num)ma = alphi; alphi = alphj;alphj = ma;for ( into = 0; o < 26; o+)cout << alpho.d <<" "<< alpho.num << endl;/delete data,data=NULL; return 1;输出略题目:猫让 10 只老鼠站成一圈,它决定每数到第剩下的老鼠的位置n 只老鼠就吃掉,请输出最后<法一 >#include<stdio.h>#incl

32、ude<stdlib.h>void main()int i, j, id; int num, l;printf( " 请输入老鼠的个数: n" ); scanf( "%d", &num);printf( " 请输入间隔 ( 围:大于 0 且小于老鼠个数 ) :n" ); scanf( "%d", &l);int*p;p = ( int*)malloc(sizeof ( int )*num);for (i = 0; i<num - 1; i+)pi = i + 1;pi = 0;for (i = 0, id = num - 1; i<num; i+)for (j = 0; j<l - 1; j+)id = pid;/ 往下数一位pid = ppid;/ 往下数两

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论