
大一上学期基础算法题
文章平均质量分 59
学习C语言
~嘘~禁止想象~
~嘘
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
定义一个数组,用函数交换数组中的两个元素(C语言)
定义一个数组,用函数交换数组中的两个元素#include <stdio.h>void swap(int *a, int *b);int main(void){ int Array[]={1,2,3,4,5}; swap(Array+1, Array+3); for(int i=0; i<5; i++){ printf("%d " ,Array[i]); } ...原创 2020-03-08 11:10:12 · 5885 阅读 · 1 评论 -
选猴王(约瑟夫问题)
选猴王一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?整体思路: 建立头尾相连的链表,将每个猴子编号,循环筛选。#include <stdio.h>...原创 2020-03-04 21:46:48 · 1347 阅读 · 3 评论 -
判断一个数是否是完数
#include <stdio.h>void swap(int*p,int*q);int main(){ int k=0,i,n; scanf("%d",&n); int a[n]; for(i=2;i<n;i++) { if(n%i==0) { a[k++]=i; } } int s=1; for(i=0;i<k;i+...原创 2019-11-08 17:20:35 · 655 阅读 · 0 评论 -
指针求最大值最小值
#include <stdio.h>void minmax(int a[],int len,int *min,int *max);int main(){ int a[]={2,1,3,4,5,6,7,8,9}; int min,max; minmax(a,sizeof(a)/sizeof(a[0]),&min,&max); printf("%p\n",a)...原创 2019-11-09 11:46:07 · 1272 阅读 · 0 评论 -
空心三角
#include <stdio.h>int main(){int i,n,k ;scanf("%d",&n);for(i=1;i<=n;i++){for(k=1;k<=n-i;k++){printf(" “);}for(k=1;k<=2i-1;k++){if(k1 || k2i-1 || i==n)printf(”*");else...原创 2019-11-09 18:20:05 · 199 阅读 · 0 评论 -
冒泡排序
#include <stdio.h>int pai(int a[],int len);int main(void){ int a[]={1,5,6,9,8,7,2,3,12,46,56,78,98}; int len=sizeof(a)/sizeof(a[0]); pai(a,len); for(int i=0;i<len;i++) { printf("%d ...原创 2019-11-11 23:28:41 · 149 阅读 · 0 评论 -
斐波那契数列 递归
//斐波那契数列 #include <stdio.h>int f(int n);int main(){ int n; for(n=1;n<10;n++) printf("%d ",f(n));}int f(int n){ if(n==0) return 0; if(n==1) return 1; if(n>1) return f(n-...原创 2019-11-12 14:12:55 · 168 阅读 · 0 评论 -
阶乘 递归
#include <stdio.h>int jie(int n); int main(){ int n; scanf("%d",&n); printf("%d",jie(n));}int jie(int n){ if(n==0) return 1; else return n*jie(n-1);}原创 2019-11-12 23:20:10 · 148 阅读 · 0 评论 -
7-1 查找整数 (25 分)
7-1 查找整数 (25 分)本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。输入格式:输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。输出格式:在一行中输出X的位置,或者“Not Found”。输入样例1:5 73 5 7 1 9输出样例1:2输入样...原创 2019-11-27 18:08:56 · 4342 阅读 · 4 评论 -
7-2 将数组中的数逆序存放 (25 分)
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。输入格式:输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。输入样例:410 8 1 2输出样例:2 1 8 10#include <stdio.h&g...原创 2019-11-28 00:02:26 · 11367 阅读 · 5 评论 -
7-3 选择法排序 (25 分)
本题要求将给定的n个整数从大到小排序后输出。输入格式:输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。输出格式:在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。输入样例:45 1 7 6输出样例:7 6 5 1#include <stdio.h>int main(){ int n,i,k; scanf("...原创 2019-11-28 00:13:19 · 4219 阅读 · 0 评论 -
7-2 求组合数 (20 分)
本题要求编写程序,根据公式Cnm =m!(n−m)!n! 算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。输入格式:输入在一行中给出两个正整数m和n(m≤n),以空格分隔。输出格式:按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围...原创 2019-11-30 11:52:14 · 3427 阅读 · 0 评论 -
7-3 判断素数 (10 分)
本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式:输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231 的需要判断的正整数。输出格式:对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。输入样例:211111输出样例:YesNo#include <stdio.h>#include <mat...原创 2019-11-30 11:54:55 · 6878 阅读 · 0 评论 -
7-5 寻找完美数* (30 分)
所有真因子之和小于其本身的数称为亏数。如:4 的真因子 1、2 之和为 3,小于 4,是亏数。所有真因子之和大于其本身的数称为盈数。如:12 的真因子 1、2、3、4、6 之和为 16,大于 12,是盈数。不盈不亏的数,即:所有真因子之和等于其本身的数,称为完美数。如:6 的真因子 1、2、3 之和恰为 6,是完美数。请编写程序,显示指定范围内的完美数。输入格式两个正整数 a 和 b,且...原创 2019-11-30 12:05:12 · 4178 阅读 · 0 评论 -
EOF
在输入回车键时不结束,直到输入EOF之后才结束。结束方式linux系统下,在输入回车换行后的空行位置,按 ctrl+d (先按ctrl键,不放,再按d键)windows系统下,在输入回车换行后的空行位置,按 ctrl+z例一#include <stdio.h>int main(void){ int c; while((c=getchar())!=EOF) { ...原创 2019-12-19 15:29:48 · 271 阅读 · 0 评论 -
将数组中的数向后移
例#include <stdio.h>int main(void){ int a[10]={1,2,3,4,5,6,7,8,9,10}; int i,k,temp; for(i=0;i<向后移动几位;i++) { temp=a[数组中最后一位]; //备份 for(k=10;k>0;k--) { a[k]=a[k-1]; //向后移...原创 2019-12-19 16:52:02 · 6923 阅读 · 1 评论 -
6-6 数组循环右移 (20分)
本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0 a1 ⋯an−1 )变换为(an−m ⋯an−1 a0 a1 ⋯an−m−1 )(最后m个数循环移至最前面的m个位置)。函数接口定义:int ArrayShift( i...原创 2019-12-19 16:52:57 · 6142 阅读 · 0 评论 -
6-4 二分查找 (15分)
已有一个10个元素的整形数组a,且按值从小到大有序。输入一个整数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出"Not Found"。。 要求编写函数int Bsearch(int *p, int n, int x),找到返回下标,找不到返回-1。函数接口定义:int Bsearch(int *p, int n, int x);其中 p是数组首地址,n是数组元素个数,x是要查找...原创 2019-12-19 17:43:57 · 6093 阅读 · 0 评论 -
6-4 输入年份和天数,输出对应的年、月、日 (15分)
要求定义和调用函数month_day ( year, yeardy, *pmonth, *pday),通过参数pmonth和pday返回计算得出的月和日。例如,输入2000和61,分别返回3和1,即2000年的第61天是3月1日。函数接口定义:void month_day ( year, yeardy, *pmonth, *pday)其中year是年,yearday是天数,pmonth和pd...原创 2019-12-19 17:45:21 · 6849 阅读 · 0 评论 -
6-4 电码加密 (10分)
为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。要求编写并调用函数encrypt (),按要求修改字符串内容。变换规则如下:小写字母z变换成为a,其他字母变换成为该字母ASCII码顺序后一位的字母,比如o变换成为p。函数接口定义:void encrypt ( char *s);其中 s为字符串首地址。裁判测试程序样例:#include <stdio.h>...原创 2019-12-19 17:46:30 · 5094 阅读 · 0 评论 -
6-8 分类统计各类字符个数 (15分)
本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。函数接口定义:void StringCount( char *s );其中 char *s 是用户传入的字符串。函数StringCount须在一行内按照大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数的格式输出。裁判测试程序样例:#include <stdio.h>#...原创 2019-12-19 17:47:41 · 5719 阅读 · 3 评论 -
6-7 拆分实数的整数与小数部分 (15分)
本题要求实现一个拆分实数的整数与小数部分的简单函数。函数接口定义:void splitfloat( float x, int *intpart, float *fracpart );其中x是被拆分的实数(0≤x<10000),intpart和fracpart分别是将实数x拆分出来的整数部分与小数部分。裁判测试程序样例:#include <stdio.h>void sp...原创 2019-12-19 17:48:27 · 1555 阅读 · 0 评论 -
6-24 使用函数的选择法排序 (25分)
本题要求实现一个用选择法对整数数组进行简单排序的函数。函数接口定义:void sort( int a[], int n );其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。裁判测试程序样例:#include <stdio.h>#define MAXN 10void sort( int a[], int n );...原创 2019-12-19 17:50:30 · 1630 阅读 · 0 评论 -
6-3 在数组中查找指定元素 (30分)
本题要求实现一个在数组中查找指定元素的简单函数。函数接口定义:int search( int list[], int n, int x );其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。裁判测试程序样例:#include <stdio.h>#defi...原创 2019-12-19 17:52:19 · 745 阅读 · 0 评论 -
6-4 冒泡排序 (15分)
输入n(1<=n<=10)个整数,将它们从小到大排序后输出,要求编写函数bubble()实现冒泡排序算法。函数接口定义:void bubble (int a[ ], int n);其中 a为数组,n为数据个数。裁判测试程序样例:#include <stdio.h>void bubble (int a[ ], int n);int main(void){in...原创 2019-12-19 17:53:10 · 8439 阅读 · 0 评论 -
7-1 组织星期信息 (25分)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:定义一个指针数组将下面的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1。Sunday Monday Tuesday Wednesday Thursday Friday Saturday输入输出示例:括号内为说明,无需输入输出输入样例 (repeat=3...原创 2019-12-20 18:05:02 · 651 阅读 · 0 评论 -
7-1 英文单词排序 (25分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。输入格式:输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。输出格式:输出为排序后的结果,每个单词后面都额外输出一个空格。输入样例:blueredyellowgreenpurple输出...原创 2019-12-27 20:52:01 · 967 阅读 · 0 评论 -
7-2 藏头诗 (15分)
本题要求编写一个解密藏头诗的程序。输入格式:输入为一首中文藏头诗,一共四句,每句一行。注意:一个汉字占两个字节。输出格式:取出每句的第一个汉字并连接在一起形成一个字符串并输出。同时在末尾输入一个换行符。输入样例:一叶轻舟向东流帆稍轻握杨柳手风纤碧波微起舞顺水任从雅客流输出样例:一帆风顺#include <stdio.h>#include<stdlib.h...原创 2019-12-27 20:53:53 · 2923 阅读 · 0 评论 -
6-13 计算最长的字符串长度 (15分)
6-13 计算最长的字符串长度 (15分)本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。函数接口定义:int max_len( char *s[], int n );其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。裁判测试程序样例:#include <stdio.h>#include <string.h>...原创 2019-12-27 21:23:19 · 1955 阅读 · 0 评论 -
5-1 本题要求在一维数组a中将x插入到下标为i(i>=0)的元素前。如果i>=元素的个数,则x插入到末尾。
原创 2019-12-28 15:04:17 · 8463 阅读 · 2 评论 -
5-3 本程序在数组中同时查找最大元素和最小元素的下标,分别存放在函数main()的max和min变量中。
原创 2019-12-28 15:05:58 · 9522 阅读 · 0 评论 -
5-5 本程序的功能是将字符串a的所有字符传送到字符串b中,要求每传送三个字符后再存放一个空格。
第一空(i-1)%3!=0 || i-1==0第二空(i-1)%3==0原创 2019-12-28 15:08:16 · 13798 阅读 · 4 评论 -
6-1 建立学生信息链表 (20分)
本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。函数接口定义:void input();该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:struct stud_node {int num; /学号/char name[20]; /姓名/int sco...原创 2019-12-30 22:04:28 · 12888 阅读 · 4 评论 -
6-5 奇数值结点链表 (20分)
6-5 奇数值结点链表 (20分)本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下:struct ListNode {int data;ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *getodd( struct ListNode *...原创 2020-01-02 14:04:29 · 3499 阅读 · 0 评论 -
5-4 本程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将将字符前的原字符往后顺序移动。
原创 2019-12-28 15:45:33 · 10597 阅读 · 4 评论 -
6-7 链表逆置 (20分)
本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:struct ListNode {int data;struct ListNode *next;};函数接口定义:struct ListNode *reverse( struct ListNode *head );其中head是用户传入的链表的头指针;函数reverse将链表head逆置,并返回...原创 2020-01-03 09:56:29 · 6166 阅读 · 2 评论 -
6-6 单链表结点删除 (20分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode {int data;ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *deletem( struct ListNode *L, int m );函数read...原创 2020-01-03 16:31:35 · 5681 阅读 · 2 评论 -
6-4 链表拼接 (20分)
本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下:struct ListNode {int data;struct ListNode *next;};函数接口定义:struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);其中list1和list2是用户传入的两个按data升序链...原创 2020-01-03 22:38:42 · 1522 阅读 · 0 评论 -
头插法
三种方法总结struct ListNode *createlist(){ struct ListNode *head = NULL, *now = NULL; int num; while(1) { scanf("%d",&num); if(num == -1){ return head; } now = (struct ListNode *)mallo...原创 2020-01-04 17:15:30 · 155 阅读 · 0 评论 -
6-21 删除单链表偶数节点 (20分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:struct ListNode {int data;struct ListNode *next;};函数接口定义:struct ListNode *createlist();struct ListNode *deleteeven( struct ListNode *head );函数cr...原创 2020-01-04 18:29:40 · 1348 阅读 · 0 评论