当前位置:首页 >> 计算机软件及应用 >>

简单计算机程序设计基础复习资料


计算机程序设计基础复习大纲 (2016-9)
一、考试范围:大纲范围,教材+实验任务+课后作业 二、考试题型与分数布局: 1. 单选题(30?1 分,共 30 分) 2. 判断题(15?1 分,共 15 分) 3. 填空题(3?6 分,共 18 分) 4. 阅读题(3?5 分,共 15 分) 5. 编程题(3 题,共 22 分) 考试方式: 闭卷, 考试时间: 十七周周三 (12 月 21 日) 晚上 7:00~9:00
X1514
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 学号 20110084 20110161 20111130 20120152 20120218 20120240 20120371 20120452 20130619 20130823 20130868 20131079 20131558 20132734 20133103 20133537 20133623 20134306 20134352 20134370 20134456 20134574 20139064 20139067 20139068 2014110259 2014110496 2014110522 姓名 刘畅 魏子杰 陆韦松 刘旭双 康润宁 曾志阳 黎涵 韩云鹏 林京鑫 李潇 沈臻 冷鹏 甯真铮 许洪洋 余信雨 周冠杰 周宏伟 谢昕明 袁润华 杨发军 罗飞 罗文雅卓 武光英 林阮山 陈庆全 扎西四朗 胡议元 唐俊 班级 土木2013-01班 土木2012-03班 车辆2011-02班 土木2013-03班 土木2013-06班 土木2013-07班 土木2013-12班 土木2013-15班 机械2013-02班 交运2013-04班 车辆2013-01班 测控2013-02班 电子2013-01班 交运2013-06班 环境2013-01班 材料(高分子)2013-01班 生医2013-01班 生物2013-04班 生物2013-05班 生物2013-01班 制药2013-03班 电气2013-01班 [留]土木2013-01班 [留]土木2013-01班 [留]土木2013-01班 土木2014-05班 土木2014-13班 土木2014-14班 序号 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 学号 2014110524 2014112092 2014112663 2014112667 2014112669 2014112683 2014112816 2014112849 2014112860 2014113098 2014113106 2014113112 2014113388 2014113973 2014113976 2014113998 2014113999 2014114004 2014114007 2014114020 2014114031 2014114102 2014114371 2014114383 2014114386 2014114393 2014114396 2014114584 姓名 高璟 杨孜旭 沙马拉古 张桐 尹恒 张文宇 朱泽坤 邱志豪 赵孟达 舒明发 刘研 梁嘉伟 尼扎 常琨 叶荣 缪波 李艺 吴浪 张华志 王丹 王品元 王季田 王旭东 周梦云 唐青青 焦无忧 哈孜列提 王丝蕊 班级 土木2014-14班 物理2014-01班 交运2014-06班[国] 交运2014-06班[国] 交运2014-06班[国] 交运2014-06班[国] 物流[国]2014-03班 物管2014-01班 物管[国]2014-02班 环境2014-03班 环境2014-03班 环境2014-03班 地质2014-03班 物理2014-01班 物理2014-01班 物理2014-01班 物理2014-01班 物理2014-01班 物理2014-02班 物理2014-02班 物理2014-02班 工力2014-03班 制药2014-04班 制药2014-04班 制药2014-04班 制药2014-04班 制药2014-04班 心理2014-01班

