您的位置:首页 > 编程语言 > C语言/C++

第五章作业一(课本习题)

2014-04-27 11:41 316 查看
实验作业
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;

2.编程实现课本每一个编程习题。

3. 编程实现输入两个4X5矩阵和5X3矩阵,定义函数并在主函数中调用计算它们的积。

4.编程计算S
=1!+21+3!+...n!。要求定义两个函数,一个计算n!,一个计算s
,在后一个函数中调用前一个函数。然后在主程序中输入数n的值,然后调用定义函数输出结果。

5.编写一个函数,输入一个十六进制数,输出相应的十进制数。

程序:

// leason_5.cpp : 定义控制台应用程序的入口点。
//第五章课本习题

#include "stdafx.h"
#include<iostream>
#include<cstring>
#include<iomanip>
#include<cmath>
#define uint unsigned int
using namespace std;
void NO_2();
float ming(int base,int exp);
void NO_3();
void sushu(int a);
void NO_4();
void fan(int a);
void NO_5();
char dengji(float a);
void NO_6();
float fen[10];
void NO_7();
uint bei(uint a,uint b);
uint yue(uint a,uint b);
void NO_8();
void cheng_a();
void cheng_b();
void cheng_c();
void NO_9();
void zhi(int a,int b,int c);
void ying(int &a,int &b,int &c);
void quan();
/*****************************/
/*以上内容可以放到一个头文件中*/
/*****************************/

/*下面是主函数*/
int _tmain(int argc, _TCHAR* argv[])
{
int a,b=1;
while(b)
{
cout<<"请输入要查看的题目序号(2--9)"<<endl;
cin>>a;
switch (a)
{
case(2):NO_2();break;
case(3):NO_3();break;
case(4):NO_4();break;
case(5):NO_5();break;
case(6):NO_6();break;
case(7):NO_7();break;
case(8):NO_8();break;
case(9):NO_9();break;
default:cout<<"输入无效"<<endl;
}
{
char k;
cout<<"是否要查看下一个? N停止,任意键继续"<<endl;
cin>>k;
if(k=='N'||k=='n')
b=0;
}
}
return 0;
}

/*下面是各题对应的函数*/

/*****************************第二题*********************************/
void NO_2() //求整数次幂
{
int a,b;
float c;
cout<<"请输入两个整数,前者为基数,后者为次数"<<endl;
cin>>a>>b;
c=ming(a,b);
cout<<a<<"的"<<b<<"次方为:"<<c<<endl;
}
float ming(int base,int exp)
{
int a;
float b=1;
if (exp>=0)
for(a=0;a<exp;a++)
{
b*=base;
}
else
{exp=-exp;
for(a=0;a<exp;a++)
{b*=base;}
b=1/b;
}
return b;
}
/*************************第三题******************************/
void NO_3()
{int a;
cout<<"请输入一个正整数"<<endl;
cin>>a;
sushu(a);
}
void sushu(int a)
{int b=2,s=0;
for(b;b<=a;b++)
{if(a%b==0)
s++;
if(s>=2)
break;
}
switch(s)
{ case(0):cout<<"这个数既不是素数也不是合数"<<endl;break;
case(1):cout<<"这个数是一个素数"<<endl;break;
default : cout<<"这是一个合数"<<endl;break;}
}
/*******************************第四题******************************/
void NO_4()
{int a;
cout<<"请输入一个正整数"<<endl;
cin>>a;
fan(a);
}
void fan(int a)
{int b;
while(a>0)
{b=a%10;
a/=10;
cout<<b;}
cout<<endl;
}
/*******************************第五题******************************/
void NO_5()
{
float x;
char y;
cout<<"请输入分数"<<endl;
cin>>x;
y=dengji(x);
cout<<"该分数对应等级为:"<<y<<endl;
}
char dengji(float a)
{
char b;
if(a>=90)
b='A';
else if(a>=80)
b='B';
else if(a>=70)
b='C';
else if(a>=60)
b='D';
else
b='E';
return b;
}

