C语言百日刷题第十四天
创始人
2024-03-29 08:55:57

前言

今天是刷题第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);
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...