题目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); }
运行结果: