【实验名称】 实验一 开发环境熟悉及结构化编程
【实验内容】
题目1
编写函数,从键盘输入一个整数,通过某个函数判断其是否为质数,并输出判断结果。
#include <iostream>
#include<cmath>
using namespace std;
bool sushu(int x){
for(int i= 2;i<sqrt(x);i++){
if(x%i==0){
return true;
}
}
return false;
}
int main(){
int number;
cin>>number;
if(sushu(number)==1){
cout<<number<<"不是质数";
}
else{
cout<<number<<"是质数";
}
return 0;
}
【实验结果】
题目2
利用上题编写的函数,输出1~1000之内的所有质数。
#include <iostream>
#include<cmath>
using namespace std;
bool sushu(int x){
for(int i= 2;i<sqrt(x);i++){
if(x%i==0){
return true;
}
}
return false;
}
int main(){
cout<<"1~1000之内的质数有:";
for(int i = 2;i<1001;i++){
if(sushu(i)==0){
cout<<i<<" ";
}
}
return 0;
}
【实验结果】
题目3
编写程序,利用π/4=1-1/3+1/5-1/7+1/9-…公式求π的近似值,直到最后一项的绝对值小于10-6为止。
#include<iostream>
using namespace std;
int main(){
double r = 0;
int i = 1;
do{
double f = 1.0/i;
r = (i%4==1)?r+f : r-f; //pow(-1,i+1)*
i+= 2;
}while((1.0/i)>1e-6);
r = r*4;
cout<<"π的近似值为:"<<r;
return 0;
}
【实验结果】
题目4
使用结构体编写程序,从键盘输入学生信息,包括:姓名/年龄/性别/成绩1/成绩2/成绩3/生源地,按生源地分组输出学生信息,按平均成绩降序输出学生信息及班级排名。
#include <iostream>
using namespace std;
#define NUMBER 6
struct student //定义一个关于学生的结构体,包括姓名学号性别以及专业
{
string name;
int age;
string sex;
int grade1;
int grade2;
int grade3;
string origin;
};
int main()
{
struct student stu[NUMBER];//定义储存学生信息的结构体变量
struct student temp;
double average[NUMBER];
double exchange;
cout<<"请依次输入各个学生的信息:";
for(int i=0;i<NUMBER;i++)//依次输入各个学生的信息
{
cin>>stu[i].name>>stu[i].age>>stu[i].sex>>stu[i].grade1>>stu[i].grade2>>stu[i].grade3>>stu[i].origin;
}
for(int i=0;i<NUMBER;i++){ //按生源地分组
for(int j=i;j<NUMBER;j++){
if(stu[i].origin==stu[j+1].origin){
temp=stu[i+1];
stu[i+1]=stu[j+1];
stu[j+1]=temp;
}
}
}
cout<<"\n按生源地分组:\n";
for(int i=0;i<NUMBER;i++){
cout<<stu[i].origin<<" "<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].sex<<" "<<stu[i].grade1<<" "<<stu[i].grade2<<" "<<stu[i].grade3<<endl;
if(stu[i].origin!=stu[i+1].origin){
cout<<endl;
}
}
for(int i=0;i<NUMBER;i++){ //平均成绩verage.length()
average[i] = (double)(stu[i].grade1+stu[i].grade2+stu[i].grade3)/3;
}
for(int i=0;i<NUMBER-1;i++){//进行平均成绩的降序排序
for(int j=0;j<NUMBER-1-i;j++)
{
if(average[j]<average[j+1])
{
exchange = average[j];
average[j] = average[j+1];
average[j+1] = exchange;
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
cout<<"\n按照平均成绩的降序排序为:\n";
for(int i=0;i<NUMBER;i++)
cout<<"第"<<i+1<<"名:"<<stu[i].name<<" "<<stu[i].age<<" "<<stu[i].sex<<" 平均成绩:"<<average[i]<<" "<<stu[i].grade1<<" "<<stu[i].grade2<<" "<<stu[i].grade3<<" "<<stu[i].origin<<endl;
return 0;
}
【实验结果】