20分,C++小题三道,在线等!!

不好意思,是四道题目,呵呵,比较简单,请大家做一下。小弟原本学的C语言,现在要求用C++来做这些题,感觉别扭,希望通过大家给的思路找到一些启发。先完成下面这些题吧,谢谢了!

实验一:计算平均成绩
实验内容:输入成绩,计算并显示平均成绩。
运行效果:
输入3门课程的成绩:69.5 80 90.5
平均成绩:80.00
退出否?y
实验说明:上述显示效果中,下划线数字为用户的输入。当退出否不为y,则重复。初
学C语言编程是一个充满挫折的艰难历程,特别是在使用scanf,printf进行数据的输入输出
上常常容易出错,挫伤了初学者的积极性。可以使用C++的控制台输入输出流cin、cout 取
代scanf,printf,出错机会大为减少,而又更容易理解,cin理解为键盘,cout理解为屏幕。
使用方法:1.包含iostream头文件,指定std名空间 2.用>>从cin输入数据,用<<向cout
输出数据显示,不必考虑输入输出的数据类型,当同时多个数据输入时,用空格来分隔其多
个数据,回车接受输入.
例: #include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int a;
cin>>a; /* 等价 scanf("%d",&a); */
cout<<a<<endl; /* 等价 printf("%d\n",a); */
return 0;
}
目的要求:熟悉控制台输入输出, for、while、do循环语句的使用。
实验二:数据的不同数制显示
实验内容:输入小于128的十进制整数,显示其ASCII码字符。
输入十六进制整数,显示其十进制整数。
输入十进制整数,显示其十六进制整数
运行效果:输入小于128的十进制整数:63

输入一个字符:?
63
输入十六进制整数:0x1A
26
输入十进制整数:26
1A
目的要求:理解数字在计算机中的表示。
实验三:猜数游戏
实验内容:(1)先由计算机“想”一个数请人猜,如果猜对了,则继续猜下一个数,否则
计算机给出提示,告诉所猜的数是太小还是太大。
(2)当猜对或一个数猜了20次仍未猜中停止本次猜数,仍然继续猜下一个数。
(3)计算机记录猜的次数,以此来反映猜数者“猜”的水平。
(4)每次运行程序可反复猜多个数,直到操作者停止时才结束。
4
运行效果:20 太大,10 太小,15太大,12 对了!
猜4 次成功
继续否?n
目的要求:本实验用于循环语句、条件语句的编程练习。
实验说明:随机数产生头文件stdlib.h ,时间头文件time.h
始初化随机数种子srand(clock()); 或 srand(time(NULL));
实验四:兔子生崽
实验内容:假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么,如果每对成
兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子
开始繁殖,以后各月的可有多少对兔子?
实验说明:这是13世纪意大利Fibonacci借助民间的“兔子生崽”问题引入的一个著名的
递推数列即Fibonacci数列。采用递推分析法:第0个月兔子对数f(0)=1;第1个月兔子对数
f(1)=2;第2个月兔子对数f(2)=3;第n个月兔子对数f(n)=f(n-1)+f(n-2)
运行效果:一对兔子开始繁殖,以后各月的兔子对数:
不用子函数计算结果:
1 2 3 5 8 13 21 34 55 89 144 233
用子函数计算结果:
1 2 3 5 8 13 21 34 55 89 144 233
目的要求:体会递推算法是把科学或工程计算中数学模型转变为计算机运算模型的重要
方法。掌握数组、指针的编程,求各月的有多少对兔子用或不用一个子函数实现。以后实验
都必须采用模块化的程序设计方法,每个子任务对应一个子函数,完成总任务的程序由一个
主函数和若干子函数组成,主函数起任务调度的总控作用。理解模块化程序设计方法,掌握
函数的实现、调用编程技术。

