函数学习 PTA 1使用函数输出一个整数的逆序数;3判断满足条件的三位数;5使用函数求余弦函数的近似值

其实一共有五道题,但那两道实在太过简单,也不好意思打出来给大家看,那么这篇博客,就让我一次性写三道题吧!也当是个小总结,睡前深思。


6-1 使用函数输出一个整数的逆序数

本题要求实现一个求整数的逆序数的简单函数。

函数接口定义:

int reverse( int number );

其中函数reverse须返回用户传入的整型number的逆序数。

裁判测试程序样例:

#include <stdio.h>

int reverse( int number );

int main()

{ int n; scanf("%d", &n);

printf("%d\n", reverse(n));

return 0; }

/* 你的代码将被嵌在这里 */

输入样例:

-12340

输出样例:

-4321

解题代码:类似一个数一个数从其位数拆解,再反着送回去

%10是拆出最低位的数字。

/10是把最高位去掉,继续往下拆。

*10是为了把低位拆出来的数一层一层送上最高位,然后以此类推。

int reverse(int number) {
    int sign = number >= 0 ? 1 : -1;
    number = number >= 0 ? number : -number;
    int sum = 0;
    while (number > 0) {
        sum = sum * 10 + number % 10;
        number /= 10;
    }
         return sum * sign;
}

 


6-3 判断满足条件的三位数

本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。

函数接口定义:

int search( int n );

其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101, n]区间内所有满足条件的数的个数。

裁判测试程序样例:

#include <stdio.h>

#include <math.h>

int search( int n );

int main() {

int number;

scanf("%d",&number);

printf("count=%d\n",search(number)); return 0; }

/* 你的代码将被嵌在这里 */

输入样例:

500

输出样例:

count=6

解题代码:先开根,求出最大上限,然后遍历

int search(int n) {
    int count = 0;
    int upper = (int)sqrt(n);
    for (int i = 11; i <= upper; i++) {
        int t = i * i;
        int a = t % 10; //个位
        int b = t / 10 % 10; //十位
        int c = t / 100; //百位
        if (a==b ||b==c||c==a) {
            count++;
        }
    }
    return count;
}

6-5 使用函数求余弦函数的近似值 

本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:

cos(x)=x0/0!−x2/2!+x4/4!−x6/6!+⋯

函数接口定义:

double funcos( double e, double x );

其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。输入输出均在双精度范围内。

裁判测试程序样例:

#include <stdio.h>

#include <math.h>

double funcos( double e, double x );

int main() {

double e, x;

scanf("%lf %lf", &e, &x);

printf("cos(%.2f) = %.6f\n", x, funcos(e, x)); return 0; }

/* 你的代码将被嵌在这里 */

输入样例:

0.01 -3.14

输出样例:

cos(-3.14) = -0.999899

解题代码:

通项公式如何求出?

请看此图:

这是代码: 

double funcos(double e, double x) {
    double sum = 1, seq = 1;//序列初始值
    for (int i = 1; fabs(seq) > e; i++) {
        seq *= -x * x / ((2 * i) * (2 * i - 1)); //S通项公式
        sum += seq;
    }
    return sum;
}

 

 

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 以下是一个简单的实现方法: ```cpp #include <iostream> using namespace std; int reverse(int n) { int reversed = 0; while (n > 0) { reversed = reversed * 10 + n % 10; n /= 10; } return reversed; } int main() { int n; cin >> n; cout << reverse(n) << endl; return 0; } ``` 该函数将输入的整数n逆序输出。例如,输入12345,输出54321。 ### 回答2: 要输出一个整数逆序数,可以使用函数来实现。首先,将要逆序整数转换为字符串类型,然后使用字符串的翻转函数。接下来,将翻转后的字符串转换回整数类型,得到逆序整数。 以下是一个使用函数输出整数逆序数的示例代码: ```python def reverse_num(num): # 将整数转换为字符串类型 str_num = str(num) # 使用字符串的翻转函数 reverse_str = str_num[::-1] # 将翻转后的字符串转换回整数类型 reverse_num = int(reverse_str) return reverse_num # 调用函数输出结果 num = 12345 reverse = reverse_num(num) print(reverse) ``` 在这个示例中,我们定义了一个名为`reverse_num`的函数,接受一个整数作为输入参数。在函数内部,我们首先将整数转换为字符串类型,然后使用字符串的翻转函数`[::-1]`,将字符串进行翻转。最后,将翻转后的字符串转换回整数类型,并将结果返回。 通过调用`reverse_num`函数,并将整数`12345`作为输入参数传入,我们可以得到逆序整数`54321`作为输出结果。 ### 回答3: 逆序数是指将一个整数的数字按位数逆序排列后得到的新整数。我们可以使用函数来实现这个功能。 首先,我们可以将整数转换为字符串,这样我们可以逐位处理数字。然后,我们可以通过循环遍历字符串的每一个字符,将其逆序拼接成一个新的字符串。最后,我们将新字符串转换为整数,即得到原始整数逆序数。 以下是一个实现这个功能的函数示例: ```python def inverse_number(n): # 将整数转换为字符串 str_n = str(n) # 初始化逆序数字符串 inverse_str = "" # 逆序拼接字符 for i in range(len(str_n)-1, -1, -1): inverse_str += str_n[i] # 将逆序数字符串转换为整数 inverse_num = int(inverse_str) # 返回逆序数 return inverse_num ``` 使用函数,我们可以输入一个整数,并输出逆序数。例如,对于整数12345,调用`inverse_number(12345)`会返回54321作为逆序数

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Louis Maos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值