C语言期末程序基础复习题(一)

简介: C语言期末程序基础复习题(一)

第一题

把偶数从数组中删除,把奇数个数通过函数值返回。

例如:若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除偶数后a所指数组中的数据为:9,1,3,5,7,返回值为5:数组中的奇数按顺序依次存放到a[0]、a[1]、a[2]…中,把偶数从数组中删除,把奇数个数通过函数值返回。

例如:若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除偶数后a所指数组中的数据为:9,1,3,5,7,返回值为5。

思路

采用数组双下标

1.下标 i, 表示原数组的下标, arr[i] 就表示原数组这个位置对应的数

2.下标j, 用来记录数组中的奇数, arr[j]

3.通过赋值操作

arr[j] = arr[i] ,将原数组中的奇数赋给arr[j]中

代码

#include<stdio.h>
#define N 9
int sort(int arr[], int n)
{
  int i = 0, j = 0;;
  for (i = 0; i < n; i++)
  {
    if (arr[i] % 2 == 1)
    {
      arr[j] = arr[i];
      j++;
    }
  }
  return j;
}
int main()
{
  int arr[N] = { 9, 1, 4, 2, 3, 6, 5, 8, 7 };
  int ret = sort(arr, N);
  for (int i = 0; i < ret; i++)
  {
    printf("%d ", arr[i]);
  }
  printf("奇数共有%d个\n", ret);
}

第二题

求两个非零正整数的最大公约数,并作为函数值返回。

例如:若num1和num2分别为49和21,则输出的最大公约数是7;

num1和num2分别为27和81,则输出的最大公约数是27;

思路

辗转相除法

1.用较大的数(a) 除 较小的数(b) ,求出所得余数©

a % b = c;

2. 让上一个除数 除以 上个 余数 , b % c = 余数

反复这样直到余数为0时,此时的上个除数就为这两个数的最大公约数

代码

//方法一:辗转相除法
#include<stdio.h>
int fun(int a, int b)
{
  if (a < b)
  {
    int t = a;
    a = b;
    b = t;
  }
  int r = a % b;
  while (r != 0)
  {
    a = b;
    b = r;
    r = a % b;
  }
  return b;
}
int main()
{
  int num1, num2;
  scanf_s("%d%d", &num1, &num2);
  int ret = fun(num1, num2);
  printf("最大公约数为%d", ret);
  return 0;
}

扩展

两个数的乘积 = 最大公因数 * 最小公倍数

会算最大公因数, 那么最小公倍数也自然会算了

第三题

请编写函数fun,其功能是:找出2 × 4整型二维数组中最大元素的值,并将此值返回调用函数

案例

int arr[2] [M] = {5, 8, 3, 45, 76, -4, 12, 82};

思路

这道题很简单

1.就先定义一个max,
2.然后与二维数组中的每个数进行比较

3.如果比max大 ,那么就将值赋给max,然后返回max

代码

# define M 4
# include <stdio.h>
int fun(int a[][M])
{
    int max = a[0][0];
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < M; j++)
        {
            if (max < a[i][j])
            {
                max = a[i][j];
            }
        }
    }
    return max;
}
void main()
{
    int arr[2][M] = { 5, 8, 3, 45, 76, -4, 12, 82 };
    printf("max = %d\n", fun(arr));
    return 0;
}


相关文章
|
11月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
177 1
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
239 1
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
|
10月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
268 5
|
10月前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
271 4
|
10月前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
223 2
|
10月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
246 1
|
10月前
|
程序员 C语言
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门。本文深入探讨了指针的基本概念、声明方式、动态内存分配、函数参数传递、指针运算及与数组和函数的关系,强调了正确使用指针的重要性,并鼓励读者通过实践掌握这一关键技能。
197 1
|
11月前
|
C语言
大学生期末C语言实验(学生成绩和鞍点)
大学生期末C语言实验(学生成绩和鞍点)
407 0
大学生期末C语言实验(学生成绩和鞍点)
|
存储 编译器 程序员
C语言程序的基本结构
C语言程序的基本结构包括:1)预处理指令,如 `#include` 和 `#define`;2)主函数 `main()`,程序从这里开始执行;3)函数声明与定义,执行特定任务的代码块;4)变量声明与初始化,用于存储数据;5)语句和表达式,构成程序基本执行单位;6)注释,解释代码功能。示例代码展示了这些组成部分的应用。
525 10