c语言习题1124

  1. 分别定义函数求圆的面积和周长。

  2. 写一个函数,分别求三个数当中的最大数。

  3. 写一个函数,计算输入n个数的乘积

  4. 一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息

  5. 写一个函数求n! ,利用该函数求1!+2!+3!+4!+。。。+10!的和。

  6. Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!,主函数中输入n值,求sn的结果。

  7. 写一个函数输出斐波那契数列前10项,并求和

  8. 8、定义一个求平均成绩的函数,实现在一个一维数组score内放5个学生成绩,调用函数求得平均成绩

  9. 有两个班级,分别有5和8名学生,定义average(int b[],int n)函数,调用average函数,分别求这两个班的学生的平均成绩。

  10. 定义一个函数,实现对字符串的逆序打印。

  11. 从键盘为a[5][2]整型数组输入10个整数,调用函数找出该二维数组当中的最小值、最大值、平均值,并输出

  12. 写一个函数,使给定的3*3的二维数组转置,即行列互换。

  13. 编写函数求区间[100,500]中所有的回文数。

  14. (附加题)输入4个学生3门课的成绩,分别用函数实现下列功能:c语言习题1124_第1张图片

//1、分别定义函数求圆的面积和周长。
#include
#define pi 3.14
double mj(double r){
	return pi*r*r;
}
double zc(double r){
	return 2 * pi * r;
}
int main(){
	double r;
	printf("输入圆的半径:");
	scanf("%lf", &r);
	printf("圆的面积为:%.2f\n", mj(r));
	printf("圆的周长为:%.2f\n", zc(r));
	return 0;
	
}




//2、写一个函数,分别求三个数当中的最大数。
#include 
int findmax(int a, int b, int c){
	int max = a;
	if (b > max){
		max = b;
	}
	if (c > max){
		max = c;
	}
	return max;
}

int main(){
	int x, y, z;
	printf("请输入三个数字:");
	scanf("%d %d %d", &x, &y, &z);
	printf("最大的数为:%d\n", findmax(x, y, z));
	return 0;
}



//3、写一个函数,计算输入n个数的乘积
#include 
int cj(int n){
	int result = 1;
	int num;
	for(int i = 0; i < n; i++){
		printf("请输入第%d个数:", i + 1);
		scanf("%d", &num);
		result *= num;
	}
	return result;
}
int main(){
	int num;
	printf("请输入n的值:");
	scanf("%d", &num);
	printf("结果为:%d\n", cj(num));
}



//4.一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息
#include 
#include 
bool sushu(int num){
	if (num <= 1){
		return false;
	}
	for (int i = 2; i*i <= num; i++){
		if (num%i == 0){
			return false;
		}
	}
	return true;
}
int main(){
	int num;
	printf("请输入一个整数:");
	scanf("%d", &num);
	if (sushu(num)){
		printf("%d是素数\n", num);
	}
	else{
		printf("%d不是素数\n", num);
	}
	return 0;
}



//5.写一个函数求n!, 利用该函数求1! + 2! + 3! + 4! + 。。。 + 10!的和
#include
int jc(int n){
	if (n == 0 || n == 1){
		return 1;
	}
	else
	{
		return n*jc(n - 1);
	}
}
int main(){
	int sum = 0;
	for (int i = 1; i <= 10; i++){
		sum += jc(i);
	}
	printf("sum=%d\n", sum);
	return 0;
}


//6.Sn = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / 4! + … + 1 / n!,
//主函数中输入n值,求sn的结果。
#include 

double hanshu(int n) {
	double sum = 0;
	double fenzi = 1;
	for (int i = 1; i <= n; i++) {
		fenzi *= i;
		sum += 1 / fenzi;
	}
	return sum + 1;
}

int main() {
	int n;
	printf("enter n: ");
	scanf("%d", &n);
	printf("sum= %6lf\n",hanshu(n));
	return 0;
}




//7、写一个函数输出斐波那契数列前10项,并求和
#include
int fib(int n){
	if (n == 1 || n == 2)
		return 1;
	else
		return fib(n - 1) + fib(n - 2);
}
int main(){
	int n = 10, i, j, sum = 0;
	for (i = 1, j = 0; i <= n; i++, j++){
		if (j % 2 == 0 && j != 0)printf("\n");
		printf("%d\t", fib(i));
		sum += fib(i);
	}
	printf("\nsum=%d\n", sum);
}


//8、定义一个求平均成绩的函数,实现在一个一维数组score内放5个学生成绩,
//调用函数求得平均成绩
#include 

double averageScore(int score[], int n) {
	int sum = 0;
	for (int i = 0; i < n; i++) {
		sum += score[i];
	}
	return (double)sum / n;
}

int main() {
	int score[5];
	printf("请输入5个学生成绩:\n");
	for (int i = 0; i < 5; i++) {
		scanf("%d", &score[i]);
	}
	double avg = averageScore(score, 5);
	printf("平均成绩为:%.2lf\n", avg);
	return 0;
}