/*******************************第六题******************************/
void NO_6()
{
int a;
float b=0;
cout<<"请分别输入十个学生的成绩"<<endl;
for(a=0;a<10;a++)
{
cin>>fen[a];
b+=fen[a];
}
b/=10;
cout<<"平均分数为:"<<b<<endl;
}
/*******************************第七题******************************/
void NO_7()
{
uint x,y;
uint a,b;
cout<<"请输入两个正整数"<<endl;
cin>>x>>y;
a=bei(x,y);
b=yue(x,y);
cout<<"这两个数的最小公倍数为:"<<a<<endl;
cout<<"这两个数的最大公约数为:"<<b<<endl;
}
uint bei(uint a,uint b)
{
uint i,k=1,s;
if(a>=b)
i=a;
else
i=b;
while(k)
{
if(i%a==0&&i%b==0)
{
k=0;
s=i;
}
i++;}
return s;
}
uint yue(uint a,uint b)
{
uint i,k=1,s;
if(a<=b)
i=a;
else
i=b;
while(k)
{if(a%i==0&&b%i==0)
{
k=0;
s=i;}
i--;}
return s;
}
/*******************************第八题******************************/
void NO_8()
{
cout<<"全部输出效果"<<endl;
cheng_a();
cout<<"输出主对角线以上元素"<<endl;
cheng_b();
cout<<"输出主对角线以下元素"<<endl;
cheng_c();
}
void cheng_a()
{int a,b,c;
for(a=1;a<=9;a++)
{for(b=1;b<=9;b++)
{c=a*b;
cout<<b<<"x"<<a<<"="<<c<<'\t';}
cout<<endl;}}
void cheng_b()
{int a,b,c;
for(a=1;a<=9;a++)
{for(b=1;b<=9;b++)
{c=a*b;
if(a>b)
cout<<"\t";
else
cout<<b<<"x"<<a<<"="<<c<<'\t';}
cout<<endl;}}
void cheng_c()
{int a,b,c;
for(a=1;a<=9;a++)
{for(b=1;b<=a;b++)
{c=a*b;
cout<<b<<"x"<<a<<"="<<c<<'\t';}
cout<<endl;}}

/*******************************第九题******************************/

int x,y,z; //定义全局变量,此全局变量只在第九题有效
int ma,mi;
float av;
void NO_9()
{
//int x,y,z;
cout<<"请输入三个整数"<<endl;
cin>>x>>y>>z;
cout<<"值调用:"<<endl;
zhi(x,y,z);
cout<<"全局变量:"<<endl;
quan();
cout<<"引用调用:"<<endl;
ying(x,y,z);
cout<<"这三个数为:"
<<setw(5)<<x
<<setw(5)<<y
<<setw(5)<<z<<endl;
}
void zhi(int a,int b,int c)
{
int t;
float ave;
if(b>a)
{t=b;b=a;a=t;}
if(c>a)
{t=c;c=a;a=t;}
if(c>b)
{t=b;b=c;c=t;}
ave=(a+b+c)/3.0;
cout<<"最大数为"<<a<<endl;
cout<<"最小数为"<<c<<endl;
cout<<"平均数为"<<ave<<endl;
}
void ying(int &a,int &b,int &c)
{
int t;
float ave;
if(b>a)
{t=b;b=a;a=t;}
if(c>a)
{t=c;c=a;a=t;}
if(c>b)
{t=b;b=c;c=t;}
ave=(a+b+c)/3.0;
cout<<"最大数为"<<a<<endl;
cout<<"最小数为"<<c<<endl;
cout<<"平均数为"<<ave<<endl;
}

void quan()
{
if(y>x)
{ ma=y;mi=x;
if(z>y)
ma=z;
if(z<x)
mi=z;}
else if(z>x)
{ma=z;mi=y;}
else
{ma=x;
if(y>z)
mi=z;
else mi=y;}
av=(x+y+z)/3.0;
cout<<"最大数为"<<ma<<endl;
cout<<"最小数为"<<mi<<endl;
cout<<"平均数为"<<av<<endl;
}









全部集中在一个程序中来写果然很有难度,花费了我一整天的时间才调试无误

错误收集:

1.e:\visual studio 2012\c++编程\leason_5\leason_5\leason_5.cpp(75): warning C4244: “=”: 从“float”转换到“int”,可能丢失数据
12.e:\visual studio 2012\c++编程\leason_5\leason_5\leason_5.cpp(158): warning C4101: “c”: 未引用的局部变量
3.e:\visual studio 2012\c++编程\leason_5\leason_5\leason_5.cpp(94): error C4716: “ming”: 必须有返回值
4.e:\visual studio 2012\c++编程\leason_5\leason_5\leason_5.cpp(196): warning C4715: “bei”: 不是所有的控件路径都返回值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息