X1513
序号 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 学号 姓名 2014119014 阿力汉 2015110125 况猛 2015110149 王鑫宁 2015110162 张涛 2015110163 顾嘉伟 2015110166 旺久绕旦 2015110225 熊周 2015110351 赵子昂 2015110442 马高飞 2015110454 段浩轩 2015110458 董昊南 2015110466 王俊杰 2015110519 杨庆伟 2015110521 吴佳雨 2015110573 杨建瑞 2015110586 周时超 2015110709 王子聪 2015110722 曹宇田 2015110874 巴勒恩·达吾列 2015110953 贺龙 2015111011 廖臣臣 2015111034 朱振宇 2015111059 袁新琳 2015111077 赵杨 2015111102 柏江涛 班级 [留]土木2014-01班 土木2015-01班 土木2015-02班 土木2015-02班 土木2015-02班 土木2015-02班 土木2015-04班 土木2015-09班 土木2015-12班 土木2015-12班 土木2015-12班 土木2015-12班 土木2015-14班 土木2015-14班 土木2015-16班 土木2015-16班 测控2015-01班 测控2015-01班 工程2015-01班 建环2015-01班 测控2015-02班 热能2015-02班 车辆2015-01班 车辆2015-01班 车辆2015-02班 序号 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 学号 2015111106 2015111121 2015111140 2015111146 2015111150 2015111152 2015111154 2015111161 2015111346 2015112365 2015112369 2015112703 2015112712 2015113551 2015113671 2015113681 2015113696 2015113698 2015113748 2015114035 2015114247 2015114248 2015114279 2015114691 2015114712 姓名 蒋钛杭 迟嘉琦 陈泓宇 张安康 任彦平 李梦豪 谭畅 李海涛 张睿 高明昊 雷镇桧 王昕露 章圳琰 卓美君 杜佳奇 王佳乐 冉金辉 索朗多吉 范蒙 王子铭 刘洋杰 胥华 胥松柏 土旦益西 仁增昂毛 班级 车辆2015-02班 车辆2015-03班 车辆2015-03班 车辆2015-03班 车辆2015-04班 车辆2015-04班 车辆2015-04班 车辆2015-04班 电气类2015-05班 工商2015-01班 工商2015-01班 物管2015-01班 物流2015-02班 材料(金属)2015-02班 生医2015-02班 生医2015-02班 生医2015-02班 生医2015-02班 环境2015-01班 测绘类2016-01班 电讯(光电)2015-02班 电讯(光电)2015-02班 电讯(光电)2015-03班 制药2015-02班 制药2015-03班

三、各章节主要知识点
1、基础编程 求和运算:奇数、偶数求和;求阶乘的累加和;判定素数,求某一范围内的素数 求和或素数的个数;利用辗转相除法(阿基里德算法)求最大公约数和最小公倍 数;求回文; “数据---各位数字”的获取、逆序输出;十进制转换为二进制、十 进制转换为八进制。 **************************************************************************************** 2、数组的应用 数组的基本操作:数组元素求和、求平均值;求最大(最小)元素的值及其在数 组中的位置;删除数组元素;在有序数列中插入元素;起泡法、选择法的排序; 折半查找; 按规律自动产生一维或二维 N*N 数据; Fibonacci 数列; 杨辉三角。 字符串类的应用:以 string s1,s2;为例,掌握 getline(cin,s1)、 s1.size()、s[i] 以及 s1 与 s2 的比较操作。 **************************************************************************************** 3、指针的应用 利用指针在数组中完成:利用指针变量操作普通变量(数据的间接访问方式) ; 利用指针变量操作一维数组,包括:数据的有序插入、计算并输出交集、折半查 找、将数组中的最大最小值进行交换、将数组中的数据按相反顺序存放。 ****************************************************************************************

4、函数的应用 (1)库函数:随机函数的使用,例如利用随机函数产生数组的所有元素并执行 相应操作,比如左移或右移操作。 (2)用户自定义函数:注意主函数与子函数之间的数据交换,包括:值传递、 指针传递、数组传递、引用传递。 (3)递归函数:阶乘运算 n!、幂运算 ab、斐波那契数列。

容易出错的地方
? 少头文件 #include<string> #include<cmath> #include<cstdlib> #include<ctime> ? ? 判等 == 条件式中注意 不等 != 大于等于 >= 小于等于 <=

与&& 和或|| 的区别

字符是否为元音字符: (ch=='a'|| ch =='A'|| ch =='e'|| ch =='E'|| ch =='i'|| ch =='I'|| ch =='o'|| ch =='O'|| ch =='u'|| ch =='U') 字符是否为英文字母: ( ch>=’a’&&ch<=’z’ || ch>=’A’&&ch<=’Z’) 字符是否为数字: ( ch>=’0’&&ch<=’9’) ? ? ? ? ? ? Break(退出最近的封闭的循环)和 continue(退出本次循环)的区别 a=b=1; 40<a<50;

