程序设计论文

C++课程设计报告

 

(一)课程题目基本分析

一:多项式求和问题

1.题目描述:已知多项式1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...现在请你求出该多项式的前n项的和。

2.简要题意:很明确,就是要求符号依次相反,分母为整数的递增序列,分子都是1的数字组成的多项式的前n项和,有规律的多项式。

3.解题思路:就是用基本的编程思想,按照基本结构,整个过程就是定义,输入,用while语句,for循环,赋值计算,然后输出!另外使用pow(a,b)幂指数函数表示多项式中的分数元素,依次累加就可以了!用setiosflags(ios::fixed)与setprecision(n)来控制指数表示法小数点后位数也就是小数点的精度。

4.编码:

#include <iostream>
#include <iomanip>//setiosflags操作符所属的头文件

using namespace std;
int main()
{
int m,n,i;
float s;
while(cin>>m)
{
while(m--)
{
s=0;
cin>>n;
for(i=1;i<=n;i++)//从1到n项循环
s=s+(1/((pow((-1),(i+1)))*i));//计算(-1)的(i+1)次方
cout<<setiosflags(ios::fixed)<<setprecision(2)<<s;//控制小数点后的位数,用定点的方式表示实数,就是输出一个小数点后两位的浮点数。
cout<<endl;
}
}
return 0;

}

5.细节处理:注意头文件的内容,主要还是负分数的表示以及指数表示法的运用。

二:求整数中所有的奇数乘积

1.题目描述:给你n个整数,求他们中所有奇数的乘积。输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。

输出每组数中的所有奇数的乘积,对于测试实例,输出一行。

2.简要题意:直白的说就是把整数中所有的奇数筛选出来以后,算出乘积。

3.解题思路:定义变量之后,用相应的筛选奇数的程序,很简单,就是该数除以2余数为1,然后执行该循环,从1到n依次类推,输出,执行下一个循环,就可以算出所有奇数的乘积了。

4.编码:

#include <iostream>
using namespace std;
int main()
{
 int n,i,a,temp;//临时变量
 while(scanf("%d",&n)==1)   //当成功读取1个整型数到n时,执行该循环!
 {
  a = 1;
  for(i=0;i<n;i++)
  {
   scanf("%d",&temp);
   if(temp%2)  a*=temp;    //if(temp%2)    if(表达式),这个表达式返回0或非零,0就不运算if包含的语句,非零就运算if包含的语句
  }
  printf("%d\n",a);   //输出之后进入下一次循环
 }
 return 0;
}

5.细节处理:取临时中转变量temp巧妙地防止数值的覆盖,用while循环,if条件语句执行。

三:求a的b次幂最后三位数表示的整数

1.题目描述:求A^b的最后三位数表示的整数。
说明:a^b的含义是“A的b次方。

输入数据包含多个测试实例,每个实例占一行,由两个正整数a和b组成(1<=a,b<=10000),如果a=0, b=0,则表示输入数据的结束,不做处理。 

对于每个测试实例,请输出a^b最后三位表示的整数,每个输出占一行。

2.简要题意:就是算出来a的b次方以后,得到一个位数大于等于三的整数,输出该整数的百位数,十位数,个位数表示的整数。

3.解题思路:定义基本变量,这是烂熟于心的程序第一步,然后用while语句,当a,b中有任意一个数不为0时,执行循环,这样的话就是根据题目所说,“a,b均为0时,表示输入数据的结束,不做处理”,循环中嵌套fot语句,表示i从1取到b,然后就是如何将个位数,百位数,十位数的数字组合起来的思想了, x=(a*x)%1000就可以实现,再输出就Ok啦。

4.编码:#include <iostream>
using namespace std;
int main()
{
int a,b,x,i;
while(cin>>a>>b,a!=0||b!=0)//当a b中任意一个数不为0时,执行该循环!
{
x=1;
for(i=1;i<=b;i++)
   x=(a*x)%1000;//将(ax)除1000的余数赋值给x
      cout<<x<<endl;
}
return 0;
}

5.细节处理:还是注意将(a*x)除1000的余数赋值给x的操作!还有就是执行循环时符号的细节表示。

四:等级的转化

1.题目描述:输入一个百分制的成绩a,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;输入数据有多组,每组占一行,由一个整数组成。

对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。

2.简要题意:将百分制数字转化为等级,按照不同的区间标准,从高到低每10分为一个区间,依次记为A B C D E,输入多组数据,每组占一行,输出只有一行。注意数据范围是0到100,一旦超出此区间,只输出一行Score is error!

3.解题思路:整体可以用while循环加上if~else语句,因为题目是分段分情况,所以在这程序的时候,根据提示,一种情况一个结果,看起来也很清晰。算是比较简单的代表性的一个题目了,当然,输入的时候要用上读取成功的标志符EOF。

4.编码:#include<iostream>

using namespace std;

 

int main()

{

    int a;

    while (cin>>a&&a!=EOF)

    {

            if (a >= 0 && a <= 59)

                cout << "E" << endl;

            else if (a <= 69)

                cout << "D" << endl;

            else if (a <= 79)

                cout << "C" << endl;

            else if (a <= 89)

                cout << "B" << endl;

            else if (a <= 100)

                cout << "A" << endl;

            else

                cout << "Score is error!" << endl;

    }

5.细节处理:可以将区间转化为数字的表示,只求上限为标准或者只求下限为标准。可以较简单的输出!

五:进制的转化问题

1.题目描述:输入一个十进制数N,将它转换成R进制数输出。 

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值