实验1
int Chinese; //语文成绩
int english; //英语成绩
int math; //数学成绩
int mean; //平均成绩
char ch='n'; //判断是否退出
while (ch=='n')
{
cout<<"输入3门课程的成绩:"<<endl;
cin>>Chinese>>english>>math;
mean=(Chinese+english+math)/3;
cout<<"平均成绩:"<<mean<<endl;
cout<<"是否退出y/n";
cin>>ch;

}

实验3
char ch='y';
while (ch=='y')
{
int num; //保存平均数
num=rand()%20;
int play; // 玩家输入

int frequency=0; //使用次数
cout<<"猜出1~20的数您有20次机会"<<endl;

for (int i=0;i!=20;i++)
{
cin>>play;
if (play>num)
{
cout<<"太大了"<<endl;
frequency++;
}
else if (play<num)
{
cout<<"太小了"<<endl;
frequency++;
}
else
{
cout<<"您猜对了";
cout<<"你用了"<<frequency<<"次"<<endl;
break;
}

}
cout<<"是否继续y/n"<<endl;
cin>>ch;
}
抱歉 只会1,3题 希望对你有帮助 另外两道过两天想到再补上
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-17
打了很久 楼主看着办!!!!!!!

第一题

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
float a[3];
char c='n';

while(c!='y')

{
cout<<"Please input three classes score: ";
for(int i=0;i<3;i++)
{cin>>a[i];}

cout<<"Avg score is "<<setiosflags(ios::fixed)<<setprecision(1)<<(a[0]+a[1]+a[2])/3<<endl;
cout<<"Exit? y or n : ";
cin>>c;
}
return 0;

}
第二题
(1)

#include <iostream>
using namespace std;

const int N=10;
const int M=10;
int main()
{
int i(0),j,t,num,a[N];
char b[M];

cout<<"Input a number: ";
cin>>num;
do
{
t=num%16;
if(t>=0&&t<10)
{
a[i]=t;
}
else if(t>=10&&t<16)
{
b[i]='A'+t-10;

}
i++;
num/=16;

}while(num);
for(j=i-1;j>=0;j--)
{
if(a[j]>=0&&a[j]<10)
cout<<a[j];
else cout<<b[j];
cout<<endl;

}

}

(2)

#include <iostream>
using namespace std;
int main()
{

char k;

cout<<"Input a char : ";

cout<<getchar();

cout<<endl;

cout<<"Input a 16 bite: ";

return 0;
}

(3)

#include <iostream>
using namespace std;

const int N=10;
int htol(char a[]);

int main()
{

int c,i=0;
char t[N];
cout<<"Input a 16 bite: ";

while((c=getchar())!=10)

{
if(c>='0' && c<='9' || c>='a' && c<='f' || c>='A' && c<='F')

{

t[i++]=c;
}

}
t[i]='\0';

cout<<"10 bit number is: "<<htol(t)<<endl;

return 0;
}

int htol(char a[])
{
int n=0;
for(int i=0;a[i]!='\0';i++)
{
if(a[i]>='\0' && a[i]<='9')
n=n*16+a[i]-'0';
if(a[i]>='a' && a[i]<='f')
n=n*16+a[i]-'a'+10;
if(a[i]>='A' && a[i]<='F')
n=n*16+a[i]-'A'+10;

}
return n;
}

第三题

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main()
{
int a,b,c=0;
char d;

while(d!='n')
{
cout<<"Please guess a number less than 25,you have 20 times ";
cin>>a;
srand(time(0));
b=rand()%25; //产生随机数

for(int i=0;i<20;i++)
{

if(a==b)

{
while(c==0)
{
c++;
cout<<"Right! Use "<<c<<"time(s)"<<endl;break;
}
c++;
cout<<"Right! Use "<<c<<"time(s)"<<endl;break;

}
else if(a<b)
{ ++c;
cout<<"Too less!"<<endl;
cout<<"Please guess a number less than 25: ";
cin>>a;

}
else if(a>b)
{
++c;
cout<<"Too big!"<<endl;
cout<<"Please guess a number less than 25: ";
cin>>a;
}

}

cout<<"Guess the next one? (y or n)"<<endl;

cin>>d;

}
return 0;
}

