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

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


计算机程序设计基础复习大纲 (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; }


赞助商链接
相关文章:
《C程序设计基础》模拟考试题(题目)
《C程序设计基础》模拟考试题(题目) - 厦门大学非计算机专业本科生公共课 《C 程序设计基础》模拟考试题 《C 程序设计基础》模拟考试题 一、选择题(每题 2 分...
2015-2016学年自考《计算机基础与程序设计》试卷A答案
计算机基础程序设计》课程考试试卷(A 卷)注意:1、本试卷共 2 页; 2、考试时间: 100 分钟 float x=4.5f, y=3.0f, u; u=a/3+b*x/y+1/2; ...
1-VFP程序设计复习题集
1-VFP程序设计复习题集_计算机软件及应用_IT/计算机_专业资料。VFP 程序设计...A:IDX )。 B:PRG C:DBC D:DBF 答案: 知识点:VFP 部分/VFP 基础知识/...
1-计算机基础(二)_Access程序设计基础大纲
计算机程序设计计算机基础教育的基础重点,Access作为数据库管理系统,在创建、操作、管理数据库方面功能强大、开发简单, 方便易用;同时具有程序设计功能。与其他...
《计算机基础与程序设计》复习题
计算机基础程序设计复习题 - 一、填空题。 1、与八进制 511 等值的十六进制数为( B )。 A、1FF B、149 C、1FE D、2FE 2、C 语言的运算符按运算...
程序设计基础模块
程序设计基础模块_计算机软件及应用_IT/计算机_专业资料。【试题 1】 任务一:输入某年某月某日,判断这一天是这一年的第几天。例如,2001 年 3 月 5 日 是这...
2015-2016程序设计
2015-2016程序设计_电脑基础知识_IT/计算机_专业资料。c语言试题 ...(要求使用双循环实现,不能利用字符数组或简单的 printf 函数输出) #include<...
10-11程序设计基础复习题
10-11程序设计基础复习题_电脑基础知识_IT/计算机_专业资料。00了 ...特点:1.全面兼容 C,2.面向对象,3.简洁高效。 3、构造函数和析构函数有什么...
2015年春季学期计算机科学与技术专业《c++程序设计》期...
2015 年春季学期计算机科学与技术专业《C++程序设计》...基本语法和程序设计; VC++部分的基础知识 与基本...题 5 分,共 20 分) 简单回答下列问题(每小题 ...
《程序设计基础》复习题
程序设计基础复习题_IT/计算机_专业资料复习题 第一章 1. 单项选择题 ...5. 在 c 语言程序中,简单变量做实参时,它和对应形参之间的数据传递方式是__...
更多相关标签: