C程序设计_最新_免费下载.doc_第1页
C程序设计_最新_免费下载.doc_第2页
C程序设计_最新_免费下载.doc_第3页
C程序设计_最新_免费下载.doc_第4页
C程序设计_最新_免费下载.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+程序设计实验一 熟悉实验环境1) 创建一个控制台项目选择菜单File|New,在Projects标签下选择Windows32 Console Application,输入项目名称“circle,然后按OK2) 在项目中增加一个文件选择菜单File|New,在Files标签下选择C/C+ Source File,输入文件名称“circle,然后按OK3.编写简单的计算程序输入圆的半径,计算圆的周长和面积并输出。/输入圆的半径Radius,输出圆的周长Perimeter和面积Area#include #include const double PI = 3.14159; /定义一个常量PI int main() int radius; double perimeter, area; cout radius; perimeter = 2 * PI * radius; /周长=2R area = PI * pow(radius, 2); /面积=R2 cout The perimeter of the circle : perimeter endl; cout The area of the circle : area endl; return 0; 结果:实验二 简单程序开发2、循环与分支结构编写一个程序,循环从标准输入读入某雇员的工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员月工作小时超过40 小时,则超过部分按原工资的1.5 倍的加班工资来计算。若雇员月工作小时超过50 小时,则超过部分按原工资的3 倍的加班工资来计算。#include void main() int time; float pay; float wage; do /for( ; time!=0 ; ) /while(time!=0) coutPlease input employees work time and wage_per_hour:time; cinpay; if (time0) coutInput error.endl; break; else if(time=40) wage=time*pay; else if(time=50) wage=(float)(40*pay+(time-40)*pay*1.5); else wage=(float)(40*pay+10*1.5*pay+(time-50)*pay*3); coutThe employees wage :wageendl; while(time!=0); 结果是: 实验三 函数与程序结构2、递归与非递归函数编写一个函数,求从n个不同的数中取r个数的所有选择的个数。其个数值为:其中:n!=n*(n-1)*(n-2)*.*1.程序如下:/利用非递归方式实现#include /函数原型说明 double nn(int n); /求n! double Cnr(int n, int r); /求C(n,r) void main() int n,r; while(1) cout n r; /输入0 0表示结束程序 if (n=0 & r=0) break; /检查输入的合法性 if (n 1 | n r) cout Input invalid! endl; else cout Cnr(n,r) endl; /求 n! double nn(int n) double sum= 1; for(int i = 1; i = n; i+) sum = sum * i; return sum; /求C(n,r) double Cnr(int n, int r) double s1,s2,s3; s1 = nn(n); s2 = nn(r); s3 = nn(n - r); return s1/(s2 * s3); 结果是: /编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数。/利用递归方式实现#include double Cnr(int n,int r); void main() int n,r; while(1) cout n r; /输入0 0表示结束程序 if (n=0 & r=0) break; /检查输入的合法性 if (n 1 | n r) cout Input invalid! endl; else cout Cnr(n,r) 0)return getValue(n,r-1)*(n-r+1)/r;4、将上面的程序改为多文件结构main.cpp内容如下:#include #include fun.h void main() int n,r; while(1) coutnr; if(nr|n0) coutInput Invalid!endl; else if(n=0&r=0) break; else cnr(n,r); coutcnr(n,r)endl; return; func.cpp内容如下:double fn(int n)int i;double s=1;for(i=1;i=n;i+)s*=i;return s;double cnr(int n,int r)double s,t;s=fn(n);t=fn(n-r)*fn(r);return s/t;func.h内容如下:double fn(int n);double cnr(int n,int r);实验四 复杂数据类型1数组排序从键盘读入若干整数,将他们按由低到高排序输出。 /实验 4-1 答案1:用数组实现/从键盘读入若干整数,将它们按由低到高排序输出。#include void sort(int num, int iArray); void swap(int *pa, int *pb); void swap(int &a, int &b); void main() int num,i; int iArray10; /输入数组元素个数(如果输入值大于10,则要求重新输入) while(1) cout nPlease input array number( num; if (num = 10) break; /输入所有数组元素 cout Please input all the integer:; for(i = 0; i iArrayi; /对数组元素排序 sort(num,iArray); /输出排序后的内容 cout endl; for(i = 0; i num; i+) cout iArrayi ; cout endl; /数组排序函数,采用选择排序法 void sort(int num, int iArray) int i,j; int min; for(i = 0; i num-1; i+) min = i; for(j = i+1; j num; j+) if (iArrayj iArraymin) min = j; swap(iArray+i,iArray+min); /调用swap(int *, int *) /下面一句和上面一句可以互换。 /swap(iArrayi,iArraymin) /调用swap(int &,int &) /下面两个swap函数分别用指针和引用实现了函数参数的传递 void swap(int *pa, int *pb) int temp; temp = *pa; *pa = *pb; *pb = temp; void swap(int &a, int &b) int temp; temp = a; a = b; b = temp; /实验 4-1 答案2:用指针实现/从键盘读入若干整数,将它们按由低到高排序输出。#include int i;void sort(int num, int piArray);void swap(int *pa, int *pb);void swap(int &a, int &b);int main()int num,i;int *piArray;/输入数组元素个数cout num;/申请数组空间piArray = new intnum;if (piArray = NULL)cout Memory insufficient ! endl;return(-1);/输入所有数组元素cout Please input all the integer:;for(i = 0; i piArrayi;/对数组元素排序sort(num,piArray);/输出排序后的内容cout endl;/or(i = 0; i num; i+)cout piArrayi ;cout endl;delete piArray;return 0;/数组排序函数,采用选择排序法void sort(int num, int iArray)int i,j;int min;for(i = 0; i num-1; i+)min = i;for(j = i+1; j num; j+)if (iArrayj iArraymin)min = j;swap(iArray+i,iArray+min); /调用swap(int *, int *)/下面一句和上面一句可以互换。/swap(iArrayi,iArraymin) /调用swap(int &,int &)/下面两个swap函数分别用指针和引用实现了函数参数的传递void swap(int *pa, int *pb)int temp;temp = *pa;/pa = *pb;*pb = temp;void swap(int &a, int &b)int temp; temp = a;a = b;b = temp;2字符排序/从键盘输入一串字符,将它们存放在字符数组中(形成一个字符串)/然后对字符数组中的各个字符排序#include #include /函数原型 void sort(char *); void swap(char *pa, char *pb); void swap(char &a, char &b); main() char str100; cout str; sort(str); cout str endl; return 0; void sort(char * str) char i,j,len; char min; len = strlen(str); for(i=0; i len-1; i+) min = i; for(j = i+1; j len; j+) if (strj strmin) min = j; / swap(str+i,str+min); /这一句可以和下面一句互换 swap(stri,strmin); /下面两个swap函数分别用指针和引用实现了函数参数的传递 void swap(char *pa, char *pb) char temp; temp = *pa; *pa = *pb; *pb = temp; void swap(char &a, char &b) char temp; temp = a; a = b; b = temp; 3字符串操作/对给定的字符串进行排序,并输出排序后的结果。/排序要求:长度短的字符串排在前面,长度相同的字符串按照字符的ASCII顺序排序#include #include #include int sort_function( const void *a, const void *b); char list10 =January, February, March, April, May, June, July, September ; int main(void) int i; qsort(void *)list, 8, sizeof(list0), sort_function); for (i = 0; i 8; i+) cout listi endl; cout endl; return 0; /该函数由qsort函数调用 int sort_function( const void *a, const void *b) if (strlen(char *)a) != strlen(char *)b) return strlen(char *)a) - strlen(char *)b); return( strcmp(char *)a,(char *)b) ); 实验五 结构和类1、 用结构构建链表#include /定义链表节点类型typedef struct nodeint elem;struct node *next; Node;/定义链表类型typedef Node * Link;void main()Link head = NULL, tail = NULL; /链表头指针和尾指针Node *pNode; int k; /存放输入的整数/建立链表cout Please input integers to build the link(0 TO END): k;if (k = 0)break;/ 建立一个新的节点pNode = new Node;if (pNode = NULL)cout elem = k; pNode-next = NULL;/加到链表尾if (head = NULL)head = tail = pNode;elsetail-next = pNode;tail = pNode;/输出链表并释放链表节点空间cout next;cout elem ; /输出节点内容delete pNode; /释放节点空间cout endl;2、 队列类/文件1:#include #include fun.h int main() Queue q; int i; /输出队列是否为空 cout Queue empty:; if (q.empty() cout Yes endl; else cout No endl; /往队列中依次放入四个数 cout endl 4 elements enter queue endl; for(i = 0; i 4; i+) q.put(i); /输出队列是否为空 cout Queue empty:; if (q.empty() cout Yes endl; else cout No endl; /取出两个数 cout endl 2 elements leave queue:; cout q.get() ; cout q.get() ; /再放入两个数 cout endl 2 elements enter queue endl; q.put(4); q.put(5); /按顺序输出剩下的队列成员 cout Elements left: ; int num = q.getCount(); for(i = 0; i num; i+) cout q.get() ; cout endl; return 0; /文件2:fun.cpp#include #include fun.h/初始化静态数据成员int Queue:queueCount = 0;/构造函数定义Queue:Queue (void) count = 0;dataLinkHead = dataLinkTail = NULL;queueCount+;/析构函数定义Queue:Queue (void) QueueDataNode *p = dataLinkHead;while (p = dataLinkHead) != NULL) dataLinkHead = dataLinkHead-next;delete p; /释放空间 queueCount-;/在队尾加入一个新元素void Queue:put (int newData) QueueDataNode *pNew = new QueueDataNode; /建立一个新的结点if (pNew = NULL)cout data = newData;pNew-next = NULL;if (dataLinkTail = NULL) /队列为空, 新结点成为第一个结点dataLinkHead = dataLinkTail = pNew;else dataLinkTail-next = pNew;/队列不空, 将结点插入到链表中 dataLinkTail = pNew;count+;/从队头退出一个元素, 并释放空间。假定队列至少有一个元素int Queue:get (void) QueueDataNode *pNode = dataLinkHead;int retVal = pNode-data;/只有一个元素时,退出一个元素后,队列为空 if (dataLinkHead = dataLinkTail ) dataLinkHead = dataLinkTail = NULL; elsedataLinkHead = dataLinkHead-next; count-;/释放节点空间delete pNode;return retVal;/文件3:fun.h/ double fn(int n);/ double cnr(int n,int r);/queue.h/用链表实现的队列类class Queue /用class定义链接队列类/定义链表节点类型 typedef struct nodeint data;struct node *next; QueueDataNode; /定义链表类型typedef QueueDataNode * QueueData;private: int count; /队列元素个数QueueData dataLinkHead, dataLinkTail;/队头、队尾指针static queueCount; /队列个数public:Queue(void); /构造函数Queue(void); /析构函数void put (int newData); /在队尾加入一个新元素int get (void); /从队头退出一个元素/内联函数bool empty ( ) return (count = 0); /检查队列是否空int getCount() return count; /取队列元素个数static int getQueueNumber() return queueCount;/取队列个数 ;3、 静态成员/*在队列类中增加静态成员,可以记录总的队列个数/文件1:circle.cpp #include #include fun.h void main() Queue q1,q2,q3; Queue *q4,*q5; cout Total Queues: Queue:getQueueNumber() endl;/应该为3 q4 = new Queue; q5 = new Queue; cout Total Queues: Queue:getQueueNumber() endl;/应该为5 delete q4; cout Total Queues: Queue:getQueueNumber() endl;/应该为4 delete q5; /文件2:fun.h/ double fn(int n);/ double cnr(int n,int r);/queue.h/用链表实现的队列类class Queue /用class定义链接队列类/定义链表节点类型 typedef struct nodeint data;struct node *next; QueueDataNode; /定义链表类型typedef QueueDataNode * QueueData;private: int count; /队列元素个数QueueData dataLinkHead, dataLinkTail;/队头、队尾指针static queueCount; /队列个数public:Queue(void); /构造函数Queue(void); /析构函数void put (int newData); /在队尾加入一个新元素int get (void); /从队头退出一个元素/内联函数bool empty ( ) return (count = 0); /检查队列是否空int getCount() return count; /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论