XJTU大学计算机编程作业题 第8周

第一题

题目描述:

输入总秒数,转换为相应的时、分、秒。
提示:在输出时,请使用下面的格式(变量名不要求一样): printf("%d:%02d:%02d\n", h, m, s);

输入输出格式:
输入:整数
输出:时分秒,整数,西文冒号分隔。

样例输入:

3610

样例输出:

1:00:10

参考代码

#include <stdio.h>
int main()
{
  int t,h,m,s;
  scanf("%d",&t);
  h=t/3600;
  m=t%3600/60;
  s=t%3600%60;
  printf("%d:%02d:%02d\n",h,m,s);
  return 0;
}

第二题

题目描述:

计算银行存款本息。输入存款金额money(单位:元),存期years,年利率rate,计算到期存款本息(保留2位小数)。计算公式如下:

sum=money(1+rate)years

提示:求xy可以使用数学函数pow(x,y),其中x,y均为double型,在程序开始加上:#include <math.h>

输入输出格式:
输入:存款金额,存期,年利率。均为浮点数,且用逗号分隔
输出:存款本息(保留2位小数)

样例输入:

10000.0,1,0.027

样例输出:

10270.00

参考代码考虑到pow函数精度问题,此代码未采用

#include <stdio.h>
int main()
{
  double rate,money,years;
  double sum;
  scanf("%lf,%lf,%lf",&money,&years,&rate);
  sum=(1+rate);
  while(--years)
  {
    sum=sum*(1+rate);
  }
  sum=money*sum;
  printf("%.2lf",sum);
  return 0;
}

第三题

题目描述:
编写程序检验由三边能否构成三角形,检验方法是任意两边和均要大于第三边。

输入输出格式:

输入:三边长度
输出:若果可以构成,输出YES,否则输出ERROR DATA

样例输入:

1 1 2

样例输出:

ERROR DATA

参考代码

#include <stdio.h>
int main()
{
  double a,b,c;
  scanf("%lf%lf%lf",&a,&b,&c);
  if((a+b)>c&&(a-b)<c&&(b-a)<c)
    printf("YES");
  else
    printf("ERROR DATA");
  return 0;
}

第四题

题目描述:
输入3个整数,求最大公约数和最小公倍数。

输入输出格式:
输入:3个整数
输出:最大公约数和最小公倍数,空格分隔

样例输入:

2 5 8

样例输出:

1 40

参考代码

#include <stdio.h>
int main()
{
  int a,b,c;
  int x,y;
  scanf("%d%d%d",&a,&b,&c);
    for (x = a;/* x>0 */; x--)
    {
        if (a%x== 0 && b%x == 0&&c%x==0)
            break;  
    }
    for (y = a; /* x<正无穷 */ ; y++)    //第二个分好允许啥都不写
    {
        if (y%a == 0 && y%b == 0 && y%c == 0)
            break;
    }
    printf("%d %d", x,y);
    return 0;
}


第五题

题目描述:
求a+aa+aaa+aaaa+… …+aa…a(n个),其中a为1~9之间的整数。

例如:当a = 1, n = 3时,求1+11+111之和;

当a = 5, n =7时,求5+55+555+5555+55555+555555+5555555之和。

输入输出格式:
输入:a和n,空格分隔
输出:和

样例输入:

2 3

样例输出:

246

参考代码 方法一

#include<stdio.h>
int main()
{
	int a = 0;
	int sum = 0;
	int tmp = 0;
  	int n;
	scanf("%d%d", &a,&n);
	for (int i = 0; i<n; i++)
	{
		tmp = tmp * 10 + a;
		sum += tmp;
	}
	printf("%d", sum);
	return 0;
}

参考代码 方法二

#include<stdio.h>
#include<math.h>
int main()
{
    int a, n, i;
    scanf_s("%d%d", &a, &n);
    int sum = 0;
    for (i = a; i < pow(10, n); i = (i * 10) + a)
        sum = sum + i;
    printf("%d", sum);
    return 0;
}

第六题

题目描述:
找出N以内的勾股数的个数。要求找出三个整数a、b、c,它们满足以下的条件:

a*a+b*b=c*  
a <= b < c <= N

输入输出格式:
输入:N
输出:勾股数的个数

样例输入:

10

样例输出:

2

参考代码 此代码容易超时,应该思考更简单的做法

#include <stdio.h>
int main ()
{
  int a,b,c;
  int N;
  int x=0;
  scanf("%d",&N);
  for(int i=N;i>0;i--)
  {for(int j=i-1;j>0;j--)
  {for(int k=j;k>0;k--)
  {if(i*i==j*j+k*k)x++;}}}
  printf("%d",x);
  return 0;
}

第七题

题目描述:
输入由4个字母构成的英文单词,按如下格式输出字母,该字母的ASCII码以及该字母的后继字符。每行输出数据之间用一个空格分隔。如:

输入输出格式:
输入: 单词
输出:共4行,每行输出字母,该字母的ASCII码,该字母后继字符(空格分隔)

样例输入:

word

样例输出:

w 119 x
o 111 p
r 114 s
d 100 e

参考代码

#include<stdio.h>
int main()
{
    char a, b, c, d, a3, b3, c3, d3; int a1, b1, c1, d1, a2, b2, c2, d2;
    scanf("%c", &a);
    scanf("%c", &b);
    scanf("%c", &c);
    scanf("%c", &d);     //必须一个一个输入,如果题目是输入w o r d,才可以用scanf("%c%c%c%c", &a,&b,&c,&d);(%c%c%c%c默认会有空格,而原题不需要空格)
    a1 = a, a2 = a1 + 1, a3 = a2;
    b1 = b, b2 = b1 + 1, b3 = b2;
    c1 = c, c2 = c1 + 1, c3 = c2;
    d1 = d, d2 = d1 + 1, d3 = d2;
    printf("%c %d %c\n%c %d %c\n%c %d %c\n%c %d %c", a, a1, a3, b, b1, b3, c, c1, c3, d, d1, d3);
    return 0;
}

发布了3 篇原创文章 · 获赞 3 · 访问量 578

猜你喜欢

转载自blog.csdn.net/paul000917/article/details/105448296