实验参考代码
- 格式:doc
- 大小:126.00 KB
- 文档页数:12
数据结构上机实验源代码栈的应用十进制数转换为八进制数,逆序输出所输入的数实验代码://stack.h,头文件class stack{public:stack();bool empty()const;bool full()const;error_code gettop(elementtype &x)const;error_code push(const elementtype x);error_code pop();private:int count;elementtype data[maxlen];};stack::stack(){count=0;}bool stack::empty()const{return count==0;}bool stack::full()const{return count==maxlen;}error_code stack::gettop(elementtype &x)const{if(empty())return underflow;else{x=data[count-1];return success;}}error_code stack::push(const elementtype x){if(full())return overflow;data[count]=x;count++;return success;}error_code stack::pop(){if(empty())return underflow;count--;return success;}//主程序#include<iostream.h>enum error_code{overflow,underflow,success};typedef int elementtype;const int maxlen=20;#include"stack.h"void read_write() //逆序输出所输入的数{stack s;int i;int n,x;cout<<"please input num int n:";cin>>n;for(i=1;i<=n;i++){cout<<"please input a num:";cin>>x;s.push(x);}while(!s.empty()){s.gettop(x);cout<<x<<" ";s.pop();}cout<<endl;}void Dec_to_Ocx(int n) //十进制转换为八进制{stack s1;int mod,x;while(n!=0){mod=n%8;s1.push(mod);n=n/8;}cout<<"the ocx of the dec is:";while(!s1.empty()){s1.gettop(x);cout<<x;s1.pop();}cout<<endl;}void main(){int n;// read_write();cout<<"please input a dec:";cin>>n;Dec_to_Ocx(n);}队列的应用打印n行杨辉三角实验代码://queue.hclass queue{public:queue(){count=0;front=rear=0;}bool empty(){return count==0;}bool full(){return count==maxlen-1;}error_code get_front(elementtype &x){if(empty())return underflow;x=data[(front+1)%maxlen];return success;}error_code append(const elementtype x){if(full())return overflow;rear=(rear+1)%maxlen;data[rear]=x;count++;return success;}error_code serve(){if(empty())return underflow;front=(front+1)%maxlen;count--;return success;}private:int count;int front;int rear;int data[maxlen];};//主程序#include<iostream.h>enum error_code{overflow,underflow,success};typedef int elementtype;const int maxlen=20;#include"queue.h"void out_number(int n) //打印前n行的杨辉三角{int s1,s2;int i;int j;int k;queue q;for(i=1;i<=(n-1)*2;i++)cout<<" ";cout<<"1 "<<endl;q.append(1);for(i=2;i<=n;i++){s1=0;for(k=1;k<=(n-i)*2;k++)cout<<" ";for(j=1;j<=i-1;j++){q.get_front(s2);q.serve();cout<<s1+s2<<" ";q.append(s1+s2);s1=s2;}cout<<"1 "<<endl;q.append(1);}}void main(){int n;cout<<"please input n:";cin>>n;out_number(n);}单链表实验实验目的:实验目的(1)理解线性表的链式存储结构。
C语言实验报告实验1—1:hello world程序:源代码:#include〈stdio.h>main(){printf(”hello world!\n”);system(”pause");}实验1—2:完成3个数据的输入、求和并输出计算结果的程序:源代码:#include<stdio。
h〉main(){int i,j,k,sum;scanf("%d%d%d",&i,&j,&k);sum=i+j+k;printf("sum=%d",sum);system(”pause”);实验1—3:在屏幕上输出如下图形:ABBBCCCCC源代码:#include<stdio。
h〉main(){printf(” A\n”);printf(" BBB\n”);printf(” CCCCC\n");system(”pause");}实验2—1:计算由键盘输入的任何两个双精度数据的平均值源代码:#include〈stdio.h〉main(){double a,b;scanf("%lf%lf”,&a,&b);printf("%。
1lf\n”,(a+b)/2);system(”pause”);}实验2—2:写一个输入7个数据的程序,把输入的数据代入a + b * (c – d ) / e * f – g 表达式进行运算源代码:#include<stdio.h〉main(){float a,b,c,d,e,f,g,x;scanf("%f%f%f%f%f%f%f”,&a,&b,&c,&d,&e,&f,&g);x=a + b *(c - d )/ e *f - g;printf(”x=%f”,x);system("pause");}实验2-3:编写一个C语言程序,测试下列各表达式:i,ji + 1 , j + 1i++ , j++++i ,++ji+++++j源代码:#include<stdio。
#! /bin/shp=0t=0echo "please input a number"read a //输入数字for s in $(seq 0 $a); //在0到输入数字之间遍历dok=0p=$swhile [ $p -ne 0 ];do //循环将数字前后变换,例如123变为321k=$(($k*10+$p%10))p=$(($p/10))doneif [ $k -eq "$s" ];then //若变换后与之前一致,则是回文数,输出,并将个数加1 echo $st=$(($t+1))fidoneecho "there are $t huiwenshu between 0 and $a"实验(1)结果#!/bin/shecho "please input a number"read ac="$a"for c in $(seq 0 $a); //在0与输入数字间遍历dob=$(($c%7))if [ $b -ne 0 ];then //判断是否为7的倍数,若是则直接判断下一个数字d="$c"while [ $d -ne 0 ];do //依次判断数字的每个位数是否为7e=$(($d%10))d=$(($d/10))if [ $e -eq 7 ];then //若有为7的位数则跳出循环breakfidoneif [ $e -ne 7 ];then //若该数字既不是7的倍数,也不包含7,则输出该数字echo "$c"fifidone实验(2)结果##include<stdio.h>void main(){int n1,n2,n3,y;printf("please enter the first number\n");scanf("%d",&n1);printf("please enter the second number\n"); scanf("%d",&n2);printf("please choose the method of operation\n"); printf("1.+\t");printf("2.-\t\n");printf("3.*\t");printf("4./\t");scanf("%d",&y);switch(y){case 1:n3=n1+n2;break;case 2:n3=n1-n2;break;case 3:n3=n1*n2;break;case 4:n3=n1/n2;break;}printf("%d\n",n3);}实验结果#!/usr/bin/pythonstr = raw_input("enter your input: ") //输入一串字母str1 = str.lower() //将输入字符串全部变为小写,并赋给str1 zimu = 'a'dic = {} //创建一个字典for zimu in 'abcdefghijklmnopqrstuvwxyz': //在a到z之间遍历t = str1.count(zimu) //记录该字母在字符串中出现的次数if t > 0: //将出现过的字母及其出现次数输入到字典中dic[zimu] = t;print dic //输出字典print "bye~~"实验结果:。
目录实验一WINDOWS进程初识 (2)实验二进程管理 (6)实验三进程同步的经典算法 (10)实验四存储管理 (14)试验五文件系统试验 (18)实验有关(参考)代码实验一WINDOWS进程初识1、实验目的(1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。
(2)掌握WINDOWS API的使用方法。
(3)编写测试程序,理解用户态运行和核心态运行。
2、程序清单清单1-1 一个简单的Windows控制台应用程序// hello项目# include <iostream>void main(){std::cout << “Hello, Win32 Consol Application” << std :: endl ;}清单1-2 核心态运行和用户态运行时间比计算// proclist项目# include <windows.h># include <tlhelp32.h># include <iostream.h>// 当在用户模式机内核模式下都提供所耗时间时,在内核模式下进行所耗时间的64位计算的帮助方法DWORD GetKernelModePercentage(const FILETIME& ftKernel,const FILETIME& ftUser){// 将FILETIME结构转化为64位整数ULONGLONG qwKernel=(((ULONGLONG)ftKernel.dwHighDateTime)<<32)+ftKernel.dwLowDateTime;ULONGLONG qwUser=(((ULONGLONG)ftUser.dwHighDateTime)<<32)+ftUser.dwLowDateTime;// 将消耗时间相加,然后计算消耗在内核模式下的时间百分比ULONGLONG qwTotal=qwKernel+qwUser;DWORD dwPct=(DWORD)(((ULONGLONG)100*qwKernel)/qwTotal);return(dwPct);}// 以下是将当前运行过程名和消耗在内核模式下的时间百分数都显示出来的应用程序void main(int argc,char *argv[]){if(argc<2){cout<<"请给出你要查询的程序名"<<endl;exit(0);}// 对当前系统中运行的过程拍取“快照”HANDLE hSnapshot=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,// 提取当前过程0);// 如果是当前过程,就将其忽略// 初始化过程入口PROCESSENTRY32 pe;::ZeroMemory(&pe,sizeof(pe));pe.dwSize=sizeof(pe);BOOL bMore=::Process32First(hSnapshot,&pe);BOOL found = FALSE;while(bMore){// 打开用于读取的过程if(!strcmp(pe.szExeFile,argv[1])){found = TRUE;HANDLE hProcess=::OpenProcess(PROCESS_QUERY_INFORMA TION,// 指明要得到信息FALSE,// 不必继承这一句柄pe.th32ProcessID);// 要打开的进程if (hProcess!=NULL){// 找出进程的时间FILETIME ftCreation,ftKernelMode,ftUserMode,ftExit;::GetProcessTimes(hProcess,// 所感兴趣的进程&ftCreation,// 进程的启动时间&ftExit,// 结束时间(如果有的话)&ftKernelMode,// 在内核模式下消耗的时间&ftUserMode);// 在用户模式下消耗的时间// 计算内核模式消耗的时间百分比DWORD dwPctKernel=::GetKernelModePercentage(ftKernelMode,// 在内核模式上消耗的时间ftUserMode);// 在用户模式下消耗的时间// 向用户显示进程的某些信息cout<< "process ID: " << pe.th32ProcessID<< ",EXE file:" << pe.szExeFile<< ",%d in Kernel mode: " << dwPctKernel << endl;// 消除句柄::CloseHandle(hProcess);}}// 转向下一个进程bMore=::Process32Next(hSnapshot,&pe);}if(found==FALSE){cout<<"当前系统没有这个可执行程序正在运行"<<endl;exit(0);}}清单1-3 核心态运行和用户态运行时间测试程序#include <stdio.h>main(){int i,j;while(1){for(i=0;i<1000;i++);for(j=1;j<1000;j++) printf(“enter kernel mode running.”);}}实验二进程管理1、实验目的1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows进程的“一生”。
面向对象程序设计实验指导书(适用:电子信息11级)彭召意陶立新编写计算机与通信学院2014.9目录实验一 C++基础的应用 (1)实验二类和对象的应用 (3)实验三类的构造函数、析构函数的应用 (4)实验四友员和运算符重载 (5)实验五类的继承与派生 (6)实验六类的多态性与虚函数 (7)附录:各实验的程序代码 (8)实验一 C++基础的应用(实验课时:2 实验性质:设计)实验名称: C++基础的应用实验目的: (1)进一步学习VC++6.0开发环境及程序调试方法。
(2)练习C++函数的定义及使用;(3)练习C++数组的定义及使用;(4)练习C++指针的定义及使用;(5)练习C++结构体的定义及使用;(6)练习多文件的程序的编译和运行方法;实验设备:(1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C++6.0。
实验内容: (1)熟悉Visual C++6.0编译系统的常用功能,特别是debug调试功能;(2)编程1:编写一个程序c1.cpp,用来求2个或3个整数的最大数。
要求:用重载函数的方法来求最大数;函数原型:int max( int a, int b) 和int max( int a, int b,int c)。
(3)编程2:编写一个程序c2.cpp,求:a!+ b! + c!的值。
要求:使用递归函数。
主程序和函数分开到两个源程序文件中,分别进行编译后,再运行;(4)编程3:有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号;(5)编程4:建立一个动态链表并进行输出和删除管理。
链表的每个节点为学生信息,包括:学号,姓名,性别,下一学生信息的指针。
程序的工作:(a)建立三个学生信息的节点,然后顺序输出该三个学生信息;(b)删除中间的节点,再顺序输出学生信息。
实验二Project201void Cproject201Dlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);const double PI=3.141592653;double AB;double dx,dy;dx=Xb-Xa;dy=Yb-Ya;AB=0.0;if (dx==0&&dy>0){AB=PI/2;//在Y轴正半轴MessageBox(_T("该方位角在Y轴正半轴"));}else if (dx==0&&dy<0){AB=3*PI/2;//在Y轴负半轴MessageBox(_T("该方位角在Y轴负半轴"));}else if (dx>0&&dy==0){AB=0;//在X轴正半轴MessageBox(_T("该方位角在X轴正半轴"));}else if (dx<0&&dy==0){AB=PI;//在X轴负半轴MessageBox(_T("该方位角在X轴负半轴"));}else if (dx>0&&dy>0){AB=atan2(dy,dx);//第一象限m=1;}else if (dx<0&&dy>0){AB=atan2(dy,dx);//第二象限AB=PI-AB;;m=2;}else if (dx<0&&dy>0){AB=atan2(dy,dx);//第三象限AB=PI+AB;m=3;}else if (dx>0&&dy<0){AB=atan2(dy,dx);//第四象限AB=2*PI-AB;m=4;}AB=AB*206265;//将弧度化成角度,并存在秒中AB_deg=floor(AB/60/60+0.00001);AB_min=floor((AB-AB_deg *60*60)/60+0.00001);AB_sec= AB-AB_deg *60*60-AB_min *60;//将秒数化成度分秒UpdateData(FALSE);//OnOK();}void Cproject201Dlg::OnBnClickedclear(){// TODO: 在此添加控件通知处理程序代码Xa=0;Ya=0;Xb=0;Yb=0;AB_deg=0;AB_min=0;AB_sec=0;m=0;UpdateData(FALSE);}void Cproject201Dlg::OnBnClickedExit(){// TODO: 在此添加控件通知处理程序代码OnCancel();}Project202void Cproject202Dlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);double a,m,n,N,e,b;m=1/298.257223563;a=6378137;b=a-a*m;double B1,B2,B3,L1,L2,L3;//将度分秒转换为度,其中B1、L1为度,B2、L2为分,B3、L3为秒B1=int(B);B2=int((B-B1)*100);B3=int(((B-B1)*100-B2)*100);B=B1+B2/60+B3/60/60;//B的输入度分秒转换为度分秒B=B/57.3;//B的度转换为弧度进行计算L1=int(L);L2=int((L-L1)*100);L3=int(((L-L1)*100-L2)*100);L=L1+L2/60+L3/60/60;//L的输入度分秒转换为度L=L/57.3;//L的度转换为弧度进行计算e=sqrt((a*a-b*b)/(a*a));n=1-e*e*sin(B)*sin(B);N=a/(sqrt(n));X=(N+H)*cos(B)*cos(L);Y=(N+H)*cos(B)*sin(L);Z=(N*(1-e*e)+H)*sin(B);UpdateData(FALSE);//OnOK();}//大地坐标转换为空间直角坐标void Cproject202Dlg::OnBnClickedOk3(){// TODO: 在此添加控件通知处理程序代码const double pi = 3.141592653;UpdateData(TRUE);double a,m,n,N,e ,B1,H1,f,b,dh;m=1/298.257223563;a=6378137;b=a-a*m;e=sqrt((a*a-b*b)/(a*a));double L_RAD;L_RAD = atan(Y/X);if( X == 0 && Y ==0){AfxMessageBox(_T("处在椭球中心")); }else if( X ==0 && Y > 0){L = 90;}else if( X ==0 && Y < 0){L = 270;}else if( X > 0 && Y == 0){L = 0;}else if( X > 0 && Y > 0){L = L_RAD/pi*180;}else if( X > 0 && Y < 0){L = (2*pi + L_RAD)/pi*180;}else if( X < 0 && Y == 0){L = 180;}else if( X < 0 && Y > 0){L = (pi + L_RAD)/pi*180;}else if( X <0 && Y < 0){L = (pi + L_RAD)/pi*180;}f=sqrt(X*X+Y*Y);B1=0;H1=0;do{n=1-e*e*((sin(B1))*(sin(B1)));N=a/(sqrt(n));B=atan(Z/(f*(1-e*e*N/(N+H1))));H=f/(cos(B1))-N;dh=H-H1;B1=B;H1=H;}while (fabs(dh)>=0.00001);B=57.3*B;double Bdeg,Bmin,Bsec;Bdeg=int(B+0.0000001);Bmin=int((B-Bdeg)*60+0.000000001);Bsec=((B-Bdeg)*60-Bmin)*60;B=Bdeg+Bmin/100+Bsec/10000;// B的度转换为度分秒double Ldeg,Lmin,Lsec;Ldeg=int(L+0.00000001);Lmin=int((L-Ldeg)*60+0.0000001);Lsec=((L-Ldeg)*60-Lmin)*60;L=Ldeg+Lmin/100+Lsec/10000;// L的度转换为度分秒UpdateData(FALSE);}void Cproject202Dlg::OnBnClickedOk2(){// TODO: 在此添加控件通知处理程序代码X=0;Y=0;Z=0;B=0;L=0;H=0;UpdateData(FALSE);}Project203void Cproject203Dlg::OnBnClickedOk(){UpdateData(TRUE);double A,B,C,z;z=f+g+C;if(z>=2.965&&z<=3.315){MessageBox(_T("危险圆"))//危险圆的判定}else{double A1,B1,C1,a,b,c;a=sqrt((xB-xC)*(xB-xC)+(yB-yC)*(yB-yC));//角A对应的边a b=sqrt((xA-xC)*(xA-xC)+(yA-yC)*(yA-yC));//角B对应的边b c=sqrt((xB-xC)*(xB-xC)+(yB-yC)*(yB-yC));//角C对应的边c A1=(b*b+c*c-a*a)/(2*b*c);//A1=cosAB1=(a*a+c*c-b*b)/(2*a*c);//B1=cosBC1=(a*a+b*b-c*c)/(2*a*b);//C1=cosCA=acos(A1);B=acos(B1);C=acos(C1);//计算三角形的三个内角A、B、Cdouble A2,B2,C2,f2,g2,h2;A2=tan(A);B2=tan(B);C2=tan(C);f2=tan(f);g2=tan(g);h2=tan(h);//计算三角形的三个内角和三个观测角的正切值double Pa,Pb,Pc;//定义三个已知点的权Pa=f2*A2/(f2-A2);Pb=g2*B2/(g2-B2);Pc=h2*C2/(h2-C2);double m,n,k;//将待定的计算公式分三部分m=Pa*xA+Pb*xB+Pc*xC;n=Pa*yA+Pb*yB+Pc*yC;k=Pa+Pb+Pc;xP=m/k;yP=n/k;UpdateData(FALSE);//OnOK();}}void Cproject203Dlg::OnBnClickedOk2(){xA=0;xB=0;xC=0;yA=0;yB=0;yC=0;f=0;g=0;h=0;xP=0;yP=0;UpdateData(FALSE);}void Cproject203Dlg::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码OnCancel();}实验三void Cproject301Dlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);int iline;//定义字符串的数量CString *pInput;//定义输入字符串指针pInput=SplitString(str_Input , 13 , iline);//13是Enter是二进制码存储分割好的字符串if (iline<=2){MessageBox(_T("多边形的边数不能少于三"));return ;}double *x=new double [iline];double *y=new double [iline];//定义存储X、Y的动态数组CString *strTMP=NULL;//定义中间指针变量for (int i=0;i<iline;i++){int n;strTMP=SplitString(pInput[i] , ',' , n);//分割开每一行的字符串x[i]=_tstof(strTMP[1]);//分别将输入的字符串以double的形式存储到xy数组中y[i]=_tstof(strTMP[2]);//把字符串转换为double型数据利用_tstof}//释放内存if (strTMP!=NULL){delete[] strTMP;strTMP=NULL;}//进行计算double p=0;for (int i=0;i<iline;i++){p=fabs(p+0.5*(x[i+1]+x[i])*(y[i+1]-y[i]));}p=p+0.5*(x[iline]+x[0])*(y[0]-y[iline]);if (x!=NULL){delete[] x;x=NULL;}if(y!=NULL){delete[] y;y=NULL;}str_Result.Format(_T("%s%u\r\n%s\r\n%f"),//.Format格式化输出 %s是字符串%u是整型\r\n换行%f是输出浮点型_T("多边形的边长数目:"),iline,_T("多边形的面积:"),p);UpdateData(FALSE);//OnOK();}CString * Cproject301Dlg::SplitString(CString str, char split, int& iSubStrs)//分割字符串,分隔符,返回的分隔的字符串数{//void CSingleLevelingDlg::OnBnClickedBtncompute()int iPos = 0; //分割符位置int iNums = 0; //分割符的总数CString strTemp = str;CString strRight;//先计算子字符串的数量while (iPos != -1){iPos = strTemp.Find(split);//找分隔符的位置if (iPos == -1){break;}strRight = strTemp.Mid(iPos + 1, str.GetLength());//Mid返回右边的字符串 strTemp = strRight;iNums++;}if (iNums == 0) //没有找到分割符{//子字符串数就是字符串本身iSubStrs = 1;return NULL;}//子字符串数组iSubStrs = iNums + 1; //子串的数量= 分割符数量+ 1CString* pStrSplit;pStrSplit = new CString[iSubStrs];strTemp = str;CString strLeft;for (int i = 0; i < iNums; i++){iPos = strTemp.Find(split);//左子串strLeft = strTemp.Left(iPos);//右子串strRight = strTemp.Mid(iPos + 1, strTemp.GetLength());strTemp = strRight;pStrSplit[i] = strLeft;}pStrSplit[iNums] = strTemp;return pStrSplit;}实验四#pragma onceenum AngleStyle{DEG,DMS,RAD};class CAngle{public:CAngle(double value=0,AngleStyle style=DMS);~CAngle(void);private:double dValue;//角度值AngleStyle nCurStyle;//当前角度值类型private://设置常成员函数的作用:.类成员不会被改变//2.可以被常类变量调用double Deg(double dDms) const;double Dms(double dDeg) const;public://获取指定的类型获取角度值,//由于返回的是dValue的引用,所以该值大小可以改变,即可以进行赋值double& operator() (AngleStyle style);//重载,获取指定的类型获取角度值,该值不可改变,const CAngle类型变量调用double operator() (AngleStyle style) const;//重载运算符+/-friend CAngle operator + (const CAngle& m1,const CAngle& m2);friend CAngle operator - (const CAngle& m1,const CAngle& m2);};角度类C++文件#include"StdAfx.h"#include"Angle.h"#include"math.h"const double EPSILON=1.0E-12;const double PI=4.0*atan(1.0);//重载构造函数,有缺省值CAngle::CAngle(double value,AngleStyle style){dValue=value;nCurStyle=style;}CAngle::~CAngle(void){}//重载()函数double& CAngle::operator() (AngleStyle style) //指定的类型获取角度值{//double dAngleValue;if(style==DMS){if(nCurStyle==DEG){dValue=Dms(dValue);}else if(nCurStyle==RAD){dValue=Dms(dValue*180.0/PI);}nCurStyle=DMS;}else if(style==DEG){if(nCurStyle==DMS){dValue=Deg(dValue);}else if(nCurStyle==RAD){dValue=dValue*180.0/PI;}nCurStyle=DEG;}else{if(nCurStyle==DMS){dValue=Deg(dValue)*PI/180;}else if(nCurStyle==DEG){dValue=dValue*PI/180;}nCurStyle=RAD;}return dValue;}//重载()函数,该函数是常函数,只能被常CAngle对象使用double CAngle::operator() (AngleStyle style) const//指定的类型获取角度值{double dAngleValue;if(style==DMS){if(nCurStyle==DEG){dAngleValue=Dms(dValue);}else if(nCurStyle==RAD){dAngleValue=Dms(dValue*180.0/PI);}else{dAngleValue=dValue;}}else if(style==DEG){if(nCurStyle==DMS){dAngleValue=Deg(dValue);}else if(nCurStyle==RAD){dAngleValue=dValue*180.0/PI;}else{dAngleValue=dValue;}}else{if(nCurStyle==DMS){dAngleValue=Deg(dValue)*PI/180;}else if(nCurStyle==DEG){dAngleValue=dValue*PI/180;}else{dAngleValue=dValue;}}return dAngleValue;}//私有成员,度分秒向十进制度转换double CAngle::Deg(double dDms) const{int iDeg,iMin;double dSec;iDeg = int(dDms + EPSILON);//度//加一个很小的数,以防止取整时的出错iMin = int((dDms - iDeg) * 100+ EPSILON);//分dSec = ((dDms - iDeg) * 100 - iMin) * 100 ;//秒return iDeg + (double)iMin / 60 + dSec / 3600;}//私有成员,十进制度向度分秒转换double CAngle::Dms(double dDeg) const{int iDeg,iMin;double dSec;double dTmp;iDeg = int(dDeg + EPSILON);//整数部分度dTmp = (dDeg - iDeg) * 60;//小数部分转换成分iMin = int(dTmp+ EPSILON);//取分的整数部分dSec = (dTmp - iMin) * 60;//截取秒return iDeg + (double)iMin / 100 + dSec / 10000;}//友元重载+函数CAngle operator + (const CAngle& m1,const CAngle& m2){CAngle addAngle(0,RAD);addAngle(RAD)=m1(RAD)+m2(RAD);return addAngle;}//友元重载-函数CAngle operator - (const CAngle& m1,const CAngle& m2){CAngle subAngle(0,DMS);subAngle(DMS)=m1(DMS)-m2(DMS);return subAngle;}主程序代码void CAngleClassDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码//定义类的对象a1,a2和a3,并用构造函数为a1,a2初始化CAngle a1(60.5623,DMS),a2(90.9325,DEG),a3;a3=a2+a1;//用重载后的加号完成对象间的加法运算//调用OutputAngleBox函数显示结果OutputAngleBox(a1(DEG));OutputAngleBox(a3);double s;s=sin(a2(RAD));//用重载后的括号将a2转换为弧度形式并参与三角函数运算OutputAngleBox(s);}void CAngleClassDlg::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码OnCancel();}//用于显示结果的函数void CAngleClassDlg::OutputAngleBox(CAngle a){CString strOutput;CString strTmp;strTmp.Format(_T("%.5f "),a);strOutput+=strTmp;MessageBox(strOutput);}void CAngleClassDlg::OutputBox(double a){CString strOutput;CString strTmp;strTmp.Format(_T("%.5f "),a);strOutput+=strTmp;MessageBox(strOutput);}实验五#define POINT struct pointPOINT{int num;CString coding;double X;double Y;double Z;};//打开文件并整理文件void CFileDlg::OnBnClickedOpenfile(){CFileDialog dlgFile(TRUE,_T("txt"),NULL,OFN_ALLOWMULTISELECT|OFN_EXPLORER,_T("(文本文件)|*.dat"));if(dlgFile.DoModal()==IDCANCEL) return;CString strFileName=dlgFile.GetPathName();setlocale(LC_ALL,"");CStdioFile sf;if(!sf.Open(strFileName, CFile::modeRead)) return;CString strLine;strOriData.Empty();BOOL bEOF=sf.ReadString(strLine);while(bEOF){strOriData+=strLine;bEOF=sf.ReadString(strLine);if(bEOF) strOriData+=_T("\r\n");}sf.Close();// TODO: 在此添加控件通知处理程序代码int iLine;//分行并存入字符串数组CString *pstrLine=SplitString(strOriData,'\n',iLine);int iTotalPoint; //总点数CString *strTmp=NULL;int n;iTotalPoint = _ttoi(pstrLine[0]); //第一行为总点数if(iTotalPoint!=iLine-1)MessageBox(_T("数据格式有误"));POINT *pPoint=new POINT[iTotalPoint]; //结构体指针,指向点结构体//逐行用Split函数分离,给点结构体赋值for(int i=0;i<iTotalPoint;i++){strTmp = SplitString(pstrLine[i+1], ',',n);pPoint[i].num = _ttoi(strTmp[0]);pPoint[i].coding= strTmp[1];pPoint[i].X = _tstof(strTmp[2]);pPoint[i].Y = _tstof(strTmp[3]);pPoint[i].Z = _tstof(strTmp[4]);if(strTmp!=NULL)//释放内存{delete[] strTmp;strTmp=NULL;}}if(strTmp!=NULL)//释放内存{delete[] strTmp;strTmp=NULL;}//删除重复点for(int i=0;i<iTotalPoint;i++){for(int j=i+1;j<iTotalPoint;j++){if(pPoint[i].num ==pPoint[j].num){for(int k=j;k<iTotalPoint-1;k++){pPoint[k]=pPoint[k+1];}iTotalPoint--;}}}//按点号的升序排列for(int i=0;i<iTotalPoint;i++){for(int j=i+1;j<iTotalPoint;j++){if(pPoint[i].num>pPoint[j].num){POINT t=pPoint[i];pPoint[i]=pPoint[j];pPoint[j]=t;} }}//输出调整后的数据strTidyData.Format(_T("%d\r\n"),iTotalPoint);CString strOutput;for(int i=0;i<iTotalPoint;i++){strOutput.Format(_T("%d,%s,%f,%f,%f\r\n"),pPoint[i]);strTidyData=strTidyData+strOutput;}UpdateData(FALSE);//释放内存if(pPoint!=NULL){delete[] pPoint;pPoint=NULL;}}void CFileDlg::OnBnClickedSavefile(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CFileDialog dlgFile(FALSE,_T("txt"),NULL,OFN_EXPLORER,_T("(文本文件)|*.dat"));if(dlgFile.DoModal()==IDCANCEL) return;CString strFileName=dlgFile.GetPathName();setlocale(LC_ALL,"");CStdioFile sf;if(!sf.Open(strFileName, CFile::modeCreate|CFile::modeWrite)) return;sf.WriteString(strTidyData);sf.Close();}void CFileDlg::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码OnCancel();}实验六#pragma once#define HDEFOR struct deforHDEFOR//变形监测结构体{double X;double Y;double H;};class CGraph{public:CGraph(void);~CGraph(void);private:HDEFOR* pData;//保存变形监测数据的数组int iDeforCount;//变形监测时期数public:int SetSize(int n);//设置时期数并改变监测数据大小bool SetPoint(int pos,double X,double Y,double H);//设置某一时期监测点数据void Draw(CDC* pDC, CRect& rect);};CGraph类的cpp文件Graph.cpp代码#include"StdAfx.h"#include"Graph.h"CGraph::CGraph(void){pData=NULL;iDeforCount=0;}CGraph::~CGraph(void){if(pData!=NULL){delete[] pData;pData=NULL;}}int CGraph::SetSize(int n){pData=new HDEFOR[n];iDeforCount=n;return iDeforCount;}// //设置第pos顶点(从开始)数据bool CGraph::SetPoint(int pos,double X,double Y,double H){if(pos>=iDeforCount){return false;}pData[pos].X=X;pData[pos].Y=Y;pData[pos].H=H;return true;}void CGraph::Draw(CDC* pDC, CRect& rect){if(iDeforCount==0) return;CPen pen(PS_SOLID,2,RGB(0,0,0));CPen* pOldPen=pDC->SelectObject(&pen);pDC->Rectangle(rect);//根据客户区的顶点设置坐标原点和终点int dOrgX,dOrgY;int dEndX,dEndY;dOrgX=rect.left+int(0.2*rect.Width());dOrgY=rect.bottom-int(0.2*rect.Height());dEndX=rect.right-int(0.2*rect.Width());dEndY=rect.top+int(0.2*rect.Height());pDC->MoveTo(dOrgX,dOrgY);pDC->LineTo(dEndX,dOrgY);//横轴pDC->MoveTo(dOrgX,dOrgY);pDC->LineTo(dOrgX,dEndY);//纵轴int dx,dy;dy=(dOrgY-dEndY)/3;//取Y轴总长度的/3dx=(dEndX-dOrgX)/iDeforCount;//取X轴的时期数分之一为刻度//绘制三条水平线for(int i=0;i<3;i++){pDC->MoveTo(dOrgX,dEndY+i*dy);pDC->LineTo(dEndX,dEndY+i*dy);}pDC->SelectObject(pOldPen);LOGFONT lf;memset(&lf, 0, sizeof(LOGFONT));lf.lfHeight = 16;_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("宋体"), 4);CFont font;//创建字体font.CreateFontIndirect(&lf);CFont* pOldFont=pDC->SelectObject(&font);CString str;//绘制时间刻度for(int i=1;i<=iDeforCount;i++){pDC->MoveTo(dx*i+dOrgX,dOrgY);pDC->LineTo(dx*i+dOrgX,dOrgY - 5);str.Format(_T("%d"),i);if(i!=0){pDC->TextOut(dx*i+dOrgX,dOrgY + 10,str);}}pDC->TextOut(dOrgX+400,dOrgY+30,_T("时间"));pDC->TextOut(dOrgX+300,dEndY-50,_T("蓝:X方向绿:Y方向红:H方向"));pDC->SelectObject(pOldFont);font.DeleteObject();//绘制坐标X,Y,H刻度CFont fontA;//创建坐标字体fontA.CreateFontIndirect(&lf);//CFont* pOldFont=pDC->SelectObject(&fontA); pDC->TextOut(dOrgX-60,dEndY-30,_T("X"),1);pDC->TextOut(dOrgX-120,dEndY-30,_T("Y"),1);pDC->TextOut(dOrgX-180,dEndY-30,_T("H"),1);pDC->SelectObject(pOldFont);for(int i=0;i<=3;i++){str.Format(_T("%.3f"),32.585-0.005*i);pDC->TextOut(dOrgX-60,dEndY+i*dy,str);}for(int i=0;i<=3;i++){str.Format(_T("%.3f"),-52.78-0.005*i);pDC->TextOut(dOrgX-120,dEndY+i*dy,str);}for(int i=0;i<=3;i++){str.Format(_T("%.3f"),0.145-0.005*i);pDC->TextOut(dOrgX-180,dEndY+i*dy,str);}fontA.DeleteObject();CPen penBlue;penBlue.CreatePen( PS_SOLID, 2, RGB(0,0,255));pDC->SelectObject(penBlue);POINT ptX[256]; //定义点结构体变量for(int i=0;i<iDeforCount;i++) //实际坐标与屏幕坐标的转化{ptX[i].x=dOrgX+i*dx;ptX[i].y=dOrgY-int((pData[i].X-32.57)/0.015*3*dy);}pDC->Polyline(ptX,iDeforCount); //绘制X方向变形曲线// 恢复原来绘图属性pDC->SelectObject(pOldPen);penBlue.DeleteObject();//创建绿色画笔绘制Y方向变形曲线CPen penGreen;penGreen.CreatePen( PS_SOLID, 2, RGB(0,255,0));pDC->SelectObject(penGreen);POINT ptY[256];for(int i=0;i<iDeforCount;i++){ptY[i].x=dOrgX+i*dx;ptY[i].y=dOrgY-int((pData[i].Y+52.795)/0.015*3*dy);}pDC->Polyline(ptY,iDeforCount);//绘制Y方向变形曲线// 恢复原来绘图属性pDC->SelectObject(pOldPen);penGreen.DeleteObject();//创建红色画笔绘制H方向变形曲线CPen penRed;penRed.CreatePen( PS_SOLID, 2, RGB(255,0,0));pDC->SelectObject(penRed);POINT ptH[256];for(int i=0;i<iDeforCount;i++){ptH[i].x=dOrgX+i*dx;ptH[i].y=dOrgY-int((pData[i].H-0.13)/0.015*3*dy);}pDC->Polyline(ptH,iDeforCount);//绘制H方向变形曲线// 恢复原来绘图属性pDC->SelectObject(pOldPen);penRed.DeleteObject();}DeforGraphView.cpp代码OnDraw函数void CDeforGraphView::OnDraw(CDC* pDC){CDeforGraphDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;CRect rect;//定义客户区GetClientRect(&rect);//获得客户区大小m_graph.Draw(pDC,rect);//调用CGraph类的成员函数绘制曲线}打开文件函数void CDeforGraphView::OnFileOpen(){CFileDialog dlgFile(TRUE,_T("txt"),NULL,OFN_EXPLORER,_T("(文本文件)|*.dat")); //创建打开文件对话框if(dlgFile.DoModal()==IDCANCEL) return;//如果选择取消按钮,则退出CString strFileName=dlgFile.GetPathName();//获取选择的文件的名称CStdioFile sf; //创建文件对象//以读的形式打开文件,如果打开失败则返回if(!sf.Open(strFileName, CFile::modeRead)) return;CString strLine;BOOL bEOF=sf.ReadString(strLine);//读取第一行if(!bEOF) //如果读取失败,则说明数据格式有问题,退出{MessageBox(_T("数据有误,请检查数据文件!"));return;}int iDeforCount;//观测时期数iDeforCount= _ttoi((strLine)); //把读取的第一行字符串转换为数值型m_graph.SetSize(iDeforCount);int i=0,n=0;while(bEOF)//开始读取变形数据{bEOF=sf.ReadString(strLine);CString *pstrData=SplitString(strLine,'\t',n);if(pstrData==NULL) continue;//如果是空行则下面不执行m_graph.SetPoint(i,_tstof(pstrData[0]),_tstof(pstrData[1]),_tstof(pstrData[2]));//设置变形监测点数据i++;delete[] pstrData;//释放分割字符串得到的字符串数组内存pstrData=NULL;}sf.Close();//关闭文件Invalidate(true);}实验七#pragma once//定义CGaussProjection类,实现高速投影换算class CGaussProjection{public:CGaussProjection(void);~CGaussProjection(void);private:double a;//定义私有成员椭球长半轴adouble alpha;//定义私有成员椭球扁率alphaint L0;//定义私有成员中央子午线经度L0public:void Setab(int selection);//定义Setab函数,实现设置椭球参数void SetL0(int _L0);//定义SetL0函数,设置中央子午线经度L0的值//坐标正算void BL_to_xy(double B,double L,double &x,double &y);//坐标反算void xy_to_BL(double x,double y,double &B,double &L);protected://弧度向度分秒转换函数double Rad_to_Dms(const double &dRad);//度分秒向弧度转换double Dms_to_Rad(const double &dDms);};文件二GaussProjection.cpp:#include"StdAfx.h"#include"GaussProjection.h"#include"math.h"CGaussProjection::CGaussProjection(void){}CGaussProjection::~CGaussProjection(void){}//定义Setab函数,实现设置椭球参数void CGaussProjection::Setab(int selection)//通过selection的值,选择椭球类型{if(selection==1)//当selection为时,设置椭球参数为BJ54{a=6378245;alpha=1/298.3;}else if(selection==2)//当selection为时,设置椭球参数为XA80{a = 6378140;alpha = 1/298.257;}else if(selection==3)//当selection为时,设置椭球参数为WGS84{a = 6378137;alpha = 1 / 298.257223563;}}//定义SetL0函数,设置中央子午线经度L0的值void CGaussProjection::SetL0(int _L0){L0=_L0;}//坐标正算,由已知的B,L,计算x,yvoid CGaussProjection::BL_to_xy(double B,double L,double &x,double &y){const double b=(1-alpha)*a;const double e=sqrt(a*a-b*b)/a;//定义椭球第一偏心率const double e2=sqrt(a*a-b*b)/b;//定义椭球第二偏心率const double PI=4.0*atan(1.0);//定义π值const double rho=180*60*60/PI;//计算弧秒值ρ"double B_rad,t,eta,l2,a0,a2,a4,a6,a8,X;//定义各个参数double N;//定义卯酉圈曲率半径NB_rad=Dms_to_Rad(B);//将B由度分秒转换为弧度形式N=a/sqrt(1-e*e*sin(B_rad)*sin(B_rad));//由B计算Nt=tan(B_rad);//由B算teta=sqrt(e2*cos(B_rad)*e2*cos(B_rad));//计算ηa0=a*(1-e*e)*(1+3*e*e/4+45*pow(e,4)/64+350*pow(e,6)/512+11025*pow(e,8)/16384);a2=-a*(1-e*e)*(3*e*e/4+60*pow(e,4)/64+525*pow(e,6)/512+17640*pow(e,8)/16384)/2;a4=a*(1-e*e)*(15*pow(e,4)/64+210*pow(e,6)/512+8820*pow(e,8)/16384)/4;a6=-a*(1-e*e)*(35*pow(e,6)/512+2520*pow(e,8)/16384)/6;a8=a*(1-e*e)*(315*pow(e,8)/16384)/8;//计算a0,a2,a4,a6,a8X=a0*B_rad+a2*sin(2*B_rad)+a4*sin(4*B_rad)+a6*sin(6*B_rad)+a8*sin(8*B_rad);//计算Xdouble L_deg;L_deg=Dms_to_Rad(L)*180/PI;//将L度分秒转换为度形式l2=(L_deg-L0)*60*60;//计算l",单位为秒//计算xx=X+N*sin(B_rad)*cos(B_rad)*l2*l2/(2*rho*rho)+N*sin(B_rad)*pow(cos(B_rad),3)*(5-t*t+9*e ta*eta+pow(eta,4))*pow(l2,4)/(24*rho*rho*rho*rho)+N*sin(B_rad)*pow(cos(B_rad),5)*(61-58*t*t+ pow(t,4))*pow(l2,6)/(720*pow(rho,6));double aaa,bbb,ccc;//定义aaa,bbb,ccc,用来检查计算y时,哪一步公式输错aaa=N*cos(B_rad)*l2/rho;bbb=N*pow(cos(B_rad),3)*(1-t*t+eta*eta)*pow(l2,3)/(6*pow(rho,3));ccc=N*pow(cos(B_rad),5)*(5-18*t*t+pow(t,4)+14*eta*eta-58*eta*eta*t*t)*pow(l2,5)/(120*po w(rho,5));//计算yy=500000+N*cos(B_rad)*l2/rho + N*pow(cos(B_rad),3)*(1-t*t+eta*eta)*pow(l2,3)/(6*pow(rho,3)) + N*pow(cos(B_rad),5)*(5-18*t*t+pow(t,4)+14*eta*eta-58*eta*eta*t*t)*pow(l2,5)/(120*pow(rho,5)) ;}//坐标反算,由已知的x,y,计算B,Lvoid CGaussProjection::xy_to_BL(double x,double y,double &B,double &L){const double b=(1-alpha)*a ;//定义短半径bconst double e=sqrt(a*a-b*b)/a;//定义椭球偏心率const double e2=sqrt(a*a-b*b)/b;//定义椭球第二偏心率const double PI=4.0*atan(1.0);//定义π值const double rho=180*60*60/PI;//计算弧秒值ρ"double tf,eta,Bf_rad,B0_rad,Nf,Mf,A0,K0,K2,K4,K6,l;//定义各个参数y=y-500000;//将y减去后再参与坐标转换A0=1+3*e*e/4+45*pow(e,4)/64+350*pow(e,6)/512+11025*pow(e,8)/16384;B0_rad=x/(a*(1-e*e)*A0);K0=(3*e*e/4+45*pow(e,4)/64+350*pow(e,6)/512+11025*pow(e,8)/16384)/2;K2=-(63*pow(e,4)/64+1108*pow(e,6)/512+58239*pow(e,8)/16384)/3;K4=(604*pow(e,6)/512+68484*pow(e,8)/16384)/3;K6=-(26328*pow(e,8)/16384)/3;Bf_rad=B0_rad+ sin(2*B0_rad) * (K0+sin(B0_rad)*sin(B0_rad)*(K2+sin(B0_rad)*sin(B0_rad))*(K4+K6*sin(B0_rad)*sin(B0_rad)));tf=tan(Bf_rad);eta=e2*cos(Bf_rad);Nf=a/sqrt(1-e*e*sin(Bf_rad)*sin(Bf_rad));Mf=Nf/(1+e2*cos(Bf_rad)*e2*cos(Bf_rad));//计算各个参数//计算BB=Bf_rad- tf*y*y/(2*Mf*Nf) + tf*(5+3*tf*tf+eta*eta-9*eta*eta*tf*tf)*pow(y,4)/(24*Mf*Nf*Nf*Nf) - tf*(61+90*tf*tf+45*pow(tf,4))*pow(y,6)/(720*Mf*pow(Nf,5));//计算l,单位为弧度l=y/(Nf*cos(Bf_rad))-(1+2*tf*tf+eta*eta)*y*y*y/(6*pow(Nf,3)*cos(Bf_rad)) + (5+28*tf*tf+24*pow(tf,4)+6*eta*eta+8*eta*eta*tf*tf)*pow(y,5)/(120*pow(Nf,5)*cos(Bf_rad));B=Rad_to_Dms(B);//将B转换为弧度形式double L0_rad;L0_rad=L0*PI/180;//计算中央子午线L0的弧度值L=Rad_to_Dms(l+L0_rad);//计算L,并将L转换为度分秒形式}//弧度向度分秒转换函数double CGaussProjection::Rad_to_Dms(const double &dRad){const double EPSILON=1.0E-12;const double PI=4.0*atan(1.0);int iDeg,iMin;//定义度、分double dSec;//定义秒double dTmp;//定义临时变量double dDeg;dDeg=dRad*180/PI;iDeg = int(dDeg + EPSILON);//整数部分度,加一个很小的数,以防止取整时的出错dTmp = (dDeg - iDeg) * 60;//小数部分转换成分iMin = int(dTmp+ EPSILON);//取分的整数部分dSec = (dTmp - iMin) * 60;//截取秒return iDeg + (double)iMin / 100 + dSec / 10000;//返回函数值}//度分秒向弧度转换double CGaussProjection::Dms_to_Rad(const double &dDms){const double EPSILON=1.0E-12;const double PI=4.0*atan(1.0);int iDeg,iMin;//定义度、分double dSec;//定义秒double dDeg;//定义度iDeg = int(dDms + EPSILON);//度//加一个很小的数,以防止取整时的出错iMin = int((dDms - iDeg) * 100+ EPSILON);//分dSec = ((dDms - iDeg) * 100 - iMin) * 100 ;//秒dDeg=iDeg + (double)iMin / 60 + dSec / 3600;return dDeg*PI/180;//将度转化为弧度,返回函数值}文件三wx7Dlg.cpp// wx7Dlg.cpp : 实现文件//#include"stdafx.h"#include"wx7.h"#include"wx7Dlg.h"#include"GaussProjection.h"#include<math.h>//坐标正算void Cwx7Dlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码//OnOK();UpdateData(true);CGaussProjection GP;//定义CGaussProjection类的一个对象GPGP.Setab(selection);//通过GP成员函数Setab,设置selection的值,选择椭球参数GP.SetL0(L0);//设置中央子午线的经度值GP.BL_to_xy(B,L,x,y);//由坐标正算函数计算x,yUpdateData(false);}//坐标反算void Cwx7Dlg::OnBnClickedOk2(){// TODO: 在此添加控件通知处理程序代码UpdateData(true);CGaussProjection GP2;//定义CGaussProjection类的一个对象GP2GP2.Setab(selection);//通过selection的值,选择椭球参数GP2.SetL0(L0);//设置中央子午线的经度值GP2.xy_to_BL(x,y,B,L);//由坐标反算函数计算B,LUpdateData(false);}实验八#pragma once//定义CLevelPoint类,即水准点类//主要其成员为strID(点号),H(高程)class CLevelPoint{public://构造函数,初始化类的成员CLevelPoint(void){strID=_T("");H=0;flag=0;}~CLevelPoint(void){};public:CString strID;//点号double H;//高程int flag;//利用flag标记该点高程是否已知,flag为则为已知,flag为则未知,};//定义CdHObs类,即高差观测值类//主要其成员为CLevelPoint类型的指针*lpStart(起点),*lpEnd(终点),//dH(高差观测值),S(路线长度)class CdHObs{public://构造函数,初始化类的成员dH及SCdHObs(void){dH=0;S=0;};~CdHObs(void){};public:CLevelPoint *lpStart, *lpEnd;//起点和终点double dH;//高差观测值double S;//路线长度};文件二LevelAdjust.h:#pragma once#include"LevelPoint.h"#include"Matrix.h"//定义CLevelAdjust类,实现水准网平差class CLevelAdjust{public:CLevelAdjust(void);~CLevelAdjust(void);private:CLevelPoint* m_pUnknownPoint;//未知水准点数组int m_iUnknownPointCount; //未知水准点个数CLevelPoint* m_pKnownPoint; //已知点水准数组int m_iKnownPointCount; //已知水准点个数CdHObs* m_pdHObs; //高差观测值数组int m_idHObsCount; //高差观测值个数private:CLevelPoint* SearchKnownPointUsingID(CString strID);//根据点号查找已知点,返回该点的指针CLevelPoint* SearchUnknownPointUsingID(CString strID);//根据点号查找未知知点,返回该点的指针CLevelPoint* SearchPointUsingID(CString strID);////根据点号查找控制点(包括已知点和未知点),返回该点的指针private://字符串分割函数CString* CLevelAdjust::SplitString(CString str , char split, int iSubStrs);public:void SetKnownPointSize(int size);//设置已知点数组大小void SetUnknownPointSize(int size);//设置未知点数组大小void SetdHObsSize(int size);//设置高差观测数组大小public:bool LoadObsData(const CString& strFileName);//导入观测数据函数void CalculateApproximateH(void);//求待测点近似高程void RigorousAdjust(const CString& strFileName);//严密平差(间接平差)计算主函数private:void FormErrorEquation();//组成误差方程void CLevelAdjust::Weight();//组成权阵void EquationCompute();//计算法方程void Accuracy_Assessment();//精度评定void OutMatrixToFile(const CMatrix& mat,CStdioFile& SF);//把矩阵输出到文件中private://l为常数项,B为系数阵,P为权阵,BT为B的转置,NBB为法方程系数阵NBB1,为NBB的逆阵//x为未知数近似值的改正数,v为观测值改正数,vT为v的转置,r,Qxx为协因数阵CMatrix l,B,P,BT,NBB,NBB1,x,v,vT,r,Qxx;double r0;//r0为单位权中误差//将各个平差时要到的矩阵等参数设为私有成员,方便类内部使用};。
P14-2#include <stdio.h>int main(){int fahr,celsius;printf("Enter fahr:");scanf("%d",&fahr);celsius = 5*fahr/9-5*32/9;printf("fahr = %d, celsius = %d\n",fahr,celsius);return 0;}P14-3#include <stdio.h>int main(){int fahr,celsius;printf("Enter celsius:");scanf("%d",&celsius);fahr = 9*celsius/5+32;printf("celsius = %d, fahr= %d\n",celsius,fahr);return 0;}P14-4#include <stdio.h>int main(){int average;average = (87 +72 +93)/3;printf("math = %d, eng= %d, comp = %d, average = %d\n",87,72,93,average);return 0;}P14-5#include <stdio.h>int main(){int n,digit1,digit2,digit3;printf("Enter n:");scanf("%d",&n);digit1 = n % 10;n = n/10;digit2 = n %10;n = n /10;digit3 = n %10;printf("%d,%d,%d\n",digit1,digit2,digit3);return 0;}P19-2#include <stdio.h>int main(){int fahr,celsius;printf("Enter fahr:");scanf("%d",&fahr);celsius = 5*(fahr-32)/9;printf("fahr = %d, celsius = %d\n",fahr,celsius);return 0;}P20-3#include <stdio.h>#include <math.h>int main(){int money,year;double rate,interest;printf("Enter money,year and rate:");scanf("%d%d%lf",&money,&year,&rate);interest = money*pow((1+rate),year)-money;printf("interest = %.2f\n",interest);return 0;}P20-4#include <stdio.h>#include <math.h>int main(){double x,y;printf("Enter x:");scanf("%lf",&x);if (x<0) y = pow((x+1),2)+2*x+1.0/x;else y = sqrt(x);printf("f(%0.2f) = %0.2f\n",x,y);return 0;}P23-6#include <stdio.h>#include <math.h>int main(){int num1,num2;printf("Enter num1:");scanf("%d",&num1);printf("Enter num2:");scanf("%d",&num2);printf("%d + %d = %d\n",num1,num2,num1+num2);printf("%d - %d = %d\n",num1,num2,num1-num2);printf("%d * %d = %d\n",num1,num2,num1*num2);printf("%d / %d = %d\n",num1,num2,num1/num2);printf("%d %% %d = %d\n",num1,num2,num1%num2);return 0;}P23-7#include <stdio.h>#include <math.h>int main()int time1,time2,hour,minute1,minute2,minute;printf("Enter time1:");scanf("%d",&time1);printf("Enter time2:");scanf("%d",&time2);hour = time2 /100 -time1 /100;minute2 = time2%100;minute1 = time1%100;if (minute2 < minute1) {minute2 = minute2 +60;hour = hour -1;}minute = minute2 -minute1;printf("The train journey time is %d hours %d minutes\n",hour,minute);return 0;}P23-8#include <stdio.h>#include <math.h>int main(){int number,n1,n2,n3,n4;printf("Enter a number:");scanf("%d",&number);n1 = ((number % 10)+9) %10;number = number /10;n2 = ((number % 10)+9) %10;number = number /10;n3 = ((number % 10)+9) %10;number = number /10;n4 = ((number % 10)+9) %10;number = n2*1000+n1*100+n4*10+n3;printf("The encrypted number is %d\n",number);return 0;}P27-2#include <stdio.h>int main(){int number,sum,i;printf("Enter a number:");scanf("%d",&number);sum = 0;for (i=number;i<=100;i++) sum = sum+i;printf("sum = %d\n",sum);return 0;}P27-3#include <stdio.h>int main(){int m,n,i;double sum;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);sum = 0;for (i=m;i<=n;i++) sum = sum+1.0/i;printf("sum = %.3f\n",sum);return 0;}P27-4#include <stdio.h>int main(){int number,i,j;double sum;printf("Enter a number:");scanf("%d",&number);sum = 0;j = 1;for (i=1;i<=number;i++,j+=2) sum = sum+1.0/j;printf("sum = %f\n",sum);return 0;}P27-5#include <stdio.h>int main(){int number,i,j,flag;double sum;printf("Enter a number:");scanf("%d",&number);sum = 0;j = 1;flag = 1;for (i=1;i<=number;i++,j+=3){sum = sum+1.0*flag/j;flag = -flag;}printf("sum = %.3f\n",sum);return 0;}P29-7#include <stdio.h>int main(){int m,n,i;int sum,sum1,sum2;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);sum = 0;sum1 = 1;sum2=1;for (i=1;i<=m;i++) sum1 = sum1*i;for (i=1;i<=n;i++) sum2 = sum2*i;sum = sum1 +sum2;printf("%d! + %d! = %d\n",m,n,sum);return 0;}P29-8#include <stdio.h>int main(){double x,sum;int n,i;printf("Enter x:");scanf("%lf",&x);printf("Enter n:");scanf("%d",&n);sum = 1;for (i=1;i<=n;i++) sum = sum*x;printf("%0.3f的%d次方是%0.2f\n",x,n,sum);return 0;}P29-1#include <stdio.h>#include <math.h>int main(){int i,n;double x;printf("Enter n:");scanf("%d",&n);for (i=0;i<=n;i++) { x = pow(3,i); printf("pow(3,%d) = %.0f\n",i,x);} return 0;}P29-2#include <stdio.h>#include <math.h>double fact(int n);int main(){int i,n;double x;printf("Enter n:");scanf("%d",&n);for (i=1;i<=n;i++) { x = fact(i); printf("%d! = %.0f\n",i,x);}return 0;}double fact(int n){int i;double x;x = 1.0;for (i=1;i<=n;i++) x = x*i;return x;}P30-3#include <stdio.h>#include <math.h>double fact(int n);int main(){int i,n,m;double x,x1,x2,x3;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);for (i=1;i<=n-m;i++) x1 = fact(i);for (i=1;i<=m;i++) x2 = fact(i);for (i=1;i<=n;i++) x3 = fact(i);x = x3/(x1*x2);printf("result = %.0f\n",x);return 0;}double fact(int n){int i;double x;x = 1.0;for (i=1;i<=n;i++) x = x*i;return x;}P30-4#include <stdio.h>#include <math.h>int main(){int i;double sum;sum = 0;for (i=100;i<=1000;i++) sum = sum + sqrt(i);printf("sum = %.2f\n",sum);return 0;}P30-5#include <stdio.h>#include <math.h>int main(){double loan,rate,money;int month,i;printf("Enter loan, rate :");scanf("%lf%lf",&loan,&rate);printf("还款年限月还款额\n");for (i=5;i<=30;i++){month = 12*i;money = loan*10000*rate*pow((1+rate),month)/(pow((1+rate),month)-1);printf(" %d %.0f\n",i,money);}return 0;}P32-2#include <stdio.h>int main(void){ int x, y;printf("Enter x: ");scanf ("%d", &x) ;if (x < 0) y = -1;else if (x == 0) y = 0;else y = 1;printf("sign(%d) = %d\n",x,y);return 0;}P33-3#include <stdio.h>int main(void){ int letter,blank,digit,other;int i;char ch;letter = blank = digit = other = 0;printf("Input 10 character: ");for (i=0;i<10;i++){scanf ("%c", &ch) ;if (ch>='0' && ch<='9') digit = digit +1;else if ((ch >= 'a' && ch<='z') || (ch>='A' && ch<='Z')) letter = letter +1;else if (ch == ' ' || ch == '\n') blank = blank +1;else other = other +1;}printf("letter = %d, blank = %d, digit = %d, other = %d\n",letter,blank,digit,other);return 0;}P34-4#include <stdio.h>int main(void){ char grade;printf("Input Grade: ");grade = getchar(); ;switch (grade){case 'A' : printf("A对应的百分制成绩区间是90~100\n");break;case 'B' : printf("B对应的百分制成绩区间是80~89\n");break;case 'C' : printf("C对应的百分制成绩区间是70~79\n");break;case 'D' : printf("D对应的百分制成绩区间是60~69\n");break;case 'E' : printf("E对应的百分制成绩区间是0~59\n");break;default : break;}return 0;}P34-5#include <stdio.h>main(){int i,num;float price;printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");for (i=1;i<=5;i++){printf("input the number:");scanf("%d",&num);if (num==0) break;switch (num){ case 1: price = 3.00; break;case 2: price = 2.50;break;case 3: price = 4.10;break;case 4: price = 10.20;break;default: price = 0;break;}printf("其价格为:%.1f\n",price);}}P35-9#include <stdio.h>int main(void){ int n,score,i;int anum,bnum,cnum,dnum,e_num=0;anum=bnum=cnum=dnum=e_num=0;printf("Enter n: ");scanf("%d",&n);for (i=1;i<=n;i++){printf("Enter grade %d:",i);scanf("%d",&score);if (score<=100 && score >=90) anum= anum+1;else if (score<=89 && score >=80) bnum= bnum+1;else if (score<=79 && score >=70) cnum= cnum+1;else if (score<=69 && score >=60) dnum= dnum+1;else e_num= e_num+1;}printf("The number of A(90~100):%d\n",anum);printf("The number of B(80~89):%d\n",bnum);printf("The number of C(70~79):%d\n",cnum);printf("The number of D(60~69):%d\n",dnum);printf("The number of E(0~59):%d\n",e_num);return 0;}P40-2#include <stdio.h>#include <math.h>int main(void){ int denominator,flag;double eps,s,item;flag = 1;item = 1.0;denominator = 1;s = 0;printf("Enter a eps:");scanf("%lf",&eps);while (fabs(item)>=eps){item = flag*1.0/denominator;s = s + item;flag = -flag;denominator = denominator +3 ;}printf("s = %.6f\n",s);}P41-3#include <stdio.h>#include <math.h>int main(void){ int sum,number;sum = 0;printf("Input integers");scanf("%d",&number);while (number>0){if (number%2 != 0) sum = sum + number;scanf("%d",&number);}printf("The sum of the old numbers is %d\n",sum); }P41-4#include <stdio.h>#include <math.h>int main(void){ int count,number;count = 0;printf("Input an integer:");scanf("%d",&number);do{count = count +1;number = number /10;} while (number !=0);printf("count = %d\n",count); }P41-5#include <stdio.h>int main(){int n,min,i,number;printf("Input n:");scanf("%d",&n);printf("Input numbers:");scanf("%d",&number);min = number;for (i=1;i<n;i++){scanf("%d",&number);if (number<min) min = number;}printf("min = %d\n",min);return 0;}P41-6#include <stdio.h>#include <math.h>int main(void){ int count,number,sum;count = 0;sum = 0;printf("Input an integer:");scanf("%d",&number);do{count = count +1;sum = sum + number %10;number = number /10;} while (number !=0);printf("count = %d, sum = %d\n",count,sum); }P41-7#include <stdio.h>int main(){int n,i;int item1,item2,item;double sum;printf("Input n:");scanf("%d",&n);item1 = 2;item2 = 1;sum = 0;for (i=1;i<=n;i++){sum = sum + item1*1.0/item2;item = item1;item1 = item +item2;item2 = item;}printf("s = %.2f\n",sum);return 0;}P41-8#include <stdio.h>#include <math.h>int main(void){ int a,b,n,sum,i;sum = 0;printf("Input a , n:");scanf("%d%d",&a,&n);b = a;for (i=1;i<=n;i++){sum = sum + a;a= a*10+b;}printf("sum = %d\n",sum);}P41-9#include <stdio.h>int main(){int n,i;double height,distance;printf("Input height:");scanf("%lf",&height);printf("Input n:");scanf("%d",&n);distance = height*1.0;for (i=1;i<=n;i++){height = height /2;distance = distance + 2*height;}printf("distance = %.1f\nheight = %.1f\n",distance,height);return 0;}P43-1#include <stdio.h>int main(){int n,i,fact;double e;printf("Input n:");scanf("%d",&n);e = 1;fact = 1;for (i=1;i<=n;i++){fact = fact *i;e = e + 1.0 / fact;}printf("e = %.4f\n",e);return 0;}#include <stdio.h>int fact(n);int main(){int n,i;double e;printf("Input n:");scanf("%d",&n);e = 1;for (i=1;i<=n;i++){e = e + 1.0 / fact(i);}printf("e = %.4f\n",e);return 0;}int fact(n){int fact,i;fact = 1;for (i=1;i<=n;i++){fact = fact *i;}return fact;}#include <stdio.h>int main(){int n,i,j,fact;double e;printf("Input n:");scanf("%d",&n);e = 1;for (i=1;i<=n;i++){fact = 1;for (j=1;j<=i;j++){fact = fact *j;}e = e + 1.0 / fact;}printf("e = %.4f\n",e);return 0;}P43-2#include <stdio.h>int main(){int m,n,i,j;int num;printf("Input m:");scanf("%d",&m);printf("Input n:");scanf("%d",&n);num = 0;for (i=m;i<=n;i++){for (j=2;j<i;j++)if (i%j == 0) break;if (j == i) {num++;printf("%d ",i);if (num==6) printf("\n");}}printf("\n");return 0;}P43-3#include <stdio.h>int main(){int money,count;int fen5,fen2,fen1;printf("Input money:");scanf("%d",&money);count = 0;for (fen5=1;fen5<=money;fen5++)for (fen2=1;fen2<=money;fen2++)for(fen1=1;fen1<=money;fen1++)if (fen1*1+fen2*2+fen5*5==money){printf("fen5:%d fen2:%d fen1:%d\n",fen5,fen2,fen1);count = count+1;}printf("count = %d\n",count);return 0;}P44-4#include <stdio.h>int main(){int m,n;int s,d,i,d1;printf("Input m:");scanf("%d",&m);printf("Input n:");scanf("%d",&n);for (i=m;i<=n;i++){ d = i;s = 0;while (d != 0){ d1 = d % 10;s = d1*d1*d1 +s;d = d/10;}if (s==i) printf("%d\n",i);}return 0;}P45-6#include <stdio.h>int isPrime(int num);int main(){int number,i,j,s;for (number=6;number<=22;number+=2){for (i=1;i<number;i++)if (isPrime(i))for (j=1;j<number;j++){if (isPrime(j)){s = i+j;if (s==number) printf("%d= %d + %d ",s,i,j);}}printf("\n");}return 0;}int isPrime(int num){int i;for (i=2;i<num;i++)if (num%i==0) return 0;return 1;}P45-7#include <stdio.h>int main(){int number,d,num1,sum;printf("Input an integer:");scanf("%d",&number);sum = 0;num1 = number;do{d = num1 %10;sum = sum*10+d;num1 = num1/10;} while (num1 !=0);num1 = sum;do{d = num1 %10;printf("%d ",d);num1 = num1/10;} while (num1 !=0);printf("\n");return 0;}#include <stdio.h>int main(){int number,d,num1,sum,i,j,fact,sum1;printf("Input an integer:");scanf("%d",&number);sum = 0;num1 = number;do{num1 = num1/10;sum++;} while (num1 !=0);fact = 1;sum1 = sum;for (i=1;i<=sum;i++){for (j=sum1;j>1;j--) fact = fact*10;d = number /fact;printf("%d ",d);number = number - d*fact;fact = 1;sum1--;}printf("\n");return 0;}P49-2#include <stdio.h>int sign(int x);int main(){int x,y;printf("Enter x:");scanf("%d",&x);y = sign(x);printf("sign(%d) = %d\n",x,y);return 0;}int sign(int x){if (x>0) return 1;else if (x==0) return 0;else return -1;}P50-3#include <stdio.h>int even(int x);int main(){int x,sum;sum = 0;printf("Input integers:");scanf("%d",&x);while (x>0){if (!even(x)) sum = sum+x;scanf("%d",&x);}printf("The sum of odd numbers is %d\n",sum);return 0;int even(int x){if (x%2==0) return 1;else return 0;}P50-4#include <stdio.h>#include <math.h>double dist(x1,y1,x2,y2);int main(){int x1,x2,y1,y2;double distance;printf("Input(x1,y1):");scanf("%d%d",&x1,&y1);printf("Input(x2,y2):");scanf("%d%d",&x2,&y2);distance = dist(x1,y1,x2,y2);printf("distance = %.2f\n",distance);return 0;}double dist(x1,y1,x2,y2){return sqrt(pow((x2-x1),2)+pow((y2-y1),2)); }P50-5#include <stdio.h>int Prime(int num);int main()int m,n,i;int count,sum;printf("Input m:");scanf("%d",&m);printf("Input n:");scanf("%d",&n);sum = 0;count = 0;for (i=m;i<=n;i++){if (Prime(i)) {count++;sum = sum+i;}}printf("count = %d,sum = %d\n",count,sum);return 0;}int Prime(int num){int i;if (num==1) return 0;for (i=2;i<num;i++)if (num%i==0) return 0;return 1;}P50-6#include <stdio.h>int main(){int countdigit(int number,int digit);int number;printf("Enter an integer:");scanf("%d",&number);printf("Number of digit 2:%d\n",countdigit(number,2));return 0;}int countdigit(int number,int digit) { int d,count=0;do{d=number%10;if (d==digit) count++;number = number/10;} while (number!=0);return count;}P50-6#include <stdio.h>int is(int number){ int d,s,d1;d = number;s = 0;while (d != 0){ d1 = d % 10;s = d1*d1*d1 +s;d = d/10;}if (s==number) return 1;else return 0;}int main(){int m,n;int i;printf("Input m:");scanf("%d",&m);printf("Input n:");scanf("%d",&n);for (i=m;i<=n;i++)if (is(i)) printf("%d\n",i);return 0;}P56-2#include <stdio.h>int main(){int decimal;printf("Input a decimal:");scanf("%d",&decimal);printf("The octal is %o\n",decimal);printf("The hexadecimal is %x\n",decimal);return 0;}P56-3#include <stdio.h>int main(){char ch;int letter=0,blank=0,digit=0,other=0;while ((ch=getchar())!='\n')if (ch<='9' && ch>='0') digit++;else if ((ch>='a' && ch<='z') || (ch>='A' && ch<='Z')) letter++;else if (ch==' ') blank++;else other++;printf("letter = %d, blank = %d, digit = %d, other =%d\n",letter,blank,digit,other);return 0;}P56-4#include <stdio.h>int fn(int a,int n){int result,i;result =0;for (i=1;i<=n;i++)result = result*10+a;return result;}int main(){int a,n,sum,i;printf("Input a:");scanf("%d",&a);printf("Input n:");scanf("%d",&n);sum = 0;for (i=1;i<=n;i++)sum = sum + fn(a,i);printf("sum = %d\n",sum);}P58-8#include <stdio.h>int fib(int n){int x,x1,x2,i;x1=1;x2=1;for (i=2;i<=n;i++){ x= x1+x2;x1 = x2;x2 = x;}return x;}int main(){int m,n,i;printf("Input m:");scanf("%d",&m);printf("Input n:");scanf("%d",&n);for (i=1;i<=n/2;i++)if (fib(i)>=m &&fib(i)<=n) printf("%d ",fib(i));printf("\n");}7.11.#include <stdio.h>void main(){int n,a[10],i,sum;double average;printf("Input n:");scanf("%d",&n);sum = 0;printf("Input %d integers:",n);for (i=0;i<=n-1;i++){ scanf("%d",&a[i]);sum = sum+a[i];}average = sum*1.0/n;printf("average=%.2f\n",average);}2.#include <stdio.h>void main(){int n,a[10],i;printf("Input n:");scanf("%d",&n);printf("Input %d integers:",n);for (i=0;i<=n-1;i++) scanf("%d",&a[i]);printf("Afer reversed:");for (i=n-1;i>=0;i--) printf("%d ",a[i]);printf("\n");}3.#include <stdio.h>void main(){int n,a[10],i;int max,index;printf("Input n:");scanf("%d",&n);printf("Input %d integers:",n);max = 0; index = 0;for (i=0;i<=n-1;i++) {scanf("%d",&a[i]);if (a[i]>max) {max = a[i]; index =i;} }printf("max=%d,index=%d",max,index);printf("\n");}4.#include <stdio.h>void main(){int n,a[10],i;int max,min,index;printf("Input n:");scanf("%d",&n);printf("Input %d integers:",n);scanf("%d",&a[0]); min = a[0];for (i=1;i<=n-1;i++) {scanf("%d",&a[i]);if (a[i]<min) {min = a[i];index = i;} }a[index] = a[0]; a[0] = min;//for (i=0;i<=n-1;i++) printf("%d ",a[i]);max = a[0];for (i=1;i<=n-1;i++) {if (a[i]>max) {max = a[i];index =i;}}a[index] = a[n-1]; a[n-1] = max;printf("After swapped:");for (i=0;i<=n-1;i++) printf("%d ",a[i]);printf("\n");}5.#include <stdio.h>void main(){int n,a[10],i;int max,j;printf("Input n:");scanf("%d",&n);printf("Input %d integers:",n);scanf("%d",&a[0]); max = a[0];for (i=1;i<=n-1;i++)scanf("%d",&a[i]);//for (i=0;i<=n-1;i++) printf("%d ",a[i]);//max = a[0];for (i=0;i<=n-1;i++) {max=a[i];for (j=i+1;j<=n-1;j++)if (a[j]>max) {max = a[j];a[j]=a[i];a[i]=max;} }printf("After sorted:");for (i=0;i<=n-1;i++) printf("%d ",a[i]);printf("\n");}7.21.#include <stdio.h>void main(){int n,a[6][6],i,j;int sum;printf("Input n:");scanf("%d",&n);sum = 0;printf("Input array:\n");for (i=0;i<=n-1;i++)for (j=0;j<=n-1;j++){scanf("%d",&a[i][j]);if ((i==n-1) || (j==n-1) || (i==n-1-j)) continue;sum = sum+a[i][j];}printf("sum = %d\n",sum);}2.#include <stdio.h>void main(){int n,a[10][10],i,j;printf("Input n:");scanf("%d",&n);for (i=1;i<=n;i++) a[0][i] = i;for (i=1;i<=n;i++) a[i][0] = i;for (i=1;i<=n;i++)for (j=1;j<=n;j++){a[i][j] = a[i][0]*a[0][j];}for (i=0;i<=n;i++){for (j=0;j<=n;j++)if ((i==0) && (j==0)) printf(" *");else printf("%4d",a[i][j]);printf("\n");}}3.#include <stdio.h>void main(){int n,a[6][6],i,j;int sum,flag;printf("Input n:");scanf("%d",&n);flag = 0;sum = 0;printf("Input array:\n");for (i=0;i<=n-1;i++)for (j=0;j<=n-1;j++){scanf("%d",&a[i][j]);if ((i>j) && (a[i][j] !=0)) flag =1;}if (flag==0) printf("YES\n");else printf("NO\n");}4.#include <stdio.h>void main(){int d[12] = {31,29,31,30,31,30,31,31,30,31,30,31};int sum,i;int year,month,day;printf("Input year,month,day:");scanf("%d%d%d",&year,&month,&day);if (((year%4==0) && (year%100 !=0)) || (year%400)) d[1]=28;sum = 0;for (i=1;i<=month-1;i++) sum =sum+d[i];sum = sum+day;printf("Days of year :%d\n",sum);}5.#include <stdio.h>void main(){int n,a[6][6],i,j,k;int sum,flag;int max,row,col;printf("Input n:");scanf("%d",&n);flag = 0;sum = 0;printf("Input array:\n");for (i=0;i<=n-1;i++)for (j=0;j<=n-1;j++){scanf("%d",&a[i][j]);}for (i=0;i<=n-1;i++){max = a[i][0];row=i;col=j;for (j=0;j<=n-1;j++){if (a[i][j]>max) {max = a[i][j]; row = i;col=j;} }for (k=0;k<=n-1;k++)if (a[k][col]>=max) flag=1;else {flag=0;break;}if (flag==1) break;}if (flag==1) printf("a[%d][%d] = %d\n",row,col,max);else printf("NO\n");}7.31.#include <stdio.h>void main(){char letter,ch;char str[80];int i;printf("Input a character:");letter=getchar();while ((ch=getchar()) != '\n');printf("Input a string:");i=0;while ((str[i]=getchar())!='\n') i++;str[i]='\0';i=0;while (str[i]!=letter) i++;printf("index = %d\n",++i);}2.#include <stdio.h>void main(){char ch;//char str[80];int i,count;printf("Input a strung:");count=0;while ((ch=getchar()) != '\n'){if (ch>='A' && ch<='Z')if (ch!='A' && ch!='E' && ch!='I' && ch!='O' && ch!='U') count++;}printf("count=%d\n",count);}3.#include <stdio.h>void main(){//char ch;char ch[80];int i,count;printf("Input a string:");count=0;i=0;while ((ch[i]=getchar()) != '\n'){if (ch[i]>='A' && ch[i]<='Z') ch[i]= 'A'+'Z'-ch[i];i++;}ch[i]='\0';。
第0章:1-1 Python基础介绍变量与计算#1. 打印语句print('Hello, world')#2. 数学计算a=2*3+4print(a)print(2*3+4)print('a=',a)#3. 数值类型print(123)print(123.0)b=Truec='True'print('b=',b)print('c=',c)print(True)print('True')#4. 布尔值运算print(True and False)print(not True)print(True or False)#5. 变量与赋值x=12Y=23s='abc'print('x=',x)print('x+Y=',x+Y)print('s=',s)#6. 复杂数学计算import mathprint(dir(math))print(math.sqrt(9.0))x=3y=4print(math.sqrt(x**2+y**2))#7. 文字处理s1='Hello's2=', world'print(s1+s2)print(len(s1))print(s1[0])print(s1[0:5])print(s1.upper())#8. 字符串formatx=2y=3print('The sum of {} and {} is {}'.format(x,y,x+y)) print('The sum of ',x,' and ',y, ' is ', x+y)1-2Python基础介绍简单容器#1. 容器的概念print('list')#2. 列表a=[1, 2, 'x', 4.3]print(a)print(len(a))print(a[0])print(a[1:3])x=10a2=[11, 12, 13]a.append(x)print('The first a=',a)a.extend(a2)print('The second a=',a)a.pop()print('The third a=',a)a=['x','a',2,3,1]a.sort()print('The fourth a=',a)#3. 元组b=(1, 2, 'y')print(b)print(len(b))print(b[0])#4. 字典price_table={'A': 10.3, 'B': 9.2, 'C': 12.5}print('price_table=', price_table)print('len(price_table)=', len(price_table))print('price_table.keys()=', price_table.keys()) print("price_table['A']=", price_table['A'])print('D' in price_table)price_table['D']=15.0print('after add price_table=',price_table) del price_table['A']print('after del price_table=',price_table) 1-3 Python基础介绍控制语句#1. 控制流的概念print('if')#2. if条件语句name='Alice'age=16if age>=18:print('{} pass'.format(name))print('---')name='Mike'age=20if age>=18:print('{} pass'.format(name))#3. if/else条件语句name = "Alice"age = 16if age >= 18:print("{} pass".format(name))else:print("{} sorry".format(name))print("---")name = "Mike"age = 20if age >= 18:print("{} pass".format(name))else:print("{} sorry".format(name))#4. if/elif/else语句name = "Steve"age = 70if age >= 60:print("{} welcome".format(name))elif age >= 18:print("{} pass".format(name))else:print("{} sorry".format(name))print("---")name = "Mike"age = 20if age >= 60:print("{} welcome".format(name))elif age >= 18:print("{} pass".format(name))else:print("{} sorry".format(name))#5. for循环data = [("Alice", 16), ("Mike", 20), ("Steve", 60)] for x in data:name, age = x[0], x[1]if age >= 60:print("{} welcome".format(name))elif age >= 18:print("{} pass".format(name))else:print("{} sorry".format(name))#6. for语句和元组data = [("Alice", 16), ("Mike", 20), ("Steve", 60)] for (name, age) in data:if age >= 60:action = "welcome"elif age >= 18:action = "pass"else:action = "sorry"print("{} {}".format(name, action))#7. for语句与rangedata = [("Alice", 16), ("Mike", 20), ("Steve", 60)] for i in range(len(data)):name, age = data[i]if age >= 60:action = "welcome"elif age >= 18:action = "pass"else:action = "sorry"print("{} {}".format(name, action))#8. while语句a = [3, 4, 6, -1]i = 0s = 0while i < len(a) and a[i] >= 0:s += a[i]i += 1print("s = {}".format(s))0-4 Python基础介绍:函数入门#1. 函数的概念import mathprint(math.sqrt(4.0))print(math.sqrt(9.0))#2. 导入函数包from math import sqrt, log10print(sqrt(9.0))print(log10(10000.0))#3. 自定义函数def square(x):return x * xprint(square(2))print(square(3))#4. 函数调用其他函数def distance(p1, p2):x1, y1 = p1x2, y2 = p2s = square(x1 - x2) + square(y1 - y2) return sqrt(s)print(distance((0, 0), (3, 4)))#5. 找素数的函数def is_divisible(x, ys):for y in ys:if x % y == 0:return Truereturn Falsedef primes(n):ps = []for x in range(2, n+1):if not is_divisible(x, ps):ps.append(x)return psprint(primes(20))第二章:2-1分类器初探利用感知机完成鸢尾花分类#1、加载数据集iris=data.get('iris-simple')#2. 展示数据集fig()+plot(iris)#2、数据集分割iris_train,iris_test=iris.split(8,2)fig()+plot(iris_train)#3、创建分类器blc=binary_linear_classifier()#4、用感知器训练分类器blc.train(iris_train, alg=Perceptron (max_iter=50, lr=0.2)) #5、用分类器做预测point=[[2,1]]fig()+plot(point)+plot(blc)label=blc.predict(point[0])print(‘Perceptron Prediction:’, label)blc.save_params(‘params_2-1’)2-2分类器初探:利用SVM完成鸢尾花分类#1、加载数据集iris=data.get('iris-simple')fig()+plot(iris)#2、数据集分割iris_train, iris_test=iris.split(8, 2)fig()+plot(iris_train)#3、创建分类器blc=binary_linear_classifier()#4、用支持向量机训练分类器blc. train(iris_train, alg=SVM())fig()+plot(iris_train)+plot(blc)#5、用分类器做预测point=[[2,1]]fig()+plot(blc)+plot(point)label=blc.predict(point[0])print(‘SVM Prediction: ‘,label)blc.save_params(‘params_2-2’)2-3分类器初探:分类器的测试与应用#1、加载数据集iris=data.get('iris-simple')#2、数据集分割iris_train, iris_test=iris.split(8, 2)fig()+plot(iris_train)#3、获取分类器模型blc1=binary_linear_classifier()blc2=binary_linear_classifier()blc1.load_params('params_2-1')blc2.load_params('params_2-2')#4、测试分类器模型acc1=blc1.accuracy(iris_test)acc2=blc2.accuracy(iris_test)print('Perceptron Accuracy: ',acc1)print('SVM accuracy: ',acc2)fig()+plot(iris)+plot(blc1)+plot(blc2)#5、模型应用point=[5, 3]label1=blc1.predict(point)label2=blc2.predict(point)print('Perception Prediction: ', label1)print('SVM Prediction: ', label2)第三章:3-1深度学习与图像识别:利用图像特征进行图片分类#1、加载数据cifar_train=data.get(‘cifar10_tiny’, subset=’train’)cifar_test=data.get(‘cifar10_tiny’, subset=’test’)fig(2,1)+[plot(cifar_train),plot(cifar_test)]#2、获取图片特征hog=HOGExtractor()hog_train=cifar_train.map(hog,on_field=0)hog_test=cifar_test.map(hog,on_field=0)index=10hog_feature,label=hog_train[index]print(hog_feature)image,label=cifar_train[index]fig()+plot(image,type=’hog’)#3、创建分类器mlc=multi_class_classifier()#4、用支持向量机训练分类器mlc.train(hog_train,alg=SVM())#5、在训练子集和测试子集上测试模型acc1=mlc.accuracy(hog_train)print(‘Cifar_train Accuracy: ‘, acc1)acc2=mlc.accuracy(hog_test)print(‘Cifar_test Accuracy: ‘, acc2)#6、用分类器做预测index=10image,label=cifar_test[index]print(‘ground truth: ‘,label)hog_feature=hog(image)prediction=mlc.predict(hog_feature)print(‘prediction: ‘, prediction)3-2深度学习与图像识别:利用深度神经网络完成图像分类#1、加载数据cifar_train=data.get(‘cifar10_tiny’, subset=’train’)cifar_test=data.get(‘cifar10_tiny’, subset=’test’)fig(2,1)+[plot(cifar_train),plot(cifar_test)]#2、构建神经网络net=cnn_classifier(backbone=ResNet (num_layers=10), in_shape=Shape(h=32, w=32, c=3), num_classes=10)#3、训练神经网络net.train(cifar_train,alg=SGD (lr=0.05, epoch=1, bs=64) )#4、在测试子集上测试模型accuracy=net.accuracy(cifar_test)print(accuracy)#5、用神经网络做预测index=10image, label=cifar_test[index]print(‘ground truth: ‘, label)prediction=net.predict(image)print(‘prediction: ‘, prediction)第四章4-1音频理解:观察声音的波形,理解声音的数字化#1、获取音乐数据gtzan=data.get(‘gtzan’)#2、观察数据集music, label = gtzan[10]fig() + plot(music, type='audio')print(label)#3、画出音乐波形图music,label=gtzan[10]fig()+plot(music,type=’waveform’)segment=music.cut(0.5,5.5)fig()+plot(segment, type=’waveform’)4-2 音频理解:用频谱图分析乐音的特点#1. 获取音频数据piano=data.get('piano')guitar=data.get('guitar')#2、裁剪音频数据piano_seg=piano.cut(t_start=0.1,t_end=1.1)guitar_seg=guitar.cut(t_start=0.1,t_end=1.1)#3、画出音乐单音的波形和频谱fig(2,2)+[plot(piano_seg,type='waveform'),plot(piano_seg,type='spectrum'),plot(guitar_seg,type='waveform'),plot(guitar_seg,type='spectrum')]4-3音频理解:观察并理解MFCC特征#1、获取音乐数据集gtzan=data.get('gtzan')#2、选取一首音乐index=10music,label=gtzan[index]#3、剪裁音频music_seg1=music.cut(1.5,1.53)music_seg2=music.cut(5.5,5.53)#4、抽取MFCC特征mfcc=MFCCExtractor()mfcc_feature1=mfcc(music_seg1)mfcc_feature2=mfcc(music_seg2)#5、绘制音频片段的频谱和MFCC特征fig(2,2)+[plot(music_seg1,type='spectrum'),plot(mfcc_feature1,type='mfcc'),plot(music_seg2,type='spectrum'),plot(mfcc_feature2,type='mfcc')]4-4 音频理解:使用MFCC特征和神经网络完成音乐风格分类#1. 准备数据,提取MFCC特征gtzan=data.get('gtzan')mfcc=MFCCExtractor(end=25)gtzan_mfcc=gtzan.map(mfcc,on_field=0)#2. 拆分数据集为训练集和测试集mfcc_train,mfcc_test=gtzan_mfcc.split(8,2)#3. 获取深度网络模型net=cnn_classifier(backbone=AudioNet(num_layers=1),in_shape=Shape(d=624,c=13),num_classes=10)#4. 训练深度网络模型net.train(mfcc_train,alg=SGD(lr=0.002,epoch=10,bs=32))#5. 测试风格分类网络accuracy=net.accuracy(mfcc_test)print('Accuracy:',accuracy)#6. 用神经网络做预测index=10mfcc_feature,label=mfcc_test[index]print('ground truth:',label)prediction=net.predict(mfcc_feature)print('prediction:',prediction)第五章5-1视频理解:理解视频中的光流#1、获取视频数据集ucf=data.get('ucf101-simple',subset='train')video,label=ucf[1]fig()+plot(video)#2、抽取视频帧光流frame1=video[5]frame2=video[6]fig(2,1)+[plot(frame1),plot(frame2)]flow=optical_flow(frame1,frame2)#3、光流可视化frame1_flow=image_add_flow(frame1,flow)fig()+plot(frame1_flow)flow_x, flow_y=extract_x_y_flow(flow)fig(2,2)+[plot(frame1),plot(frame2),plot(flow_x),plot(flow_y)]#4、观察光流视频flow_v=optical_flow_video(video)video_flow=video_add_flow(video,flow_v)fig()+plot(video_flow)5-2视频理解:利用光流直方图完成行为识别任务#1、获取视频集ucf_train=data.get('ucf101-simple',subset='train')ucf_test=data.get('ucf101-simple',subset='test')#2、提取视频集的HOF特征ucf_train_flow=ucf_train.map(optical_flow_video, on_field=0)ucf_test_flow=ucf_test.map(optical_flow_video, on_field=0)hof=HOFExtractor()ucf_train_hof=ucf_train_flow.map(hof, on_field=0)ucf_test_hof=ucf_test_flow.map(hof, on_field=0)#3、训练SVM多分类器mlc=multi_class_classifier()mlc.train(ucf_train_hof, alg=SVM())#4、测试分类器acc1=mlc.accuracy(ucf_test_hof)print('Test Accuracy: ', acc1)acc2=mlc.accuracy(ucf_train_hof)print('Train Accuracy: ', acc2)5-3 视频理解:利用双流卷积神经网络完成行为识别任务#1. 获取数据集ucf_train=data.get('ucf101-simple',subset='train')ucf_test=data.get('ucf101-simple',subset='test')flow_train=ucf_train.map(optical_flow_video,on_field=0)flow_test=ucf_test.map(optical_flow_video,on_field=0)#2. 抽取训练子集的图片帧和光流帧rgb_sampler_train=RandomFrameSampler(ucf_train,length=1,resize=(32,32))flow_sampler_train=RandomFrameSampler(flow_train,length=3,resize=(32,32))#3. 抽取测试子集的图片帧和光流帧rgb_sampler_test=UniformFrameSampler(ucf_test,nsamples=10,length=1,resize=(32,3 2))flow_sampler_test=UniformFrameSampler(flow_test,nsamples=5,length=3,resize=(32, 32))#4. 构建空间流神经网络并训练spatial_net=cnn_classifier(backbone=ResNet(num_layers=6),in_shape=Shape(h=32,w= 32,c=3),num_classes=10)spatial_net.train(rgb_sampler_train,alg=SGD(lr=0.005,epoch=3,bs=32))#5. 构建时间流神经网络并训练temporal_net=cnn_classifier(backbone=ResNet(num_layers=6),in_shape=Shape(h=32,w =32,c=6),num_classes=10)temporal_net.train(flow_sampler_train,alg=SGD(lr=0.005,epoch=3,bs=32))#6. 测试子集类别预测并计算准确率s_prob=spatial_net.predict_all(rgb_sampler_test.field(0),out='prob',batch_average=True)t_prob=temporal_net.predict_all(flow_sampler_test.field(0),out='prob',batch_average=True)avg_prob=average_probability(s_prob,t_prob,1,1)pred_cls=probability2class(avg_prob)true_cls=ucf_test.field(1)acc=accuracy_score(pred_cls,true_cls)print('Accuracy Score:',acc)第六章6-1相册中的人脸聚类理解K均值算法#1. 获取数据集iris=data.get('iris')flower_feature,label=iris[0]print(len(flower_feature))#2. 特征选择def petal_length_width(feature):return feature[2:4]iris_2features=iris.map(petal_length_width,on_field=0)fig()+plot(iris_2features,type='scatter')#3. 创建K均值聚类模型model=KMeans(K=3)#4. 模型训练并观察训练效果model.train(iris_2features)fig()+plot(model,iris_2features,type='cluster_statistics')#5. 重复并比较model2=KMeans(K=3)model2.train(iris)fig()+plot(model2,iris,type='cluster_statistics')6-2相册中的人脸聚类提取照片中的人脸特征#1. 获取数据集bigbang=data.get('bigbang')fig()+plot(bigbang)#2. 人脸检测detector=FaceDetector()bigbang_face_detected=bigbang.map(detector, on_field=0)fig()+plot(bigbang_face_detected, type='face_detection')#3. 人脸转正align=FaceAlignTool()bigbang_face_aligned=bigbang_face_detected.map(align, on_field=0) faceset=collect_face(bigbang_face_aligned)fig()+plot(faceset,type='face_align')faceset.save('faceset_6-2')#4. 提取人脸特征feature_extractor=FaceFeatureExtractor()bigbang_feature=faceset.map(feature_extractor, on_field=0)#5. 查看人脸特征feature0, _=bigbang_feature[0]print('The length of feature0 is: ', len(feature0))print('The content of feature0 is: ', feature0)bigbang_feature.save('bigbang_feature_6-2')6-3 相册中的人脸聚类:相册中的K均值聚类#1. 获取数据集faceset=data.load('faceset_6-2')bigbang_feature=data.load('bigbang_feature_6-2')bigbang=data.get('bigbang')detector=FaceDetector()bigbang_face_detected=bigbang.map(detector, on_field=0)align=FaceAlignTool()bigbang_face_aligned=bigbang_face_detected.map(align, on_field=0) faceset=collect_face(bigbang_face_aligned)extractor=FaceFeatureExtractor()bigbang_feature=faceset.map(extractor, on_field=0)fig(3,1)+[plot(bigbang),plot(bigbang_face_detected,type='face_detection'),plot(faceset, type='face_align')]#2. 模型创建与训练6-3-2model=KMeans(K=7)model.train(bigbang_feature)#3. 模型预测与效果展示6-3-3prediction=model.predict_all(bigbang_feature.field(0))fig()+plot(faceset, prediction, type='face_cluster')#4. K值的选择(手肘法)6-3-4Ks=[3,5,7,9,11]losses=[]for k in Ks:model=KMeans(K=k)model.train(bigbang_feature)losses.append(model.loss)fig()+plot(losses, Ks, type='elbow')第八章实验8 - 1认识随机性与分布#1. 生成一个随机数randnum = rand()print(randnum)#2. 将随机数绘制到数轴上fig() + plot(randnum, type='scatter')#3. 生成多个随机数randnums = rand(num=100)fig() + plot(randnums, type='scatter')#4. 绘制随机数分布的直方图randnums = rand(num=1000)fig() + plot(randnums, type='histogram')randnums = rand(num=1000, start=0.2, end=0.8)fig() + plot(randnums, type='histogram')#5. 生成正态分布的随机数并观察正态分布randnnums = randn(num=1000)fig() + plot(randnnums, type='histogram')实验8 - 2理解生成网络#1. 生成随机数据集orig_data = rand(num=1000)fig() + plot(orig_data, type='histogram')#2. 创建变换函数def f(x):return 2*x + 1fig() + plot(f, start=0, end=1)#3. 对随机数进行变换trans_data = smap(f, orig_data)fig() + plot(trans_data, type='histogram')#4. 创建一个更复杂的变换函数8-4计算机创作图画用生成对抗网络生成明星图片1. 获取数据集celeba=data.get('celeba-middle')fig()+plot(celeba)2. 构建GAN网络gan_model=gan(d_module=DCGAN_D(),g_module=DCGAN_G(),generate_shape=Shape(h=64,w=64,c=3),latent_shape=Shape(d=100)) 3. GAN网络的训练gan_model.demo(celeba,epoch=200)gan_model.train(celeba,alg=Adam(lr=0.0002,bs=64,epoch=100))。
实验参考代码实验一——实验七#include<stdio.h>void main(){ int a,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a<b){t=b;b=a;a=t;}if(a<c){t=c; c=a;a=t;}printf("max is %d\n",a);}#include<stdio.h>#include<math.h>void main(){float a,x,y;a=4.3;x=2.4;y=cos(sqrt(a+x))+exp(a*x);printf("y=%f\n",y);}#include<stdio.h>void main(){ float F,C;scanf("%f",&F);C=(F-32)*5/9;printf("C=%3.1f\n",C);}#include<stdio.h>void main(){char a;scanf("%c",&a);printf("%c\n%d\n",a-32,a-32);}#include<stdio.h>void main(){int a,b,c,d;scanf("%d",&a);b=a/100;c=(a-100*b)/10;d=a%10;printf("%d %d %d\n%d\n",b,c,d,b+c+d); }#include<stdio.h>void main(){ int a;scanf("%d",&a);printf("%o %x\n",a,a);}#include<stdio.h>void main(){floata=3.0,b=4.0,c=6.0,s=0.0652,area=5.32561; printf("a=%3.1f, b=%5.3f, c=00%3.1f,s=%3.2e,area=%4.2f\n",a,b,c,s, area);}#include<stdio.h>void main(){ int a=3,b=7;float x=8.5,y=71.82;char c1='A',c2='a';printf("a=%d (空2格) b=%d\n(空1格) x=%3.1f,y=%5.2f\n(空1格)c1='%c' (空2格)c2='%c'\n",a,b,x,y,c1,c2);}#include<stdio.h>#define PI 3.1415926543void main(){ float r,a;int h;scanf("%f%d",&r,&h);printf("圆的周长是:%7.2f\n",2*PI*r); printf("圆的面积是:%7.2f\n",PI*r*r); printf("圆的圆柱体积是:%7.2f\n",PI*r*r*h);}#include<stdio.h>#include<math.h>void main(){ int a,b,c;float k,t,x1,x2;scanf("%d%d%d",&a,&b,&c);k=b*b-4*a*c;t=b/(-2*a);if(k>=0){if(k>0){ x1=t+sqrt(k)/(-2*a);x2=t-sqrt(k)/(-2*a);}else{x1=t;x2=t;}printf("x1=%3.1f,x2=%3.1f\n",x1,x2);}elseprintf("此方程无实根\n");}#include<stdio.h>void main(){char a,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);printf("\ n");putchar(a);printf("\n");putchar(b);printf(" \n");putchar(c);printf("\n");}#include<stdio.h>void main(){int a;scanf("%d",&a);if(a%3==0) printf("3 times %d is %d\n",a/3,a);if(a%7==0) printf("%d id %d times 7\n",a,a/7);else printf("%d is not times 3 or not times 7\n",a);} #include<stdio.h>void main(){ float x,y;scanf("%f",&x);if(x>=0&&x<=100){if(x>=50&&x<=100) y=2*x*x+3;if(x>=32&&x<50) y=x+2;else y=x;printf("y=%3.2f\n",y);}elseprintf("the number is not safe!\n"); }#include<stdio.h>void main(){int year,month,leap;scanf("%d%d",&year,&month);if((year%4==0&&year%100!=0)||(year%40 0==0)) {printf("%dis a leap year\n",year);leap=0;}else{printf("%d is not a leap year\n",year);leap=1;}}#include<stdio.h>void main(){int a,b,c,d,e,f,t;scanf("%d",&a);if(a/10000!=0) {printf("%d is 5位数字\n",a); t=5;}elseif(a/1000!=0) {printf("%d is 4位数字\n",a); t=4;}elseif(a/100!=0) {printf("%d is 3位数字\n",a); t=3;}elseif(a/10!=0) {printf("%d is 2位数字\n",a); t=2;}else{printf("%d is 1位数字\n",a);t=1;}if(t=5){b=a/10000;c=(a-b*10000)/1000;d=(a-b*10000-c*1000)/100;e=(a-b*10000-c*1000-d*100)/10;f=(a-b*10000-c*1000-d*100)%10;printf("%d,%d,%d,%d,%d\n%d,%d,%d, %d,%d\n",b,c,d,e,f,f,e,d,c,b);}else if(t=4){c=a/1000;d=(a-a*1000)/100;e=(a-a*1000-d*100)/10;f=(a-a*1000-d*100)%10;printf("%d,%d,%d,%d\n%d,%d,%d,%d\ n",c,d,e,f,f,e,d,c);}else if(t=3){d=a/100;e=(a-a*100)/10;f=(a-a*100)%10;printf("%d,%d,%d\n%d,%d,%d\n",d,e,f,f ,e,d);}else if(t=2){e=a/10; f=a%10;printf("%d,%d\n%d,%d\n",e,f,f,e);}else if(t=1){f=a;printf("%d\n%d\n",f,f);}}#include<stdio.h>void main(){ char m;scanf("%c",&m);if(m>='A'&&m<='Z')printf("%c 是大写字母\n",m); elseif(m>='a'&&m<='z')printf("%c 是小写字母\n",m);elseif(int(m)>=48&&int(m)<=57)printf("%c 是数字\n",m);elseprintf("%c 是字符\n",m);}#include<stdio.h>void main(){ int a,b,c;scanf("%d%d%d",&a,&b,&c);if((a+b<c)||(a+c<b)||(b+c<a)||(a-b>c)||(b-a>c) ||(a-c>b)||(c-a>b)||(b-c>a)||(c-b>a))printf("此三数字不能构成三角形\n");elseif((a==b)&&(b==c))printf("%d %d %d 此三数字能构成等边三角形\n",a,b,c);elseif(((a==b)&&a!=c)||((a==c)&&a!=b)||(( c==b)&&b!=a))printf("%d %d %d 此三数字能构成等腰三角形\n",a,b,c);elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b *b==a*a))printf("%d %d %d 此三数字能构成直角三角形\n",a,b,c);elseprintf("%d %d %d 此三数字能构成一般三角形\n",a,b,c);}#include<stdio.h>void main(){ int i;for(i=0;i<=100;i++)if(i%11==0) printf("%d ",i);else continue;printf("\n");}#include<stdio.h>void main(){ float s=1.0;int i;for(i=2;i<=34;i++,i++)s=s*i;printf("2*4*6*∧*34=%7.2f\n",s);}#include<stdio.h>void main(){ int a,b,c;for(a=1;a<4;a++){ for(b=0;b<=2*a-2;b++)printf(" ");for(c=7-2*a;c>=1;c--)printf("* ");printf("\n");}for(a=4;a<7;a++){for(b=-2*a+12;b>=0;b--)printf(" ");for(c=2*a-7;c>=1;c--)printf("* ");printf("\n");}}#include<stdio.h>#include<math.h>void main(){double s=0.0,a=1.0,b=2.0,temp;int n,i;printf("please input number n:\n"); scanf("%d",&n);for(i=1;i<=n;i++){s=s+pow(-1,i+1)*a/b;temp=b;b=a+b;a=tem p;}printf("s=%f\n",s);}#include<stdio.h>#include<math.h> void main(){ int t=0,i,a,b;for(i=200;i<=500;i++){a=i/7;if(i%7==0){for(b=2;b<=sqrt(a);b++)if(a%b==0) break;if(b>sqrt(a)){ t++;printf("%d ",i);}}}printf("\n");printf("t=%d\n",t);}#include<stdio.h>void main(){int a;for(a=1;a<10000;a++){if((a%2==1)&&(a%3==2)&&(a%5==4)& &(a%6==5)&&(a%7==0)){printf("这条阶梯最少阶数是:%d\n",a); break;}}}#include<stdio.h>void main(){ int b;for(int i=2;i<=1000;i++){ b=0;for(int a=1;a<=i/2;a++){if(i%a==0) b=b+a;}if(b==i)printf("%d ",i);}printf("\n");}这些为实验一至实验五的题目参考答案,有兴趣的同学可以拿回去看一下!实验六6.1#include<stdio.h>void main(){ int a[10],i;float sum=0;printf("please input numbers:\n"); for(i=0;i<10;i++)scanf("%d",&a[i]);printf("output:\n");for(i=0;i<10;i++){ sum=sum+a[i];}printf("aver=%f\n",sum/10);}6.2#include<stdio.h>void main(){int a[3][2],b[2][3],i,j;printf("please input a[3][2]:\n");for(i=0;i<3;i++){ for(j=0;j<2;j++)scanf("%d",&a[i][j]);}printf("ouput a[3][2]:\n");for(i=0;i<3;i++){ for(j=0;j<2;j++){ b[j][i]=a[i][j];printf("%d ",a[i][j]);}printf("\n");}printf("ouput b[2][3]:\n");for(i=0;i<2;i++){ for(j=0;j<3;j++)printf("%d ",b[i][j]);printf("\n");}}6.3 #include<stdio.h>void main(){ double a[10],i;a[0]=2,a[1]=3;for(i=2;i<10;i++){ a[i]=a[i-1]*a[i-2];}printf("the output is:\n");for(i=0;i<10;i++){if(i%4==0) printf("\n");printf("%f ",a[i]);}printf("\n");}6.4#include<stdio.h>void main(){int a[20],i,j,t,k=0;printf("plaese input the number:\n");for(i=0;i<20;i++)scanf("%d",&a[i]);for(j=0;j<20-1;j++)for(i=0;i<20-1-j;i++)if(a[i]<a[i+1]){k++;t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("output the sorted number:\n");for(i=0;i<20;i++){if(i%4==0) printf("\n");printf("%d ",a[i]);}printf("\n");printf("k=%d\n",k);}6.5#include<stdio.h>void main(){ int i,temp,n;char a[100]={0};printf("please input number n:\n"); scanf("%d",&n);getchar();printf("please input number :\n"); for(i=0;i<n;i++)scanf("%c",&a[i]);for(i=0;i<n/2;i++){ temp=a[n-1-i];a[n-1-i]=a[i];a[i]=temp;}printf("output the sorted:\n");for(i=0;i<n;i++)printf("%c ",a[i]);printf("\n");}课本153面7.6#include<stdio.h>void main(){int a[10][10],i,j;a[0][0]=1;a[1][0]=1;a[1][1]=1;for(i=2;i<10;i++)for(j=1;j<i;j++){a[i][0]=1;a[i][i]=1;a[i][j]=a[i-1][j]+a[i-1][j-1];}for(i=0;i<10;i++)for(j=0;j<=i;j++){printf("%d ",a[i][j]);if(i==j) printf("\n");}}6.6#include<stdio.h>#include <string.h>void main(){char c[30]={0};int b,i;printf("please input the number b:\n"); scanf("%d",&b);getchar();printf("please input the number:\n");for(i=0;i<7;i++)scanf("%c",&c[i]);printf("please output the new number:\n"); for(i=strlen(c)-1;i>=b-1;i--)c[i+1]=c[i];c[i+1]='a';for(i=0;i<8;i++)printf("%c",c[i]);//printf("\n");}6.7#include<stdio.h>void main(){ int a[2][3],b[3][4],i,j,m,c[2][3],d[2][4]={0},e[2][ 3];printf("please input the number a[i][j]:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("please input the number b[i][j]:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&b[i][j]);printf("please input the number c[i][j]:\n"); for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&c[i][j]);printf("please input the number a[i][j]+c[i][j]:\n");for(i=0;i<2;i++){for(j=0;j<3;j++){e[i][j]=a[i][j]+c[i][j];printf("%d ",e[i][j]);}printf("\n");}printf("please input the number a[i][m]*b[m][j]:\n");for(i=0;i<2;i++){for(j=0;j<4;j++){for(m=0;m<3;m++){d[i][j]=d[i][j]+a[i][m]*b[m][j];}printf("%d ",d[i][j]);}printf("\n");}}6.8 .第一种方法#include<stdio.h>void main(){ int a[4][4],b[2][4]={0},i,j,max,min,m=0; printf("input number a[4][4]:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);printf("output number a[4][4]:\n");for(i=0;i<4;i++){ for(j=0;j<4;j++)printf("%3d",a[i][j]);printf("\n");}printf("output the sorted number b[2][4]:\n");for(i=0;i<4;i++){for(j=0;j<4;j++){min=max=a[i][0]; if(a[i][j]>max)max=a[i][j];f(a[i][j]<min)min=a[i][j];}if(i/2==0){b[i/2][m]=min;b[i/2][m+1]=max;m+=2;if (m>=4) m=0;}else{b[i/2][m]=min;b[i/2][m+1]=max;m+=2;}}for(i=0;i<2;i++){for(j=0;j<4;j++){printf("%d ",b[i][j]);}printf("\n");}}6.8 .第二种方法#include<stdio.h>void main(){inta[4][4],b[2][4]={0},i,j,max,min,m=0,count= 0;printf("input number a[4][4]:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);printf("output number a[4][4]:\n");for(i=0;i<4;i++){ for(j=0;j<4;j++)printf("%3d",a[i][j]);printf("\n");}printf("output the sorted number b[2][4]:\n");for(i=0;i<4;i++){for(j=0;j<4;j++){min=max=a[i][0];if(a[i][j]>max)max=a[i][j];if(a[i][j]<min)min=a[i][j];}count+=2;if(count<=4){b[0][m]=min;b[0][m+1]=max;m+=2;}else{if (m>=4) m=0;// count+=2;b[1][m]=min;b[1][m+1]=max;m+=2;}}for(i=0;i<2;i++){ for(j=0;j<4;j++){printf("%d ",b[i][j]);}printf("\n");}} 6.9#include<stdio.h>void main(){inta[5]={1,3,5,7,9},b[12]={2,6,8,10,12,14},i,j,k;for(i=0;i<5;i++){ for(j=0;j<11;j++){if(a[i]<b[j]){for(k=10;k>=j;k--){b[k+1]=b[k];}b[j]=a[i];break;}}}printf("output the b[11]:\n");for(j=0;j<11;j++){printf("%d ",b[j]);}printf("\n");}6.10#include <stdio.h>void main(){chara[13]={'A','B','C','D','E','F','G','H','I','J',' K','L','M'};int numout=0;int k=0;for(int i=0;(i%13)<sizeof(a);i++){i%=13;if (a[i]!=0){k++;if(k==5){k=0;printf("%c ",a[i]);a[i]=0;numout++;if (numout==13) break;}}}printf("\n");}实验七7.1#include<stdio.h>void main(){ float y ,a,b;float abb(float,float);printf("please input the number a and b:\n");scanf("%f%f",&a,&b);y=abb(a,b);printf("y=%3.1f\n",y);}float abb(float a,float b){ float z;z=(a-b)/(a+b);return z;}7.2#include<stdio.h>void main(){int a[10]={0},i,sum;int fun(int a[10]);printf("please input a[10]:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);sum=fun(a);printf("sum=%d\n",sum);}int fun(int a[10]){ int bb=0,k;for(k=0;k<10;k++)bb=bb+a[k];return bb;}7.3#include<stdio.h>void main(){ int x[10]={0},i,max;int f(int x[],int n);printf("input the number x[10]:\n");for(i=0;i<10;i++)scanf("%d",&x[i]);max=f(x,10);printf("max=%d\n",max);}int f(int x[],int n){ int m,k;m=x[0];for(k=0;k<10;k++){if(x[k]>m) m=x[k];}return m;}7.4#include<stdio.h>void main(){ char x[5];int a;int f(char x[5]);printf("please input x[5]:\n");scanf("%s",x);a=f(x);if (a==1)printf("a=%d\n该字符串是回文\n",a); if(a==0)printf("a=%d\n该字符串不是回文\n",a);}int f(char x[5]){ int A,B;for(A=0;A<5;A++){if(x[A]>='a'&&x[A]<='z') B=1;else B=0;}return B;}7.5#include<stdio.h>void main(){int a,b,c,d;int abb(int,int);int flr(int,int);printf("please input number a and b:\n");scanf("%d%d",&a,&b);c=abb(a,b);d=flr(a,b);printf("最大公约数是:%d\n最小公倍数是:%d\n",d,c);}int abb(int a,int b){ int m,n,r;m=a;n=b;r=m%n;while(r!=0){ m=b;n=r;r=m%n;}return (a*b/n);}int flr(int a ,int b){int m,n,r;m=a;n=b;r=m%n;while(r!=0){ m=b;n=r;r=m%n;}return n;}7.6#include<stdio.h>void main(){ int m,n,c,d,e;int adv(int,int,int);int vcc(int);printf("please input a and b:\n");scanf("%d%d",&m,&n);c=vcc(m);d=vcc(m-n);e=vcc(n);m=adv(vcc(m),vcc(m-n),vcc(n));printf("%d\n",m);}int vcc(int m){ int s=1,i;for(i=1;i<=m;i++){ s=s*i;}return s;}int adv(int a,int b,int c){return a/(b*c);}7.7#include<stdio.h>#include<math.h>void main(){ int i,a,b,c,d,t=0;int saa(int);for(i=100;i<=999;i++){ a=i/100;//百位,i为本身b=(i-a*100)/10;//十位c=(i-a*100)%10;//个位d=a*10+b;if(saa(i)&&saa(d)&&saa(a)){ t++;printf("%d ",i);if(t%5==0)printf("\n");}}printf("\n");}int saa(int a){ int i,t;for(i=2;i<=sqrt(a);i++){if(a%i==0){ t=0;break;}if(i>sqrt(a)){ t=1;}}return t;}7.8#include<stdio.h>void main(){int k;int f(int);k=f(10);printf("k=%d\n",k);}int f(int n){ int c;if (n==1||n==2)c=1;else c=f(n-1)+f(n-2);return c;}7.9#include<stdio.h> void main(){ char a[100]={0};double b;double ase(char a[]);printf("please input the nuber a:\n");scanf("%s",a);printf("output the nuber a:\n");b=ase(a);printf("b=%f ",b);printf("\n");}double ase(char a[]){ int i=0;bool flag=true;double c=0 ,m=1;while(a[i]!=0){if(a[i]=='.'){flag=false;i++;continue;}if(flag){c=c*2+(a[i]-48);}else{m=m/2;c=c+m*(a[i]-48);}i++;}return c;}7.10此题目必须在C语言的环境下编写,但基本思路非常清晰,希望同学们自己尝试。