ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:20.50KB ,
资源ID:29947615      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29947615.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C上机题目期末复习资料剖析.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C上机题目期末复习资料剖析.docx

1、C 上机题目期末复习资料剖析一些算法的程序,有的是上机题的答案,各位同学可根据自己的时间安排进行复习。打印三角形:#include void Rect(int line)/打印矩形 int i, j ; for (i=0; iline; i+) /矩形共line行 for(j=1; j=line; j+) cout *; coutendl; void TriangA(int line)/打印上三角 int i,j; for (i=0; iline; i+) /三角形共line行 for(j=0; jline-i; j+) cout ; /输出前方空格 for(j=1; j=2*i+1; j+)

2、 cout *; coutendl; void TriangB(int line)/打印下三角 int i, j ; for (i=0; iline; i+) /三角形共line行 for(j=0; j=i; j+) cout ; /输出前方空格 for(j=1; j=2*(line-1-i)+1; j+) cout *; cout0 & ch5) coutn1_输入整数n 2_矩形 3_上三角 4_下三角 5_结束: ; coutch; /输入选择项号码 switch(ch) case 1: coutn; /输入函数参数 break;case 2: cout打印n行矩形:endl; Rect

3、(n); break; case 3: cout打印上三角:endl; TriangA(n); break; case 4: cout打印下三角:endl; TriangB(n); break; case 5: break; /switch /while设计两个函数,分别求两个数的最大公约数和最小公倍数。 #include MaxCommonDevisor(int n,int m) for(int i=n;i=1;i-) if(n%i=0 & m%i=0) break; return i;MinCommonMultiple(int n,int m) for(int i=n;i=n*m;i+)

4、if(i%n=0 & i%m=0) break; return i; void main() int i,j; cout请输入两个整数:ij; cout最小公约数:MaxCommonDevisor(i,j)t最大公倍数:MinCommonMultiple(i,j)endl;验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+2 6=3+3 8=3+5 50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。bool prime(int m) /判断整数m是否为素数 if(m=1|m=0) return false; if(m=2)

5、 return true; /是素数 int k=(int)sqrt(m); for(int i=2;ik) return true; /是素数 else return false; /不是素数void main() for(int n=4;n=50;n+=2) for(int i=2;i=n/2;i+) if(prime(i) & prime(n-i) coutn=i+n-iendl;/列出所有可能组合 输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1在三角中的每个数是一个组合C(n,

6、k):C(n, k)=( (n/1)(n-1)/2(n-2)/3) (n-k+2)/(k-1)(n-k+1)/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include #include using namespace std;long zrf_comb(int n, int k) if (n 0 | k n) return 0; long c = 1; for (int i=1; i=k; i+, n-) c = c*n/i; return c;int main() const m = 13; int j; for (int i = 0; i m; i+) for (j

7、 = 1; j m-i; j+) cout setw(2) ; for (j = 0; j = i; j+) cout setw(4) zrf_comb(i,j); cout endl; return 0;筛法求3100间的所有素数void main() int prime49,i,j=3; for (i=0;i49;i+) /将3100间的所有奇数放入筛(数组)中 primei=j; j=j+2; for(i=0;i48;i+) /用每一个当前位置上的数去“试筛”后面的其他数 if (primei) /如果该数字不为0 for(j=i+1;j49;j+) /对于当前“筛孔”后面的每一个数 i

8、f (primej&(primej%primei=0) primej=0; /如果是“筛孔”数的倍数就将其筛掉j=0; for(i=0;i49;i+) /循环输出各素数 if (primei) /如果该位置上的数没有被筛掉 coutprimeit; /输出该素数 j+; /j统计着素数个数 if (j%5=0) coutn; /一行5个素数 coutn; cout素数的个数为:jn;在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#define N 20void research( int y ,

9、int z ) /顺序查找函数 for(int i=0;iN;i+) if(yi=z) cout在第i位置上找到“zendl; return; if(i=N) cout没有找到zendl; return;void main() int aN,i; srand(unsigned(time(0); /产生一个随机种子 for(i=0;iN;i+) ai=rand(); /ai的值取自随机数 coutait; couti; cout”nn”; research(a,i); /调用函数research查找i在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。int BSearch(int a

10、,int x) /二分查找函数 int left=0,right=N,mid; /left为左端点,right为右端点,mid为中点 while(left=right) mid =(left+right)/2; /计算中点 coutmidx) right= mid-1; /要查找的数在左半区间,收缩右端点 else if(amidright) return -1; /查找失败 else return mid;void main() int x,pos,dataN=1,5,8,12,14,18,20,25,35,40; coutx; pos = BSearch(data,x); if(pos=0

11、) cout“ ”x”在数组中的位置:” posendl; else cout” 数组中无此元素!”endl;打印杨辉三角形 -计算二项式系数11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1#include#define N 6void main(void) int aNN,i,j; for(i=0;iN;i+) aii=1; /对角线元素为1 ai0=1; /最左一列元素为1 for(i=1;iN;i+) for(j=1;ji;j+) /主对角线以下元素计算 aij=ai-1j-1+ai-1j; for(i=0;iN;i+) /输出杨辉三角形 for(j=0;j=

12、i;j+) coutaijt; coutendl; 有两个数据系列分别为: a:48,435,232,666,264,1323,456 b: 186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。int a7= 48,435,232,666,264,1323,456; int b7=186, 90,152,122, 82, 243,312; c7= 6, 15, 8, 2 , 2 , 27, 24d7=1488,2610,4408,40626,10824,11907,5928/求最大公约数