第四题
(1)
/*不用子程序*/
/*
#include <iostream>
using namespace std;

int main()
{
int a[20]={1};
for(int i=1;i<20;i++)

{a[i]=a[i-1]+a[i-2];}
for(int j=0;j<20;j++)
cout<<a[j]<<" ";

return 0;
}*/
(2)
//调用子程序
#include <iostream>
using namespace std;

int main()
{
double fac(int x);

int a;
cout<<"Please input a month: ";
cin>>a;
cout<<"The "<<a<<" month have "<<fac(a)<<" rabbits!"<<endl;
return 0;
}

double fac(int x)
{
int a;
if(x<0)
{cout<<"ERROR ! Please input a month bigger than 0!"<<endl;}
else if(x==0||x==1)
{a=1;}
else
{a=fac(x-1)+fac(x-2);}

return a;

}
第2个回答  2010-07-11
实验一:
#include<iostream>
using namespace std;
void main
{
float score,average;//要输的分数,计算出的平均成绩,都是浮点数
float total=0;//成绩相加的和
char ch;//是否要继续计算平均数
cout<<”Enter the scores and end with -1”<<endl;
do{
cin>>score;
for(int count=0;score!=-1;count++)
{
total=total+score;
cin>>score;
}
average=total/count;
cout<<”The average of scores is ”<<average<<endl;
cout<<”Do you want to quit? (y/n)”;
cin>>ch;
}while(ch==‘n’);
}

实验二:十六进制和十进制之间的转化要借助二进制,所以这里需要借用到栈的思想,在这里我只给你写了一个十进制到十六进制转化的代码,十六进制到十进制的转化是反过来的过程,数据解构都是一样的,很简单,你可以自己添上去
Head:
const int maxstack=10;
class conversion{
public:
conversion();
int push(int &item);
int pop();
void top(int &item);
bool empty();
private:
int count;
int entry[maxstack];
};
Head.cpp:
#include"head.h"
#include<iostream>
using namespace std;
conversion::conversion()
{
count=0;
}
int conversion::push(int &item)
{
entry[count]=item;
count++;
return item;
}
bool conversion::empty()
{
return (count==0);
}
void conversion::top(int &item)
{
item=entry[count-1];
if(item<10)
cout<<item;
switch(item)
{
case 10: cout<<'A';
break;
case 11: cout<<'B';
break;
case 12: cout<<'C';
break;
case 13: cout<<'D';
break;
case 14: cout<<'E';
break;
case 15: cout<<'F';
break;
}
}
int conversion::pop()
{
return --count;
}
Main.cpp:
#include<iostream>
#include"conversion.h"
using namespace std;
//The progream can turn a 十进制 number to a 十六进制 number
void main()
{
int n,m;
conversion number;
cout<<"enter a 十进制数:";
cin>>n;
cout<<"the 十六进制 of "<<n<<" is:";
if(n==0)
cout<<n;
while(n!=0)
{
m=n%16;
n=n/16;
number.push(m);
}
while(!number.empty())
{
number.top(m);
number.pop();
}
}
实验三:
不好意思,我还没有学过C++中的随机取数和时间头文件,不大会用
实验四:用递归思想解决
#include<iostream>
using namespace std;
int total(int n); //函数的声明
void main{
int month;//计算几个月后的兔子数
int total(int n) //函数的定义
{
if(n==0) return 1;
if(n==1) return 2;
if(n>1)
return total(n-1)+total(n-2);

}
cout<<”After”<<month<<”month,and the number of rabit is”
<<total(month)<<endl;//函数的调用
}
第3个回答  2010-07-12
实验四:方法一:
#include <iostream.h>
void main()
{
int f1,f2;
f1=1;f2=1;
for(int i=1;i<=n/2;i++)
{f1=f1+f2;
f2=f2+f1;

}
}

