-
分别定义函数求圆的面积和周长。
-
写一个函数,分别求三个数当中的最大数。
-
写一个函数,计算输入n个数的乘积
-
一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息
-
写一个函数求n! ,利用该函数求1!+2!+3!+4!+。。。+10!的和。
-
Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!,主函数中输入n值,求sn的结果。
-
写一个函数输出斐波那契数列前10项,并求和
-
8、定义一个求平均成绩的函数,实现在一个一维数组score内放5个学生成绩,调用函数求得平均成绩
-
有两个班级,分别有5和8名学生,定义average(int b[],int n)函数,调用average函数,分别求这两个班的学生的平均成绩。
-
定义一个函数,实现对字符串的逆序打印。
-
从键盘为a[5][2]整型数组输入10个整数,调用函数找出该二维数组当中的最小值、最大值、平均值,并输出
-
写一个函数,使给定的3*3的二维数组转置,即行列互换。
-
编写函数求区间[100,500]中所有的回文数。
-
(附加题)输入4个学生3门课的成绩,分别用函数实现下列功能:
//1、分别定义函数求圆的面积和周长。
#include<stdio.h>
#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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
#include <stdbool.h>
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<stdio.h>
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 <stdio.h>
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<stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
#include <string.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
// 计算所有分数的平均值
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;
}