c语言

C语言习题【10】冒泡排序

て烟熏妆下的殇ゞ 提交于 2020-03-20 23:31:57
冒泡排序(Bubble Sort) ,是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 #include<stdio.h> void sort(int arr[],int len) { int j = 0; for (j = 0; j < len - 1; j++) { int flag = 1; int i = 0; for (i = 0; i < len - 1 - j; i++) { if (arr[i] > arr[i + 1]) { int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; flag = 0; } } if (flag == 1) { break; } } } int main() { int arr[] = { 9,8,7,6,5,4,3,2,1,0 }; int len = sizeof(arr)/sizeof(arr[0]); sort(arr,len

常见c语言字符串题

丶灬走出姿态 提交于 2020-03-20 18:38:37
字符串是程序员求职笔试中必考题型,很能考查出编程的基础。下文选取了几个常见的考题和大家进行分享。 1、编写函数,实现把一个char组成的字符串循环右移n位。如abcdehi,n=2。则输出hiabcde。 #include "iostream" using namespace std; const int MAX_LEN = 20; void LoopMove(char* cpStr, int iSteps) { //注意,在整个处理过程中,cpStr的最后字符都没有涉及处理 char cTempArray[MAX_LEN]; size_t szStrLength = strlen(cpStr); size_t in = szStrLength -iSteps; memcpy(cTempArray, cpStr + in, iSteps); memcpy(cTempArray + iSteps, cpStr, in); memcpy(cpStr, cTempArray, szStrLength); cTempArray[szStrLength + 1] = '\0'; cout << cTempArray << endl; } int main() { char ctemp[] = "abcdefghi"; LoopMove(ctemp, 2); cout << ctemp <<

C语言I博客作业09

