大学生必备C语言基础练习题目来了(四)(建议收藏哦)❤️

题目1. 编程求x的y次方,fun函数实现x的y次方的计算,main函数中调用fun函数,计算4的3次方的值。请画出函数fun的流程图。

流程图:

image-20210911162040845

实现代码:

#include<stdio.h>
#include<math.h>
void main()
{
 //定义fun函数
 double fun(int x, int y);
 int x, y;
 double z;
 printf("请分别输入x,y的值:");
 scanf("%d %d",&x,&y);
 z = fun(x,y);      //调用fun函数
 printf("%d的%d次方 = %lf\n" , x,y,z);

}

double fun(int x, int y)
{
   double pow(double x, double y);
   double m = 0;
   m = pow(x,y);   //求次方函数
   return m;
}

运行结果:
image-20210911163144834


题目2. 编写一个判断素数的函数fun,在主函数中计算1000以内所有素数的平均值并输出。请画出判断素数函数的流程图。

流程图:

image-20210911162214305

实现代码:

#include<stdio.h>
int fun(int x)
{
    int i;
    for (i=2;i<x;i++)
    {
      if (x%i == 0)
      {
       return 0;
      }
    }
       return 1;
}
void main()
{
   int i;
   float avg = 0,count = 0,sum = 0;
   for(i=2;i<=1000;i++)
   {
     if(fun(i))
	 {
	   count ++;
	   sum += i;
	 }  
   }
       avg = sum / count;
       printf("平均数为:%lf\n",avg);
}

运行结果:
image-20210911163154787


题目3.编写四个函数,分别计算NN矩阵转置、平均值、对角线元素之和、周边元素之和。在主程序中调用这四个函数并输出结果。NN矩阵的数值从键盘输入。请画出求N*N矩阵转置函数的流程图。

流程图:

image-20210911162242797
实现代码:

#include<stdio.h>
#define N 3
//转置函数
int transp(int a[N][N])
{
	int i,j,b[N][N];
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			b[j][i]=a[i][j];
		}
	}
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++){
		   printf("%3d ",b[i][j]);
		}
		 printf("\n");
	}
	return 0;
}
//平均值
double average(int a[N][N])
{
	int i,j;
	double avg,sum=0,count=0;
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			sum += a[i][j];
			count++;
		}
	}
	avg = sum / count;
	return avg;
}

//对角线元素之和
int diagonal_sum(int a[N][N])
{
	int i,j, s = 0;
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			if(i == j)
			{
			  s += a[i][j];
			}
		}
		s += a[i][N-i-1];
	}
	if(N % 2 == 1)
	{
	  s -= a[N/2][N/2];
	}
	return s;
}

//周边元素之和
int round_sum(int a[N][N])
{
	int i, s = 0;
	for (i = 0;i < N;i++)
		s += a[0][i] + a[N - 1][i]; //第一行和最后一行的数据
	for (i = 1;i < N - 1;i++)      
		s += a[i][0] + a[i][N - 1]; //第一列的第二个数开始和最后一列的第二个数开始
	return s;
}

void main()
{
	int a[N][N];
	int i,j;
	int sum1,sum2;
	double avg1;
	for(i = 0; i < N; i++){
		for(j = 0; j < N; j++){
		   scanf("%d",&a[i][j]);
		}
	}
	sum1 = round_sum(a); 
	printf("周边元素之和: %d\n",sum1);
	sum2 = diagonal_sum(a); 
	printf("对角线元素之和: %d\n",sum2);
	avg1 = average(a); 
	printf("平均数: %lf\n",avg1);
	printf("转置矩阵: \n");
	transp(a);
}

运行结果:
image-20210911163205179


题目4. 编写一个函数,使用递归方法求阶乘n!。在主程序中调用这个函数并输出结果。n从键盘输入。请画出递归函数的流程图。

流程图:

image-20210911162341598
实现代码:

#include<stdio.h>
int recursion(int n)
{
   if (n <0)
   {
      printf("n<0,输入错误请输入大于0的数 \n");
   }
   else if(n==0 || n==1)
   {
      return 1;
   }
   else
   {
      return n*recursion(n - 1);
   }
}

void main()
{
   int n,result=0;
   printf("请输入一个正整数: ");
   scanf("%d", &n);
   result = recursion(n);
   printf("result=%d\n",result);
}

运行结果:
image-20210911163212017


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码上言

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值