实验 1 C语言综合程序设计一、实验目的1. 回顾C语言的主要知识点;2. 巩固C语言中数据类型、控制语句、函数、结构体等C++程序的基本构成要素;3. 重点掌握函数、结构体的应用;4. 掌握函数的默认参数值的应用;二、知识要点1. C语言的各基本数据类型及struct结构体类型。
2. 输入/输出语句(cin,cout)、选择语句(if,switch)、循环语句(for,while)。
3. 函数定义及函数调用的方法,参数传递规则。
4. 在定义函数时,可以指定其参数的默认值,在调用此函数时,可以缺省此位置的实参,在函数执行时以默认值为参数数据进行处理。
默认参数可以简化编程;有利于程序扩充,而不影响原有代码。
需要注意如有函数原型声明,则在函数原型中写出默认参数值,而在函数定义时不再写出;需要将带默认值的参数定义写在参数列表的后面。
三、实验内容1. 分析程序,写出下列程序的执行结果#include<iostream.h>void fun(int &n){ n++; }void main(){for( int i=0; i<3; i++ ){ fun(i); cout<<i<<endl;}}//0<3成立,执行fun函数,此处&为引用,n++,所以n=i=1,输出1,回车。
i++,此时i=2,2<3成立,执行fun,n++,此时n=i=3,输出3,回车。
结果为:132. 分析程序,写出下列程序的执行结果#include<iostream>using namespace std;void print(char *n="none",int age=0){cout<<n<<':'<<age<<endl;}int main(){char s[50];int age;cout<<"输入姓名与年龄,空格间隔\n";cin>>s>>age;print(s,age);print("zhang3");print();return 0;}//首先输出"输入姓名与年龄,空格间隔”这句话,然后输入名字,接着调用print函数,输出结果应是输入的姓名:输入的年龄zhang3:0none:03.编制小学生进行加、减运算的练习程序。
首先进行运算种类和运算数范围的选择,然后根据选择显示相应的算式。
用户输入答案后进行正确和错误的判定:解答正确显示下一题;错误给出正确答案并显示下一题。
每次10题,给出成绩,并询问是否继续,如图1.1所示。
注意:减法运算要求被减数大于减数。
(提示:使用rand()函数(无参)可产生随机整数,每调用1次rand()就产生1个随机数。
产生指定范围 [m,n](m<=x<=n)的数据表达式为:rand()%(n-m+1)+m为使每次运行程序,rand()函数产生不同的随机数,要调用一次srand函数:srand(time(NULL));这些函数涉及到的头文件有:#include <stdlib.h> #include <time.h> )#include<iostream.h>#include<stdlib.h>#include<time.h>void asd();void zxc();void qwe();void tyu();void pl();void mn();void hh();void main(){asd();}int a;void asd(){cout<<"********运算类型:\n";cout<<"1、加"<<endl;cout<<"2、减"<<endl;cout<<"3、乘"<<endl;cout<<"4、除"<<endl;cout<<"请选择运算类型:";cin>>a;if(a==1||a==2||a==3||a==4)zxc();elsecout<<"输入错误"<<endl;}int j=1;int &p=j;void zxc(){int b;int i;cout<<"******运算数范围:\n";cout<<"1、1-9"<<endl;cout<<"2、1-99"<<endl;cout<<"3、1-999"<<endl;cout<<"4、1-9999"<<endl;cout<<"请输入运算数范围:";cin>>b;for(i=0;i<b;i++)j*=10;if(a==1)qwe();if(a==2)tyu();if(a==3)pl();if(a==4)mn();}void qwe(){int i=0;int k,l,m,n=0;cout<<"######********开始测试*********######\n";while(i<10){srand(time(NULL));k=rand()%p;l=rand()%p;cout<<k<<"+"<<l<<"=";cin>>m;if(k+l==m){i++;n+=10;continue;}elsecout<<"错误,正确答案为:"<<k+l<<endl;i++;}cout<<"本次练习的成绩为:"<<n;cout<<"\t\t\t继续加油!\n";p=1;hh();}void tyu(){int i=0,t;int k,l,m,n=0;cout<<"######********开始测试*********######\n";while(i<10){srand(time(NULL));k=rand()%p;l=rand()%p;if(k<l){t=k;k=l;l=t;}cout<<k<<"-"<<l<<"=";cin>>m;if(k-l==m){i++;n+=10;continue;}elsecout<<"错误,正确答案为:"<<k-l<<endl;i++;}cout<<"本次练习的成绩为:"<<n;cout<<"\t\t\t继续加油!\n";hh();}void pl(){int i=0;int k,l,m,n=0;cout<<"######********开始测试*********######\n";while(i<10){srand(time(NULL));k=rand()%p;l=rand()%p;cout<<k<<"*"<<l<<"=";cin>>m;if(k*l==m){i++;n+=10;continue;}elsecout<<"错误,正确答案为:"<<k*l<<endl;i++;}cout<<"本次练习的成绩为:"<<n;cout<<"\t\t\t继续加油!\n";hh();}void mn(){int i=0;double k,l,m,n=0;cout<<"######********开始测试*********######\n";while(i<10){srand(time(NULL));k=rand()%p;l=rand()%p;cout<<k<<"/"<<l<<"=";cin>>m;if(k+l==m){i++;n+=10;continue;}elsecout<<"错误,正确答案为:"<<k/l<<endl;i++;}cout<<"本次练习的成绩为:"<<n;cout<<"\t\t\t继续加油!\n";hh();}void hh(){char c;int d;cout<<"是否继续?<y/n>";cin>>c;d=c;if(d==121)asd();}图1.1 图1.24. 学校要对某专业学生成绩设定成绩等级。
首先输入学生人数(人数不大于100),然后输入每个学生的学号和三门课成绩。
计算总分,按照总分设定成绩等级:前20%为A 级;其后的40%为B 级;其后的30%为C 级;最后的10%为D 级。
输出:1)按总分由高到低输出:学生的学号、三门课成绩、总分和成绩等级;2)按输入顺序输出。
如图1.2所示。
设定成绩等级依据四舍五入原则:如果计算出A 级为2.6人,即设置为3人;如果为2.4,则为2人。