C语言经典题目(21)

简介: C语言经典题目(21)

模拟题(一)

1.设计程序实现比较两数大小

设计程序实现比较两数大小,若相等,输出两数相等;若不等,则输出较大值。

方法一:正常使用else if语句逐个比较

#include<stdio.h>
int main()
{
    int a, b,max;
    printf("请输入两个数:");
    scanf("%d %d", &a, &b);
    max = a;
    if (a == b)
        printf("两个数相等!");
    else if (a > b)
    {
        printf("最大值为:%d", max);
    }
    else
    {
        max = b;
        printf("最大值为:%d", max);
    }
    return 0;
}

方法二:使用三目运算符

#include<stdio.h>
int main()
{
    int a, b;
    printf("请输入两个数:");
    scanf("%d %d", &a, &b);
    if (a == b)
        printf("这两个数相等!");
    else
    {
        int max = a > b ? a : b;
        printf("最大值为:%d", max);
    }
    return 0;
}

2.排序成绩

从键盘输入10名学生的成绩数据,按成绩从高到低的顺序排列并输出。(提示:用数组存放成绩数据)

主要考排序算法,排序算法一共有十种,这里我就写个三种我常用的吧。

方法一:快速排序法

#include<stdio.h>
void quick_sort(int q[], int l, int r)
{
    if (l >= r) return;
    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j)
    {
        do i++; while (q[i] > x);
        do j--; while (q[j] < x);
        if (i < j)
        {
            int tmp;
            tmp = q[i];
            q[i] = q[j];
            q[j] = tmp;
        }
    }
    quick_sort(q, l, j), quick_sort(q, j + 1, r);
}
int main()
{
    int arr[10];
    printf("请依次输入十名同学的成绩:\n");
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    quick_sort(arr, 0, 9);
    for (int i = 0; i < 10; i++)
    {
        printf("%d  ", arr[i]);
    }
    return 0;
}

方法二:冒泡排序法

#include<stdio.h>
void bubble_sort(int arr[], int len) {
    int i, j, temp;
    for (i = 0; i < len - 1; i++)
        for (j = 0; j < len - 1 - i; j++)
            if (arr[j] < arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
}
int main()
{
    int arr[10];
    int len = sizeof(arr) / sizeof(arr[0]);
    printf("请依次输入十名同学的成绩:\n");
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    bubble_sort(arr, len);
    for (int i = 0; i < 10; i++)
    {
        printf("%d  ", arr[i]);
    }
    return 0;
}

方法三:希尔排序

#include<stdio.h>
void shell_sort(int arr[], int len) {
    int gap, i, j;
    int temp;
    for (gap = len >> 1; gap > 0; gap >>= 1)
        for (i = gap; i < len; i++) {
            temp = arr[i];
            for (j = i - gap; j >= 0 && arr[j] < temp; j -= gap)
                arr[j + gap] = arr[j];
            arr[j + gap] = temp;
        }
}
int main()
{
    int arr[10];
    int len = sizeof(arr) / sizeof(arr[0]);
    printf("请依次输入十名同学的成绩:\n");
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    shell_sort(arr, len);
    for (int i = 0; i < 10; i++)
    {
        printf("%d  ", arr[i]);
    }
    return 0;
}

模拟题(二)

1.求最大值与平均值

输入5个数,求它们中最大值和平均值并输出。

#include<stdio.h>
int main()
{
    int arr[5], max;
    float ave;
    float sum = 0.0;
    for (int i = 0; i < 5; i++)
        scanf("%d", &arr[i]);
    max = arr[0];
    
    for (int i = 0; i < 5; i++)
    {
        sum += arr[i];
        if (max < arr[i])
            max = arr[i];
    }
    ave = sum / 5;
    printf("最大值是:%d 平均值是:%f", max, ave);
    return 0;
}

2.找二维数组的最小值下标

从键盘上输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标。

#include <stdio.h>
int main() 
{
    int a[4][3] = {0};
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    int row = 0, col= 0;
    for (int i = 0; i < 4; i++)
        for (int j = 0; j < 3; j++)
            if (a[i][j] < a[row][col])
            {
                row = i;
                col = j;
            }
    printf("该数组的最小的数是%d\n", a[row][col]);
    printf("所处的位置为数组的第%d行第%d列\n", row + 1, col + 1);
}
** 二维数组需要两个for循环进行控制,一个控制行,一个控制列。
其他的和求一维数组的最小值和下标没多大的区别。
**
相关文章
|
8月前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
8月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
53 1
2.C语言题目---字符串左旋
2.C语言题目---字符串左旋
83 1
|
3月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
存储
1.C语言题目---指针类(基础)
1.C语言题目---指针类(基础)
76 1
|
5月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
7月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
57 1
|
8月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
7月前
|
C语言
c语言循环题目
c语言循环题目
|
8月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)

热门文章

最新文章