




免费预览已结束,剩余12页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用C+编程已有一按从小到大的次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组中的位置#include using namespace std;int search(int a,int n, int x) int low, mid, high; low = 0, high = n-1; while (low amid) low = mid+1; else if (x n;/数组大小 for (int i = 0; i ai; cin x;/要查的数据 int l = search(a, n, x); if (l = -1) cout no such data! endl; else cout the data location is : l endl; return 0; 公约数和公倍数#include int main()int m, n;int m_temp, n_temp, res;printf(Enter two integer:n);scanf(%d %d, &m, &n);m_temp = m;n_temp = n;if (m 0 & n 0)dores = n % m;n = m;m = res; while (m != 0);printf(Greatest common divisor: %dn, n);printf(Lease common multiple : %dn, m_temp * n_temp / n);else printf(Error!n);return 0;关于辗转相除法, 搜了一下, 在我国古代的九章算术中就有记载,现摘录如下:约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法,实际上就是辗转相除法。辗转相除法求最大公约数,是一种比较好的方法,比较快。对于52317和75569两个数,你能迅速地求出它们的最大公约数吗?一般来说你会找一找公共的使因子,这题可麻烦了,不好找,质因子大。现在教你用辗转相除法来求最大公约数。先用较大的75569除以52317,得商1,余数23252,再以52317除以23252,得商2,余数是5813,再用23252做被除数,5813做除数,正好除尽得商数4。这样5813就是5569和52317的最大公约数。你要是用分解使因数的办法,肯定找不到。那么,这辗转相除法为什么能得到最大公约数呢?下面我就给大伙谈谈。比如说有要求a、b两个整数的最大公约数,ab,那么我们先用a除以b,得到商8,余数r1:abq1r1我们当然也可以把上面这个式子改写成乘法式:abq1r1-l)如果r10,那么b就是a、b的最大公约数3。要是r10,就继续除,用b除以r1,我们也可以有和上面一样的式子:br1q2r2-2)如果余数r20,那么r1就是所求的最大公约数3。为什么呢?因为如果2)式变成了br1q2,那么b1r1的公约数就一定是a1b的公约数。这是因为一个数能同时除尽b和r1,那么由l)式,就一定能整除a,从而也是a1b的公约数。反过来,如果一个数d,能同时整除a1b,那么由1)式,也一定能整除r1,从而也有d是b1r1的公约数。这样,a和b的公约数与b和r1的公约数完全一样,那么这两对的最大公约数也一定相同。那b1r1的最大公约数,在r10时,不就是r1吗?所以a和b的最大公约数也是r1了。有人会说,那r2不等于0怎么办?那当然是继续往下做,用r1除以r2,直到余数为零为止。在这种方法里,先做除数的,后一步就成了被除数,这就是辗转相除法名字的来历吧。一般用辗转相除法,都列成下面的式子:不过,九章中的辗转相除法略有些不同,它叫“更相减损”,是辗转相减的方法。这也很好理解,除法就是一种连续地减去除数的一种简便运算,一直减到结果比除数小为止。比如我们用“更相减损法”来求91和49的最大公约数,可以由91减49一次,得余42;再由49减42一次,余7;更由42减7,这一回要减五次,余的还是7,再减,就是0了。那么这个7就是91和49的最大公约数。这个7就是约分术中所谓的“等数”,因为减得结果和最后一次的减数相等了,就叫等数。辗转相除法在小学中学都没教过,恐怕是有点难讲清其中的道理。不过,两千多年前的古人居然有此创造,咱们后人再学不会,可就惭愧了,何况这还是一种很实用的方法。判断一个整数是否为素数,并求出2000以内的有十个以上的所有连续的非素数组#include iostream#include math.husing namespace std;int Prime(int n) int i,k=(int)sqrt(n)+1; for(i=2;ik;i+) if(n%i=0)break; if(i=k)return 1; else return 0; int main()int m,i,j,h=0,SUM=0;int a,b;coutab;/输入操作数的范围:左边小的右边大的。for(m=a;m=b;m+) h=0; if(Prime(m)=1) for(i=1;i+) if(Prime(m+i)=0)&(m+i=9)SUM+; coutSUM=-1;j-)coutm-j; coutn; else continue; coutnThe total is m;编程 输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大的顺序输出# include# includeusing namespace std;int main()int i,j,k,temp;cout请输入三个整数:ijk;if(ij)temp=i;i=j;j=temp;if(ik)temp=i;i=k;k=temp;if(jk)temp=j;j=k;k=temp;coutitjtkendl;string str1,str2,str3,tempt;cout请输入三个字符串str1str2str3;const char *s;const char *s1=str1.c_str();const char *s2=str2.c_str();const char *s3=str3.c_str();if(strcmp(s1,s2)0)s=s1;s1=s2;s2=s;if(strcmp(s1,s3)0)s=s1;s1=s3;s3=s;if(strcmp(s2,s3)0)s=s2;s2=s3;s3=s;couts1ts2ts3endl;return 0;将一个3*3的矩阵转置,用一个函数实现。在主函数中用scanf输入以下矩阵元素:2,4,6,8,10,12,14,16,18。将数组名作为函数参数。函数调用后在主函数中输出已转置的矩阵。#include StdAfx.h#include#include#include#define length 3/指定长度/*装置矩阵*/void transposition(int Arraylengthlength)int ArrayTemplengthlength;for (int i = 0;i length;i+)for (int j = 0;j length;j+)ArrayTempji = Arrayij;for (i = 0;i length;i+)for (int o =0;o length;o+)Arrayio = ArrayTempio;return;main()int i,j;/*printf(please input lengthn);scanf(%d,&length)*/int Arraylengthlength;printf(please input transpositionn);for (i = 0;i length;i+)for (j = 0;j length;j+)scanf(%d,&Arrayij);for (i = 0;i length;i+)for (j = 0;j length;j+)printf(%3d,Arrayij);printf(n);printf(nn);transposition(Array);for (i = 0;i length;i+)for (j = 0;j length;j+)printf(%3d,Arrayij);printf(n);system(pause);return 0;函数【例1】写一函数,是给定的一个二位数组(44)转置,即行列互换。源程序如下:/*矩阵的转置*/#define N 4int arrayNN;convert(array)int array44;int i,j,t;for (i=0;iN;i+)for (j=i+1;jN;j+)t=arrayij; arrayij=arrayji; arrayji=t;main()int i,j;printf(“输入数组元素:n”);for (i=0;iN;i+)for (j=0;jN;j+)scanf(“%d”,&arrayij);printf(“n数组是:n”);for (i=0;iN;i+)for (j=0;jN;j+)printf(“%5d”,arrayij);printf(“n”);conver(array);printf(“转置数组是:n”);for (i=0;iN;i+)for (j=0;jN;j+)printf(“%5d”,arrayij);printf(“n”);【例2】写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。源程序如下:mian()int number;printf(“请输入一个正整数:n”);scanf(“%d”,&number);if (prime(number)printf(“n %d是素数.”,number);elseprintf(“n %d不是素数.”,number);int prime(number) /*此函数用于判别素数*/int number;int flag=1,n;for(n=2;nN)printf(“超过长度,请重输!”);elseflag = 0;sort(str);printf(“n排序结果:”):for (i=0;iN;i+)printf(“%c”,stri);sort(str)char strN;int i,j;char t;for (j=1;jN;j+)for (i=0;(istri+1)t=stri; stri=stri+1; stri+1=t;【例3】用牛顿迭代法求根。方程为ax3+bx2+cx+d=0,系数a、b、c、d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。源程序如下:/*牛顿迭代法解方程*/#include “math.h”float solut(a,b,c,d)float a,b,c,d;float x=1,x0,f,f1;dox0=x;f=(a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;while(fabs(x-x0)=1e-5);return(x);main()float a,b,c,d;printf(“n输入方程的系数a,b,c,dn”);scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);printf(“n方程是:%5.2fx3+%5.2fx2+%5.2fx+%5.2f=0”,a,b,c,d);printf(“nX=%10.7fn”,solut(a,b,c,d);在此题目中,方程的系数是未知的,这是与以前我们用牛顿迭代法的时候不同的地方。但原理、算法是相同的,这里我们用函数来求方程的根。实验九 文件目的与要求】1掌握文件和文件指针的概念以及文件的定义方法。2了解文件打开和关闭的概念和方法。3掌握有关文件的函数。【上机内容】【一般示例】【例1】对data.dat文件写入100条记录。#include main()FILE *fp;int i;float x;fp=fopen(date.dat,w);for(i=1;i=100;i+)scanf(%f,&x);fprintf(fp,%fn,x);fclose(fp);【例2】设有一文件cj.dat存放了50个人的成绩(英语、计算机、数学),存放格式为:每人一行,成绩间由逗号分隔。计算三门课平均成绩,统计个人平均成绩大于或等于90分的学生人数。#include main()FILE *fp;int num;float x , y , z , s1 , s2 , s3 ;fp=fopen (cj.dat,r);fscanf (fp,%f,%f,%f,&x,&y,&z);s1=s1+x;s2=s2+y;s3=s3+z;if(x+y+z)/3=90)num=num+1;printf(分数高于90的人数为:%.2d,num);fclose(fp);【例3】统计上题cj.dat文件中每个学生的总成绩,并将原有数据和计算出的总分数存放在磁盘文件“stud”中。#include stdio.hmain()FILE *fp1,*fp2;float x,y,z;fp1=fopen(cj.dat,r);fp2=fopen(stud,w);while(!feof(fp1)fscanf (fp1,%f,%f,%f,&x,&y,&z);printf(%f,%f,%f,%fn,x,y,z,x+y+z);fprintf(fp2,%f,%f,%f,%fn,x,y,z,x+y+z);fclose(fp1);fclose(fp2);【例4】 学生成绩管理系统.cpp : Defines the entry point for the console application./设计一个学生类,包括数据成员姓名、分数、等级(字符型数组),设计友元函数,用来根据成绩分数确定对应的等级:90100:优; 8089:良; 7079:及格; 60以下:不及格; disp()成员函数用来显示学生的数据。主函数中定义学生类对象数组,初始化姓名和分数;输出结果;显示每个学生的姓名、分数、等级。#include stdafx.h#include#includeusing na
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省2025年下半年海船船员适任考试和评估计划船舶结构与货运综合练习题及答案
- 慢性舌扁桃体炎合并吞咽困难护理查房
- 阿拉尔市2025-2026学年八年级下学期语文期末模拟试卷
- 安徽省亳州市涡阳县2023-2024学年高一上学期期末考试历史试卷及答案
- 社区街道消防课件
- 内科细节管理-推进护理服务
- 社区电动车安全知识培训课件
- 浙江省嘉兴市2024-2025学年高一上学期期末检测生物试卷(含答案)
- 贵州省贵阳市花溪区燕楼中学2024-2025学年七年级下学期6月质量监测数学试卷(含部分答案)
- 车间水暖安装合同范本
- 留疆战士考试题库及答案
- 赏识你的学生
- 心衰病患者护理查房课件
- TSG11-2020 锅炉安全技术规程
- 哲学导论(完整版)
- 合成孔径雷达
- 四年级上册可爱的榆林全册教案
- 金属封闭母线
- 北师大版数学四年级下册全册教案设计
- 汉语拼音发音表(适合初学者和老年人)
- 购物中心商场商户促销活动管理制度
评论
0/150
提交评论