博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PTA 循环结构设计(C语言)
阅读量:2055 次
发布时间:2019-04-28

本文共 9923 字,大约阅读时间需要 33 分钟。

文章目录

1.求交错序列前N项和 (15 分)

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。

输入格式:

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

输出格式:

在一行中输出部分和的值,结果保留三位小数。

输入样例:

5

输出样例:

0.917

#include
#include
int main() {
int n,i; double sum; scanf("%d",&n); for(i=1;i<=n;i++) {
sum+=pow((-1),(i-1))*i/(2*i-1); } printf("%.3f\n",sum);}

2.统计素数并求和 (20 分)

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

输入格式:

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

输出格式:

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

输入样例:

10 31

输出样例:

7 143

#include
int main(){
int j,i; int m,n; int num=0,sum=0; scanf("%d %d",&m,&n); for(i=m;i<=n;i++) {
for(j=2;j<=i;j++) {
if(i%j==0) break; } if(j==i) {
sum += i; num++; } } printf("%d %d\n",num,sum); }

3.求分数序列前N项和 (15 分)

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

输入格式:

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

输出格式:

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

输入样例:

20

输出样例:

32.66

#include
int main(){
int n,i; double sum,m=2,s=1,t; scanf("%d",&n); for(i=1;i<=n;i++) {
sum=sum+m/s; t=m; m=s+m; s=t; } printf("%.2f",sum); }

4.猴子吃桃问题 (15 分)

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式:

输入在一行中给出正整数N(1<N≤10)。

输出格式:

在一行中输出第一天共摘了多少个桃子。

输入样例:

3

输出样例:

10

#include
int main(){
int d,x1=0,x2=1; scanf("%d",&d); for(int i=d;i>1;i--) {
x1=(x2+1)*2; x2=x1; } printf("%d",x1);}

6.近似求PI (15 分)

本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。

在这里插入图片描述
输入格式:
输入在一行中给出精度eps,可以使用以下语句来读输入:

scanf("%le", &eps);

输出格式:

在一行内,按照以下格式输出π的近似值(保留小数点后5位):
PI = 近似值

输入样例:

1E-5

输出样例:

PI = 3.14158

#include
int main(){
double fun(double eps); double eps; scanf("%le",&eps); printf("PI = %.5lf",fun(eps));}double fun(double eps){
int i; double a=1,pi=1; for(i=1;a>=eps;i++){
a=a*i/(2*i+1); pi+=a; } return(2*pi);}

6.最佳情侣身高差 (10 分)

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。

下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

输入格式:

输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。

输出格式:

对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。

输入样例:

2
M 1.75
F 1.8

输出样例:

1.61
1.96

#include
int main(){
int n; float h; char sex; scanf("%d\n",&n); {
while(n--) {
scanf("%c %f\n",&sex,&h); if(sex=='M') {
printf("%.2f\n",h/1.09); } else {
printf("%.2f\n",h*1.09); } } }}

7. Fibonacci数列 (16 分)

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 随机输入一个整数n,求得 Fn除以10086的余数是多少

输入格式:

输入一个整数n

输出格式:

输出一个整数Fn除以10086的余数

输入样例:

3

输出样例:

2

#include
int main(){
int i,n,f1=1,f2=1,fn; scanf("%d",&n); if(n==1||n==2) fn=1; else {
for(i=3;i<=n;i++) {
fn=f1%10086+f2%10086; f1=f2; f2=fn; } } printf("%d",fn);}

8.统计数字字符和空格 (15 分)

本题要求编写程序,输入一行字符,统计其中数字字符、空格和其他字符的个数。建议使用switch语句编写。

输入格式:

输入在一行中给出若干字符,最后一个回车表示输入结束,不算在内。

输出格式:

在一行内按照

blank = 空格个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。请注意,等号的左右各有一个空格,逗号后有一个空格。

输入样例:

在这里给出一组输入。例如:

Reold 12 or 45T

输出样例:

在这里给出相应的输出。例如:

blank = 3, digit = 4, other = 8

#include
int main(){
int b=0,d=0,o=0; char c; while((c=getchar())!='\n') {
if(c==' ') {
b++; } else if(c=='0'||c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9'){
d++; } else {
o++; } } printf("blank = %d, digit = %d, other = %d\n",b,d,o); }

9.数列求和 (300 分)

输入一个整数n,求出1到n的累加和。

输入格式:

输入一个n值。

输出格式:

输出结果。

输入样例:

在这里给出一组输入。例如:

5

输出样例:

在这里给出相应的输出。例如:

15

#include
int main(){
int i,n,sum; scanf("%d",&n); for(i=1;i<=n;i++) sum=sum+i; printf("%d",sum);}

10.C程序设计 实验3-1 (10 分)

计算1+3+5+7+…+99+101的值。

输入格式:

无需输入。

输出格式:

按输出样例的形式输出累加的结果。

输入样例:

输出样例:
sum=2601

#include
int main(){
int i,sum; for(i=1;i<=101;i+=2) {
sum=sum+i; } printf("sum=%d",sum);}

