c语言

P1059 C语言竞赛

时间秒杀一切 提交于 2020-02-10 22:21:00
P1059 C语言竞赛 转跳点: 🐏 1059 C语言竞赛 (20分) C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。 1、排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶! 2、其他人将得到巧克力。 给定比赛的最终排名以及一系列参赛者的 ID,你要给出这些参赛者应该获得的奖品。 输入格式: 输入第一行给出一个正整数 N (≤10​4​​),是参赛者人数。随后 N 行给出最终排名,每行按排名顺序给出一位参赛者的 ID(4 位数字组成)。接下来给出一个正整数 K 以及 K 个需要查询的 ID。 输出格式: 对每个要查询的 ID,在一行中输出 ID: 奖品 ,其中奖品或者是 Mystery Award (神秘大奖)、或者是 Minion (小黄人)、或者是 Chocolate (巧克力)。如果所查 ID 根本不在排名里,打印 Are you kidding? (耍我呢?)。如果该 ID 已经查过了(即奖品已经领过了),打印 ID: Checked (不能多吃多占)。 这道题就是道水题,计数就行了,把ID作为索引,索引上存着排名,去重的话取过之后数组排名置-1,如果没有这个ID,那么因为数组一开始被初始化为0,检测到0,在输出之后直接continue即可

C语言寒假大作战04

