C语言百日刷题第十四天
创始人
2024-04-20 00:02:19
0

前言

今天是刷题第14天,放弃不难,但坚持一定很酷~

临近期末,集中把模拟卷的编程题都刷一下

在这里插入图片描述

C语言百日刷题第十四天

  • 前言
  • 模拟题(一)
    • 1.设计程序实现比较两数大小
    • 2.排序成绩
  • 模拟题(二)
    • 1.求最大值与平均值
    • 2.找二维数组的最小值下标
  • 模拟题(三)
    • 1.转置矩阵
    • 2.字符串连接

模拟题(一)

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

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

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

#include
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
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
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
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
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
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 
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循环进行控制,一个控制行,一个控制列。
其他的和求一维数组的最小值和下标没多大的区别。

模拟题(三)

1.转置矩阵

用指针的方法处理:写一个函数,将3*3的整型矩阵转置

转置:第一行变为第一列…最后一行变为最后一列

要求使用指针写这个转置函数,那就使用数组指针来间接进行转置操作

#include
void move(int(*pa)[3])
{int i, j, temp;for (i = 0; i < 3; i++)for (j = 0; j < i; j++){temp = *(*(pa + i) + j);*(*(pa + i) + j) = *(*(pa + j) + i);*(*(pa + j) + i) = temp;}
}
int main()
{int a[3][3];int temp;for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++)scanf("%d", &a[i][j]);printf("转置前的数组为:\n");for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++)printf("%5d ", a[i][j]);printf("\n");}move(a);printf("转置后的数组为:\n");for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++)printf("%5d ", a[i][j]);printf("\n");}return 0;
}

2.字符串连接

用指针的方法处理:写一个函数,将两个字符串连接。

#include
#include
char* my_strcat(char* dest, const char* src)
{char* ret = dest;assert(dest != NULL);assert(src != NULL);  while (*dest){dest++;}while (*dest = *src){dest++;src++;}return ret;
}
int main()
{char str1[30],str2[30];scanf("%s", str1);scanf("%s", str2);my_strcat(str1, str2);printf("连接后的结果为:%s", str1);
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...