物联1254 baiyufan
题⽬1
编写函数求次⽅。其中函数头为 double power(double x, int n) 。在主函数中输⼊ x n 并调⽤该函数求 。
输⼊⽰例(输⼊两个数,第⼀个为整数 n ,第⼆个为浮点数 x ):
3 5
输出⽰例(输出 x n 次⽅,保留两位⼩数):
125.00
#include <stdio.h>

double power(double x,int n);
int main(){
	int n;
	double x;
	printf("请输入n,x:");
	scanf("%d %lf",&n,&x);	
	printf("%.2f",power(x,n));
	return 0;
}

double power(double x,int n){
	double sum = x;
	if(n == 0)return 1.0;
	for(int i = 1;i < n;i++){
		sum *= x;
	}
	return sum;
}

题⽬2
⽤递归函数的⽅法,求解题⽬1.
【提⽰:先列出具体的数学公式,找到对应的 base case ,
general case
, 再套⽤模板。】
输⼊⽰例1(说明:输⼊第⼀个为整数 n ,第⼆个为浮点数 x 。):
3 5
输出⽰例(输出 x n 次⽅,保留两位⼩数):
125.00
#include <stdio.h>

double power(double x, int n) {
    if (n == 0) {
        return 1.0;
    }
    return x * power(x, n - 1);
}

int main() {
    int n;
    double x;
    printf("请输入n,x:");
    scanf("%d %lf", &n, &x);
    printf("%.2f\n", power(x, n));
    return 0;
}

题⽬3
设⼈⺠币的⾯额有(以元为单位):1⾓、2⾓、5⾓、1元、2元、5元、10元、20元、50元。
编写函数 void change(double m,double c); 其中 m 为商品价格(只取⼀位有效数字), c 为顾客付款(只取⼀位有效数
字),函数能输出应给顾客找零⾦额的各种⾯额⼈⺠币的张数,且张数之和为最⼩
要求在主函数中输⼊商品价格和顾客付款,调⽤函数得到结果。
输出⽰例1

34.2 100
输出⽰例1
50:1
20:0
10:1
5:1
2:0
1:0
5:1
2:1
1:1
-----
找零 6 张!
#include <stdio.h>
void change(double m,double c);
int main(){
	double m,c;
	printf("请输入商品价格m,顾客付款c:");
	scanf("%lf %lf",&m,&c);
	change(m,c);
	return 0;
}

void change(double m, double c) {
    int price_jiao = (int)(m * 10 + 0.5); 
    int pay_jiao = (int)(c * 10 + 0.5);
    int change_jiao = pay_jiao - price_jiao;
    int denominations[] = {500, 200, 100, 50, 20, 10, 5, 2, 1}; 
    char *names[] = {"50元", "20元", "10元", "5元", "2元", "1元", "5角", "2角", "1角"};
    int count[9] = {0};
    int total_count = 0;
    for (int i = 0; i < 9; i++) {
        count[i] = change_jiao / denominations[i];
        change_jiao %= denominations[i];
        total_count += count[i];
    }
    for (int i = 0; i < 9; i++) {
        printf("%s:%d\n", names[i], count[i]);
    }
    printf("-----\n");
    printf("找零 %d 张!\n", total_count);
}

题⽬4
学校⾥的吃货协会准备搞⼀个聚会,已经知道现有会员 N ⼈,把会员从 1 N 编号,其中会⻓的号码是 N 号,凡是和会⻓是⽼朋友的,那么该会员的号码肯定和 N 有⼤于 1 的公约数,否则都是新朋友。
现在会⻓想知道究竟有⼏个新朋友?请你编程序帮会⻓计算出来。
【提⽰1】编写函数 int gcd(int a,int b) ,求 a b 的最⼤公约数。
【提⽰2】编写 main 函数,接收键盘输⼊的 N 的值,寻找 [1,N-1] 区间内的与 N 的最⼤公约数为 1 的数字,输出个数。
输⼊⽰例1N ):
50
输出⽰例1[1,N-1] 区间内的与N的最⼤公约数为 1 的数字个数):
20
#include <stdio.h>

int gcd(int a,int b){
	while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int main() {
    int N;
    printf("输入会员N人:");
    scanf("%d", &N);
    int count = 0;
    for (int i = 1; i < N; i++) {
        if (gcd(i, N) == 1) {
            count++;
        }
    }
    printf("%d\n", count);
    return 0;
}

题⽬5
要求:⽤递归函数判断⼀个⾃然数是否为素数(0表⽰不是,1表⽰是)。
输⼊⽰例1(⼀个⾃然数):
4
输出⽰例1(是否为素数( 0 表⽰不是, 1 表⽰是)):
0
#include <stdio.h>
#include <math.h>

int isPrime(int n, int i) {
    if (n < 2) return 0;
    if (n == 2) return 1;
    if (i > sqrt(n)) return 1;
    if (n % i == 0) return 0;
    return isPrime(n, i + 1);
}

int main() {
    int n;
    printf("请输入一个自然数:");
    scanf("%d", &n);
    printf("%d\n", isPrime(n, 2));
    return 0;
}

题⽬6
要求:⽤递归函数求解下⽅问题。
5个学⽣坐在⼀起,问第5个学⽣多少岁,他说⽐第4个学⽣⼤2岁。问第4个学⽣岁数,他说⽐第3个学⽣⼤2
岁。问第3个学⽣岁数,他说⽐第2个学⽣⼤2岁。问第2个学⽣岁数,他说⽐第1个学⽣⼤2岁。最后问第1个学⽣,
他说10岁,请问第5个学⽣多⼤。。
输⼊⽰例1
[⽆输⼊]
输出⽰例1(第 5 个学⽣的年龄):
18
#include <stdio.h>

int age(int n) {
    if (n == 1) {
        return 10;
    } else {
        return age(n - 1) + 2;
    }
}

int main() {
    printf("%d\n", age(5));
    return 0;
}

题目七:

编写函数,寻找300以内的所有的对称回⽂数并输出。

 回⽂数是指某数与其反序数相等,例如 5、131、1551、345676543。

对称回⽂数是指某数与其平⽅都是回⽂数。例如,n=11时,11*11=121;n=111时,111*111=12321。

【提⽰1】编写函数 int huiwen(long n) ,判断 n 是否回⽂数,若是返回 1 ,否则返回 0 。

【提⽰2】在 main 函数中遍历 300 以内的数,寻找对称回⽂数并输出。

输⼊⽰例:  [⽆输⼊]

输出⽰例: 300以内的所有的对称回⽂数: 1 2 3 11 22 101 111 121 202 212

#include <stdio.h>

int huiwen(long n) {
    long original = n;
    long reversed = 0;
    while (n > 0) {
        reversed = reversed * 10 + n % 10;
        n /= 10;
    }
    return original == reversed;
}
int main() {
    printf("300以内的所有的对称回?数: ");
    int first = 1;
    for (int n = 1; n <= 300; n++) {
        if (huiwen(n) && huiwen((long)n * n)) {
            if (!first) {
                printf(" ");
            }
            printf("%d", n);
            first = 0;
        }
    }
    printf("\n");
    return 0;
}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