Deadly 提交于 2020-02-10 21:43:51
这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业链接 这个作业的目标 了解并学会编译简单的菜单栏 作业正文 本篇博客 参考文献 %g与%d 2.2.2设计思路与心路历程 设计思路: 依题意,要输出问题及其答案 学习%g与%d的内容并应用 在寒假大作战03代码的基础上进行修改 心路历程: 不上当了(肯定又是加东西,感觉容易做起来难)➡不出所料(我就知道又是这样,不容易)➡绞尽脑汁(这个 科学计数法e一言难尽啊)➡恍然大悟(%d与%f,要改一下)➡淡然(经过三次作业的磨难,这个心中泛不起波澜) 2.2.3程序结果截图 2.2.4程序代码 include<stdio.h> include <stdlib.h> include<time.h> int help(int m) { printf("\n"); printf("帮助信息:\n"); printf("您需要输入代号命令号来进行操作,另\n"); printf("一年级题目较简单\n"); printf("二年级题目有点点难,但我相信你可以\n"); printf("三年级题目比二年级难很多哦加油!\n"); } int main() { printf("====口算生成器====\n"); printf("欢迎使用口算生成器:\n\n\n"); printf("帮助信息:\n"); printf(

小白C语言Leetcode————82.删除排序链表中的重复元素 Ⅱ

别来无恙 提交于 2020-02-10 21:35:56
题目如下 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 # include <stdio.h> # include <stdlib.h> # define LEN sizeof(struct listnode) typedef struct listnode { int data ; struct listnode * next ; } listnode , * linklist ; int main ( ) { linklist creat ( ) , deleteduplicates ( linklist head ) , a , b ; printf ( "ÇëÊäÈëÁ´±íµÄÖµ£º" ) ; a = creat ( ) ; b = deleteduplicates ( a ) ; printf ( "The answer is:" )

C语言寒假大作战03

我怕爱的太早我们不能终老 提交于 2020-02-10 19:52:00
问题 回答 这个作业属于那个课程 班级链接 这个作业要求在哪里 作业要求 这个作业的目标 使用上次作业的菜单框架,并在其基础上增加各年级题目操作函数 作业正文 使用函数、Switch语句来完成菜单程序并通过git上传文件至远程仓库 其他参考文献 百度,《C语言程序设计》 2.2.2 设计思路和遇到的问题 设计思路: 先在上次作业的代码基础上增加三个函数,然后逐一编写三个函数的内容,最后依次加入到一,二,三年级对应的函数中,主函数内容保持不变 问题: 1.新学的rand()函数刚开始并不会用,百度了很多有关rand()函数的资料才知道了用法,rand()%(a-b+1)+a表示a~b的随机数,开始也不知道使用rand()函数需要加上头文件#include<stdlib.h> 2.一年级和二年级的函数相对比较简单,但三年级的有两个运算符号,需要考虑多种/后面不为0的情况,琢磨了很久最后还是用if-else语法分出了三种情况 2.2.3 程序结果截图 2.2.4 程序代码 2.2.5 Gitee上传截图与链接 链接 来源: https://www.cnblogs.com/wangwenzhi/p/12292220.html

c语言数组传递

人盡茶涼 提交于 2020-02-10 19:30:27
转自:http://blog.csdn.net/xgmiao/article/details/9570825 点击打开链接 数组作为函数实参: C 语言中数组作为函数实参时,编译器总是将其解析为指向数组首元素地址的指针 ( 地址调用 ) 原因:我们知道 C 语言函数的调用有传值和传地址调用。假设 C 语言对数组采用传值调用 ( 对实参作一份拷贝,传递给被调用函数,函数不能修改实际实参值,而只能改变其拷贝 ) ,然后如果拷贝整个数组,则在时间和空间上开销都非常大。而对于函数,只要知道实参数组的首元素的地址,照样可以访问整个数组,所以采用传址调用效率更高。 注意的一点是对于函数来说,其接受的是数组首元素的地址,所以它是并不知道数组的大小的。 一维数组作函数实参: [cpp] view plain copy #include <stdio.h> void fun( char *p) { printf( "%d\n" , sizeof (p)); char c = p[3]; } void fun( char a[10]) { printf( "%d\n" , sizeof (a)); char c = a[3]; } void fun( char a[]) { printf( "%d\n" , sizeof (a)); char c = a[3]; } void main( int

C语言二维数组作为函数参数

自闭症网瘾萝莉.ら 提交于 2020-02-10 19:29:37
设有整型二维数组a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 它的定义为: int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}} 设数组a的首地址为1000,各下标变量的首地址及其值如图所示。 前面介绍过,C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a可分解为三个一维数组,即a[0]、a[1]、a[2]。每一个一维数组又含有四个元素。 例如a[0]数组,含有a[0][0],a[0][1],a[0][2],a[0][3]四个元素。 更多的见: http://c.biancheng.net/cpp/html/79.html 数组及数组元素的地址表示如下:从二维数组的角度来看,a是二维数组名,a代表整个二维数组的首地址,也是二维数组0行的首地址,等于1000。a+1代表第一行的首地址,等于1008。如图: int array[3][3]; array的类型既不是int ** 更不是(int *a)[4] 而是int [3][3] 只是作为右值时才转换成 int (*a)[4] a是指向一个有4个元素的数组的指针,事实上这个a此时指向a[0],指向数组,就是说a里保存着数组的地址,就是1000 指针数组与数组指针 指针数组: array of pointers ,即用于存储指针的数组,也就是数组元素都是指针

C语言-结构体struct-联合体union-枚举enum

耗尽温柔 提交于 2020-02-10 18:53:35
结构体 在Java中,我们要表示一个复合的数据类型就会使用对象去封装。而C就有结构体。 结构体是C语言中自定义的数据类型,是一组变量的集合,有别于数组,数组仅限于同一种数据类型,而结构体可以是任何数据类型,包括数组。结构体里面的每一个变量或者数组都是结构体的成员。 下面来看看结构体的基本使用 14-18行,定义了一个名称为Person的结构体,结构体里面有 age,money,sex 三种数据类型; 20-24行,是结构体的声明一个名为 P 的 Person 变量,并赋值; 25-27行,是结构体的基本使用,从中可以看出的是,结构体取值的时候和Java中极为相似,都是中间 . 的形式进行取其中某个变量的值。 下面来看一下 结构体指针的使用。 29-30行,定义了一个结构体指针,名为 pi,并将结构体变量 p 的地址赋值给 pi 。 32行,结构体指针的使用,既然 pi 是结构体 p 的指针,那么,取结构体那就是前面加个 * 咯,就这么简单,照葫芦画瓢嘛,现在取到了结构体 p,那么去 p 里面的就简单了,直接使用前面的方式中间加个 . 即可; 33行,则是指针结构体的另一种使用方式,直接使用 -> 就可以取里面相应的值了,比32行的方式是不是假单很多呢? 结构体的长度 结构体和结构体指针都说完了,最后来看一下结构体的长度。 长度简单嘛,直接把里面的累加不就得了,int 和 float

