本文已参与「新人创作礼」活动,一起开启掘金创作之路。
题目1. 编程求x的y次方,fun函数实现x的y次方的计算,main函数中调用fun函数,计算4的3次方的值。请画出函数fun的流程图。
流程图:
实现代码:
#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;
}
运行结果:
题目2. 编写一个判断素数的函数fun,在主函数中计算1000以内所有素数的平均值并输出。请画出判断素数函数的流程图。
流程图:
实现代码:
#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);
}
运行结果:
题目3.编写四个函数,分别计算NN矩阵转置、平均值、对角线元素之和、周边元素之和。在主程序中调用这四个函数并输出结果。NN矩阵的数值从键盘输入。请画出求N*N矩阵转置函数的流程图。
流程图:
实现代码:
#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);
}
运行结果:
题目4. 编写一个函数,使用递归方法求阶乘n!。在主程序中调用这个函数并输出结果。n从键盘输入。请画出递归函数的流程图。
流程图:
实现代码:
#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);
}
运行结果:
动动小手点个赞,关注走一波。有什么问题欢迎和我交流。或者关注我的微信公众号码上言
获得更多的学习。