XJTU大学计算机I C语言编程题 第八周

第一题:从键盘输入一个整数x,输出其平方根(为整数)。
若输入数大于1000或小于等于0,则输出0,并继续接受下一个输入直至小于等于1000。  

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<math.h>
int main()
{
  int x;
  scanf("%d", &x);
  while (x > 1000 || x <= 0)
  {
    printf("0\n");
    scanf("%d", &x);
  }
  int a = sqrt(x);
  printf("%d", a);
  return 0;
}

第二题:从键盘输入3个整数(三个数取值均在闭区间 [1,10] ), 每行输入一个
每读取一个值,程序打印出该值个数的英文星号(*)。
输入:3个整数,3行。
输出:3行星号。 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void star(int x)
{
  for (int i = 0; i < x; i++)
  {
    printf("*");
  }
    printf("\n");
  return 0;
}

int main()
{
  int a, b, c;
  scanf("%d", &a);
  scanf("%d", &b);
  scanf("%d", &c);
  star(a);
  star(b);
  star(c);
  return 0;
}

第三题:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
1. 每位数字都用自身加5后的和除以10的余数代替,如1用6代替,8用3代替;如3768就转换为8213;
2. 再将第一步生成的数字的第一位和第四位交换,第二位和第三位交换。 如8213转换为3128,即为最终的加密密码。
编写程序完成数据的加密。输入:一个整数。输出:一个整数。 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
  int x;
  scanf("%d", &x);
  int array[5];
  for (int i = 3; i >=0; i--)
  {
    array[i] = ((x % 10) + 5) % 10;
    x = x / 10;
  }
  int temp1 = array[0];
  array[0] = array[3];
  array[3] = temp1;
  int temp2 = array[1];
  array[1] = array[2];
  array[2] = temp2;
  for (int i = 0; i < 4; i++)
  {
    printf("%d", array[i]);
  }
  return 0;
}

第四题:找出整数m到整数n (闭区间)之间的所有同构数(m<n)。
说明:一个正整数x,如果是它平方数的尾部,则称x为同构数。例如,6是其平方数36的尾部,25是其平方数625的尾部,那么6和25都是同构数。
输入:m和n两个正整数,用空格分隔。
输出:连续输出同构数,数据间用空格分隔(最后一个同构数后面无空格)。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
  int m, n;
  int k, t, count = 0;
  int a[100];
  scanf("%d%d", &m, &n);
  for (int x = m; x <= n; x++) 
  { 
    k = x * x;
    t = x; 
    while (t > 0)
    { 
      if (t % 10 != k % 10) 
      { 
        break;
      } 
      t = t / 10;
      k = k / 10;
    } 
    if (t == 0)
    {
      a[count] = x;
      count = count + 1;
    }
  }
  for (int i = 0; i < count; i++)
  {
    if (i == 0)
    {
      printf("%d", a[i]);
    }
    else
    {
      printf(" %d", a[i]);
    }
  }
  return 0;
}

第五题:编程判断任意一个正整数各位数字之和是奇数还是偶数。
如果和是奇数输出1,偶数输出0。 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
  int x;
  int count = 0, sum = 0;
  scanf("%d", &x);
  int a[100];
  for (int i = 0; x / 10 != 0; i++)
  {
    a[i] = x % 10;
    x = x / 10;
    sum = sum + a[i];
    count = count + 1;
  }
  sum = sum + x;
  if (sum % 2 == 0)
  {
    printf("0");
  }
  else
  {
    printf("1");
  }
  return 0;
}

第六题:编程求以下级数前n项之和:
s=1-1/3+1/5-1/7+1/9-1/11+1/13-1/15+.....
输入:一个正整数n
输出:前n项和的值,超出小数点后4位的,保留到小数点后4位 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<math.h>
int main()
{
  int n;
  float sum = 0.0;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++)
  {
    float num = pow(-1, i + 1) * (1.0 / (2 * i - 1));
    sum = sum + num;
  }
  printf("%.4f", sum);
  return 0;
}

第七题:编写程序,找出[m,n]范围内是7的倍数或带7的全部正整数(注意:如果一个是既是7的倍数又是带7的数,就输出2次,先输出倍数,再输出带7的整数,如:7 is a multiple of 7 7 contains 7)。
其中,m和n为正整数。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
  int m, n, i;
  scanf("%d%d", &m, &n);
  for (i = m; i <= n; i++)
  {
    int a = i;
    if (a % 7 == 0)
    {
      printf("%d is a multiple of 7\n", i);
    }
    while (a) 
    { 
      if (a % 10 == 7) 
      { 
        printf("%d contains 7\n", i); 
        break; 
      } 
      a = a / 10; 
    }
  }
  return 0;
}

第八题:若三个正整数a,b,c满足 a^2+b^2=c^2,则它们是一组勾股数。(^2表示平方,a^表示a的平方)。
编写程序,求给定区间[m,n]中的勾股数的数量(设一组勾股数满足a<b<c)。
例如[1,10]中的勾股数有(3,4,5)和(6,8,10),则[1,10]中勾股数的数量为2。
输入:正整数m,n, 空格分隔
输出:[m,n]中的勾股数的数量 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
  int m, n;
  int count = 0;
  scanf("%d%d", &m, &n);
  for (int i = m; i <= n; i++)
  {
    for (int j = i + 1; j <= n; j++)
    {
      for (int k = j + 1; k <= n; k++)
      {
        if (k * k == j * j + i * i)
        {
          count++;
        }
      }
    }
  }
  printf("%d", count);
  return 0;
}

 第九题: 输入任意一个正整数,计算各位数字的平方和。
如:1234 则:计算1*1+2*2+3*3+4*4=30
输入:一个正整数
输出:平方和

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

 第十题:编写程序检验由三边能否构成三角形,检验方法是任意两边和均要大于第三边。
输入:三边长度(一行输入,空格分隔)
输出:如果可以构成三角形,输出YES,否则输出ERROR DATA

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
  float a, b, c;
  scanf("%f%f%f", &a, &b, &c);
  if (a + b > c)
  {
    if (a + c > b)
    {
      if (b + c > a)
      {
        printf("YES");
      }
      else
      {
        printf("ERROR DATA");
      }
    }
    else
    {
      printf("ERROR DATA");
    }
  }
  else
  {
    printf("ERROR DATA");
  }
  return 0;
}
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值