13、int ojld(int m,int n) /形参不能是数组元素 int r; while(r=m%n) m=n; n=r; return n;/最小公倍数int gbs(int m,int n,int k) return m*n/k;void main(void) int a7=48,435,232,666,264,13231,456; int b7=186,90,152,122,82,243,312; int c7,d7; for(int i=0;i7;i+) ci=ojld(ai,bi); di=gbs(ai,bi,ci); for(i=0;i7;i+) coutcit; coutend

14、l; for(i=0;i7;i+) coutdit; coutendl;编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#define N 10int maxin(int x ,int flag) int j=0,i; /j为最大(小)数的位置 for(i=0;ixj)j=i; /j标记最大数位置 else if(xixj)j=i; /j标记最小数位置 return j;void main() int aN=21,12,33,64,56,6,87,78,99,10, t, m; m=maxin(a,1); /求最大数,第一个实参为数

15、组名 if(m!=0) t=am,am=a0,a0=t; /交换最大数和第0个元素 m=maxin(a,0); /求最小数 if(m!=N-1) t=am, am=aN-1, aN-1=t; /交换最小数和最后元素编写一个程序,将十进制整数n转换成二进制数。void trans(int a ,int n) / n转二进制,a 为数组 int i=0; /假设i20 while(n!=0) ai+=n%2; n=n/2;void main() int b20=0,n,i=19; coutn; /输入待转换的十进制数n,n0 trans(b,n); /调用函数trans转换,数组名b作实参 cou

16、t=0; i-) /从高位到低位输出二进制数 coutbi; coutn;编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。void input(int a 5 , int n) /n是数组a第1维的大小,由调用函数指定 cout请输入n个同学成绩n; for(int i=0;iai0ai1ai2;void print(int a 5 ,int n) /形参是二维数组,第2维必须指定大小

17、cout”高数 英语 C+ 总分 平均分n”; for(int i=0;in;i+) coutsetw(4)ai0setw(6)ai1 setw(5)ai2setw(6) ; coutai3setw(8)ai4n; void cut(int a5,int n) for(int i=0;in;i+) ai3=ai0+ai1+ai2; /计算总分 ai4=ai3/3; /平均分不计小数 void main() int score505,n; coutn; input(score,n);/输入n个学生3门课的成绩 cut(score,n); /计算学生的总成绩和平均成绩 print(score,n)

18、; /输出n个学生的成绩有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#define N 50void main() char strN,nstrN,ch; int i=0,j=0; cout“请输入文字:; cin.getline(str,N); /输入一行字符 coutch; /输入待删除的字符 while(stri!=0) if(stri!=ch) nstrj+=stri;/复制一个字符 i+; nstrj=0; cout新串:nstrendl;编写一个程序,将字符串s1中所有出现在字 符串s2中的字符删

19、去。int in(char ch,char str ) /判断ch是否在串str中 int i=0; while(stri!=0) if(stri+=ch)return 1; return 0;void del(char str ,int k) /删除k位置的一个字符 while(strk!=0) strk+=strk+1;void sdel(char s1 ,char s2 ) /从s1中删除所有的s2 int i=0,k=0; while(s1i!=0) if(in(s1i,s2)=1)del(s1,i); i+; void main() char str150,str210; cout请

20、输入字符串:; cin.getline(str1,50); cout请输入要删除的字串:; cin.getline(str2,10); sdel(str1,str2); coutstr1endl;编写一个程序,实现两个长整数相加的过程。void nsort(char str );void add(char s1 ,char s2 ,char sum );void main() char s140=0, s240=0, sum50=0; couts1; /输入被加数 couts2; /输入加数 nsort(s1); nsort(s2); /加数和被加数反转 add(s1,s2,sum); /相加

21、 nsort(sum); /和反转 cout相加结果:suml2?l1:l2; /len为位数大者 while(ilen) j=s1i+s2i-96+jw; /计算第i位的和 if(j9) /有进位 sumi=j+38,jw=1; else /无进位 sumi=j+48,jw=0; i+; if(jw) sumi=1; /处理最高位的进位 else sumi=0; sumi+1=0; /设置和的字符串结束符void nsort(char str ) int i=0, j=strlen(str)-1; char t; while(ij) t=stri; stri=strj; strj=t; i+

22、; j-; 已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中void main(void) int a8=1,2,4,8,32,64,128, x; for(int i=0;i7;i+) coutait; coutendl; i-; coutx; while(aix)ai+1=ai-; ai+1=x; for(i=0;i8;i+) coutait; coutendl;矩阵乘积void main() int aNK,bKM,cNM; int i,j,l; /-输入a数组 cout请输入a数组:n; for(i=0;iN;i+) for(j=0;jaij;/-输入b数组 cout请输入b数组:n; for(i=0;iK;i+) for(j=0;jbij; /-计算乘积 for(i=0;iN;i+) for(j=0;jM;j+) cij=0; for(l=0;lK;l+) cij+=ail*blj; /-输出乘积结果 for(i=0;iN;i+) for(j=0;jM;j+) coutcijt; coutn;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1