注意 if /else 的配对关系 注意两种排序算法中,循环条件及比较条件的区别 数组元素下标一定从 0 开始 函数定义头部和函数声明语句完全一样! ! !函数定义时,参数表的括号后面 不能有分号! 当数组作为函数参数时, 数组名后面的方括号一定不能省掉! ! !

?

函数调用时,实参和形成在类型和个数上要完全一致!如果是指针变量做函 数的形参,则在调用时实参一定传递的是地址(可以是普通变量的地址,如 F(&x); 可以是指向普通变量的指针, 如 int *p; p=&x; F(p); 或者是数组

名 int a[N]; sort(a,N) ;或者是指向数组的指针,如 int *p, a[N]; p=a; sort(p,N);

?

用 string 类处理字符串
#include<string> string s; //不能少

?

可以用 cin 输入(不接收空格) ;也可以用 getline(cin,s) ,接收空格 ; getline(cin,s,’#’),以特定字符作为输入结束的标志。

?

l=s.length();

l=s.size();

for(i=0;i<l;i++)

四、部分算法实现参考代码
? 判断一个数是否为素数 #include <iostream> #include<cmath> using namespace std; void main () { int n,i; cout<<"Enter a positive integer :" ; cin>> n ; for ( i=2; i<=sqrt((double)n);i++) { if(n%i==0) break; } if(i<=sqrt((double)n)) cout<<“不是素数“<<endl; else cout<<“是素数“<<endl; } ? 求 n 之内所有质数之和 #include <iostream> #include <cmath> using namespace std; void main () { int n,i=3,j,sum=2; cout<<"请输入质数求和的范围:"<<endl; cin>>n; cout<<n<<"之内的所有质数之和为:"<<endl<<"sum=2"; for(;i<=n;i++) { for(j=2;j<=sqrt(double(i));j++) { if(i%j==0) break; } if(j>sqrt(double(i))) { cout<<'+'<<i; sum=sum+i; } } cout<<"="<<sum<<endl; }

? 求 100 以内所有奇数之和 #include<iostream> using namespace std; void main() { int k,s=0; for(k=1;k<=100;k++) { if(k%2==0) continue; s=s+k; } cout<<“s=”<<s<<endl; } ? 求回文 #include <iostream> using namespace std; void main( ) { int n,m,num=0,r; cout <<"Enter the number:"; cin >>n; m=n; while (n!=0) { r=n%10; //输出数字左移 1 位 num=num*10+r; // 求逆序数 n/=10; /*从原始数据中去掉已经反序输出的数位,为获 取下一个反序输出数字做准备*/ } if(num==m) cout <<"整数"<<m<<"是回文"<<endl; else cout <<"整数"<<m<<"不是回文"<<endl; } ? 利用辗转相除法(阿基里德算法)求最大公约数和最小公倍数 #include <iostream> using namespace std; void main( ) { int p, q, r,a,b; // 变量定义,p,q,r,a,b // 提示用户由键盘输入两个正整数 cout<< "Please input two integer numbers:"<<endl; cin>>p>>q; a=p; b=q; //保留原来 p,q 的值,分别放在 a,b 中

//保证 p 为大数,q 为小数 if(p<q) { r=p; p=q; q=r; // 计算 p 除 q 的余数 r r=p%q; // 只要 r 不等于 0, 重复进行下列计算 while(r!=0) { p=q; q=r; r=p%q; } //辗转法 cout <<"两个正整数的最大公因数是"<<q<<endl; cout <<"两个正整数的最小公倍数是"<<a*b/q<<endl; } “数据---各位数字”的获取、重组及转存 已知 int a=1234,写出计算其个、十、百、千位的表达式。 解:a%10, a/10%10, a/100%10, a/1000%10 或 a/1000 ? 将键盘输入的整数反序输出 #include <iostream> using namespace std; void main( ) { int n,num; cout <<"Enter the number:"; cin >>n; cout <<"The number in reverse order is: "; do { num = n % 10; cout << num; n /= 10; } while (n!=0); cout <<endl; } ? 求一个整数的反序数 #include <iostream> using namespace std; void main( ) { int n,num=0; cout <<"Enter the number:"; cin >>n; while (n!=0) { r=n%10; //输出数字左移 1 位

}// 交换 p,q

num=num*10+r; // 求逆序数 n/=10; /*从原始数据中去掉已经反序输出的数位,为获 取下一个反序输出数字做准备*/ } cout <<"The number in reverse order is: "<<num<<endl; } ? 十进制转换为八进制 #include <iostream> #include <cmath> using namespace std; void main( ) { int a,j; //a 为十进制整数,j 为 a 除以 8 的余数 double i=0.0; //用于记录得到的余数是第几位,最低位为第 0 位 double b=0.0; //b 为转换后的八进制整数 cout<<"请输入一个十进制整数:"; cin>>a; do { j=a%8; //转换成那种进制就除以对应进制的基数 b=b+j*pow(10.0,i); /* 最先得到的余数是转换后的八进制数的最低位 , 乘以位权后存放到 b 中 */ a=a/8; // a 除 8 的商,为下一次“除基数取余”做准备 i=i+1; }while(a>0); // 循环,直到商为 0 为止 cout<<fixed; cout.precision(0); cout<<"转换成八进制数是: "<<b<<endl; } ? 八进制转换为十进制 #include <iostream> #include <cmath> using namespace std; void main( ) { int a,j; //a 为八进制整数,j 为 a 除以 10 的余数 double i=0.0; //用于记录得到的余数是第几位,最低位为第 0 位 double b=0.0; //b 为转换后的十进制整数 cout<<"请输入一个八进制整数:"; cin>>a; do { j=a%10; //取八进制数的各个位上的数字, 然后用位权法进行转换

以位权后存放到 b 中 */ a=a/10; // 取八进制数下一位上的数字(从右往左取) i=i+1; }while(a>0); // 循环,直到商为 0 为止 cout<<fixed; cout.precision(0); cout<<"转换成十进制数是: "<<b<<endl; } **************************************************************************************** **************************************************************************************** ? 一维数组求平均值 #include <iostream> using namespace std; void main( ) { const int N=10; int scores[N]; int n,i,total=0; // n 为数组实际长度 float avg=0.0; cout<<“请输入数组长度:”; cin>>n; // 输入数组实际长度 for(i=0;i<n;i++) cin>>scores[i]; for(i=0;i<n;i++) total=total+scores[i]; avg=float(total)/n; //计算平均成绩 cout<<“Average:”<<avg<<endl; } ? 求一维数组中的最大值及其位置 #include <iostream> using namespace std; void main( ) { const int N=10; int a[N]; //声明数组 int n,i,j,high; cout<<“请输入数组实际长度: ”; cin>>n; for(i=0;i<n;i++) cin>>a[i]; high=a[0]; //默认第一个元素为最大值 j=0; //记录最大元素的下标 for(i=1;i<n;i++) //从第二个元素开始比较 { if(a[i]>high) {

high=a[i]; //记录最大值 j=i; //记录最大元素的下标 } } cout<<“最大元素为第”<<j+1<<“个元素,它的值为: ”<< high <<endl; // 最大值或者用下标表示 a[j]; } ? 数组的反序(逆序)输出 法一:普通数组 #include <iostream> #include <iomanip> using namespace std; void main() { const int N=10; int a[N],i,j,n,temp; cout<<"请输入数组的实际长度:"<<endl; cin>>n; cout<<"请输入数组元素:"<<endl; for(i=0;i<n;i++) cin>>a[i]; for(i=0,j=n-1;i<j;i++,j--) { temp=a[i]; a[i]=a[j]; a[j]=temp; //实现反序存储 } cout<<"反序之后的数组元素为:"<<endl; for(i=0;i<n;i++) cout<<setw(4)<<a[i]; } ? 法二:指针方法 #include <iostream> #include <iomanip> using namespace std; void main() { const int N=10; int a[N],i,j,n,temp, *p; cout<<"请输入数组的实际长度:"<<endl; cin>>n; cout<<"请输入数组元素:"<<endl; for(p=a;p<a+n;p++) cin>>*p; p=a; for(i=0,j=n-1;i<j;i++,j--) { temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; //实现反序存储 }

cout<<"反序之后的数组元素为:"<<endl; for(p=a;p<a+n;p++) cout<<setw(4)<<*p; } ? 方法三:子函数实现 #include <iostream> using namespace std; void invert(int *p, int n) { int i,j,temp; for(i=0,j=n-1;i<j;i++,j--) { temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } void main() { int a[10],i,*p; cout<<"Input ten interger:"<<endl; for(i=0;i<10;i++) cin>>a[i]; p=&a[0]; // p=a; 指针指向数组 invert(p,10); //函数调用方式 1,用指向数组的指针 for(i=0;i<10;i++) cout<<a[i]<<endl; } void main( ) { int a[10],i; cout<<"Input ten interger:"<<endl; for(i=0;i<10;i++) cin>>a[i]; invert(a,10); //函数调用方式 2,用数组名 for(i=0;i<10;i++) cout<<a[i]<<endl; } 插入算法 ? 法一:普通数组 #include <iostream> #include <iomanip> using namespace std; void main() { const int N=10;

