大学计算机基础作业详解 第五章
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.3 实验题
一、基础题
1.修改下列程序中的错误,输出结果,输出示例如图5-1所示。
并对有注释标记的语句进行功能注释。
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
using namespace std;
void f1(int x[ ])
{
for(int i=0;i<=9;i++)
{x[i]=2*x[i]+1;
if(i==6) //当输出六个数后实现换行
{cout<<endl<<x[i]<<" ";}
else
cout<<x[i]<<" ";
}
cout<<endl;
}
void main()
{
int a[10];
for(int i=0;i<=9;i++)
cin>>a[i]; //逐个输入数组的值
f1(a); //用F1函数处理数组
system("pause");
}
图5-1 第1题的输出示例
2.修改下列程序的错误,完成求最大数的功能。
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
using namespace std;
inline int f1(int x,int y)
{
return x>y?x:y;
}
void main()
{ int a=120,b=300,c=40;
int d,e,f;
d=f1(a,b);e=f1(d,c);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;
cout<<"三个数中的最大数为:"<<e<<endl;
system("pause");
}
3.分析程序出错的原因,并更正、输出正确的结果。
要求对有注释标记的语句进行功能注释。
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
using namespace std;
int sum(int a,int b) //求和函数
{
return a+b;
}
double sum(double x,double y,double z) //重载求和函数
{
return x+y+z;
}
float sum(float x,float y)
{
return x+y;
}
void main()
{
cout<<"调用函数sum(int,int)的结果为:"<<sum(13,14)<<endl; //输出整形求和函数的运
算结果
cout<<"调用函数sum(double,double,double)的结果为:"<<sum(1.32,1.14,1.018)<<endl; //输出双精度浮点求和函数的运算结果
cout<<"调用函数sum(float,float)的结果为:"<<sum(12.7,34.78)<<endl; //输出单精度浮点求和函数的运算结果
system("pause");
}
4.分析下列程序所完成的功能,并标出程序中各个变量的存储类型。
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
using namespace std;
int f1(int);
void main()
{
int x=5; //x 为局部普通整型变量
static int y;//y为局部静态整型变量
y=y+f1(x);
cout<<"x="<<x<<" "<<"y="<<y<<endl<<endl;
y=y+f1(x);
cout<<"x="<<x<<" "<<"y="<<y<<endl<<endl;
system("pause");
}
static int x=12;//x为静态整型变量
int f1(int a)
{ static int y=300;//y为静态整型变量
y=y+a;
cout<<"x="<<x<<" "<<"y="<<y<<endl;
return y;
}5.分析下列程序所完成的功能,并输出正确的结果。
#include<iostream>
using namespace std;
void f1(int x)
{int d;
cout<<"输出该数的逆转数为:";
do
{
d=x%10;
cout<<d;
x=x/10;
}while(x!=0);
cout<<endl;
}
void main()
{
int n;
cout<<"输入一个正整数:";
cin>>n;
f1(n);
}
二、编程题
1.设计一个函数求100以内能被13整除的最大数。
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
using namespace std;
int f1();
void main()
{
int d;
d=f1();
cout<<d<<endl;
system("pause");
}
int f1()
{
int a=100;
for (int i=0;i<=20;i++)
{
if (!((a-i)%13))
{
return a-i;
break;
}
}
}
2.设计一个可以计算阶乘的函数,由用户输入n值,计算出1!+2!+3!+4+……+n的值,并打印出来。
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
using namespace std;
int f1(int);
void main()
{
int sum=0;
int n;
cout<<"请输入n的值:"<<endl;
cin>>n;
for (int i=1;i<=n;i++)
{
sum=sum+f1(i);
}
cout<<"其结果为:"<<sum<<endl;
system("pause");
}
int f1(int n)
{
if (n==1)
{
return 1;
}
else
return n*f1(n-1);
}
3.设计一个函数,完成将一个十进制数转换成2、8、16进制数。
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int f1(int);
int er[32]={0};
void shu(int a[],int b);
void main()
{
int n;
int h;
cout<<"输入要求转换的数:"<<endl;
cin>>n;
h=f1(n);
cout<<"二进制的形式为:";
shu(er,h);
cout<<"八进制的形式为:"<<oct<<n<<endl
<<"十六进制的形式为:"<<hex<<n<<endl;
system("pause");
}
int f1(int n)
{
int a=0,j=-1;
for (int i=0;i<33;i++)
{
if (n!=0)
{
a=n%2;
er[i]=a;
n=n/2;
j++;
}
else
break;
}
char b;
for (int k=0;k<j/2;k++)
{
b=er[k];
er[k]=er[j-k];
er[j-k]=b;
}
return j;
}
void shu(int a[],int b)
{
for (int i=0;i<b+1;i++)
{
cout<<a[i];
}
cout<<endl;
}
4.设计一个递归函数,求满足以下条件的最大的n:12+22+32+……+n2<1000
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
using namespace std;
int fun();
int f(int c);
void main()
{
int a;
a=fun();
cout<<"满足条件的最大n为:"<<a;
system("pause");
}
int fun()
{
int n=1;
int sum=0;
for (;sum<1000;)
{
sum=f(n);
n++;
}
return n;
}
int f(int c)
{
static int all=0;
if (c=1)
{
all=1;
return all;
}
else
{
all=f(c-1)+c*c;
return all;
}
}
5.设计一个重载函数area,用于求出长方形和圆形的面积,其中长方形的长和宽、圆的半径由用户从键盘输入。
// 上机课第五章实验题.cpp : 定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<iostream>
using namespace std;
int area(int a,int b);
float area(float r);
const int pi=3.1416;
void main()
{
int c,d;
float e;
cout<<"请输入矩形的长和宽:";
cin>>c>>d;
cout<<"请输入圆的半径:";
cin>>e;
int ju;
float yuan;
ju=area(c,d);
yuan=area(e);
cout<<"矩形的面积为:"<<ju<<endl
<<"圆的面积为:"<<yuan<<endl;
system("pause");
}
int area(int a,int b)
{
return a*b;
}
float area(float r)
{
return pi*r*r;
}
6.编写一个程序,将一个文件中所有大写字母转换成小写字母,并存储到另一个文件中。
7.编写一个程序,实现将存放在文件中的学号、姓名、电话等信息读出并显示出来。