练习4-3 求给定精度的简单交错序列部分和 (15 分)

本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。

输入格式:

输入在一行中给出一个正实数eps。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。

输入样例1:

4E-2

输出样例1:

sum = 0.854457

输入样例2:

0.02

输出样例2:

sum = 0.826310
#include "stdio.h"
main()
{double sum=0.0,sn=1.0,eps,i,flag=-1;scanf("%lf",&eps);for(i=1;sn>eps;i++){flag*=-1;//符号转换sn=1/(i*3-2);//各项绝对值计算sum+=sn*flag;//求和        }printf("sum = %lf\n",sum);//输出
} 

练习4-6 猜数字游戏 (15 分)

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

输入格式:

输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。

输出格式:

在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。

输入样例:

58 4
70
50
56
58
60
-2

输出样例:

Too big
Too small
Too small
Good Guess!
#include "stdio.h"
int main()
{int count=0,a,b,N;scanf("%d %d", &a, &N);//随机给出被猜数字和最大猜测次数 //开始循环猜测 for(;count<=N;) {count++;//次数计数if(count>N) {printf("Game Over\n");break;}//超过次数退出程序,否则输入猜测数字 scanf("%d",&b);//输入猜测的数字//判断猜数字情况 if(b<0) { printf("Game Over\n");break;  }else if(b>a) printf("Too big\n");else if(b<a) printf("Too small\n"); else if(b==a){if(count==1){printf("Bingo!\n");break;}else if(count<=N){printf("Good Guess!\n");break;}}}return 0;
} 

拓展应用:随机数由计算机生成,用户自定义猜游戏次数(难度控制),每次用户输入1个数据,程序给出相对于随机数的大小提示,给出猜数字游戏的结果。

#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "time.h"
#include "windows.h"
void win_contr()
{/*颜色属性由两个十六进制数字指定, 第一个为背景色, 第二个为前景色。每个数字可以为下列值之一:黑色 = 0      蓝色 = 1      绿色 = 2      湖蓝色 = 3红色 = 4      紫色 = 5      黄色 = 6      白色 = 7灰色 = 8      淡蓝色=9      淡绿色=A      白色=C淡紫色=D      淡黄色=E      亮白色=F*///设置背景色为灰色,文字颜色为淡黄色system("color 47");//设置窗口大小,cols 宽度  lines 高度 system("mode con cols=30 lines=20");
}
main()
{   win_contr();int count=0,a,b,i,N;printf("请输入最大猜游戏次数:");//次数越小难度越大 scanf("%d",&N);//给出最大猜游戏次数 srand((unsigned)time(NULL));//生成时间种子 a=rand()%100+1;//生成1-100随机正整数 //printf("%d %d\n",a,N);//查看生成的随机数和最大猜游戏次数 printf("\nGame begin!\n");//猜游戏开始 printf("\n请输入1-100的正整数!\n\n");//猜游戏开始for(;count<=N;){count++;//次数计数if(count>N) //超过次数退出程序,否则输入猜测数字{printf("Game Over\n");printf("The Aanswer is :%d\n\n",a);//查看结果 break;} scanf("%d",&b);//输入猜测的数字//判断猜数字情况 if(b<0) { printf("Game Over\n");printf("The Aanswer is :%d\n\n",a);//查看结果 break;}else if(b>a) printf("Too big\n");else if(b<a) printf("Too small\n"); else if(b==a){if(count==1){printf("Bingo!\n");break;}else if(count<=N){printf("Good Guess!\n");break;}}}system("pause\n");printf("\n\t【】任意键继续\n\t【e】退出\n");fflush(stdin);char c=getchar();//fflush(stdin);if(c=='e') return 0;elsemain() ;
} 

练习4-7 求e的近似值 (15 分)

自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。本题要求对给定的非负整数n,求该级数的前n项和。

输入格式:

输入第一行中给出非负整数n(≤1000)。

输出格式:

在一行中输出部分和的值,保留小数点后八位。

输入样例:

10

输出样例:

2.71828180
#include "stdio.h"
int main()
{int n,i,j;double sum=1.0,k;  //sum作为求和结果,初值为1.0,k为第j项的阶乘 scanf("%d",&n);    //输入数据 printf("\n");for(i=1;i<=n;i++)  //循环求和 {k=1.0;for(j=1;j<=i;j++) //循环求阶乘 k=(double)j*k;//printf("i = %d j = %d k = %.0lf  ",i,j,k);//验证阶乘 sum+=1.0/k;//printf("sum = %.8lf\n",sum);//验证求和}printf("%.8lf\n",sum); //输出结果 ,8位小数
}

练习4-10 找出最小值 (20 分)

本题要求编写程序,找出给定一系列整数中的最小值。

输入格式:

输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。

输出格式:

在一行中按照“min = 最小值”的格式输出n个整数中的最小值。

输入样例:

4 -2 -123 100 0

输出样例:

min = -123
#include "stdio.h"
int main()
{int i,n,min,a[n];scanf("%d",&n);    //输入数据 nfor(i=0;i<n;i++)  //循环输入,存入数组 scanf("%d",&a[i]);min=a[0];     //假设第一个数值最小 for(i=1;i<n;i++) //循环比较a[i]和 min 将小值赋给min if(min>a[i]) min=a[i];printf("min = %d\n",min); //输出结果
}

练习4-11 统计素数并求和 (20 分)

本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:

输入在一行中给出两个正整数M和N(1≤M≤N≤500)。

输出格式:

在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

输入样例:

10 31

输出样例:

7 143
#include "stdio.h"
#include "math.h"
int main()
{int m,n,i,j,count=0,sum=0;scanf("%d%d",&m,&n);    //输入数据 m,nif(m>n||m<=0||n<=0||n>500) return 0; //判断给出数据是否满足题目要求 else{for(i=m;i<=n;i++)  //循环 m->n 间所有整数{for(j=2;j<=sqrt(i);j++) // 判断是否为素数 if(i%j==0)break;     // 满足条件不是素数 if(j>sqrt(i)){count++; sum+=i;} //是素数,计数、求和 }}printf("%d %d\n",count,sum);  //输出结果 return 0;
}

习题4-1 求奇数和 (15 分)

本题要求计算给定的一系列正整数中奇数的和。

输入格式:

输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。

输出格式:

在一行中输出正整数序列中奇数的和。

输入样例:

8 7 4 3 70 5 6 101 -1

输出样例:

116
#include "stdio.h"
int main()
{int n,sum=0;scanf("%d",&n);    //输入数据 nwhile(n>0)  //输入数据大于 0 {if(n%2)   sum+=n; //为奇数 则求和 scanf("%d",&n); //输入下一个数据 }printf("%d\n",sum);  //输出结果 return 0;
}

习题4-2 求幂级数展开的部分和 (20 分)

已知函数e​x​​可以展开为幂级数1+x+x​2​​/2!+x​3​​/3!+⋯+x​k​​/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求e​x​​的近似值,求和一直继续到最后一项的绝对值小于0.00001。

输入格式:

输入在一行中给出一个实数x∈[0,5]。

输出格式:

在一行中输出满足条件的幂级数部分和,保留小数点后四位。

输入样例:

1.2

输出样例:

3.3201
#include "stdio.h"
#include "math.h"
int main()
{int i,j;double x,eps,sum=1.0,jiecheng;scanf("%lf",&x); //输入数据 xeps=x;           //输eps作为精度值,初值为 x; for(i=1;eps>=0.00001;i++)//设置循环,eps<0.00001 时结束 {jiecheng=1.0;       //阶乘初值  for(j=1;j<=i;j++)  //计算分母 阶乘 jiecheng*=(double)j;eps=pow(x,(double)i)/jiecheng;  // i次幂用函数pow(x,i) sum+=eps;        //求和 }printf("%.4lf\n",sum);  //输出结果 return 0;
}

习题4-3 求分数序列前N项和 (15 分)

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:

20

输出样例:

32.66
#include "stdio.h"
int main()
{int i,x,y,n,t;double sum=0.0;scanf("%d",&n); //输入数据 nfor(i=1;i<=n;i++)//设置循环{if(i==1){x=2;y=1;}     // 计算第 i 项的分子、分母 else {t=x+y;y=x;x=t;}sum+=(double)x/y;        //求和 }printf("%.2lf\n",sum);  //输出结果 return 0;
}

习题4-4 特殊a串数列求和 (20 分)

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

输入格式:

输入在一行中给出不超过9的正整数a和n。

输出格式:

在一行中按照“s = 对应的和”的格式输出。

输入样例:

2 3

输出样例:

s = 246
#include "stdio.h"
int main()
{int i,a,n;double sum=0.0,res=0.0;scanf("%d%d",&a,&n); //输入数据 a,nfor(i=0;i<n;i++)//设置循环{  sum=sum*10+a;  //求每一项 res+=sum;   //求和 }      printf("%.0lf\n",res);  //输出结果 return 0;
}

习题4-5 换硬币 (20 分)

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

输入格式:

输入在一行中给出待换的零钱数额x∈(8,100)。

输出格式:

要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。

输入样例:

13

输出样例:

fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4

按题目输出(数量从大到小输出)

#include "stdio.h"
int main()
{int i,j,k,n,count=0;scanf("%d",&n); //输入数据 nfor(i=n/5;i>0;i--)//设置循环 fen5for(j=n/2;j>0;j--)//设置循环 fen2for(k=n;k>0;k--)//设置循环 fen1if(i*5+j*2+k==n){printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",i,j,k,i+j+k);  //输出结果count++;}printf("count = %d\n",count);    return 0;
}

数量从小到大输出

#include "stdio.h"
int main()
{int i,j,k,n,count=0;scanf("%d",&n); //输入数据 nfor(i=1;i<=n/5;i++)//设置循环 fen5for(j=1;j<=n/2;j++)//设置循环 fen2for(k=1;k<=n;k++)//设置循环 fen1if(i*5+j*2+k==n){printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",i,j,k,i+j+k);  //输出结果count++;}printf("count = %d\n",count);    return 0;
}

习题4-6 水仙花数 (20 分)

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1​3​​+5​3​​+3​3​​。 本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3≤N≤7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

3

输出样例:

153
370
371
407
#include "stdio.h"
#include "math.h"
int main()
{int j,n;double i,k,m,sum,res;scanf("%d",&n); //输入数据 nsum=pow(10,n-1); //N位数 初始值 例 3位数 初值100,肯定不是水仙数 for(i=sum+1;i<sum*10;i++) //N位数 最大值 初值 sum*10-1 {m=i;     //用于求每位数值res=0.0; //记录每位数字的N次幂的和  for(j=0;j<=n;j++) {k=(int)m%10;m/=10;res+=pow(k,n);}if(i==res)printf("%.0lf\n",i); //满足条件则为水仙数,输出结果 }  return 0;
}

习题4-7 最大公约数和最小公倍数 (15 分)

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:

输入在一行中给出两个正整数M和N(≤1000)。

输出格式:

在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044
#include "stdio.h"
#include "math.h"
int main()
{int i,m,n,t,maxg,minb,flag=0;//flag用于确定是否已经取得最大公约数 scanf("%d%d",&m,&n); //输入数据 m,nt=m>n?n:m; //两数中的小数赋值给 t ,用于确定循环终点 minb=m*n;  //假设两数没有公约数,最小公倍数为两数乘积 for(i=t;i>=sqrt(t);i--) //N位数 最大值 初值 sum*10-1 {if(m%i==0&&n%i==0)               if(flag==0){maxg=i;flag++;} //取得最大公约数后,不再赋值给 maxg minb/=maxg; //最小公倍数 即为 两数乘积除最大公约数 printf("%d %d\n",maxg,minb); //输出结果   return 0;
}

浙江大学 PTA 程序 第四部分 给定精度的简单交错序列部分和 数字游戏 e的近似值 最小值 统计素数并求和 奇数和 幂级数展开的部分和 分数序列前N项和 特殊a串数列求和 换硬币 水仙花数 最大公约相关推荐

  1. 韩信点兵--求分数序列前N项和--特殊a串数列求和--猜数字游戏

    实验4-1-5 韩信点兵 (10分) 在中国数学史上,广泛流传着一个"韩信点兵"的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳.据说韩信的数学水平 ...

  2. 求幂级数展开的部分和 / 求分数序列前N项和 / 特殊a串数列求和

    习题4-2 求幂级数展开的部分和   (20分) 已知函数e^xe​x​​可以展开为幂级数1+x+x^2 /2! + x^3 /3! + \cdots + x^k /k! + \cdots1+x+x​ ...

  3. 编写程序计算交错序列_求给定精度的简单交错序列部分和

    C C语言开发 求给定精度的简单交错序列部分和 7-13 求给定精度的简单交错序列部分和 (15 分) 本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后 ...

  4. 求给定精度的简单交错序列部分和 (15 分)

    7-35 求给定精度的简单交错序列部分和 (15 分) 本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps. 输入格式: ...

  5. 实验4-1-8 求给定精度的简单交错序列部分和 (15 分)

    实验4-1-8 求给定精度的简单交错序列部分和 (15 分) 本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + - 直到最后一项的绝对值不大于给定精度eps. 输入格式: ...

  6. PAT | 求给定精度的简单交错序列部分和

    题目 本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + - 直到最后一项的绝对值不大于给定精度eps. 输入格式: 输入在一行中给出一个正实数eps. 输出格式: 在一行 ...

  7. 求给定精度的简单交错序列部分和(c语言)

    本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + - 直到最后一项的绝对值不大于给定精度eps. 输入格式: 输入在一行中给出一个正实数eps. 输出格式: 在一行中按照 ...

  8. 4-3 求给定精度的简单交错序列部分和

    本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + - 直到最后一项的绝对值不大于给定精度eps. 输入格式: 输入在一行中给出一个正实数eps. 输出格式: 在一行中按照 ...

  9. PTA python 求分数序列前N项和

    本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+- 的前N项之和.注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子. 输入格式: 输入在一行中给出一个正整数N. ...

最新文章

  1. 使用Go语言从零编写PoS区块链
  2. 命名实体识别——日期识别
  3. C#正则表达式判断输入的是不是数字
  4. mysql连接代码_MySQL 表连接
  5. 轻量级日志系统Loki原理简介和使用
  6. Spring MVC学习总结(13)——Spring MVC集成Swagger时文档无法排序问题
  7. TYVJ P1073 加分二叉树 Label:区间dp
  8. String字符串工具类 StringUtils.java
  9. 如何利用计算机模拟分子生物学,虚拟分子生物学学习实验室构建
  10. 用HiTool烧写uboot到spi flash的原理
  11. https://www.jb51.net/article/146628.htm
  12. assuming drive cache: write through 处理
  13. java魔法师_RxJava魔法师
  14. Linux云服务器基础学习
  15. 第十届蓝桥杯 2019年国赛 最优旅行
  16. python 加速度_「加速度公式」加速度公式1 - seo实验室
  17. gltf中的bufferViews,accessors和buffers
  18. python和C++语言哪个难学
  19. html中实现添加水印的功能,JS模拟实现图片添加水印功能
  20. Shell的while命令

热门文章

  1. Handler的一些思考
  2. Linear Regression: Least-Squares
  3. react-节点更新与销毁
  4. ubuntu系统安装和使用
  5. 51单片机的智能晾衣架
  6. NewsRecommendation
  7. maven之scope
  8. 【STM32H7】第1章 选择ThreadX的优势
  9. java的位移运算和如何通过位移运算来实现加减
  10. 集合 Transformer(Set Transformer)