int a[N+1],p,x,i; cout<<“输入 a 数组: ”<<endl; for(i=0;i<N;i++) cin>>a[i]; cout<<"输入待插入的数 x:"<<endl; cin>>x; p=0; while(x>a[p]&&p<n) p++; //找到 x 应插入的正确位置 for(i=n-1;i>=p;i--) a[i+1]=a[i]; //将 a[p]~a[n-1]后移 a[p]=x; //x 插入正确位置 for(i=0;i<=n;i++) cout<<setw(3)<<a[i]<<endl; } ? 法二:指针 #include <iostream> #include <iomanip> using namespace std; void main(void) { const int N=10; int a[N+1],p,x, *t ; cout<<“输入 a 数组: ”<<endl;
for(t=a;t<a+N;t++)

cin>>*t; cout<<“输入待插入的数 x: ”<<endl; cin>>x; t=a; p=0; while (x>*(t+p)&&p<N) p++; for (t=a+N-1; t>=a+p; t--) for (i=N-1; i>=p; i--) *(t+1)=*t; // ② *(t+i+1)=*(t+i); // ① t=a; t=a+p; //将指针 t 指向由 p 记录的插入位置 *(t+p)=x; // ①
for(t=a;t<a+N+1;t++) *t=x; // ②

cin>>*t; } 折半查找 ? 方法一:数组方法 #include <iostream> using namespace std; void main( ) { int a[10],i, top=0,bot=9,mid, x; cout<<"Please input ten numbers(from small to big):"<<endl;

