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

不好意思,是四道题目,呵呵,比较简单,请大家做一下。小弟原本学的C语言,现在要求用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
目的要求:体会递推算法是把科学或工程计算中数学模型转变为计算机运算模型的重要
方法。掌握数组、指针的编程,求各月的有多少对兔子用或不用一个子函数实现。以后实验
都必须采用模块化的程序设计方法,每个子任务对应一个子函数,完成总任务的程序由一个
主函数和若干子函数组成,主函数起任务调度的总控作用。理解模块化程序设计方法,掌握
函数的实现、调用编程技术。
展开
 我来答
百度网友2eb773985
2010-07-11
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
实验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题 希望对你有帮助 另外两道过两天想到再补上
百度网友aeec7c5
2010-07-17 · 超过25用户采纳过TA的回答
知道答主
回答量:125
采纳率:0%
帮助的人:56.9万
展开全部
打了很久 楼主看着办!!!!!!!

第一题

#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;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一条小书虫CZ
2010-07-11
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
实验一:
#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;//函数的调用
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哈8哈7ha
2010-07-12 · TA获得超过247个赞
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
实验四:方法一:
#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);

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
申加祥
2010-07-21 · TA获得超过403个赞
知道答主
回答量:227
采纳率:0%
帮助的人:114万
展开全部
不懂 抱歉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式