西南交大C++实验13.doc

实验 13 实验报告教学班级:________ 学生学号:__________ 学生姓名:__________ 实验日期:_______ 实验地点:指导教师签名:__________ 实验成绩:___________一、实验目的1.理解变量作用域,掌握局部变量和全局变量的使用方法;2.掌握函数调用过程中的参数传递方法。

3.理解递推的概念,掌握递归函数的基本使用方法;二、实验任务1.求数组元素和值。

1) 主函数定义整型数组a[10],数组元素值a[j]=2*j+1,输出a数组;2) 编一子函数,将主函数传递来的数组元素值改变为其前面所有数组元素的和值(包括该数组元素自身值),子函数头要求为sum(inta[],int n),n用于传递数组的大小;3) 主函数中输出改变后的a数组。

2.求自然数对。

1)编写一子函数,判断两个自然数x,y是否是自然数对(所谓自然数对是指两个自然数的和与差都是平方数,如:17-8=9,17+8=25);2)调用子函数在0<x<=50,0<y<=50且x!=y范围内找出全部自然数对。

3.斐波那契数列。

1)主函数功能:求出斐波那契数列的前n项存入数组a[20]中,开始两项均为1,将子函数反序存放后的结果输出;2)子函数功能:将主函数求出的斐波那契数列前n项反序存放。

函数头要求为void fbnq(int*p,int n),p指向数组a。

4.编程实现:将有序数组有序合并。

1) 有两个从小到大的整型有序数组a和b,编一子函数将这两个数组合并为从小到大的有序数组c,整个合并过程中c保持有序;2) 子函数头要求为void merge(int a[],int b[],int c[],int m,int n),m用来传递a数组元素个数,n传递b数组元素个数。

5.实现功能:已知数列2,6,14,30,…… ,计算该数列的第n项。

其中的递推关系为:f(n)={2 (n=1)f(n−1)+2n (n>1)编程要求:1)主函数功能:从键盘输入n值,通过调用子函数计算数列的第n项并输出。

2)子函数功能:使用递归法,计算数列2,6,14,30,…… ,的第n项。

三、实验结果(源程序+ 注释)1.#include<iostream>#include<iomanip>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;int a[10],n,j;void sum(int a[],int n);cout<<"请输入数组a元素的个数:"<<endl;cin>>n;for(j=0;j<n;j++)a[j]=2*j+1;cout<<"数组a为:"<<endl;for(j=0;j<n;j++)cout<<a[j]<<setw(5);cout<<endl;sum(a,n);cout<<"改变后的a数组为:"<<endl;for(j=0;j<n;j++)cout<<a[j]<<setw(5);cout<<endl;}void sum(int a[],int n){int b[10]={0};int i,j;for(i=0;i<n;i++)for(j=0;j<=i;j++)b[i]=b[i]+a[j];for(i=0;i<n;i++)a[i]=b[i];}2.#include<iostream>#include<iomanip>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;int x,y;bool fun(int,int);cout<<"请输入2个自然数:"<<endl;cin>>x>>y;if(fun(x,y))cout<<x<<"与"<<y<<"是自然数对"<<endl;elsecout<<x<<"与"<<y<<"不是自然数对"<<endl;cout<<"在0<x<=50,0<y<=50且x不等于y范围内的自然数对有:"<<endl;for(x=1;x<=50;x++)for(y=1;y<=50;y++)if(x>y)if(fun(x,y))cout<<x<<"和"<<y<<setw(3);cout<<endl;}bool fun(int x,int y){int a,b,c,i,j;if(x<y){c=x;x=y;y=c;}a=x+y;b=x-y;for(i=1;i<a;i++)if(a==i*i)break;for(j=1;j<b;j++)if(b==j*j)break;if(i<a&&j<b)return true;elsereturn false;}3.#include<iostream>#include<iomanip>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;int a[20]={1,1},n,i;void fbnq(int*p,int n);cout<<"请输入斐波那契数列的项数n:";cin>>n;for(i=2;i<n;i++)a[i]=a[i-1]+a[i-2];fbnq(a,n);cout<<"子函数反序存放后的结果为:"<<endl;for(i=0;i<n;i++)cout<<a[i]<<setw(5);cout<<endl;}void fbnq(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;}4、#include<iostream>#include<iomanip>using namespace std;void main(){cout<<"学号:2017110564 姓名:谭时铵"<<endl;cout<<"========================================="<<endl;int a[20],b[20],c[40],m,n;int i;void merge(int a[],int b[],int c[],int m,int n);cout<<"请输入整型有序数组a(从小到大)的元素个数:";cin>>m;cout<<"数组a的元素(从小到大)为:"<<endl;for(i=0;i<m;i++)cin>>a[i];cout<<"请输入整型有序数组b(从小到大)的元素个数:";cin>>n;cout<<"数组b的元素(从小到大)为:"<<endl;for(i=0;i<n;i++)cin>>b[i];merge(a,b,c,m,n);cout<<"合并后的有序数组C的元素为(从小到大):"<<endl;for(i=0;i<m+n;i++)cout<<setw(6)<<c[i];cout<<endl;}void merge(int a[],int b[],int c[],int m,int n){int i,j,k;i=j=k=0;while(i<m&&j<n)if(a[i]<b[j]){c[k++]=a[i];i++;}else{c[k++]=b[j];j++;}if(i<m)for(;i<m;i++)c[k++]=a[i];if(j<n)for(;j<n;j++)c[k++]=b[j];}5、#include<iostream>#include<iomanip>using namespace std;void main(){cout<<"学号:"<<endl;cout<<"========================================="<<endl;int n;int f(int);cout<<"从键盘输入n值:";cin>>n;cout<<"该数列的第"<<n<<"项为"<<f(n)<<endl;}int f(int n){double x;x=2;if(n==1)return x;elsereturn f(n-1)+pow(x,n);}。

合集下载

西南交通大学计算机程序设计基础(C++)

西南交通大学计算机程序设计基础(C++)

西南交通大学C++实验报告计算机程序设计基础(C++)实验1一、实验目的1.熟悉C++程序的集成开发环境;2.学习新建和打开控制台应用程序的方法;3.掌握简单数据运算,以及输入与输出方法。

二、实验任务1.输入一摄氏温度,输出显示所转换的华氏温度。

(提示:摄氏温度=(华氏温度-32)×5/9)2.画出一头威武雄壮的雄狮。