for(i=0;i<10;i++) cin>>a[i]; cout<<"Please input the number to search:"<<endl; cin>>x; //从键盘接收需要查找的数 while(top<=bot) { mid=(bot+top)/2; if(x==a[mid]) break; //结束最近的封闭循环体 else if(x>a[mid]) top=mid+1; else bot=mid-1; } if(top<=bot) cout<<x<<" is at the "<<mid+1<<" position."; else cout<<"No this number."; } ? 方法二:指针 #include <iostream> using namespace std; void main(void) { const int N =10; int a[N],x,top=0,bot=N-1,mid,*p; //输入一个从小到大序列的 8 个数据 for(p=a;p<a+N;p++) cin>>*p; //输入要查找的数 cin>>x; p=a; while(top<=bot) { mid=(top+bot)/2; if(*(p+mid)==x) break; else if(x>*(p+mid)) top=mid+1; else bot=mid-1; } if(top<=bot) cout<<"pos is:"<<mid+1<<endl; else cout<<"This number is not in this array "; }

选择排序 ? 方法一:数组方法 #include<iostream> using namespace std; void main( ) { const int N=20; int a[N]; int i,j,t,n; cout<<“Input n:”; cin>>n; cout<<“Input numbers:”<<endl; for(i=0;i<n;i++) cin>>a[i]; //输入数组元素 for(i=0;i<n-1;i++) for(j=i+1; j<n; j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } cout<<“The sorted numbers is:”<<endl; for(i=0;i<n;i++) { cout.width(5); cout<<a[i]; } } ? 方法二:指针 p=a; for(i=0;i<n-1;i++) for(j=i+1; j<n; j++) if(*(p+i)>*(p+j) { t=*(p+i); *(p+i)= *(p+j); *(p+j)=t; }