11.实验3-2 (10 分)

计算1∗2∗3+3∗4∗5+…+99∗100∗101

输入格式:

无需输入。

输出格式:

按输出样例的形式输出累加的结果。

输入样例:

输出样例:
sum=13002450

#include
int main(){
int i,sum=0; for(i=1;i<100;i+=2) {
sum=sum+i*(i+1)*(i+2); } printf("sum=%d",sum);}

12. 实验3-3 (10 分)

计算a+aa+aaa+…+aa…a(n个a)的值,a和n的值由键盘输入。a和n均为正整数,累加的结果定义为双精度实型。

输入格式:

a和n的值在一行输入,中间以空格分隔。

输出格式:

输出时结果只保留整数部分,并按输出样例的形式输出。

输入样例:

2 5

输出样例:

在这里给出相应的输出。例如:

sum=24690

#include
int main(){
int i,a,n; double t,sum=0; scanf("%d %d",&a,&n); t=a; for(i=1;i<=n;i++) {
sum+=t; t=a+t*10; } printf("sum=%.0lf",sum);}

13.for循环练习:输出1到X间所有数的平方根并按行输出。 (3 分)

读入1个10以内的正整数X(程序内变量名不一定是X,自定),输出1到X间(含X)所有数的平方根表。

输入格式:

输入一个正整数X的值。

输出格式:

分行输出1到X之间所有数的平方根,取两位小数。

输入样例:

在这里给出一组输入。例如:

4

输出样例:

在这里给出相应的输出。例如:

1.00

1.41
1.73
2.00

#include
#include
int main(){
int x,i; double a; scanf("%d",&x); for(i=1;i<=x;i++) {
a=sqrt(i); printf("%.2lf\n",a); }}

14.饮料换购 (20 分)

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料。

输入格式:

输入:一个整数n,表示开始购买的饮料数量(0<n<10000)

输出格式:

输出:一个整数,表示实际得到的饮料数

输入样例:

在这里给出一组输入。例如:

100

输出样例:

在这里给出相应的输出。例如:

149

#include
int main(){
int n,sum; scanf("%d",&n); while((n/3)>0) {
sum=sum+n; n=n/3; } printf("%d\n",sum); }

15.输出三角形字符阵列 (15 分)

本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。

输入格式:

输入在一行中给出一个正整数n(1≤n<7)。

输出格式:

输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。

输入样例:

4

输出样例:

A B C D
E F G
H I
J

#include
int main(){
int i,n,m=65; scanf("%d",&n); for(;n>0;n--) {
for(i=1;i<=n;i++) {
printf("%c ",m); m++; } printf("\n"); }}

16.找完数 (20 分)

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

输入格式:

输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。

输出格式:

逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

输入样例:

2 30

输出样例:

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14

