c语言编程题经典100例——(76~80例)

1,写一个函数,求解一元二次方程。

#include <stdio.h>  
#include <math.h>  
  
double quadratic_equation(double a, double b, double c) {  
    double delta = b * b - 4 * a * c;  
    if (delta < 0) {  
        return NAN; // 无法求解  
    }  
    double x1 = (-b + sqrt(delta)) / (2 * a);  
    double x2 = (-b - sqrt(delta)) / (2 * a);  
    return x1 + x2;  
}  
  
int main() {  
    double a = 1.0;  
    double b = 2.0;  
    double c = 1.0;  
    double result = quadratic_equation(a, b, c);  
    printf("The sum of the two solutions is: %f\n", result);  
    return 0;  
}

        在这个示例中,我们定义了一个名为quadratic_equation的函数,用于求解一元二次方程。函数接受三个参数:abc,分别代表一元二次方程的系数。函数首先计算出方程的判别式delta,如果delta小于0,则无法求解方程,返回NAN。如果delta大于等于0,则计算出方程的两个解x1x2,并返回它们的和。

        在主函数中,我们定义了三个系数abc,分别赋值为1、2和1。然后调用quadratic_equation函数求解方程,并将结果输出到控制台中。在这个示例中,方程的两个解分别为-1.01.0,它们的和为0。

2,写一个函数,判断一个数是否为质数。

写这个函数,首先我们得回顾小学知识,了解什么是质数才能写出来。

#include <stdio.h>  
  
int is_prime(int n) {  
    if (n <= 1) {  
        return 0; // 小于等于1的数不是质数  
    }  
    for (int i = 2; i * i <= n; i++) {  
        if (n % i == 0) {  
            return 0; // 如果n能被i整除,则n不是质数  
        }  
    }  
    return 1; // n不能被2到sqrt(n)之间的任何数整除,所以n是质数  
}  
  
int main() {  
    int n = 23;  
    if (is_prime(n)) {  
        printf("%d is a prime number.\n", n);  
    } else {  
        printf("%d is not a prime number.\n", n);  
    }  
    return 0;  
}

        在这个示例中,我们定义了一个名为is_prime的函数,用于判断一个整数是否为质数。函数接受一个整数n作为参数,返回值为1表示n是质数,返回值为0表示n不是质数。在函数中,我们首先判断n是否小于等于1,如果是,则直接返回0。否则,我们使用一个循环从2到sqrt(n)之间的所有整数进行判断,如果n能被其中的任何一个整数整除,则说明n不是质数,返回0。如果循环结束后仍然没有找到能整除n的整数,则说明n是质数,返回1。在主函数中,我们定义了一个整数n,并调用is_prime函数判断其是否为质数,并输出相应的结果。

3,写一个函数,计算斐波那契数列的第n项。

小学六年级的知识,斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。

#include <stdio.h>  
  
int fibonacci(int n) {  
    if (n <= 0) {  
        return 0; // 如果n小于等于0,返回0  
    } else if (n == 1) {  
        return 1; // 如果n等于1,返回1  
    } else {  
        return fibonacci(n-1) + fibonacci(n-2); // 否则递归计算第n项的值  
    }  
}  
  
int main() {  
    int n = 10; // 要计算的斐波那契数列项数  
    int result = fibonacci(n); // 调用函数计算结果  
    printf("斐波那契数列的第%d项为%d\n", n, result); // 输出结果  
    return 0;  
}

        在这个示例中,我们定义了一个名为fibonacci的函数,用于计算斐波那契数列的第n项。函数使用递归的方式实现,如果n小于等于0,则返回0;如果n等于1,则返回1;否则递归计算第n项的值。在主函数中,我们定义了要计算的斐波那契数列项数n,并调用fibonacci函数计算结果。最后输出结果到控制台中。

4,写一个函数,将一个字符串反转。

#include <stdio.h>  
#include <string.h>  
  
void reverse_string(char *str) {  
    int len = strlen(str);  
    int i, j;  
    char temp;  
    for (i = 0, j = len - 1; i < j; i++, j--) {  
        temp = str[i];  
        str[i] = str[j];  
        str[j] = temp;  
    }  
}  
  
int main() {  
    char str[100];  
    printf("请输入一个字符串:");  
    scanf("%s", str);  
    reverse_string(str);  
    printf("反转后的字符串为:%s\n", str);  
    return 0;  
}

        在这个示例中,我们定义了一个名为reverse_string的函数,用于反转一个字符串。该函数接受一个指向字符串的指针作为参数,使用strlen函数获取字符串长度,并使用循环遍历字符串中的字符,通过交换字符位置实现反转。最后,我们在主函数中调用reverse_string函数,并输出反转后的字符串。需要注意的是,该示例中的函数只能处理简单的字符串,如果需要处理包含空格或特殊字符的字符串,需要进行额外的处理。

5,写一个函数,判断一个字符串是否包含某个子字符串。

#include <stdio.h>  
#include <string.h>  
  
int is_substring(char *str, char *sub) {  
    int len_str = strlen(str);  
    int len_sub = strlen(sub);  
    if (len_sub > len_str) {  
        return 0; // 子字符串长度大于原字符串,不可能包含  
    }  
    int i, j;  
    for (i = 0; i <= len_str - len_sub; i++) {  
        for (j = 0; j < len_sub; j++) {  
            if (str[i+j] != sub[j]) {  
                break; // 发现不匹配,跳出内层循环  
            }  
        }  
        if (j == len_sub) { // 循环结束,说明匹配成功  
            return 1;  
        }  
    }  
    return 0; // 循环结束,说明没有匹配成功  
}  
  
int main() {  
    char str[100], sub[100];  
    printf("请输入原字符串:");  
    scanf("%s", str);  
    printf("请输入子字符串:");  
    scanf("%s", sub);  
    if (is_substring(str, sub)) {  
        printf("原字符串包含子字符串\n");  
    } else {  
        printf("原字符串不包含子字符串\n");  
    }  
    return 0;  
}

        在这个示例中,我们定义了一个名为is_substring的函数,用于判断一个字符串是否包含某个子字符串。该函数接受两个指向字符串的指针作为参数,使用strlen函数获取字符串长度,并使用两个循环遍历字符串中的字符,逐一比对子字符串中的字符。如果发现不匹配的字符,就跳出内层循环。如果内层循环结束,说明匹配成功,返回1;如果内层循环没有结束就跳出外层循环,说明没有匹配成功,返回0。在主函数中,我们调用is_substring函数,并输出判断结果。

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十启树

您的认可是我最大的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值