//排序

// 输出

//排序

冒泡排序 ? 方法一:数组方法 #include <iostream> using namespace std; void main( ) { const int N=20; int a[N]; int i,j,t,n; cout<<“Input n:”; cin>>n; cout<<"Input numbers:"<<endl; for(i=0; i<n; i++)

cin>>a[i];

//输入数组元素

for(i=0; i<n-1; i++ ) for(j=0; j<n-i-1; j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } cout<<"The sorted numbers is:"<<endl; for(i=0; i<n; i++) { cout.width(5); cout<<a[i] } cout<<endl; } ? 方法二:指针 p=a; for(i=0; i<n-1; i++ ) for(j=0; j<n-i-1; j++) if(*(p+j)> *(p+j+1)) { t=*(p+j); *(p+j)= *(p+j+1); ?

*(p+j+1)=t;

}

由随机数产生器产生一维数组的元素,求最大值及其所在数组中的位置,求 最小值及其所在数组中的位置,并把最大最小值进行交换。 #include<iostream> #include<cstdlib> #include<ctime> using namespace std; void main() { const int N=20; int a[N],n,i,j,k,t,max,min; cout<<"请输入 n 值:"<<endl; cin>>n; srand(time(NULL)); for(i=0;i<n;i++) { a[i]=1+rand()%(200-1+1); } cout<<"产生的随机数为:"<<endl; for(i=0;i<n;i++) cout<<" "<<a[i]; min=a[0]; for(i=1;i<n;i++) { if(a[i]<min) { min=a[i]; j=i; }

} cout<<endl; cout<<"最小数为:"<<min<<" 最小值是数组的第"<<j+1<<"个元素。"<<endl; max=a[0]; for(i=1;i<n;i++) { if(a[i]>max) { max=a[i]; k=i; } } cout<<"最大数为:"<<max<<" 最大值是数组的第"<<k+1<<"个元素。"<<endl; t=a[j];a[j]=a[k];a[k]=t; cout<<"最大、最小值交换后的结果为:"<<endl; for(i=0;i<n;i++) cout<<" "<<a[i]; } 定义有 10 个整型元素的一维数组,数组元素由随机数产生器生成,并将数 组中所有元素循环右移 m 位。 #include<iostream> #include<iomanip> #include<cstdlib> #include<ctime> using namespace std; void main() { const int N=10; int i,m,k,t=0; int a[N]; cout<<"随机产生数组的十个元素(1~100):"<<endl; srand(time(NULL)); //初始化随机数产生器 for(i=0;i<N;i++) { a[i]=1+rand( )%(100-1+1); //产生指定范围的随机数 } for(i=0;i<N;i++) cout<<setw(6)<<a[i]; cout<<endl<<"请输入循环右移的位数:"<<endl; cin>>m; k=m%N; while(k--) { t=a[N-1]; for(i=N-1; i>0; i--) a[i]=a[i-1]; ?

a[0]=t; } cout<<"数组循环右移"<<m<<"位后的结果为:"<<endl; for(i=0;i<N;i++) cout<<setw(6)<<a[i]; } ? 求一维数组的平均值并且把小于平均值的那些元素删掉。 #include <iostream> using namespace std; void main() { const int N=20; int a[N]; int i,j,n; double ave=0,sum=0; cout<<"input the n:"; cin>>n; for(i=0;i<n;i++) { cin>>a[i]; if(a[i]==0) break; } for(i=0;i<n;i++) { cout<<a[i]<<" "; } cout<<endl; for(i=0;i<n;i++) { sum=sum+a[i]; } ave=sum/n; cout<<"the ave is:"<<ave<<endl; for(i=0;i<n;i++) { if(a[i]<ave) { for(j=i;j<n;j++) { a[j]=a[j+1]; } //删除小于平均值的数组元素 n--; //删除小于平均值的元素后,数组的实际长度 i--; } } for(i=0;i<n;i++) {

cout<<a[i]<<" "; } } ? 按规律自动产生一维或二维 N*N 数据(如蛇形规律数据)