python基础面试集锦(1-50)

亡梦爱人 提交于 2020-02-10 18:16:28
目录 1、Python和Java、PHP、C、C#、C++等其他语言的对比 2、简述解释型语言和编译性语言? 3、Python解释器种类以及特点? 4 、位和字节的关系? 5、b、B、KB、MB、GB的关系? 6、一个字符不同编码对应的字节数? 7、PEP8编码规范? 8、or and 计算规则 9、求结果:or and 10、ASCII、unicode、utf-8、gbk区别? 11、字节码和机器编码的区别? 12、三元运算编写格式? 13、Python2和Python3的区别? 14、一行代码数值交换?交叉赋值 15、python2和python3中Int和long的区别? 16、xrange和range的区别? 17、字符串的反转序列?步长-1切 18、文件操作时:xreadlines和readlines的区别? 19、列举布尔值位false的常见值? 20、is和==的区别? 21、那些情况下,y!=x-(x-y)会成立? 22、现有字典dict = {'a':20,'b':25,'c':10,'d':50}请按字典中的value值进行排序? 23、如何将字典的键值互换? 24、字典和json的区别? 25、什么是可变、不可变类型? 26、存入字典里的数据有没有先后排序? 27、字典推导式? 28、描述一下dict的item()方法与iteritems()的不同? 29

C语言基础-逻辑运算优化

点点圈 提交于 2020-02-10 14:36:27
C语言中,当对一些逻辑表达式进行求解时,可能会出现 逻辑运算的优化 ,也叫“逻辑运算短路”(这名字说实在的不好听¯_(ツ)_/¯) 所谓优化,是指求解逻辑表达式时,并非执行所有的运算符,而是当 必须执行下一个运算符才能对表达式求解 时,才执行该运算符。 逻辑运算的优化主要体现在**逻辑与【&&】 和逻辑或 【||】**中。 逻辑与运算优化 请看此程序: # include <stdio.h> int main ( ) { int x , y , a ; x = y = a = 0 ; a = x ++ && y ++ ; printf ( "a=%d,x=%d,y=%d\n" , a , x , y ) ; return 0 ; } 注意看第六行,这里先对x进行逻辑与运算,再使x值自增一。逻辑与规定当&&两边的操作数都为真值时结果才为真。但这里 x取0 (++位于x后,所以在执行&&时,x值仍为0),所以无论y值是真是假,都 不能影响&&运算的结果(假值) 。此时逻辑与运算已经出现了优化。**因为x++这一个式子就能确定整个表达式的值,y++就被gg掉了,没有被执行.**所以最终y的值还是0,没有自增一。 类似的例子有很多。 结果如下。 a = 0 , x = 1 , y = 0 ·逻辑或运算优化 请看这坨代码: # include <stdio.h> int main ( ) {

Leetcode160.相交链表(C语言)

我的梦境 提交于 2020-02-10 13:06:31
Leetcode160.相交链表(C语言) 数据结构-链表: 算法与数据结构参考 题目: 例如以下示例中 A 和 B 两个链表相交于 c1: 若存在则返回c1,如果不存在交点则返回 null。 要求时间复杂度为 O(N),空间复杂度为 O(1)。 思路: 使得A,B两个链表剩下的长度相同,再进行逐个比较找出交点。 A,B各自长度未知,重点在于长度的处理 代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { if(headA==NULL || headB==NULL) return NULL; int lena,lenb; struct ListNode *p=headA; struct ListNode *q=headB; for(lena=0;p=p->next;lena++); for(lenb=0;q=q->next;lenb++); int diff=lena-lenb; //计算两个链表的长度差 while(diff>0){ headA