大计基编程题(第十三周)
排序算法
如果不太了解各种排序算法可以参考菜鸟教程(希望对你有帮助)
菜鸟教程排序算法
题目
- 排序算法
- 题目一
- 题目描述
- 题解
- 题目二
- 题目描述
- 题解
- 题目三
- 题目描述
- 题解
- 题目四
- 题目描述
- 题解
- 题目五
- 题目描述
- 题解
- 题目六
- 题目描述
- 题解
- 题目七
- 题目描述
- 题解
题目一
题目描述
创建一个字符线性表(顺序表),并实现其基本操作(如插入,查找,删除,输出等)。应用该线性表,将键盘输入的一行字符插入表中,然后输出表中所有字符及表长;再输入一个字符,从表中删除该字符(重复出现应进行多次删除),最后再次输出表中所有字符及表长。
输入样例:
ABCBBDEF 12XYZBA
输出样例:
ABCBBDEF 12XYZBA
16
再输入:
B
则输出为:
ACDEF 12XYZA
12
题解
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>int main() {char save[1000];//创建一个字符线性表gets(save);char save1[1000];char b,j=0;scanf("%c", &b);for (size_t i = 0; i < strlen(save); i++){if (save[i]!=b){save1[j] = save[i];j++;}}save1[j] = '\0';printf("%s\n%d\n", save, strlen(save));printf("%s\n%d", save1, j);return 0;
}
题目二
题目描述
编写函数,函数原型如下:
void fun(int n,char res[]);
函数功能是将整数n的各位数字逆序排列,存放到res字符数组中。
例如整数1035,逆序后为5301
程序测试举例,如输入:
9680200
则输出:
0020869
题解
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>void fun(int n, char res[]) {int i = 0;while (n!=0){res[i] = (n % 10 + '0');n /= 10;i++;}
}
int main() {int num;scanf("%d", &num);char res[100] = { '\0' };fun(num, res);printf("%s", res);return 0;
}
题目三
题目描述
某部队进行新兵队列训练,将新兵从1开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始1至2报数,凡报到2的出列,剩下的向小序号方向靠拢,再从头开始进行1至3报数,凡报到3的出列,剩下的向小序号方向靠拢,继续从头开始进行1至2报数,以后从头开始轮流进行1至2报数、1至3报数直到剩下的人数不超过三人为止。编写程序,输入数N为最开始的新兵人数(20 < N < 6000),输出剩下的新兵最初的编号。
输入样例:
21
输出样例:
1 7 19
题解
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>//删除数组中序号为(2n-1)的数
int delete2(int array[],int n) { int array1[6000];int num = n;for (size_t i = 0,j=0; i < n; i++){if ((i + 1) % 2 != 0){array1[j] = array[i];j++;}else num--;}for (size_t i = 0; i < num; i++){array[i] = array1[i];}return num;
}
//删除数组中序号为2n的数
int delete3(int array[], int n) {int num=n;int array1[6000];for (size_t i = 0, j = 0; i < n; i++){if ((i + 1) % 3 != 0){array1[j] = array[i];j++;}else num--;}for (size_t i = 0; i < num; i++){array[i] = array1[i];}return num;
}
int main() {int num;scanf("%d", &num);int n = num;int array[6000];for (size_t i = 0; i < num; i++){array[i] = i+1;}while (n>3){n = delete2(array,n);if (n<=3){break;}n = delete3(array,n);}for (size_t i = 0; i < n-1; i++){printf("%d ", array[i]);}printf("%d", array[n-1]);
}
题目四
题目描述
题目描述:
编写字符串反转函数void mystrrev(char string[]),该函数的功能为将指定字符串中的字符顺序颠倒排列,然后再编写主函数调用该反转函数验证之。
输入输出格式:
输入: 任意一个字符串,可能含有空格
输出: 逆序后的字符串
样例:
输入:
Hello,everyone
输出:
enoyreve,olleH
题解
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void mystrrev(char string[]) {char string1[1000];int i = 0;for (i; i < strlen(string); i++){string1[i] = string[strlen(string) - 1 - i];}for (int j=0; j< i; j++){string[j] = string1[j];}
}
int main() {char string[1000];gets(string);mystrrev(string);printf("%s", string);
}
题目五
题目描述
题目描述:
一个数组A中存有n(n>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移m(m>=0)个位置,即将A中的数据由(A0 A1……An-1)变换为(An-m …… An-1 A0 A1……An-m-1)(最后m个数循环移至最前面的m个数)。输入n ( 1<=n<=100)、m(m>=0)及n个整数,输出循环右移m位以后的整数序列。
输入输出格式:
输入:
第一行依次输入数组元素的个数和移动的位数
第二行输入数组
输出:
移位后的数组
样例
6 2
1 2 3 4 5 6
5 6 1 2 3 4
题解
#include<stdio.h>
int main(){int n,m;scanf("%d %d",&n,&m);int a[100];for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=1;i<=m;i++){ //拆分成m次每次只向右移动一位int temp=a[n-1];for(int j=n-1;j>0;j--){a[j]=a[j-1];}a[0]=temp;}for(int i=0;i<n-1;i++){printf("%d ",a[i]);}printf("%d",a[n-1]);return 0;
}
题目六
题目描述
题目描述:
编写字符查找函数,函数原形为:
int mystrchr(char string[],char c);
功能是在字符串string中查找c中的字符,如果找到则返回该字符的索引值(即下标,否则返回-1)。
编写主函数进行测试。输入一个字符串数据(长度<80)和一个字符,输出该字符的序号(从0开始)。
样例:
输入为:
asdffg & *123 hjkl
f
输出为:
3
题解
#include<stdio.h>
int mystrchr(char string[], char c) //声明函数
{int result;for (int i = 0; i < 80; i++){if (string[i] == c){return i;}}return -1;
}int main()
{char string[80], c;gets(string); scanf("%c", &c); //依次输入数组和字符printf("%d", mystrchr(string, c)); //mystrchr(string, c)就是函数中result的值return 0;
}
题目七
题目描述
Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, “helloworld!” can be printed as:
h !
e d
l l
lowor
That is, the characters must be printed in the original order, starting top-down from the left vertical line with n1characters, then left to right along the bottom line with n2 characters, and finally bottom-up along the vertical line with n3 characters. And more, we would like U to be as squared as possible – that is, it must be satisfied that n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 - 2 = N.
Input Specification: Each input file contains one test case. Each case contains one string with no less than 5 and no more than 80 characters in a line. The string contains no white space. Output Specification: For each test case, print the input string in the shape of U as specified in the description.
Sample Input:
helloworld!
Sample Output:
h !
e d
l l
lowor
题解
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{char a[90];gets(a);int t = (strlen(a) + 2) / 3;for (int i = 0; i < t; i++){printf("%c", a[i]);if (i != t - 1){for (int j = 0; j < (strlen(a) - 2 * t); j++)printf(" ");printf("%c", a[strlen(a) - 1 - i]);}else for (int k = t; k <= (strlen(a) - t); k++)printf("%c", a[k]);printf("\n");}
}
大计基编程题(第十三周)相关推荐
- 中国大学MOOC C语言程序设计(大连理工大学) 课后编程题 第十三周题解(个人向仅供参考)
第十三周 结构与共用体 1 某班有5名同学,建立一个学生的简单信息表,包括学号.姓名.3门课程的成绩,编写程序,计算每名学生的平均成绩及名次.(30分) 题目内容: 某班有5名同学,建立一个学生的简单 ...
- 大计基编程题(第十一周)
题目 题目一 题目描述 题解 题目二 题目描述 题解 题目三 题目描述 题解 题目四 题目描述 题解 题目五 题目描述 题解 题目六 题目描述 题解 题目七 题目描述 题解 题目一 题目描述 编写函数 ...
- 大计基编程题(第十周)
第一题 叛逆期的小明什么都喜欢反着做,连看数字也是如此(负号除外),比如: 小明会把1234它看成4321:把-1234看成-4321:把230看成032 (032=32):把-230看成-032(- ...
- 大计基编程题(第十二周)
排序算法 如果不太了解各种排序算法可以参考菜鸟教程(希望对你有帮助) 菜鸟教程排序算法 题目 排序算法 题目一 题目描述 题解 题目二 题目描述 题解 题目三 题目描述 题解 题目四 题目描述 题解 ...
- C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入
例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...
- C语言编程>第十三周 ⑧ 已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:
例题:已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部, ...
- C语言编程>第二十三周 ⑤ 请补充main函数,该函数的功能是:求1~100(不包括100)以内所有素数的平均值。
例题:请补充main函数,该函数的功能是:求1-100(不包括100)以内所有素数的平均值. 仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容. 代码如下: #include< ...
- XJTU第十三周大计基编程作业
1. 字符线性表 ________________________________________ 创建一个字符线性表(顺序表),并实现其基本操作(如插入,查找,删除,输出等).应用该线性表,将键盘输 ...
- XJTU第八周大计基编程作业
1. 题目描述: 输入总秒数,转换为相应的时.分.秒.提示:在输出时,请使用下面的格式(变量名不要求一样): printf("%d:%02d:%02d\n", h, m, s); ...
最新文章
- R语言Logistic逐步回归模型案例:分析与冠心病有关的危险因素
- android的oomkiller_Android Low memory killer
- 对Redis配置中bind的探索
- html中div的居中
- python--requests库 安装及简单使用
- bgp属性分析--ORIGIN
- ManualResetEvent使用说明
- 50漂亮的后台管理界面模板
- iPad连蓝牙鼠标鼠标滚动与屏幕相反的解决方法
- CubeMX中配置外设引脚重映射
- Python写的我的世界源码
- iOS中app在iTunes中更新版本流程
- 靠本事整塌,靠苦逼重搭
- LeetCode 1218 最长定差子序列
- 你好,你是谁,可不可以向我出示源代码让我确认身份
- 10-124 A3-4查询产品表中最大库存量
- 释放已删除的InnoDB磁盘空间
- macosx10.13运行go报dyld: Symbol not found: _SecTrustEvaluateWithError错误的解决办法
- ROS实践3:publisher模板教程
- Android简易实战教程--第三十二话《使用Lrucache和NetworkImageView加载图片》