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

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

题目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);
}

运行结果:

目录
相关文章
|
5月前
|
算法 C语言 容器
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(上)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
42 0
|
5月前
|
C语言
C语言指针——练习
C语言指针——练习
|
2月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
4月前
|
C语言
C语言练习代码第一篇
C语言练习代码第一篇
|
4月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
42 1
|
4月前
|
C语言
|
4月前
|
编译器 C语言
|
4月前
|
C语言
|
5月前
|
存储 前端开发 算法
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(下)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
16 0
|
4月前
|
C语言
c语言循环题目
c语言循环题目