PTA部分习题解答(一)

一、编程题
1、 求N分之一序列前N项和 :计算序列 1 + 1/2 + 1/3 + … 的前N项之和。

#include<stdio.h>
int main()
{
  int m,i,n;
  double item,sum;
  scanf("%d",&n);
  
  m=1;
  sum=0;
  for(i=1;i<=n;i++)
    {
      item=1.0/m;
      sum=sum+item;
     m=m+1;
    }
  printf("sum = %.6lf",sum);
  return 0;
}
2、输出华氏-摄氏温度转换表 :输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。温度转换的计算公式C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

#include <stdio.h>
int main()
{
int lower,upper,fahr;
double celsius;
scanf("%d%d",&lower,&upper);
if(lower<=upper&&lower<=100){
printf(“fahr celsius\n”);
for(fahr = lower;fahr<=upper;fahr=fahr+2)
{
celsius=(5.0/9.0)*(fahr-32);
printf("%d%6.1f\n",fahr,celsius);
}
}
else
printf(“Invalid.\n”);
return 0;
}
3、求组合数 :算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。

#include <stdio.h>
double fact(int n);
int main()
{
  int result,m,n;
  scanf("%d %d",&m,&n);
  result=fact(n)/(fact(m)*fact(n-m));
  printf("result = %d",result);
  return 0;
}

double fact(int n)
{
  double i,fact=1;
  for(i=1;i<=n;i++)
  fact=fact*i;
  return fact;
}

4、阶梯电价 :为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

#include <stdio.h>
int main()
{
  double n,cost;
  scanf("%lf",&n);
  if(n<0)
   printf("Invalid Value!");
   else{
  if(n<=50){
  cost=0.53*n;
  printf("cost = %.2lf",cost);}
  else {
  cost=0.53*50+(0.53+0.05)*(n-50);
  printf("cost = %.2lf",cost);}
   }
  return 0;
}

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

#include <stdio.h>
int main()
{
  int n,i,count=0,a[10];
  double sum=0,aver;
  scanf("%d",&n);
  for(i=0;i<n;i++)
  scanf("%d",&a[i]);
  for(i=0;i<n;i++)
  {
    if(a[i]>=60)
    count++;
    sum+=a[i];
  }
  if(n!=0)
  aver=sum/n;
  printf("average = %.1f\ncount = %d\n",aver,count);
  return 0;
}

6、统计字符 :本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

#include <stdio.h>
int main()
{
  int letter,blank,digit,other;
  char ch;
  int i;
  letter=blank=digit=other=0;
  for(i=1;i<=10;i++){
    ch=getchar();
    if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
    letter++;
    else if(ch==' '||ch=='\n')blank++;
    else if(ch>='0'&&ch<='9')
    digit++;
    else
    other++;}
    printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
  return 0;
}


发布了8 篇原创文章 · 获赞 7 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览