#include<iostream> #include<iomanip> using namespace std; void main() { const int t=6; int i,j,k=1,count; int a[t][t]; for(i=0;i<t;i++) { if(i%2==0) { count=i*t+1; for(j=0;j<t;j++) a[i][j]=count++; } else { count=(i+1)*t; for(j=0;j<t;j++) a[i][j]=count--; } } for(i=0;i<t;i++) { for(j=0;j<t;j++) cout<<setw(4)<<a[i][j]; cout<<endl; } for(i=0;i<t;i++) { for(k=0;k<3*(t-i);k++) cout<<' ';

for(j=0;j<=i;j++) cout<<setw(6)<<a[i][j]; cout<<endl; } } ? 按照指定图形或格式输出指定区域数据。

观察输出结果,可用发现规律: 共输出 10 行数据,第 10 行的“1”前面有 0 个空格;第 9 行的“1”前面有 3 个空格;第 8 行 的“1”前面有 6 个空格; 第 7 行的“1”前面有 9 个空格…… 第 1 行的“1”前面有 24 个空格。 即每行先输出 3*(n-1-i)个空格后再输出杨辉三角数。 (其中 n 为输出的行数, 本例 n 取 10, i 为行的循环控制变量,i 从 0 取到 9)

#include <iostream> #include <iomanip> using namespace std; void main() { const int N=20; int a[N][N]; int n; cout<<"请输入杨辉三角需要输出的层数:"<<endl; cin>>n; a[0][0]=1;a[1][0]=1;a[1][1]=1; int i,j; for (i=2;i<n;i++) { a[i][0]=1; for (j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; a[i][i]=1; } for (i=0;i<n;i++) { for(i=0;i<=N-1;i++) {for(k=0;k<=18-(2*i);k++) cout<<" "; for(j=0;j<=i;j++) cout<<setw(4)<<a[i][j];

for (j=1;j<=(3*(n-1-i));j++) cout<<' '; for (j=0;j<=i;j++) cout<<setw(6)<<a[i][j]; cout<<endl; } } ? 求交集(两个数组无序) #include <iostream> #include <iomanip> using namespace std; void main(void) { const int M=20,N=10; int a[M],b[N],c[N]; int m,n,f=0,*pa,*pb,*pc; /* m、n 为数组 a、b 的实际长度;f 记录数组 c 实际长度;pa、pb、pc 为指向 数组 a、b、c 的指针 */ cout<<"输入数组 a 中元素的个数:"<<endl; cin>>m; cout<<"输入数组 a 的"<<m<<"个元素:"<<endl; for(pa=a;pa<a+m;pa++) cin>>*pa; //⑤用指针变量进行数组元素的输入 cout<<"输入数组 b 中元素的个数:"<<endl; cin>>n; cout<<"输入数组 b 的"<<n<<"个元素:"<<endl; for(pb=b;pb<b+n;pb++) cin>>*pb; //⑤用指针变量进行数组元素的输入 for( pa=a,pc=c;pa<a+m;pa++ ) for( pb=b;pb<b+n;pb++ ) if(*pa==*pb) { *pc++=*pa; //将 a、b 中相同元素写入 c,同时指针 pc 后移 f++; //用变量 f 记录交集数组 c 的实际长度 break; //找到 a、b 中相同元素即退出本轮比较 } cout<<"交集 c 的各个元素依次为:"<<endl; for (pc=c;pc<c+f;pc++) cout<<setw(3)<<*pc; }

求 n! (迭代方法) #include <iostream> using namespace std; void main( ) { int n,t=1,i=1; cout<<"plese input n:"<<endl; cin>>n; if(n>0) { while(i<=n) { t=t*i; i=i+1; } cout<<"N!="<<t<<endl; } else if(n==0) cout<<"N!=1"<<endl; else cout<<"input error."<<endl; } 求 n! (递归方法) #include <iostream> using namespace std; long fact(int n) { long f; if (n<0) cout<<"n<0,data error!"<<endl; else if (n==0) f=1; else f=fact(n-1)*n; //函数递归调用 return(f); } void main() { int n; long y; cout<<"Enter a positive integer:"; cin>>n; y=fact(n); // 函数调用 cout<<n<<"!="<<y<<endl; }