//9、有两个班级,分别有5和8名学生,定义average(int b[], int n)函数,
//调用average函数,分别求这两个班的学生的平均成绩。
#include 

double average(int b[], int n) {
	int sum = 0;
	for (int i = 0; i < n; i++) {
		sum += b[i];
	}
	return (double)sum / n;
}

int main() {
	int class1[5] = { 85, 90, 88, 92, 87 };
	int class2[8] = { 78, 85, 90, 92, 88, 75, 80, 86 };

	double avg1 = average(class1, 5);
	double avg2 = average(class2, 8);

	printf("第一个班的平均成绩为:%.2lf\n", avg1);
	printf("第二个班的平均成绩为:%.2lf\n", avg2);

	return 0;
}


//10、定义一个函数,实现对字符串的逆序打印。
#include 
#include 

void reversePrint(char *str) {
	int length = strlen(str);
	for (int i = length - 1; i >= 0; i--) {
		printf("%c", str[i]);
	}
	printf("\n");
}

int main() {
	char str[100];
	printf("输入一个字符串:");
	scanf("%s", str);
	printf("原有字符串:%s\n", str);
	printf("逆序后的字符串:");
	reversePrint(str);
	return 0;
}


//11、从键盘为a[5][2]整型数组输入10个整数,
//调用函数找出该二维数组当中的最小值、最大值、平均值,并输出
#include 

void findMinMaxAvg(int a[5][2]) {
	int min = a[0][0];
	int max = a[0][0];
	int sum = 0;

	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 2; j++) {
			if (a[i][j] < min) {
				min = a[i][j];
			}
			if (a[i][j] > max) {
				max = a[i][j];
			}
			sum += a[i][j];
		}
	}

	double avg = (double)sum / 10;

	printf("二维数组:\n");
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 2; j++) {
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}

	printf("最小值:%d\n", min);
	printf("最大值:%d\n", max);
	printf("平均值:%.2lf\n", avg);
}

int main() {
	int a[5][2];
	printf("请输入10个整数:\n");
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 2; j++) {
			scanf("%d", &a[i][j]);
		}
	}

	findMinMaxAvg(a);

	return 0;
}



//12、写一个函数,使给定的3 * 3的二维数组转置,即行列互换。
#include 

void transpose(int arr[3][3]) {
	int temp;
	for (int i = 0; i < 3; i++) {
		for (int j = i + 1; j < 3; j++) {
			temp = arr[i][j];
			arr[i][j] = arr[j][i];
			arr[j][i] = temp;
		}
	}
}

int main() {
	int arr[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

	printf("转置前的数组:\n");
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}

	transpose(arr);

	printf("转置后的数组:\n");
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}

	return 0;
}

//13、编写函数求区间[100, 500]中所有的回文数。
#include 
int huiwen(int n){
	int flag = 1;
	int g, b;
	g = n % 10;
	b = n / 100;
	if (g == b)
		flag = 1;
	else
	{
		flag = 0;
		return flag;
	}
}
int  main(){
	int i;
	for (i = 100; i <= 500; i++){
		if (huiwen(i))
			printf(" %d", i);
	}
}




//14.输入4个学生3门课的成绩,分别用函数实现下列功能:
#include 

// 计算所有分数的平均值
float calculateTotalAverage(int scores[][3], int numStudents) {
	float total = 0;
	for (int i = 0; i < numStudents; i++) {
		for (int j = 0; j < 3; j++) {
			total += scores[i][j];
		}
	}
	return total / (numStudents * 3);
}

// 计算每个学生的平均分
void calculateStudentAverages(int scores[][3], int numStudents) {
	printf("每个学生的平均分:\n");
	for (int i = 0; i < numStudents; i++) {
		float average = 0;
		for (int j = 0; j < 3; j++) {
			average += scores[i][j];
		}
		average /= 3;
		printf("学生 %c 的平均分为 %.2f\n", 'A' + i, average);
	}
}

// 计算每门课程的平均分
void calculateSubjectAverages(int scores[][3], int numStudents) {
	printf("每门课程的平均分:\n");
	for (int j = 0; j < 3; j++) {
		float average = 0;
		for (int i = 0; i < numStudents; i++) {
			average += scores[i][j];
		}
		average /= numStudents;
		printf("第 %d 门课程的平均分为 %.2f\n", j + 1, average);
	}
}

int main() {
	int scores[4][3] = {
		{ 80, 90, 70 },
		{ 88, 76, 100 },
		{ 90, 90, 70 },
		{ 100, 70, 90 }
	};

	float totalAverage = calculateTotalAverage(scores, 4);
	printf("所有分数的平均值为 %.2f\n", totalAverage);

	calculateStudentAverages(scores, 4);

	calculateSubjectAverages(scores, 4);

	return 0;
}

你可能感兴趣的:(C程序,算法,c语言,图论)