浪尽此生 提交于 2020-03-20 18:25:13
这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 C语言I作业09 我在这个课程的目标是 学会编程 这个作业在那个具体方面帮助我实现目标 学会了如何去使用嵌套循环,熟悉了break、continue的使用方法,了解了字符型的输入 参考文献 C语言程序设计I, 百度 1.PTA作业 1.PTA实验作业 1.1换硬币 内容: 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? 输入格式: 输入在一行中给出待换的零钱数额x∈(8,100)。 输出格式: 要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。 输入样例: 13 输出样例: fen5:2, fen2:1, fen1:1, total:4 fen5:1, fen2:3, fen1:2, total:6 fen5:1, fen2:2, fen1:4, total:7 fen5:1, fen2:1, fen1:6, total:8 count = 4 1.1.1数据处理 数据表达:定义整形变量money,count,a,b,c,abc分别代表5分,2分,1分 **数据处理: 输入money for {

c语言实现--单向循环链表操作

白昼怎懂夜的黑 提交于 2020-03-20 11:52:20
1,什么叫单向循环链表。单向循环链表是指在单链表的基础上,表的最后一个元素指向链表头结点,不再是为空。 2,由图可知,单向循环链表的判断条件不再是 表为空了,而变成了是否到表头。 3,链表的结点表示 1 struct LNode 2 { 3 int data; 4 struct LNode * next; 5 }; 6 typedef struct LNode * linklist 4,单向循环链表的操作集合,仍是defs.h里的操作集合,这里就不给出了。 5,单循环链表的初始化操作。示意图 实现: 1 #include"defs.h" 2 3 void InitList(linklist *L) //改变尾指针 4 { 5 *L = (linklist)malloc(sizeof(struct LNode)); //分配头结点 6 if (*L == NULL) //分配失败 7 exit(0); 8 (*L)->next = *L; //指针域指向它本身 9 } 6,清空操作最終图和初始化的结果是一样的。 1 #include"defs.h" 2 3 void ClearList(linklist *L) //改变尾指针 4 { 5 linklist p, q; 6 *L = (*L)->next; //先令尾指针指向头结点,不然释放最后一个结点时尾指针,无法指向头结点 7 p

leetcode61(旋转链表)--C语言实现

ぐ巨炮叔叔 提交于 2020-03-20 00:04:53
3 月,跳不动了?>>> 求: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 示例 2: 输入: 0->1->2->NULL, k = 4 输出: 2->0->1->NULL 解释: 向右旋转 1 步: 2->0->1->NULL 向右旋转 2 步: 1->2->0->NULL 向右旋转 3 步: 0->1->2->NULL 向右旋转 4 步: 2->0->1->NULL 解: /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* rotateRight( struct ListNode* head, int k){ int size= 0 ; int i; struct ListNode* p1; struct ListNode* p2; for (p1=head;p1!=NULL;p1=p1->next)

C语言的现在与未来

柔情痞子 提交于 2020-03-19 11:02:44
为什么要使用C语言? 在过去的四十年里,C语言已经成为世界上最流行、最重要的一种编程语言。 C是一种融合了控制特性的现代语言,而我们已发现在计算机科学的理论和实践中,控制特性是很重要的。其设计使得用户可以自然地采用自顶向下的规划,结构化的编程,以及模块化的设计。这种做法使得编写出的程序更可靠,更易懂。 高效性 C是一种高效的语言。在设计上它充分利用了当前计算机在能力上的优点。C程序往往很紧凑且运行速度快。事实上,C可以表现出通常只有汇编语言才具有的精细控制能力(汇编语言是特定的CPU设计所采用的一组内部指令的助记符。不同的CPU类型使用不同的汇编语言)。如果愿意,你可以细调程序以获得最大速度或最大内存使用率。 可移植性 C是一种可移植语言。这意味着,在一个系统上编写的C程序经过很少改动或不经修改就可以其他系统上运行。如果修改是必要的,则通常只须改变伴随主程序的一个头文件中的几项内容即可。多数语言原本都想具有可移植性,但任何曾将IBM PC BASIC 程序转换为 Apple BASIC 程序(它们还是近亲)的人,或者试图在 UNIX 系统上运行一个 IBM 大型机 FORTRAN 程序的人都知道,移植至少是在制造麻烦。C 在可移植性方面处于领先地位。C 编译器(将C代码转换为计算机内部使用的指令的程序)在大约40多种系统上可用,包括从使用8位微处理器的计算机到Cray超级计算机

C语言总结2

廉价感情. 提交于 2020-03-19 08:42:36
12).预处理指令 1. 什么叫做预处理代码. 以#开头的代码就是预处理代码 #warning #import 2. 手写1个C程序的步骤.(面试题) 1>编写代码 2>编译 1)执行.c中的预处理代码 2)检查语法 3>链接 4>执行 3. 预处理指令的分类.(面试题) ****** 1>文件包含指令 #include 2>宏定义 #define (用来替换代码) 3>条件编译 #if (满足一定的条件才编译) 4. 预处理指令的特点. 1>都是以#开头 2>后面没有分号 3>在编译的时候,检查语法之前进行 "注意 以#开头的代码就是预处理代码 13).sizeof运算符 sizeof运算符的作用? 作用:计算常量,变量在当前系统上内存中所占的字节数 sizeof (数据类型) sizeof (变量)-----用的最多! sizeof (常量) 注意, char类型的变量在内存中占1个字节; char类型的常量在内存中占4个字节; 综上所述,为了安全起见,sizeof后面最好加上括号! 14).按位异或 ^ 异或运算 不同为1,相同为0 注意: 1 相同整数相^的结果是0; 2 一个整数^另一个整数2次结果不变 ; 3^2^2 = 3 3 整数相^跟顺序无关 3^2^3 = 2^3^3 = 2 15). 按位左移或者右移 1,按位左移运算. << 参与按位左移运算的二进制数据.

C语言学习建议

久未见 提交于 2020-03-19 08:36:26
C语言是几乎所有编程语言的先驱与灵感的来源,Perl,PHP,Python和Ruby都是用它写的,同样什么Microsoft Windows,Mac OS X,还有GNU/Linu这些操作系统,都是靠它写出来的。 作为一门基础语言,想学习编程却又没有基础的朋友,C语言可以成为你入门打基础的语言之一!那么我们要怎么学习它,打下坚实编程基础呢?自学的话又要多久? 编程学习是一条漫长路,哪怕是编程的大神,也不敢百分百保证不出问题,即便他们的技术已经是行业顶尖水平,仍然也在不断的学习创新,所以作为小白新手,既然准备跨入编程的世界,那就要有一定的觉悟! C语言学习建议: 1、阅读一本有意义又不失学习乐趣的书 ——《C专家编程》 这本书描述了各种搞笑八卦的事,比如设计一个程序,检查楼道自动售货机中有没有可乐?冰不冰?用LISP去控制自己楼上的电梯升降;让电脑识别自己是否为真身,以免***把自己困在电梯里出不来等等。当自己为编程学习感到烦躁的时候,读一读很有效果的。 2、初入C语言的世界 开始学习C语言的时候,建议事先给自己一个规划,比如每天必学5小时,其中看书两小时,结合视频书籍操作三小时。 3、自选一本好教材 关于C语言学习的书籍实在太多,自选一本学习的书籍要万分慎重,在慎重考虑之后进行选择: *《C语言大全第四版》很经典的一本书 *《C+Traps+and+Pitfalls

C语言中函数的分类

旧巷老猫 提交于 2020-03-19 06:45:11
在C语言中函数被分为两类,一类是系统提供的标准函数,又称库函数。标准函数由系统定义,在程序中可以直接调用,例如:printf(),scanf()等。另一类是用户自己定义的函数。 用户自己定义函数要遵循一定的规则,而且定义函数它一般的格式如下: 函数类型 函数名称(形式参数表){   说明语句序列   可执行语句序列 } 通常函数类型与函数的返回值的类型一致,函数名称的命名规则同变量命名完全一样。形式参数表是用于调用函数和被调用函数之间的数据传递,因此它也需要进行类型说明。 例如: #include <stdio.h> int sum(int b[],int c){//此处定义的函数类型是int型与其返回值s的类型一致。int b[]声明一个 b数组为形参,用于接收main函数传递来的数组a,int c表明数组长度。   int i,s=0;   for(i=0;i<c;i++){     s=s+b[i];   }   return s; int main(void){   int a[5];   int i,s;   for(i=0;i<5;i++){     scanf("%d",&a[i])   }   s=sum(a,5);//调用函数sum,并接收其返回的值s。sum(a,5)中a和5是实际参数。   printf("%d",s); }       来源: https:/

c语言-老鼠走迷宫逐步理解

社会主义新天地 提交于 2020-03-18 17:05:37
c语言实现老鼠走迷宫 在没有智能手机的时代,不少人玩游戏会玩老鼠走迷宫这样的闯关游戏。每一关有着不同的地图场景,可能还会充斥着各种障碍。 老鼠走迷宫是经典的递回求解的算法题 我们用二维数组表示迷宫场景。其中用2代表迷宫的墙壁,0代表可行通道。 我们用7*7的二维数组具体实现,假定我们设置[1][1]是迷宫入口,[5][5]是迷宫出口。 #define M 7 int maze[M][M] = { {2,2,2,2,2,2,2}, {2,0,0,0,0,0,2}, {2,0,2,0,2,0,2}, {2,0,0,2,0,2,2}, {2,2,0,2,0,2,2}, {2,0,0,0,0,0,2}, {2,2,2,2,2,2,2} }; int start1=1,start2=1; int end1=5,end2=5; int main () { int i,j; printf("显示迷宫:\n"); for(i=0;i<M;i++) //对摆放的数组迷宫进行打印 { for(j=0;j<M;j++) if(maze[i][j] == 2) printf("◾"); else printf(" "); printf("\n"); } } 这样我们的迷宫绘制基本完成。下面我们对老鼠可能行走的路径进行分析输出。 我们定义一个visit函数,对老鼠行走方向进行逻辑分析