#include
int main(){
int i,j,m,n,s,k,count=0; scanf("%d %d",&m,&n); for(i=m;i<=n;i++) {
s=0; for(j=1;j

17. 求1!+3!+5!+……+n! (10 分)

求1!+3!+5!+……+n!的和,要求用循环嵌套设计,n<12。

输入格式:

输入在一行中给出一个不超过12的正整数n。

输出格式:

在一行中按照格式“n=n值,s=阶乘和”的顺序输出,其中阶乘和是正整数。

输入样例:

5

输出样例:

n=5,s=127

#include
int main(){
int i,k,n,s=0,f=1; scanf("%d",&n); for(i=1;i<=n;i+=2) {
for(k=1;k<=i;k++) {
f = f*k; } s += f; f = 1; } printf("n=%d,s=%d",n,s);}

18.输出2到n之间的全部素数 (20 分)

本题要求输出2到n之间的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。

输入格式:

输入在一行中给出一个长整型范围内的整数。

输出格式:

输出素数,每个数占6位,每行输出10个。如果最后一行输出的素数个数不到10个,也需要换行。

输入样例:

10

输出样例:

2 3 5 7

#include
int main(){
int i,j,n,m=0; scanf("%d",&n); for(i=2;i<=n;i++) {
for(j=2;j<=i;j++) {
if(i%j==0) break; } if(j==i) {
printf("%6d",i); m++; if(m%10==0&&m%10<10) {
printf("\n"); } } } return 0;}

19.打印上三角乘法口诀表 (10 分)

本题要求对任意给定的一位正整数N,打印从N到1的上三角乘法口诀表(详见样例)。

输入格式:

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

输出格式:

输出上三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:

6

输出样例:

16=6 26=12 36=18 46=24 56=30 66=36
15=5 25=10 35=15 45=20 55=25
1
4=4 24=8 34=12 44=16
1
3=3 23=6 33=9
12=2 22=4
1*1=1

#include
int main(){
int n,i,k; scanf("%d",&n); while(n>0) {
for(i=1;i<=n;i++) {
k=i*n; printf("%d*%d=%-4d",i,n,k); } printf("\n"); n--; } return 0;}

20.百钱买百鸡问题 (10 分)

公鸡每只5元,母鸡每只3元,小鸡1元3只,而且鸡必须整只买。100元钱买100只鸡(每一种鸡都要有),公鸡、母鸡、小鸡各多少只?请编写程序给出各种购买方案。

输入格式:

输入为一个正整数n,表示要求输出前n种可能的方案。方案的顺序,是按照公鸡只数从少到多排列的。

输出格式:

显示前n种方案中公鸡、母鸡、小鸡各多少只。每行显示一种方案,数字之间空一格,最后一个数字后没有空格。

注意:如果全部方案不到n种,就顺序输出全部可能的方案。

输入样例:

5

输出样例:

在这里给出相应的输出。例如:

4 18 78

8 11 81
12 4 84

#include 
int main (){
int l=0,x,y,z,n; scanf("%d",&n); if(l!=n) {
for(x = 1;x <= 20;x++) {
for(y = 1;y <= 34;y++) {
for(z = 1;z <= 100;z++) if(x+y+z == 100&&5*x+3*y+z/3 == 100&&z%3 == 0) {
printf("%d ",x); printf("%d ",y); printf("%d",z); printf("\n"); l++; if(l==n) break; } if(l==n) break; } if(l==n) break; } } return 0; }

21. 1000以内所有各位数字之和为n的正整数 (10 分)

输出1000以内所有各位数字之和为n的正整数,例如:如果输入的n是6,那么,105的各位数字之和1+0+5=6, 123的各位数字之和1+2+3=6,两者都满足要求。每行输出6列,每个整数占8位宽度右对齐。

输入格式:

从键盘输入整数n的值。

输出格式:

每行输出6列,每个整数占8位宽度右对齐。如果最后一行不足6列,也需要换行。

输入样例:

在这里给出一组输入。例如:

6

输出样例:

在这里给出相应的输出。例如:

6      15      24      33      42      51  60     105     114     123     132     141 150     204     213     222     231     240 303     312     321     330     402     411 420     501     510     600
#include
int main(){
int a,b,c,n,i,m=0; scanf("%d",&n); for(i=1;i<1000;i++) {
a=i%10; b=i%100/10; c=i/100; if(a+b+c==n) {
printf("%8d",i); m++; if(m%6==0&&m%6<6) printf("\n"); } }}

22.画出一个金字塔图形 (10 分)

编写一段程序,输入一个整数,像右面这样显示出输入整数层的金字塔形状。

提示: 第 i 行显示(i-1)×2 +1 个 ‘* ’

让我们来画一个金字塔。

金字塔有几层:3
在这里插入图片描述

输入样例:

3

输出样例:

让我们来画一个金字塔。
金字塔有几层:
在这里插入图片描述

#include 
int main (){
int n,i,j,k; scanf("%d",&n); printf("让我们来画一个金字塔。\n"); printf("金字塔有几层:\n"); for (i=1; i<=n; i++) {
for (j=1; j<=n-i; j++) {
printf(" "); } for(k=1; k <= (2*i-1); k++) {
printf("*"); } printf("\n"); } return 0;}

23.求1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的和 (2 分)

求1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的和

输入格式:

输入一个整数。

输出格式:

输出所求的和。

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

sum = 10

#include
int main(){
int i,k,n,sum=0,s=0; scanf("%d",&n); for(i=1;i<=n;i++) {
for(k=1;k<=i;k++) {
s=s+k; } sum+=s; s=0; } printf("sum = %d",sum);}

24.统计学生平均成绩与及格人数 (15 分)

本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。

输入格式:

输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。

输出格式:

按照以下格式输出:

average = 成绩均值

count = 及格人数
其中平均值精确到小数点后一位。

输入样例:

5
77 54 92 73 60
输出样例:
average = 71.2
count = 4

#include
int main(){
int i,n; int count=0; double average; double sum=0.0; scanf("%d",&n); int a[n]; if(n==0){
printf("average = 0.0\n"); printf("count = 0"); } else{
for(i=0;i
=60){
count++; } } average=(sum*1.0)/n; printf("average = %.1lf\n",average); printf("count = %d",count); return 0;}}

转载地址:http://vjnlf.baihongyu.com/

你可能感兴趣的文章
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>
PHPstudy中遇到的坑No input file specified,以及传到linux环境下遇到的坑,模板文件不存在
查看>>
TP5.1事务操作和TP5事务回滚操作多表
查看>>
composer install或composer update 或 composer require phpoffice/phpexcel 失败解决办法
查看>>
TP5.1项目从windows的Apache服务迁移到linux的Nginx服务需要注意几点。
查看>>
win10安装软件 打开时报错 找不到 msvcp120.dll
查看>>
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>
PHPUnit安装及使用
查看>>
PHP项目用xhprof性能分析(安装及应用实例)
查看>>
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
计算机底层是什么东西?
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
安装系统之一 U盘启动盘制作
查看>>
安装系统之二 U盘启动盘制作---UEFI版
查看>>
安装系统之四 U盘装GHOST XP教程
查看>>
安装系统之五 U盘装原版XP教程
查看>>
安装系统之六 U盘装GHOST WIN7教程
查看>>