c++程序设计报告总结

本文总结了C++程序设计中的多个问题,包括:奇偶数求和、素数判断、偶数序列平均值计算、有序序列插入、找规律计算、绝对值排序、零找零问题、进制转换、亲和数判断、集合差运算、回文数检查、特定进制数字和一致性、sky数识别等。通过分析和代码实现,展示了在解决这些问题时的思路、细节处理和优化方法,强调了标志变量、预处理、循环控制及格式输出的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem 1

题目;an=(-1)^n+1*1/n,求Sn?

分析;注意到n为偶数时系数为-1,于是只需要设置一个系数变量即可。

细节;注意应该设成double型变量

代码;

#include<iostream>

#include<cmath>

#include<cstdio>

using namespace std;

int main()

{

 int n,a,i,j,m;

double s;

cin>>n;

for(i=1;i<=n;i++)

{

cin>>a;

s=0;

for(j=1;j<=a;j++)

{

m=1;

if(j%2==0)

{

m=-1;

}

s+=m*(1.00/j);

 printf("%.2lf\n",s);

 

Problem 2

题目;对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。

分析;首先应该筛选素数,当输入(x,y)后,循环变量i从x开始到y,判断表达式s=i^2+i+41是否为素数。

细节;在判断s是否为素数时,循环的次数不用太多,仅仅需要j<sqrt(s),即可。

注意:标志变量的使用。在没有用标志变量时可能输出很多“sorry”or“ ok”。

代码;

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

   

    int x,y,i,j,s=0;

int flag=1;

while(cin>>x>>y)

{   

  flag=1;

if(x==0&&y==0)

break;

else

{

for(i=x;i<=y;i++)

{

s=i*i+i+41;

for(j=2;j<=sqrt(s);j++)

{

if(s%j==0)

{

 flag=0;

 break;

}

}

}

 if(!flag)

 cout<<"Sorry"<<endl;

 else

 cout<<"OK"<<endl;

}

}

Problem 3

题目;有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足   m个,则以实际数量求平均值。编程输出该平均值序列。

分析;因为每m个数求一个平均值,当输入n时,首要要求出n/m,既分的组数,然后循环输出平均值。当n不能整除m时要对后面的数求平均值。

细节;首要也要定义标志变量flag,定义一个s来记录一组的和,k来表示数列随着m的变化的变化。

注意;题目要求输出时最后一个数后面没有空格!!

类似题目;水仙花,也是需要用标志变量来控制最后一个数后没有空格

代码;

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

   

    int m,n,i,j,k,s=0,flag=1;

while(cin>>n>>m)

{    

k=0;

flag=1;

for(i=1;i<=n/m;i++)

{

        s=0;

for(j=1;j<=m;j++)

{

k+=2;

s+=k;

}

if(flag)

{

cout<<s/m;

flag=0;

}

else

cout<<" "<<s/m;

 

}

if(n%m)

{

s=0;

for(j=1;j<=n-n/m*m;j++)

{

k=k+2;

s=s+k;

}

cout<<" "<<s/(n-(n/m)*m);

 

cout<<endl; 

}

}

 

 

 

Problem 4

题目;有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。 

分析;已知插入到已排好的序列中,当输入一组数后,需要将

a[n]先存起来,目的是为了在输出最后一个数后面没有空格。

细节;要充分利用algorithm这个头文件下的sort排序函数。

注意;sort函数的范围是 [  )。

代码;

#include <iostream>

#include<algorithm>

using namespace std;

int a[110];

int main()

{

int n,m,i;

while(cin>>n>>m)

{

if(n==0&&m==0)

{

 return 0;

}

  else

{ &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值