龙空技术网

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

十启树之一起加油加油 147

前言:

今天你们对“c语言十大经典例题解析及答案”大体比较关心,你们都想要知道一些“c语言十大经典例题解析及答案”的相关文章。那么小编也在网络上收集了一些有关“c语言十大经典例题解析及答案””的相关知识,希望你们能喜欢,看官们一起来学习一下吧!

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的函数,用于求解一元二次方程。函数接受三个参数:a、b和c,分别代表一元二次方程的系数。函数首先计算出方程的判别式delta,如果delta小于0,则无法求解方程,返回NAN。如果delta大于等于0,则计算出方程的两个解x1和x2,并返回它们的和。

在主函数中,我们定义了三个系数a、b和c,分别赋值为1、2和1。然后调用quadratic_equation函数求解方程,并将结果输出到控制台中。在这个示例中,方程的两个解分别为-1.0和1.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函数,并输出判断结果。

标签: #c语言十大经典例题解析及答案 #c语言入门编程题经典100例 #c语言递推算法编程题