方法二:#include<iostream.h>
double fact(int n)
{
double f;
if(n<0)
{cout<<"n<0,data error!";
else if(n==1||n==2) f=1;
else f=f(n-1)+f(n-2);
return (f);

}
}
第4个回答  2010-07-21
不懂 抱歉

c++基础题。谢谢。说在线等急会不会多点人。。
include using namespace std;int main(){ int nCount = 0;cin >> nCount;int* arrData = new int[nCount]; \/\/ 存放所有数据 int nTmpData = 0;bool bHadRepeat = false;for (int i = 0; i < nCount; i++){ cin >> nTmpData;arrData[i] = nTmpData;int nRepeatCount = 0;...

c++中的几个问题,在线等
问题1和3答案是相同的:就是类里面有指针成员。这说明指针指向的内容也需要复制一份,就是深拷贝浅拷贝的问题,网上搜下这个关键字有很多详细的解释;有指针就需要释放了,一般当然在析构函数里面释放,用父类指针指向子类对象的时候可能还需要虚析构函数。2:子类里面重写父类的那个函数呗,然后调用那个...

c++问题 在线等答案
第一个 include <iostream> using namespace std;int main(){ int apple;int days=0;float sum=0;for (apple=2;apple<100;apple=apple*2){ if (apple<100){ sum=sum+(apple*0.8);days++;} } cout<<"Average:"<<sum\/days<<endl;return 0;} 第二个 include <iostream> using names...

C++编程问题,在线等,快!谢谢!
cin>>a[i];第三个程序 把a=fz\/fm;写到for里面,要不然不会重复得到fz\/fm的值。改成这样 for(int i=1;i<=20;i++){ a=fz\/fm;s=s+a;fz=fz+2;fm=fm+2;}

C++基础编程问题(关于学生成绩与等级的) 在线等谢谢!
include<stdio.h>int main(){ int yu,ma,en,co,s,n,i; char a[1000]; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d%d%d",&yu,&ma,&en,&co); s=yu+ma+en+co; if(s>360)a[i]='A'; else if(s-co>240&&co>89)a[i]='B'; else if(...

求解一道C++基础题,求出所有小于n的质数。《《《在线等》》》
改成下面这样就好了,count=0;必须放到外面去:运行结果:100 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 include <stdio.h> include <math.h> int main(){ int n=0,j=0,i=0,count=0;scanf("%d",&n);for(i=3;i<n;i++){ for(j=1...

C++编程题 求大神解答 在线等
4.在屏幕上输出:2 3 4 5.求出一个三位数每个位上的数字值。6.某幼儿园里,有5个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉...

C++编程题,在线求解!!!
1)设计上述三个类的相关属性;2)利用多态性的概念,分别以虚函数的形式完成对图书和光盘信息的显示 3)编写一个普通函数f(),显示出销售数量超过1000的图书和光盘 4)在main函数中进行测试。\/ include <vector> include <string> include <iostream> using namespace std;class Media { public:Media...

c++关于设计点(Tpoint)类的定义程序的问题,在线等!!
对类内的X、Y进行偏移 移动点的X、Y坐标 (3)该类有四个公有成员函数,其中Xcoord() 和Ycoord()定义在类体内,而setPoint()和Move()定义在类体外,说明类体内定义和类体外定义的区别。类内定义的函数会被隐式声明成内联(inline)函数,效率更高,适合频繁使用的小函数 ...

C++ 高兴的小明,求高手!!在线等
我用的是一秒一秒地判断,因为程序较小,所以不会产生效率问题 include<stdio.h> include<stdlib.h> void main(){ int time;int n,*a,b,num=0,max,i,j;scanf("%d",&n);a=(int *)malloc(sizeof(int)*n); \/\/动态分配内存 for(i=0;i<n;i++)scanf("%d",&a[i]);scanf("%d...

相似回答
大家正在搜