求 x 的 n 次幂 ? 方法一: #include <iostream> using namespace std; void main( ) {
double power (double x, int n);

double x,y; int n; cout<<"Input the x and n:"; cin>>x>>n;
y= power (x, n);

cout << endl<<x<<" to the power "<<n<<" is "<< y<< endl; } double power (double x, int n) { double val = 1.0; for (int i=1;i<=n;i++) val=val*x; return(val); } ? 方法二:递归函数 #include <iostream> using namespace std; double power(double x,int n) { double f=0; if (x==0) cout<<"0 的任何次幂均为!"<<endl; else if (n==0) f=1; //递归出口 else f=power(x,n-1)*x; //函数递归调用 return(f); } void main() { int n; double x,y; cout<<"请输入 x(基数)和 n(幂次):"; cin>>x>>n; y=power(x,n); // 函数调用 cout<<x<<"的"<<n<<"次幂="<<y<<endl; }

斐波那契数列的计算(迭代法、递归法) ? 迭代法: #include <iostream> #include <iomanip> using namespace std; void main( ) { int i,f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0) cout<<endl; //每行输出 5 个元素 cout<<setw(5)<<f[i]; } } 递归法: #include <iostream> using namespace std; int fibonacci(int n) { int fibo; if(n==1||n==2) fibo=1; //递归出口 else fibo=fibonacci(n-1)+fibonacci(n-2); //函数递归调用 return fibo; } void main( ) { int n,fibon; cout<<"Please input a positive integer:"; cin>>n; fibon=fibonacci(n); //函数调用 cout<<"The "<<n<<" number of fibonacci is:"<<fibon; }


赞助商链接
相关文章:
计算机基础与程序设计考试复习资料_图文
计算机基础程序设计考试复习资料_IT认证_资格考试/认证_教育专区。填空题 1、...84、 在调用函数时, 如果实参是简单变量, 它与对应形参之间的数据传递方式是...
程序设计基础复习资料
程序设计基础复习资料_计算机软件及应用_IT/计算机_专业资料。c语言入门 ...“可能不是” 算法的概念能够解决指定问题符合逻辑的、最简洁的一系列步骤,就称...
程序设计基础期末复习
程序设计基础期末复习_IT/计算机_专业资料。《程序设计基础》期末复习考试题型和...熟悉一些简单的数学库函数。 2. 函数的定义。 ? 函数定义的语法。 ? “函数...
计算机自考程序设计基础复习资料
计算机自考程序设计基础复习资料_IT认证_资格考试/认证_教育专区。一、填空题。 1、微型计算机的运算器、控制器及内存储器组合在一起,称之为(D) A、ALU B、CPU...
计算机基础与程序设计考试 复习资料
计算机基础程序设计考试 复习资料 - 填空题 11、在 C 语言中,输入操作是由库函数 printf( )完成的,输入操作是由库函数 scanf()完成 的。 12、在函数外部...
程序设计基础复习要点
程序设计基础复习要点第一节 1、 程序和软件: 程序是用计算机语言表示的一系列...优点是符合人类叙述问题的习惯,而且简单易学。缺点是不能被计算机 直接识别。 4...
汕头大学计算机系程序设计基础期末复习题与答案
汕头大学计算机程序设计基础期末复习题与答案_工学_高等教育_教育专区。汕头...书写简单,修改方便,C 的常量定义为宏定义。 30. PASCAL 程序中在什么地方区别...
计算机基础与程序设计考试复习资料
计算机基础程序设计考试复习资料_理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 计算机基础程序设计考试复习资料_理学_高等教育_教育专区。...
《计算机程序设计基础》课程
昆明理工大学《计算机程序设计基础》课程 综合实践型...因为有些事往往是看似简单,其实质是非常困 难的。...口腔执业医师实践技能复习资料 中医护理学基础重点 执业...
C语言程序设计基础知识期末复习
C语言程序设计基础知识期末复习_IT/计算机_专业资料。C 语言程序设计基础知识期末...x=5*8, 6+9 先把 x 赋值为 40,表达式的值为 15 11、字符数据的简单...
更多相关标签: