福师大网络学院C语言程序设计网络作业

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

C 语言程序设计作业
编程:
1编写一个程序求一元二次方程的解。

讨论下述情形:
(1)a=0,不是二次方程。

(2)b^2-4ac=0,有两个相等实根。

(3) b^2-4ac>0,有两个不等实根。

(4) b^2-4ac<0,有两个复根(表示成x+yi,x-yi)。

2. 编一程序,求出所有各位数字的平方和等于99的三位数。

3. 输入一个2X3的整数矩阵,输出其中最大值、最小值及其所在的行列下标。

4. 编程:输入一3X3整数矩阵,求其主对角线上元素之和并输出。

用矩阵: 11 12 13
21 22 23
31 32 33 验证。

5. 编程序求 y=1+1/1!-1/2!+1/3!-1/4!+...的值.(精度为1e-6)。

//1.编写一个程序求一元二次方程的解。

#include<iostream.h>
int main(){
//假设这个方程是 aX^2 + bX + c = 0 的标准形式
float a,b,c;
scanf("%f",&a);
scanf("%f",&b);
scanf("%f",&c);
if(a==0){//a为零,非2次方程不计算
printf("这不是一个2次方程");
return 0;
}else if((b*b-4*a*c) == 0) { // 相等的两实根
printf("这个方程有两个相等的根,是:" + (-1)*b/(2*a) );
}else if((b*b-4*a*c) > 0){ //不相等的两实根
printf("这个方程有两个不相等的实根,\n分别是:" +
(Math.sqrt(b*b-4*a*c)- b)/(2*a) + "\n与" + ((-1)*Math.sqrt(b*b-4*a*c)- b)/(2*a));
}else if((b*b-4*a*c) < 0){ //不相等的复根
printf("这个方程有两个不相等的复根,\n分别是:" + (-1)*b/(2*a) +""+(Math.sqrt(b*b-4*a*c)/(2*a))+"i" + "\n与" + b/(2*a)
+""+(Math.sqrt(b*b-4*a*c)/(2*a))+"i";
}
return 0;
}
//--------------------------------------------------
//2.寻找所有各位数字的平方和等于99的三位数
#include<iostream.h>
int main(){
int hundreds = 0;
int tens = 0;
int singles = 0;
for(int i=100;i<1000;i++){
hundreds = i/100; //取得百位数
tens = (i%100)/10; //取得十位数
singles = i%10; //取得个位数
if((hundreds*hundreds + tens*tens + singles*singles) == 99){ cout<<i+", ";
}
}
return 0;
}
//--------------------------------------------------
//3.输入一个2X3的整数矩阵,输出其中最大值、最小值及其所在的行列下标。

#include<iostream.h>
int main(){
int a[2][3] = {5,1,3,4,6,2}; //初始化矩阵
int max = a[0][0]; //初始化最大值
int maxX = 0; //初始化最大值的横坐标
int maxY = 0; //初始化最大值的纵坐标
int min = a[0][0]; //初始化最小值
int minX = 0; //初始化最小值横坐标
int minY = 0; //初始化最小值纵坐标
for(int i=0 ; i<2 ; i++){
for(int j=0; j<3 ; j++){
if(a[i][j] > max){
max = a[i][j];
maxX = i;
maxY = j;
}
else if(a[i][j] < min){
min = a[i][j];
minX = i;
minY = j;
}
}
}
cout<<"最大的数是"+max+",它的行列下标是: 第"+maxX+"行,第"+maxY+"列。

\n";
cout<<"最小的数是"+mix+",它的行列下标是: 第"+mixX+"行,第"+mixY+"列。

\n";
}
//--------------------------------------------------
//4.输入一3X3整数矩阵,求其主对角线上元素之和并输出。

#include<iostream.h>
int main() {
int a[3][3],i,j,msum = 0,ssum = 0;
for(i = 0; i < 3; ++i) {
for(j = 0; j < 3; ++j) {
printf("a[%d][%d] = ",i,j);
scanf("%d",&a[i][j]);
}
}
printf("矩阵元素表:\n");
for(i = 0; i < 3; ++i) {
for(j = 0; j < 3; ++j) {
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i = 0; i < 3; ++i) {
msum += a[i][i];
ssum += a[i][2 - i];
}
printf("主对角线的和是:%d\n斜对角线的和是:%d\n\n",msum,ssum);
return 0;
}
//--------------------------------------------------
//5、编程序求 y=1+1/1!-1/2!+1/3!-1/4!+...的值.(精度为1e-6)。

#include<iostream.h>
int main()
int i,j,m,n,n;
for(i = 0; i< j; i++)
{
if == 0
y = 1;
else
if(i % 2 == 1
{
for(n = 1; n <= i; n++)
{
m = m + n * i;;
}
y = y + m;
}
else
{
for(n = 1; n <= i; n++)
{
m= m + n * i;
}
y =-y - m;
})
return 0; 0; 0;
}
}
C++语言程序设计第二次作业
填充下面的划线部分,使其完成所要求的功能。

答案卷只要写题号与填充的答案,不要题目:如:1. xxxxxxx 2.xxxxxxx…。

将答案卷直接粘贴到作业栏。

1.计算下列分段函数,X由键盘输入。

0 (x<=-10.0)
y= x (-10.0<x<=10.0)
2x-3(x>10.0)
#include"stdio.h"
main()
{
float x,y;
if(x<=-10.0)y=0;
else if ( 1 x<=10.0 ) y=x;
else y=2*x-3;
printf(“%f\n”,x);
}
2. invert()函数的功能是将一个字符串str的内容倒序存放;
例如: 字符串str原内容为:abcde,函数调用后变为:edcba。

#include<iostream.h>
#include<string.h>
void invert (char str[ ])
{int i, j, k;
j=_____2 strlen(str)_____;
for (i=0; i<strlen(str)/2;i++, j--)
{ k=str[i];
str[i]=str[j];
str[j]=__3_k_____;
}
}
void main()
{ char test[]="abcde";
invert (test);
cout<<test;
}
3. .下列程序打印出1000以内的所有“完全数”。

“完全数”是指一个正整数,其所有
小于该数的因子之和等于该数本身。

例如:6=1+2+3,又如:28=1+2+4+7+14。

#include “iostream.h”
#include”iomanip.h”
void main()
{int i, j,s;
for (j=2; j<=1000; j++)
{ s=0;
for (i=1; i<j; i++)
if (___4_s%i == 0___)s+=i;
if (___5 s == j____) cout<<setw(5)<<j;
} }
4. 以下程序显示如下所示的矩阵,矩阵中每个元素形成的规律是:右上三角阵(含
对角线)元素值为1,其它元素值为:行下标—列下标+1。

1 1 1 1 1
2 1 1 1 1
3 2 1 1 1
4 3 2 1 1
5 4 3 2 1
#include”iostream.h”
#include”iomanip.h”
main()
{int i,j, a[5][5];
for( i=0; i<=4; i++ )
for(j=0; j<5; j++ )
if(___6_i<=j___)a[i][j] = 1;
else __7 a[i][j]___=i-j+l;
for(i=0; i<5; i++)
{ for(j=0; j<5; j++) cout<<setw(3)<< a[i][j];
cout<< "\n";
}
}
5. 以下scat函数将字符串str2连接到字符串strl之后。

运行时,
若输入:Li Ming,回车
Good morning!回车
则输出:Li Ming,Good morning!
请填空完成程序。

#include "iostream.h"
#include”stdio.h”
scat( char *strl, char *str2)
{ while(*strl !=___8_’,’____) strl++;
while( *strl++ =___9_str2_____); /*将str2连接到strl的后而*/
}
main()
{ char a[500],b[300];
gets( a ); //从键盘输入一字符串放入a,
gets( b ); //字符串中可包含空格
scat( a, b );
cout<<a ;
}
6. 以下程序是用来输出如下图形:
#
*#*
#*#*#
*#*#*#*
#*#*#*#*#
#include"iostream.h"
main()
{
int i, j;
for( i=1; i<=5; i++ )
{
for( j=1; j<=5-i; j++ ) cout<< " ";
for( j=1; j<=2*i-1; j++ )
if (__10 j%2 == 0____ ) cout<< "*" ;
else cout<< "#" ;
cout<< "\n";
}
}
7. 以下程序是用来输入5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把二者对调,然后输出调整后的5个数。

#include"iostream.h"
main()
{
int a[5], t, i, maxi, mini;
for( i=0; i<5; i++)
cin>> a[i];
mini=maxi=___11 0____;
for( i=1; i<5; i++)
{
if (___12_a[mini] > a[i] ___) mini=i;
if( a[i]>a[maxi] ) ___13_ maxi = i___;
}
cout<< "最小数的位置是:"<< mini<<”\n”;
cout<< "最大数的位置是:"<< maxi<<”\n”;
t=a[maxi];
____14__a[maxi] = a[mini]____;
a[mini]=t;
cout<< "调整后数的数为:";
for( i=0; i<5; i++ )
cout<<a[i]<<” “;
cout<<"\n";
}
C++语言程序设计第三次作业
编写程序:
1.定义一个Point类来处理三维点points(x,y,z).该类有一默认的
constructor,一copy constructor, 一negate()成员函数将point的x,y 和z值各乘-1, 一norm()成员函数返回该点到原点(0,0,0)的距离,一个print()成员函数显示x,y,和z的值。

#include "iostream"
using namespace std;
class Point
{
private:
double x,y,z;
public:
Point();
Point(double x0, double y0,double z0);
void negate();
void norm();
void print();
};
Point::Point()
{
x = 0;
y = 0;
z = 0;
}
Point::Point(double x0,double y0,double z0) {
x = x0;
y = y0;
z = z0;
}
void Point::negate()
{
x = -1*x;
y = -1*y;
z = -1*z;
}
void Point::norm()
{
x = 0;
y = 0;
z = 0;
}
void Point::print()
{
cout<<"("<<x<<","<<y<<","<<z<<")"<<endl;
}
void main()
{
Point point;
point.print();
Point point1(1,2,-3);
point1.negate();
point1.print();
point1.norm();
point1.print();
}
2.定义一个Person类,它的每个对象表示一个人。

数据成员必须包含姓名、出生年份、死亡年份,一个默认的构造函数,一析构函数,读取数据的成员函数,一个print()成员函数显示所有数据。

#include "iostream"
using namespace std;
class Person
{
private:
char* name;
char* birth;
char* death;
public:
Person();
~Person();
void readIn();
void print();
};
Person::Person()
{
name = "空";
birth = "空";
death = "空";
}
Person::~Person()
{
cout<<"类被析构"<<endl;
}
void Person::readIn()
{
cout<<"输入姓名:";
gets(name);
cout<<"输入出生年份";
gets(birth);
cout<<"输入死亡年份";
gets(death);
}
void Person::print()
{
cout<<"姓名:"<<name<<"\n出生年份:"<<birth<<"\n死亡年份"<<death<<endl;
}
void main()
{
Person person;
person.print();
person.readIn();
person.print();
}
3。

定义一个Shape基类,由它派生出Rectanglr和Circle类,二者都有GetArea( )函数计算对象的面积。

使用Rectangle 类创建一个派生类Square。

#include "iostream"
using namespace std;
class Shape
{
public:
double getArea();
};
double Person::Shape()
{
cout<<"面积:";
}
class Rectanglr:public Shape {
private:
double a,b;
public:
Rectanglr();
double getArea();
};
Rectanglr::Rectanglr()
{
a = 2;
b = 3;
}
double Rectanglr::getArea() {
retrun a*b;
}
class Circle:public Shape
{
private:
double r;
public:
Circle();
double getArea();
};
Circle::Circle()
{
r = 3;
}
double Circle::getArea()
{
return 3.14*r*r;
}
void main()
{
Shape *s = new Rectanglr();
s->getArea();
}
4. 定义一个Shape抽象类,由它派生出Rectanglr和Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( ) 函数计算对象的周长。

#include "iostream"
using namespace std;
class Shape
{
public:
virtual double getArea();
virtual double GetPerim();
};
class Rectanglr:public Shape
{
private:
double a,b;
public:
Rectanglr();
double getArea();
double GetPerim();
};
Rectanglr::Rectanglr()
{
a = 2;
b = 3;
}
double Rectanglr::getArea()
{
retrun a*b;
}
double Rectanglr::GetPerim()
{
return 2*(a+b);
}
class Circle:public Shape
{
private:
double r;
public:
Circle();
double getArea();
double GetPerim(); };
Circle::Circle()
{
r = 3;
}
double Circle::getArea() {
return 3.14*r*r;
}
double Circle::GetPerim() {
return 2*3.14*r;
}。

相关文档
最新文档