,%%%%%%,%%/\%%%%/\%,%%%\c "" J/%%%%. %%%%/ o o \%%%`%%. %%%% _ |%%`%% `%%%%(__Y__)%// ;%%%%`\-/%%%'(( / `%%%%%%%'\\ .' |\\ / \ | |\\/ ) | |\ /_ | |__(___________)))))))三、实验结果(源程序+ 注释)1.源程序#include<iostream>using namespace std;void main(){double a,b;cout<<"请输入一摄氏温度:"<<endl;cin>>a;b=a*9/5+32;cout<<"转换的华氏温度为:"<<b<<endl;}2.源程序#include<iostream>using namespace std;void main(){cout<<" ,%%%%%% "<<endl;cout<<" ,%%/\%%%%/\% "<<endl;cout<<" ,%%%\c "" J/%%% "<<endl;cout<<"%. %%%%/ o o \%%% "<<endl;cout<<"`%%. %%%% _ |%% "<<endl;cout<<" `%% `%%%%(__Y__)% "<<endl;cout<<" // ;%%%%`\-/%%%' "<<endl;cout<<"(( / `%%%%%%%' "<<endl;cout<<" \\ .' | "<<endl;cout<<" \\ / \ | | "<<endl;cout<<" \\/ ) | | "<<endl;cout<<" \ /_ | |__ "<<endl;cout<<" (___________))))))) "<<endl;}实验2一、实验目的1.掌握对一般数据的输入和输出格式控制方法;2.掌握对实型数据输出形式的设置和小数位数的控制方法;3.了解数据输入的相关注意事项。

西南交大c++实验报告11

西南交大c++实验报告11

西南交大c++实验报告11实验 11实验报告教学班级:_26_学生学号:_2015_学生姓名:__实验日期:___2016.6.3____实验地点:__7307__(机房)指导教师签名:_____________ 实验成绩:______________一、实验目的1.了解存放常用系统函数的头文件;2.掌握常用系统函数的功能及使用方法;3.掌握自定义有返回值函数的概念、定义及使用。

二、实验任务1、实现功能:1~10加减乘除运算训练系统。

(1)主函数功能:随机产生一个1~10加减乘除算术式(数字在1~10之间随机产生,运算符在加减乘除中随机产生),要求用户输入计算结果,通过调用子函数得到正确答案,判断用户的计算结果是否正确并输出结论。

(2)子函数功能:定义有返回值函数,完成算术式的计算功能。

2、实现功能:求两个整数的最大公约数、最小公倍数。

(1)主函数功能:从键盘输入两个整数,通过调用两个子函数分别得到最大公约数、最小公倍数并输出结果。

(2)子函数1功能:定义有返回值函数,求两个整数的最大公约数。

子函数2功能:定义有返回值函数,求两个整数的最小公倍数。

3.实现功能:根据键盘输入的整数x,计算分段函数sign(x)的值。

(1)主函数功能:从键盘输入整数x,通过调用子函数得到计算结果并输出。

(2)子函数功能:定义有返回值函数,实现该分段函数的功能。

三、实验结果(源程序+ 注释)/*1、实现功能:1~10加减乘除运算训练系统。

(1)主函数功能:随机产生一个1~10加减乘除算术式(数字在1~10之间随机产生,运算符在加减乘除中随机产生),要求用户输入计算结果,通过调用子函数得到正确答案,判断用户的计算结果是否正确并输出结论。

(2)子函数功能:定义有返回值函数,完成算术式的计算功能。

*/#include<iostream>#include<cstdlib>#include<ctime>using namespace std;void main(){cout << "Name:" << endl;cout << "Number:20" << endl;int x;double a, b, y, answer = 0.0;//定义四个整型变量 char n;//定义一个字符型变量srand(time(NULL));//初始化随机数产生器a = 1 + rand() % (10 - 1 + 1);//产生1~10的随机数b = 1 + rand() % (10 - 1 + 1);//产生1~10的随机数x = 1 + rand() % (4 - 1 + 1);//产生1~4的随机数 switch (x)//将x的值分别对应1,2,3,4时赋予n 相应的字符,方便下文输出{case 1:n = '+'; break;case 2:n = '-'; break;case 3:n = '*'; break;case 4:n = '/'; break;cout << "请计算下面的算式:" << endl;//提示语句 cout << a << n << b << "=";//提示语句cin >> y;//从键盘输入用户的计算结果double result(int x, double a, double b); //调用自定义函数之前的说明answer = result(x,a,b);//赋值if (answer == y) {cout << "计算正确" << endl;}//计算正确else {cout << "计算错误,该算式的正确答案是:" << answer << endl;}//计算错误}double result(int x,double y,double z)//自定义函数{double answer;switch (x)//当形参变量x分别为1,2,3,4时,采用不同的运算符进行计算{case 1:answer = y + z; break;case 2:answer = y - z; break;case 3:answer = y * z; break;case 4:answer = y / z; break;return answer;}/*实现功能:求两个整数的最大公约数、最小公倍数。

西南交大数据结构实验报告

西南交大数据结构实验报告

目录实验——元稀疏多项式的计算 (2)实验三停车场管理 (11)实验四算术表达式求值 (18)实验七哈夫曼编/译码器实验指导书 (25)实验八最短路径实验指导书 (36)实验十部排序算法比较实验指导书 (45)实验——元稀疏多项式的计算#include <stdio.h>#include <stdlib.h>#include vconio.h〉typedef struct ltem{ double coef;int expn;struct Item *next;Jltem/Polyn;#define Createltem(p) p=(ltem *)malloc(sizeof(ltem));#define Deleteltem(p) free((void *)p);判断选择函数/******京******車************車**********末木*****京******拿*****京**/int Select(char *str){char ch; printf(,,%s\n,,/str);printf("lnput Y or N:'1);do{ ch=getch();}while(ch!='Y,&&ch!='y‘&&ch!='N'&&ch!—rV);printfCXn");if(ch==,Y,||ch==,y,) return(l);else return(O);}/*******************************京************球************* 4K/* 插入位星定位函数 /********************車****************京************孚*********** int InsertLocate(Polyn h/nt expnjtem **p){Item 床pr已*q;pre=h;q=h->n ext;while(q&&q・> exp nvexpn){ Pre=q;q 二q.>n ext;}if(!q){ *P=pre;return 仕);}else if(q->expn==expn) {*p=q;return(O);}插入结点函数 ****京******京*****)|(4|******41****京*拿4[**京************ 京***定*京**void insert(ltem *prejtem *p) { p ・> next 二 pre ・ >n ext;pr/>n ext=p;}/拿*****京******車************車**********末木***«******沐牛拿*****京**/ /* 输入多项式 *//******京** ******** ***4t******************4t4t** ****** ********京** / Polyn Input(void){double coef;int expnjlag;Item *h /*p /*q,*pp;Createltem(h);// 产生头结点 h->next=NULL;printf("input coef and expn(if end ,expn=・l)\n”);while(l){ printf(,,coef=,');scanf(”%lf :&coef);printf(,,expn=");scanf("%d",&expn); 〃输入多项式的系数和指数 if(expn==-l) break; 〃若指数为一1,表示输入结朿if(lnsertLocate(h,expn,&pp))//返回值非0表示插入新结点{Createltem(p);p->coef=coef;p->expn=exp n;insert(pp,p); 〃按顺序在插入}else if(Select("has the same expr\Replace older value?")) pp->coef=coef; 〃指数相同,替换系数}return h;}/拿 *****京******車***********************木木**********沐牛拿*****京**/ /* 撤消多项式 */y****)«(>)( *«♦♦♦♦****♦♦****♦♦ ***♦♦♦♦****♦**♦**♦♦♦♦**♦♦ ♦**♦♦♦♦**** /{ *P=pre;return(-l);}}車**********京車****案******承******************承****水4(*車***未** */void Destroy(Polyn h)Item *p=h/q; while(p!=NULL) {q=p;p=p->n ext;Deleteltem(q);}/*****4t*4t****4c4t4t***4t4K************4(拿4t***4t *************** 定**#*卓/ /* 输岀多项式♦//****木京************京************京************球*********/ void Output(Polyn h z char *title)int flag=l;Item *p=h・>next;printf(,,%s=,,/title);while(p){if(flag) 〃表示是否是多项式的第一项{flag=O;if(p->expn==O) printf(,,%.2lf,,/p->coef);else printf(l,%.2lfx A%d,,/p->coef/p->expn);}else{if(p->coef>0) printf(,,+H);if(p->expn==0) printf("%.2lf,/p->coef);else printf(H%.2lfx A%d,,/p->coef/p->expn);p=p->next;} printfCV);/*******************************束*******車****京************京拿*/ /*判断两个多项式项的关系*//************京*************************京*****4(車******** / int ltemComp(ltem xjtem y){if(x.expn<y.expn)return(-l);else iffx.expn二二y.expn)return(O);else return(l);int menu(void){int num; system(,,cls H);printf(N now the choice you can make:\n H);printf(" (l)create P(x)\n u);printf(H (2)create Q(x)\n");printf(" (3)p(x)+Q(x)\n");printf(" (4)P(x)-Q(x)\n“);printf(" (5)p(x)*Q(x)\n");printf("⑹print P(x)\n u);printf(" (7)print Q(x)\n H);printf("⑻print P(x)+Q(x)\n n);printf(M⑼print P(x)-Q(x)\n H);printf(H (lO)print P(x)*Q(x)\n u);print:f(”(ll)Quit\n");printf(H please select 1,2,3,4,5,6,7,8,94041:");do{scanf("%dj&num);}while(num<l | | num>ll);return(num);}/*****床******京*****案*************************京*****4(車******** / /* 判断多项式是否存在*//****** 案******車車***4( ******* 車**********>k*******4t****4t4i4t****i|(4t*/ int PolynNotEmpty(Polyn h,char *p) {if(h==NULL){ printf(H%s is not exist'Xn'^p);getchar();return 0;else return(l);}/*4c***>)ciK4t************4t4i*****************4t4t** ****** ********京**/ /* 两多项式多项式相加*//*******************************束*******車****京************京拿*/ Polyn AddPolynfPolyn hl,Polyn h2)Item *head/*last/*pa=hl->next,*pb=h2->next/*s;Createltem(head); 〃头结点,不动last=head;while(pa&&pb){ switch{ltemComp(*pa/*pb))case -1:Createltem(s); s->coef=pa->coef;s->expn=pa->expn; last->next=s;last=last-> next;pa=pa->n ext;break;case 1:Createltem(s);s->coef=pb->coef;s->expn=p b・>expn;last->n ext=s;last=last-> next;pb=pb->next;break;case 0: if(pa->coef+pb->coef) 〃相加不为0,写入{Createltem(s); s->coef=pa->coef+pb->coef;s->expn=pa->expn;last- >n ext=s; last=last-> next;}pa=pa->n ext;pb=pb->next; break;}}if(pa) //a未到尾last- >n ext=pa;else if(pb)last- >n ext=pb;else 〃两者皆到尾last->next=NULL;return head;}Polyn SubtractPolyn(Polyn hl,Polyn h2){Item *head/*last/*lastl,*pa=hl->next,*pb=h2->next,*s;Createltem(head);last=head;while(pa&&pb){ switch(ltemComp(*pa,*pb)){ case -1:Createltem(s);s->coef=pa->coef;s->expn=pa->expn;last->n ext=s;last=last- >n ext;pa=pa->n ext;break;case 1:Createltem(s); s->coef=pb->coef*(-l); s->expn=p b・>expn; last->next=s; last=last- >n ext; pb=pb->next;break;case 0: if(pa->coef-pb->coef) 〃相加不为0,写入{Createltem(s); s->coef=pa->coef-pb->coef;s->expn=pa->exp n; last- >n ext=s;last=last-> next;}pa=pa->n ext; pb=pb->next; break;}}if(pa) //a未到尾last ext=pa;else if(pb) 〃pb未到尾,后面附负值{while(pb){Createltem(s); s->coef=pb->coef*(-l); s->expn=p b・>expn; last->n ext=s;last=last- >n ext; pb=pb->next;} last->next=pb;}else 〃两者皆到尾last->next=NULL;return head;}/************** *****車*****************京************扌*****未*/* 两多项式多项式相乘/拿 *****京******車************車**********末木************拿*****京* Polyn MultPolyn(Polyn hl,Polyn h2) 〃两个多项式相乘{int expn;Item *head/*pa,*pb=h2->next,*s/*pp;double coef;Createltem(head);head->next=NULL;while(pb) 〃双层循环,每项都乘到{ pa=hl->n ext;while(pa){ expn=pa->expn+pb->expn;coef=pa coef*pb->coef;if(lnsertLocate(head,expn/&pp))//返回值非0 表示插入新结点{ Createltem(s);s->coef=coef;s->expn=expn;insert(pp,s); 〃按顺序在插入}elsepp->coef=pp->coef+coef; 〃找到有相同指数,直接加上去pa=pa->next; }pb=pb->n ext;return head;*/主函数*******************車*****************************孚******** */ void main(){int num;Polyn hl=NULL;//p(x)Polyn h2 二NULL; 〃Q(x)Polyn h3=NULL;//P(x)+Q(x)Polyn h4=NULL;//P(x)-Q(x)Polyn h5=NULL;//P(x)*Q(x)while(l){num=menu(); getchar();switch(num){ case 1: 〃输入第一个多项式,若多项式存在,首先撤消然后再输入if(hl!=NULL){if(Select(H P(x) is not Empty,Create P(x) again?")){ Destroy(hl);hl=lnput();}else hl=lnput();break;case 2: 〃输入第二个多项式,若多项式存在,首先撤消然后再输入if(h2!=NULL){if(Select("Q(x) is not Empty z Create Q(x) again?11)){ Destroy(h2);h2=lnput();}}else h2=lnput();break;case 3: 〃两多项式相加if(PolynNotEmpty(hl/p(x)")&&PolynNotEmpty(h2/Q(X)”)){ h3=AddPolyn(hl/h2);Outputfhl/Tfx)11);Output(h2/Q(x)");Output(h3;,P(x)+Q(X)n);printf("P(x)+Q(x) has finished !\n");getchar();}break;case 4: 〃两多项式相减if(PolynNotEmpty(hl/p(x)")&&PolynNotEmpty(h2「Q(X)J){ h4=SubtractPoly n(hl,h2);Output(hl/,,P(x),,);Output(h2/Q(x)”);Output(h4「Px)・Q(x)”);printf(,,P(x)-Q(x) has finished !\n H);getchar();}break;case 5: 〃两多项式相乘if(PolynNotEmpty(hl/,p(x)n)&&PolynNotEmpty(h2/Q(X)")){ h5=MultPolyn(hl/h2);Output(hl/,,P(x),,);Output(h2,'Q(x)”);Output(h5「P(x 广Q(x)”);printf(H P{x)*Q(x) has finishedgetchar();}break;case 6: //显示第一个多项式if(PolynNotEmpty(hl/,p(x)u)){Output(hl;,P(x)l,);getchar();实验三停车场管理#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define STACKSIZE 3typed ef struct{int Bno;int type; 〃小车1,客车2,货车3int arrivetime;int pushtime;int departuretime;}CAR;〃链队结构左义(临时车道)typedef struct QNODE{CAR elm;struct QNODE *next;}QNODE;〃链队结构左义(注意申明方法,相当全局变量)struct LinkQueuefQNODE *front;QNODE *rear;}Queue;〃顺序栈结构立义(停车场)struct SqStack{CAR elm[STACKSIZE];int top;}stack;〃收费标准int pay[卜{0,235}; //每小时小车2元,客车3元,货车5元〃判栈空int StackEmpty{)if(stack.top==0)return 1;elsereturn 0;}〃判栈满int StackFull(){if(stack.top==STACKSIZE)return 1;else return 0;}〃顺序栈入栈void push(struct SqStack *stack,CAR car){ if(!StackFull()) stack->elm[stack->top++]=car;}〃顺序栈岀栈(CAR用了引用,不知为啥指针不管用)void pop(struct SqStack * stack,CAR &car){ if(!StackEmpty()){ stack->top-; car=stack->elm[stack->top);}}〃链栈入栈函数void LPush(QNODE *stack z QNODE *p){ p・>n ext=stack->next;stack->next=p;}〃链栈出栈函数(去掉了stack卜•一位的结点)void LPop(QNODE *stack,QNODE **p){ (*p)=stack->next;stack->next=(*p)->next;}〃链队初始化void InitQueue(){ Queue.front=Queue.rear=(QNODE *)malloc(sizeof(QNODE));Queue.fr on t->next=NULL;}〃判队列空int QueueEmpty{){ if(Queue.front->next==NULL&&Queue.front==Queue.rear) return 1;else return 0;}〃入队操作void EnQueue(CAR car){ QNODE *p;p=(QNODE *)malloc(sizeof(QNODE));p->elm=car;p->n ext=NULL;Queue.rear- >n ext=p;Queue.rear=p;}〃出队操作(队列带头结点,才方便岀)void DeQueue(CAR *car){ int flag=O;QNODE *p;if(Queue.front->next==Queue.rear)flag=l;p=Queue.fr on t->next;Queue.front->next=p->n ext;*car=p->elm;if(flag) 〃一泄要在减到空时重新置rear,不然rear没有了,无法判空Queue.rear=Queue.fr ont;free(p);}〃栈数据查找(返回査找失败)int SearchStack(int BusNo){ int k;k=stack.topwhile(k>=0&&BusNo !=stack.elm[k].Bno)k-;return k;}〃队数据查找(返回NULL,查找失败)QNODE *SearchQueue(int BusNo){ QNODE *p;p二Queue.fr on t->next;while(p!二NULL&&p・>Glm.Bno!=BusNo)p=p->n ext;return p;}〃收费计算与显示函数(0表示未干此事,时间按24小时制,一旦不等0,必有arrive<=push<=departure)void CalcultPay(CAR car){ int payment;if(car.arrivetime!= 0&&car.pushtime==0)payme nt=(car.departuretime-car.arrivetime)*pay[car.type]^.O;else if(car.arrivetime!= 0&&car.pushtime!=O)payme ntNcar.pushtime-car.aiTivGtimG^paylcar.typel/S.O+Yar.departiirGtimicar.pushtime)3* pay[car.type];elsepayme nt=(car・departurGtime・car・pushtime)Say[car・type];printfCXn");printf(" 收费二%4d \n", payment);printf(”\n“);getch();}〃进场车数据的录入与管理void lnputArrialData(){ CAR arrive;printf(”请输入车辆信息\n“);printf(l,Bno:");scanfC^d'^&arrive.Bno);printf ("type:");scanfC%cT:&arrive.type);prin tfC^rrivetime:");sea nf(”%d‘:&airivG・arrivetime);while(!StackFull()&&arrive.Bno>0&&arrive.type>O&&arrive.arrivetime>0){ arrive.push t:ime 二arrive, arrivetime;push(&stack,arrive);printf(,,Bno:,,); scan &airive.Bno); printfCtype:"); scan f(ll%d"/&arrive・type);printfCarrivetime:");sea nf("%cT,&arTive・arTivetime);} while(arrive.Bno>0&&arrive.type>0&&arrive.arrivetime>0){ arrive.pushtime=O;En Queue(arrive);printf(,,Bno:,,);scanf(,,%d,:&arrive.Bno);printf(,,type:N); scanf(,,%d,,/&arrive.type);printf("arrivetime:u);sea nf("%cT,&arTive・arrivGtime);}}〃离场车数据录入与管理void lnputDepartData(){ int BusNo^eparttime^os;CAR depart,temp;QNODE *p,*pri/q;QNODE*LStack;LStack=(QNODE *)malloc(sizeof(QNODE));LStack->next= NULL;printf(”请输入车辆离开信息\n“);printfC'departtime:"); scanf「%cT:&departtirne);printfCBusNo:"); sea nf ("%d BusNo);while(BusNo>0&&departtime>0){ pos=SearchStack(BusNo);if(pos>=0){ while(stack.top-l!=pos){ pop(&stack z temp);p==(QNODE *)malloc(sizeof(QNODE));p・ >elm 二temp;LPush(LStack/p);}pop(&stack’temp);temp.departuretime=departtime;printf("车辆离开的信息:\n“);printf(“Bno:%d Type:%d arrivetime:%d pushtime:%d departtime^dXn'^temp.BnoAemp.type^emp.arrivetime,temp.pushtime,temp.departuretime);CalcultPay(temp);while(LStack->next!=NULL){ LPop(LStack z&q);push(&stack z q->elm);free(q);}if(!QueueEmpty()){ DeQueue(&depart);printf("There is new space in STACK! please input pushtime:");scanff^d'^&depart. pushtime);push(&stack,depart);printf("A car get into the STACK successfully!\n\n");}}pri=SearchQueue(BusNo);if(pri){ while(pri !=Queue.fr on t->next){ DeQueue(&depart);p==(QNODE *)malloc(sizeof(QNODE));p・ >elm二depart;LPush(LStack/p);}DeQueue(&depart);depart.departuretime=departtime;printf("车辆离开的信息为:\n");printf(“Bno:%d Type:%d arrivetime:%d pushtime:%d departtime:%d\n 舄depart. B no,depart, typ 巳depart, arrivetim 已depart, push 廿me,depart・d€partureti me);CalcultPay(depart);while(LStack->next!=NULL)LPop(LStack,&q);LPush(Queue.front,q);}if(pos==-l&&pri==NULL)printf(M there is no this CAR! Please input again:\n N);elseprintf(H the other departure CAR:\n");printf(,,departtime:,,); scanf(,,%d,,/&departtime); printfCBusNo:");scanff%d'^&BusNo);}}〃列表显示车场数据void OutputBusData(){ int i;QNODE *p;printf("\n 停车场:\n");printf(" CarNo Type Arrive Push\n,,);printf(" stack top=%d\n 舄stack, top);for(i=0;i<stack.top;i++)printf(,,%10d%10d%13d%12d\n',/stack.elm[i].Bno/stack.elm[i].type/stack.elm[i].arrivetime/st ack.elm[i).pushtime);if(Queue.front->next){ printf(H\n 便道:\n");p=Queue.front->n ext;printf(" CarNo Type Arrive\n u);while(p){ printf(,,%10d%10d%13d\n,,/p->elm.Bno/p->elm.type,p->elm.arrivetime); p=p->n ext;}}getch();}〃撤销队列函数void DestroyQue(){QNODE *p/q;p=Queue.fr ont;while(p){q二p;p=p->n ext;free(q);}do{ scanf 「%cT,&rn);}while(m<l| |m>3);return m;〃主函数void main(){stack.top=0;lnitQueue();while(l){ //system (” cis");switch( nemu()){case 1:lnputArrialData();OutputBusData(); break;case 2:lnputDepartData();OutputBusData(); break;case 3:OutputBusData();DestroyQue(); return;}printf(M \n printf(" printf("printf(" *41***沐4(************ CAR Man age1.Arrival \n M ); 2. D eparture \n H );〃菜单选择int nemu(){ int m;printf(" *定**京***********孚孚************拿*****卓****球******京*\n")・ printf('Pease select 1,2,3:'');实验四算术表达式求值#include<stdio.h> #include<stri ng・h> #include<conio.h> #include<stdlib.h> #definePLUS 0 #define MINUS 1 #define POWER 2 #define DIVIDE 3 #define LEFT 4 #defineRIGHTS #define STARTEND 6 #define DIGIT 7 #define POINT 8 #define NUM 7 #defineNO -100 #define STACKSIZE 20 chara[]=f<'-7*7/7(7)7#-};〃优先级矩阵int PriorityTable[7][7]={{l,—1,1,1},{1,1,-1,-1,-1,1,1}, {1,1,1,1,-144}, {1,1,1,1,-144}, {-1,-1,-1,-1,-1AN0}, {1,1,1,1,NO,14Lint menu() {int num;system(,,cls H);printf("\n Expressi on Calculation 水案京****常京京**********、n‘‘)・printf(" --------------------- 1.input expression ------------------------------ \n");prirrtf(” -------------------- 2.calculation expression ----------------------- \n H);printf(" --------------------- 3.print result --------------------------------- \n H);printf(" --------------------- 4.Quit ------------------------------------------ \n");printf("***********車孚*******************車****************************車孚*\n")・printf("Please select 1,23/4:"); do{scanf(,,%d,,/&num);}while(num<l| |num>4);return num;〃输入表达式void In putExpressi on (char str[]){int len;printf("lnput expression string:\n N); scanf("%s 舄str);len=strle n(str);str[len]=,#1;str[len+l]=,\O,;}〃确泄当前字符类型int GetCharType(char ch){int i;for(i=0;i<NUM;i++) if(ch==a[i]) return i;if(ch>=l O,&&ch<=,9,)return DIGIT;if(ch==1.1)return POINT;return -1;}〃表达式计算(1表示正确,0表达式有误)int EXCUTE(char *str,double *Result){int pp,topTr,topNd,CharTyp巳OPTR[STACKSIZE]; double numbeGtemp^PNDlSTACKSIZE];OPTR[0]=STARTEND;topTr=l;topNd=0;PP=O;while((str[pp])){CharType=GetCharType(str[pp]);switch(CharType){case -1:return 0;case DIGIT:number=0;while(str[pp]>='0,&&str[pp]<='9,)number=number*10+(str[pp]-48);pp++;}if(str[pp]==7) 〃遇小数点{temp=10.0;PP++;while(str[pp]>='O l&&str[pp]v=9) {num ber 二number+(str[pp 卜48)/temp;temp=temp*10;pp++;}}OPND[topNd++]=number; break;case POINT: 〃以小数点开始的实数number=0;temp=10.0;PP++;while{str[pp]>='O'&&str[pp]<='9,){number=nu mber+(str[pp]-48)/temp;temp=temp*10;pp++;}OPND[topNd 卄]二number; break;case PLUS:if(PriorityTable[OPTR[topTr-l]][PLUS]==-l){OPTR[topTr++]=PLUS;pp++;}else{switch(OPTR[topTr-l]) {case PLUS:OPND[topNd-2]=OPND[topNd-2]+OPND[topNd-l];break;case MINUS:OPND[topNd.2]=OPND[topNd-2]-OPND[topNd-l];break;case POWER:OPND[topNd-2]=OPND[topNd-2]*OPND[topNd-l];break;case DIVIDE:OPND(topNd-2]=OPND[topNd-2]/OPND(topNd-l];break;}topNd—;topTr—;break;case MINUS:if(PriorityTable[OPTR[topTr-l]][MINUS]==-l){OPTR[topTr++]=MINUS;pp++;}else{switch(OPTR[topTr-l]) {case PLUS:OPND[topNd-2]=OPND[topNd-2]+OPND[topNd-l];break;case MINUS:OPND[topNd-2]=OPND[topNd-2]-OPND[topNd-l];break;case POWER:OPND[topNd-2]=OPND[topNd-2]*OPND[topNd-l];break; case DIVIDE:OPND[topNd-2]=OPND[topNd-2]/OPND[topNd-l];break; } topNd-;topTr-;}break;case POWER:if(PriorityTable[OPTR[topTr-l]][POWER]==-l){OPTR[topTr++]二POWER;PP++;}else{ switch(OPTR[topTr-l]){case PLUS:OPND[topNd-2]=OPND[topNd-2]+OPND[topNd-l];break;case MINUS:OPND[topNd-2]=OPND[topNd-2]-OPND[topNd-l];break;case POWER:OPND[topNd-2]=OPND[topNd-2]*OPND[topNd-l];break;case DIVIDE:OPND[topNd-2]=OPND[topNd-2]/OPND[topNd-l];break; } topNd—;topTr—;break;case DIVIDE:if(PriorityTable[OPTR[topTr-l]][DIVIDE]==-l){OPTR[topTr++]二DIVIDE;pp++;}else{switch(OPTR[topTr-l]) {case PLUS:OPND[topNd-2]=OPND[topNd-2]+OPND[topNd-l];break;OPND[topNd-2]=OPND[topNd-2]-OPND[topNd-l];break;case POWER:OPND[topNd-2]=OPND[topNd-2]*OPND[topNd-l];break;case DIVIDE:OPND[topNd-2]=OPND[topNd-2]/OPND[topNd-l];break;}topNd—;topTr—;}break;case LEFT:OPTR[topTr++]=LEFT;pp++;break;case RIGHT:if(OPTR[topTr-l]==LEFT){ topTr-;pp++;}else{while(OPTR[topTr-l]==PLUS| |OPTR[topTr-l]==MINUS| |OPTR[topTr-l]==POWER| |OPTR[top Tr-1]==DIVIDE){switch(OPTR[topTr-l]){case PLUS:OPND[topNd-2]=OPND[topNd-2]+OPND[topNd-l];break;case MINUS:OPND[topNd-2]=OPND[topNd-2]-OPND[topNd-l];break;case POWER:OPND[topNd-2]=OPND[topNd-2]*OPND[topNd-l];break;case DIVIDE:OPND(topNd-2]=OPND[topNd-2]/OPND(topNd-l];break;topNd-;topTr-;}if(OPTR[topTr-l]==STARTEND)return 0;if(OPTR[topTr-l]==LEFT){topTr-;pp++;}}break;case STARTEND:while(OPTR[topTr-l]!=STARTEND){switch(OPTR[topTr-l]){OPND[topNd-2]=OPND[topNd-2]+OPND[topNd-l];break; caseMINUS:OPND[topNd-2]=OPND[topNd-2]-OPND[topNd-l];break; casePOWER:OPND[topNd-2]=OPND[topNd-2]*OPND[topNd-l];break; caseDIVIDE:OPND[topNd-2]=OPND[topNd-2]/OPND[topNd-l];break; }topNd—;topTr—;}if(topNd==l){*Result=OPND[0];return 1;}else return 0;}}return 1;}void main(){ int numjlag^;double result;char str[256];str[O]=,\O,;while(l){ num=me nu();switch(num)case 1: 〃输入表达式InputExpressio n(str);flag 二0;printf(n the Expression is:"); printf("%s\n 舄str);getch();break;case 2: 〃讣算表达式if(str[O]==,\O,){ printf(H Expression is Empty! Again!\n“);InputExpression(str);flag=0;printf(u the Expression is:11); printf(”%s\n 舄strj;getch();}else if(!EXCUTE(str;&result)){ printf(H The expression has error! Again! \n");InputExpression(str);flag 二0;printf(u the Expression is:H); printf(”%s\rV:strj;getch();}else {printf(n calculation has finished!\n u);getch();flag=l;}break;case 3: 〃打印计算结果if(flag){ printf(,,#%s=%lf\n,,/str/result); getch();}else{ printf(H You had not did the calculation!\n"); getch();}break;case 4:return;实验七哈夫曼编/译码器实验指导书#include<stdio.h> /* for size_t/ printf() */#include<conio.h> /* for getch()#include<ctype.h> /* for tolower() */#include<malloc.h> /* for mallocO, callocf), free() */#include<string.h> /* for memmove(), strcpy()#include<stdlib.h>#define NODENUM 26〃最大编码长度/* ----- 哈夫曼树结点结构 -------- */struct node{char ch;int weight;int pare nt;int Ichildjchild;} *ht; 〃指向哈夫曼树的存储空间的指针变量/*树结构和全局结构指针*//* ----- 字符编码结点结构 -------- */struct HuffmanCoding{char ch;char coding[NODENUM];};/* ---- 哈夫曼树遍历时栈的结点结构*/struct stack no de{int NodeLevel;int NodeElem;};/* -------- 常量文件爼--------- */const char *TableFileName = ,,d://HfmTbl.txt,1; 〃哈夫曼树数拯文件const char *CodeFileName = ”d:〃CodeFile.txt”;〃字符编码数据文件const char *SourceFileName = ”d://SrcText・txt”;〃需编码的字符串文件const char *EnCodeFileName = ,,d://EnCodeFile.txt u; //编码数据文件const char *DecodeFileName = "dy/DecodeFile.txt"; //译码字符文件*****京******************************末未*****京***************/释放哈夫曼树数据空间函数void free_ht()if(ht != NULL) {free(ht);ht = NULL;}}***********京******京********************************專****京**** 判是否为可译码字符串*************************************************4(孚**********int JudgeStr(char str[])for(int i=O;str[i]!=l\O,;i++) if(str[i]!=,0•&&str[i]!=T) return 0;return 1;/****** 案******車車***4( ******* 車**********>k*******4t****4t4i4t****i|(4t*/从文件读取哈夫曼树数据函数*/int ReadFromFile()int i;int m; FILE *fp;if((fp=fopen(TableFileName/,rb,,))==NULL){printf("cannot open %s\n,,/ TableFileName);getch();return 0;}freadf&m^izeoffin^lJp); //m为数据个数(文本中第一个就是结点个数)free_ht();ht=(struct node *)malloc(m*sizeof(struct node));fread(ht,sizeof(struct node),m,fp);fclose(fp);return m;}void EatCharsUntilNewLine()while(getchar()!=,\n')con tinue;/******************************* 束 ******* 車****京************京拿 ***4(******>k/*/void Select(struct node ht[]Jnt n, int *sl,int *s2) {int i,j;〃寻找第一个根结点 *sl=0;while esl<=n&&ht[*sl].parent!=.l) ++(*sl);//父亲为 1 无父亲,为根,在森林中 i=(*sl)+l ; while(i< 二n){if(ht[i].parent==-l&&ht[i].weight<ht[*sl].weight) *sl=i; 〃比较后面所有根结点,寻找 第一个权值最小的根结点++i ; }〃开始左s2・先寻找第一个根结点,如果是si,跳过 *s2=0;while(*s2<=n&&(ht[*s2].parent!=-l 11 *s2==*sl)) ++(*s2); 〃寻找第二个权值最小的根结点 j=*s2+l; while(j<=n){if(j!=*sl&&ht[j].parent==-l&&ht[j].weight<ht[*s2].weight) *s2=j; //不等于 si ++j; } return;/4t****4t*4t******車********* *******束*******車****京***********京京拿* / /* 创建哈夫曼树和产生字符编码的函数 */ /************京*****寧***************************************** / void Initialization() {int i,n /m,j /f r sl /s2/start; charcd[NODENUM];struct HuffmanCoding code[NODENUM]; 〃为数组,长度已上,不可再改(如用 malloc, new 之类)FILE *fp;printfC*输入字符总数n:"); scanf("%d",&n);EatCharsllntilNewLine{);// 除 了数字只能输回车了 m=2*n-l; 〃总结点数选择权值最小的两个根结点函数(重0到n 找)ht=(struct node *)malloc(m*sizeof(struct node));//申诘哈夫曼树的存储空间printf("请输入字符和权值:\n”);//记录并初始化for(i=0;i<n;i++){printf(”第%d 组:0+1);scanf("%c %d l,/&ht[i].ch/&ht[i].weight);EatCharsUntilNewLine(); 〃至关重要ht[i].parent=-l;ht[i].lchild=-l;ht[i].rchild=-l;}for(i=n ;i<m;i++){ht[i].ch=l#,;ht[i].weight=O;ht[i].parent=ht[i].lchild=ht[i].rchild=-l;**京* 拿******** 开始彳:**♦♦♦****♦♦♦***♦♦♦***♦♦♦♦♦*for(i=n;i<m;i++)Select(ht,i-l,&sl,&s2);// 找到最小两结点ht[sl].pare nt 二i;ht[s2].pare nt 二i;ht[i].lchild=sl;ht[i].rchild=s2;ht[i].weight=ht[sl].weight+ht[s2].weight;}〃把哈夫曼树的数拯存储到文件中if((fp=fopen(TableFileName/,,wb,,))==NULL){printf(u cannot open %s\n,,/ TableFileName);getch();return;}fwrite(&m,sizeof(int)丄fp);fwrite(ht,sizeof(struct node^mjp);fclose(fp);cd[n-l]=,\O,;for(i=0;i<n;i++){start=n-l;for(j=i,f=ht[i].parent;f!=-l;j=f,仁ht[f].parent)//沿着父亲上去,直到根if(ht[f].lchild==j)cd[-.start]=I O,; 〃若沿父结点的左分支上升,则得编码字符“0”elsecd[..start]=i r;〃若沿父结点的右分支上升,则得编码字符a r code[i].ch=ht[i].ch;strcpy(code[i].coding,&cd[start]);//从start的这个地址处开始赋值,前而的位可能用不到}〃把字符编码数据存储到文件中iffSffp^openfCodeFileName/'wb")))printf("cannot open %s\n"/ CodeFileName); getch();return;}fwrite(&n/sizeof(int)/l/fp); 〃先写有几组编码fwritefcode^izeoffstruct HuffmanCoding),njp);fclose(fp);free_ht();printf(H\nlnitial successful!\n u);getch();/****木京************京************京************球*********/哈夫曼编码的函数void Encode(void)int i,j,n;char Encodestr[256);struct HuffmanCoding code[NODENUM];FILE *fpl;if((fpl=fopen(CodeFileName/,,rb,,))==NULL) {printf("cannot open %s\n,,/ CodeFileName); getch();return;}fread(&n,sizeof(int)丄fpl);fread(code,sizeof(struct HuffmanCoding^nJpl);//读字符编码数据printf("请输入需编码的文本串:“);scanfC^s^Encodestr); 〃读需编码的字符串fclose(fpl);if((fpl=fopen{SourceFileName,,,wb,,))==NULL)printf("cannot open %s\n”,SourceFileName );getch();return;}fputs(Encodestr,fpl);//存储被编码的字符串数据到文件中// fwritefEncodestGsizeoffchar^sizeoffEncodestrJJpl);后而会读出乱码fclose(fpl);if((fpl=fopen(EnCodeFileName/,,wb"))==NULL){printf(N cannot open %s\n舄EnCodeFileName );getch();return;}printf("编码结果为:\n u);for(i=0;Encodestr[i] !='\0';i++){for(j=0;j<n;j++)if(code[j].ch==Encodestr[i]){printfC^s'^codeO).coding);fputs(code[j].coding,fpl);break; 〃编码结果写入文件}if(j==n){ printf("\nWrong string,there is a unknow ChariCan not Encode!"); //出现没有的字符,显示出错return;}}printf("\nEnCode Succeedfclose(fpl);return;*/哈夫曼译码的函数*******************車*****************************孚********void Decode()FILE *CFI> *TFP;char DeCodeStr[256];char ch;intm=ReadFromFile();//读哈夫曼树数据,已进入ht。

第一学期西南交大理论力学C第1次作业答案

第一学期西南交大理论力学C第1次作业答案

本次作业是本门课程本学期的第1次作业,注释如下:一、单项选择题(只有一个选项正确,共26道小题)1. 考虑力对物体作用的运动效应和变形效应,力是。

(A) 滑动矢量(B) 自由矢量(C) 定位矢量正确答案:C解答参考:2. 考虑力对物体作用的运动效应,力是。

(A) 滑动矢量(B) 自由矢量(C) 定位矢量正确答案:A解答参考:3.图示中的两个力,则刚体处于。

(A) 平衡(B) 不平衡(C) 不能确定你选择的答案:[前面作业中已经做正确] [正确]正确答案:B解答参考:4.作用力的大小等于100N,则其反作用力的大小为。

(A)(B)(C) 不能确定你选择的答案:[前面作业中已经做正确] [正确]正确答案:B解答参考:5. 力的可传性原理只适用于。

(A) 刚体(B) 变形体(C) 刚体和变形体你选择的答案:[前面作业中已经做正确] [正确]正确答案:A解答参考:6.图示结构,各杆自重不计,则杆BC是。

(A) 二力杆(B) 不能确定你选择的答案:[前面作业中已经做正确] [正确]正确答案:A解答参考:7.图示作用于三角架的杆AB中点处的铅垂力如果沿其作用线移动到杆BC的中点,那么A、C处支座的约束力的方向。

(A) 不改变(B) 改变(C) 不能确定你选择的答案:[前面作业中已经做正确] [正确]正确答案:B解答参考:8.图示构架ABC中,力作用在销钉C上,则销钉C对杆AC的作用力与销钉C对杆B C的作用力。

(A) 等值、反向、共线(B) 分别沿AC和BC(C) 不能确定你选择的答案:[前面作业中已经做正确] [正确]正确答案:B解答参考:9.如图所示,物体处于平衡,,自重不计,接触处是光滑的,图中所画受力图。

(A) 正确(B) 不正确(C) 不能确定正确答案:A解答参考:10.如图所示,物体处于平衡,自重不计,接触处是光滑的, 图中所画受力图是。

(A) 正确(B) A处约束力不正确(C)不能确定你选择的答案:[前面作业中已经做正确] [正确]正确答案:B解答参考:11.如图所示,各杆处于平衡,杆重不计,接触处是光滑的,图中所画受力图。

西南交大C++ 实验五.doc

西南交大C++ 实验五.doc

实验__5__实验报告教学班级:______ 学生学号:________ 学生姓名:___________实验日期:__2018/4/17_________ 实验地点:_指导教师签名:__________ 实验成绩:___________一、实验目的1.理解“处理某一或某些操作需要被有条件地重复执行”的编程思路和方法;2.掌握循环结构的程序设计,以及while、do-while和for循环语句的使用方法。

二、实验任务1.一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个。

2. 编程实现十进制整数和八进制整数之间的转换(即将10进制数转换为8进制数,或将8进制数转换为10进制数)。

3.计算由键盘输入的两个数的最大公约数和最小公倍数。

4.计算正弦的近似值。

sin(x)=x-x^3/3!+x^5/5!-x^7/7!+……5.由键盘输入若干职工的工资收入(以负数结束),输出每个职工的工资收入、计算并输出每个职工的缴税额,统计并输出职工总人数和总缴税额。

三、实验结果(源程序+ 注释)1.#include<iostream>using namespace std;void main(){cout<<"学号:****** 姓名:***"<<endl;int i,s,sum;s=1;i=9;sum=1;while (i>=1){s=(s+1)*2;i=i-1;sum=sum+s;}cout<<"总共有"<<sum<<"个桃子"<<endl;}2.//编程实现十进制整数和八进制整数之间的转换#include<iostream>using namespace std;void main(){cout<<"学号:****** 姓名:***"<<endl;int i,x,n,j;cout<<"请输入一个十进制整数:"<<endl;cin>>i;x=0,n=0;while (i>0){j=i%8;i=i/8;x=x+j*pow(10.0,n);n=n+1;}cout<<"该十进制数对应的八进制数为:"<<x<<endl; cout<<"请输入一个八进制整数:"<<endl;cin>>x;i=0,n=0;while(x>0){j=x%10;x=x/10;i=i+j*pow(8.0,n);n=n+1;}cout<<"该八进制数对应的十进制数为:"<<i<<endl; }3. // 计算由键盘输入的两个数的最大公约数和最小公倍数。

西南交大C++实验二.doc

西南交大C++实验二.doc

实验__2__实验报告教学班级:___ 学生学号:_________ 学生姓名:___________实验日期:_________ 实验地点:指导教师签名:__________ 实验成绩:___________一、实验目的1. 掌握顺序结构的编程思路和方法;2. 掌握格式输入输出和数据类型转换。

二、实验任务1.给朋友打印生日卡,生日卡格式输入:====================================My dear Zhang,Happy birthday to you!yours,Li====================================要求你的名字和你朋友的名字均由键盘输入,在输入名字时请给出提示信息。

2.已知赵六同学学号20110101111,他期末参加了高等数学、普通物理、大学英语三门课程期末考试。

编程实现:键盘输入学生的学号、以及各科的成绩,计算平均成绩。

输入输出格式参见下图。

要求:⑴学号作为一个整数而言,超出了int所定义的变量的存储范围,因此只能double 型变量来存储,但输出时要求看见的是整数形式的学号。

⑵输出对齐,成绩保留2位小数。

3.键盘输入一个小写字母,将其转换成大写字母,并输出它们的ASCII码值及其原字符。

4.计算万有引力。

由普通物理知, 两个质量分别为m1和m2的物体之间的万有引力F与两个物体质量的乘积成正比, 与两个物体质心之间的距离R的平方成反比:式中G为引力常数,如果F的单位为牛顿(N),质量的单位为千克(kg),物体质心的距离单位为米(m),则,已知太阳的质量为千克,地球的质量为kg,太阳与地球的距离为m,请计算太阳与地球之间的万有引力。

5.加法器键盘输入两个数,计算这两个数的和,并输出结果。

三、实验结果(源程序+ 注释)1.//给朋友打印生日卡,要求你的名字和你朋友的名字均由键盘输入,在输入名字时请给出提示信息。

#include<iostream>#include<string>using namespace std;int main(void){ string name1; //定义变量name1 string name2; //定义变量name2cout<<"学号:"<<endl;cout<<"请输入你的名字:"<<endl;cin>>name1; //将输入的名字赋值给name1 cout<<"请输入你朋友的名字:"<<endl;cin>>name2; //将输入的名字赋值给name2cout<<"===================================="<<endl;cout<<" My dear "<<name2<<endl;cout<<" Happy birthday to you!"<<endl;cout<<" yours,"<<endl;cout<<" "<<name1<<endl;cout<<"===================================="<<endl;return 0;}2. //键盘输入学生的学号以及各科的成绩,计算平均成绩。

西南交大C++实验三.doc

实验__3__实验报告教学班级:________ 学生学号:_________ 学生姓名:__________ 实验日期:________ 实验地点:指导教师签名:__________ 实验成绩:___________一、实验目的1. 掌握if 语句(即某些操作只有在特定条件成立的情况下才会被执行)的编程思路和方法;2. 掌握if-else 语句(即在某个条件成立时执行一种操作,条件不成立时执行另一种操作)的使用方法。

二、实验任务1. 使用if 语句编程求解两个数中的最大值。

2. 键盘输入一个数,判定:能不能被7整除,并如果失败输出失败的具体原因。

3. 已知一个函数⎩⎨⎧+<<=-=(其他)2)101(53x x x y ,输入x 的值,求解并输出相应的y 值。

4. 李X 购买一批打印纸,若一次性购买100包以下,每包20元;若一次性购买100包以上(包含100包),则每包16元,编写程序,计算李X 购买N 包打印机需要多少钱?5. 个税计算问题。

根据国家的纳税政策,个人应税起征点为月收入3500元;不超过起征点1500元的(即月收入超过3500元,但未超过5000元),超过部分按3%交纳个人所得税;超过起征点1500至4500元的,超过部分按10%交纳个人所得税;应税月收入超过起征点4500至9000元,超过部分按20%交纳个人所得税。

编写一个程序,输入某人的应税月收入,计算并输出纳税后的实际收入说明:本实验暂不计算月收入“3500+9000”以上的情况。

三、实验结果(源程序+ 注释)1、//使用if语句编程求解两个数中的最大值。

#include<iostream>using namespace std;void main(){cout<<"学号:"<<endl;double a,b,max;cout<<"input a,b:";cin>>a>>b;if (a>b)max=a;else max=b;cout<<"max="<<max<<endl;}2、//键盘输入一个数,判定:能不能被7整除y,并如果失败输出失败的具体原因。

西南交大实验报告

西南交大实验报告西南交大实验报告引言:西南交通大学是中国著名的综合性大学之一,以交通运输为特色,涵盖了工、理、管、文、法、经、教育等多个学科领域。

本实验报告将着重介绍西南交大的实验教学体系以及实验室设施,以展示该校在培养学生实践能力和创新精神方面的努力。

一、实验教学体系西南交大以实验教学为核心,注重培养学生的实践能力和创新精神。

学校建立了一套完善的实验教学体系,包括实验教学计划、实验教材、实验教学方法和实验评价体系等。

实验教学计划根据不同专业的要求,为学生安排了一系列的实验课程,涵盖了理论知识的应用和实践技能的培养。

实验教材则精心编写,内容丰富,既有基础实验,也有前沿实验,能够满足学生的学习需求。

实验教学方法灵活多样,结合了讲授、实践、讨论等多种形式,让学生能够全面参与实验过程,提高实践能力。

实验评价体系科学合理,既注重实验结果的准确性,又注重学生的实验操作能力和实验报告的撰写能力。

二、实验室设施西南交大拥有先进的实验室设施,为学生提供了良好的实验环境。

学校的实验室涵盖了多个学科领域,包括物理、化学、生物、电子、计算机等。

这些实验室配备了先进的实验设备和仪器,能够满足学生进行各种实验研究的需求。

实验室的管理规范,设有专门的实验室管理员,负责设备的维护和管理,确保实验设备的正常运行。

此外,学校还注重实验室的安全管理,制定了严格的实验室安全规定,确保学生的人身安全和实验设备的安全。

三、实验教学成果西南交大的实验教学取得了显著的成果。

学校的实验教学成果多次获得国家级奖项,得到了社会的广泛认可。

学生在实验教学中不仅学到了专业知识,还培养了动手能力和创新思维。

通过实验教学,学生能够将理论知识与实际应用相结合,提高问题解决能力和创新能力。

许多学生在实验教学中发表了学术论文,参与了科研项目,取得了优异的成绩。

实验教学的成果不仅体现在学生的学术成就上,还体现在学生的就业竞争力上。

许多企业对西南交大的实验教学给予了高度评价,认为该校的学生具备扎实的专业知识和出色的实践能力。

西南交通大学计算机程序设计基础C++实验报告10

实验 10 实验报告教学班级:___ ___ 学生学号:_____xxxxxx_____ 学生姓名:______x x x_____实验日期:___6.15___ 实验地点:____x7407________(机房)指导教师签名:_____________ 实验成绩:______________一、实验目的1.掌握二维数值型数组的使用方法;2.掌握求解一些经典问题的常用算法。

二、实验任务1.设有一个元素皆为整数的n*n阶矩阵,键盘输入矩阵的阶n及矩阵的元素,且找出其主对角线上元素的最大值及其所在的行号。

程序输出参考如下:2.已知有const int M=100; int x[M][M],m;要求:将按照如下规律自动生成的数据存放x数组中,并输出如下图所示三角。

3.编写程序,输入数字n(n<10),输出n层正方形图案。

正方形图案最外层是第一层,依次往内,每层用的数字和层数相同。

程序输出参考如下:4.编写程序,要求输入某班N名同学的序号及3门课成绩,计算每位同学的平均成绩以及每门课的平均成绩(学号为3位整数,成绩也为整数,课程名称为:科目1、科目2、科目3)。

程序输出参考如下:三、实验结果(源程序+ 注释+ 运行界面截图)(要求:(1)提供源程序;(2)源程序包含必要的注释,包括:在程序头部给出本程序功能的注释、所定义变量的用途注释、程序块的功能注释、子函数的功能注释等;(3)运行结果的窗口截图,程序运行结果中输出的第一行内容必须为:程序作者的学号和姓名。

)1.#include <iostream>using namespace std;int main(){cout<<"xxxxxxxxx"<<endl;int i,j,b=0,h=0,a[100][100],n;cout<<"请输入矩阵的阶:";cin>>n;cout<<"请输入一个"<<n<<"*"<<n<<"矩阵,每个数之间用空格间隔,每行输入完成后按回车"<<endl;for (i=1;i<=n;i++)//输入储存数据{for(j=1;j<=n;j++)cin>>a[i][j];}for(i=1;i<=n;i++)//对对角线上的数据进行大小判断{for(j=1;j<=n;j++){if(i==j){if(a[i][j]>b){b=a[i][j];//保存比较后较大的数h=i;//记录比较后较大数的行数}}}}cout<<"对角线上最大的数为:"<<b<<",行号为:"<<h<<endl;system ("pause");return 0;}2.#include <iostream>#include <iomanip>using namespace std;int main(){cout<<"xxxxxxxxx"<<endl;const int M=100; int x[M][M]={0},m;cout<<"请输入m值:";cin>>m;int t=m,i,j,p=m;int h=0;for(j=0;j<m;j++){for(i=0;i<=j;i++){cout<<setw(3)<<t<<setw(6)<<" ";x[i][j]=t;t=t+p;p--;if (j==i){cout<<endl;t=m-h-1;h++;}}p=m;}cout<<"========================================"<<endl;cout<<setw(12)<<" "<<setw(3)<<x[0][0]<<endl;cout<<setw(9)<<" "<<setw(3)<<x[0][1]<<setw(3)<<" "<<setw(3)<<x[1][1]<<endl;cout<<setw(6)<<" "<<setw(3)<<x[0][2]<<setw(3)<<" "<<setw(3)<<x[1][2]<<setw(3)<<" "<<setw(3)<<x[2][2]<<endl;cout<<setw(3)<<" "<<setw(3)<<x[0][3]<<setw(3)<<" "<<setw(3)<<x[1][3]<<setw(3)<<" "<<setw(3)<<x[2][3]<<setw(3)<<" "<<setw(3)<<x[3][3]<<endl;cout<<setw(3)<<x[0][4]<<setw(3)<<" "<<setw(3)<<x[1][4]<<setw(3)<<" "<<setw(3)<<x[2][4]<<setw(3)<<" "<<setw(3)<<x[3][4]<<setw(3)<<" "<<setw(3)<<x[4][4]<<endl;system ("pause");return 0;}3. #include <iostream>using namespace std;int main(){cout<<"xxxxxxxxx"<<endl;int a[100][100],b[100][100],i,j,k,h,n,m;cout<<"请输入正方形层数;";cin>>n;m=2*n-1;for(i=0,k=0;i<n,k<n;i++,k++) //输入保留左上四分之一正方形数据{for(j=0,h=0;j<n,h<n;j++,h++){if(i<j)a[i][j]=i+1;elsea[i][j]=j+1;b[k][h]=a[i][j];}}for(i=0,k=0;i<n,k<n;i++,k++) //将坐上四分之一正方形复制到右上角四分之一正方形{for(j=m-1,h=0;j>=n;j--,h++)a[i][j]=b[k][h];}for(i=m-1,k=0;i>=n,k<n;i--,k++)//复制到左下角四分之一正方形{for(j=0,h=0;j<n,h<n;j++,h++)a[i][j]=b[k][h];}for(i=m-1,k=0;i>=n,k<n;i--,k++)//复制到右下角四分之一正方形{for(j=m-1,h=0;j>=n,h<n;j--,h++)a[i][j]=b[k][h];}for(i=0;i<m;i++)//输出矩阵{for(j=0;j<m;j++){cout<<a[i][j]<<" ";}cout<<endl;}system("pause");return 0;}4.#include <iostream>using namespace std;int main(){cout<<"xxxxxxxxx"<<endl;int a[100][100],i,j,N,m,n;cout<<"请按下列顺序输入:"<<endl;cout<<"学号"<<" "<<"科目1"<<" "<<"科目2"<<" "<<"科目3"<<endl;N=3;m=0;n=0;for(i=0;i<N;i++)//输入同学的学号成绩{for(j=0;j<4;j++){cin>>a[i][j];}}for(i=0;i<N;i++)//计算某同学平均分{for(j=1;j<4;j++)m+=a[i][j];n=m/3;m=0;cout<<"学号为"<<a[i][0]<<"的同学的平均分为:"<<n<<endl;}for(j=1;j<4;j++)//计算某科目平均分{for(i=0;i<N;i++)m+=a[i][j];n=m/3;m=0;cout<<"科目"<<j<<"的平均分为:"<<n<<endl;}system("pause");return 0;}。

西南交通大学C++上机实验问题详解

实验1教学班级:学生学号:学生:实验日期:2014年3月1日实验地点:(机房)指导教师签名:__________ 实验成绩:___________ 一、实验目的1.熟悉C++程序的集成开发环境;2.学习新建和打开控制台应用程序的方法;3.掌握简单数据运算,以及输入与输出方法。

二、实验任务1.输入一摄氏温度,输出显示所转换的华氏温度。

(提示:摄氏温度=(华氏温度-32)×5/9)2.画出一头威武雄壮的雄狮。

,%%%%%%,%%/\%%%%/\%,%%%\c "" J/%%%%. %%%%/ o o \%%%`%%. %%%% _ |%%`%% `%%%%(__Y__)%// ;%%%%`\-/%%%'(( / `%%%%%%%'\\ .' |\\ / \ | |\\/ ) | |\ /_ | |__(___________)))))))三、实验结果(源程序+ 注释)1.源程序#include<iostream>using namespace std;void main(){double a,b;cout<<"请输入一摄氏温度:"<<endl;cin>>a;b=a*9/5+32;cout<<"转换的华氏温度为:"<<b<<endl;}2.源程序#include<iostream>using namespace std;void main(){cout<<" ,%%%%%% "<<endl;cout<<" ,%%/\%%%%/\% "<<endl; cout<<" ,%%%\c "" J/%%% "<<endl;cout<<"%. %%%%/ o o \%%% "<<endl;cout<<"`%%. %%%% _ |%% "<<endl;cout<<" `%% `%%%%(__Y__)% "<<endl;cout<<" // ;%%%%`\-/%%%' "<<endl;cout<<"(( / `%%%%%%%' "<<endl;cout<<" \\ .' | "<<endl;cout<<" \\ / \ | | "<<endl;cout<<" \\/ ) | | "<<endl;cout<<" \ /_ | |__ "<<endl;cout<<" (___________))))))) "<<endl;}实验2教学班级:学生学号:学生:实验日期:2014年3月1日实验地点:(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握对一般数据的输入和输出格式控制方法;2.掌握对实型数据输出形式的设置和小数位数的控制方法;3.了解数据输入的相关注意事项。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档