Python笔记
Python
2021.9.9
Turtle官方文档#
货币兑换#
12345678910money=input("请输入货币符号($/¥)和金额:")while 1+1==2: if money[0] in ['¥']: print("可兑换的美元为:$%.4f"%(eval(money[1:len(money)])*0.1452)) break elif money[0] in ['$']: print("可兑换的人民币为:¥%.4f" % (eval(money[1:len(money)])*6.8833)) break else : money = input("输入格式有误,例:$100。请重新输入:")
1、input()函数只能返回字符串,所以应用eval()函数将字符串转换为可计算的数值.
2、1+1=2 表示无限循环,只有输入了正确的格式,输出了结果才会跳出循环 ...
报数游戏
n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号的那位
思考:1、围成一圈?怎么围?
2、退出圈子?怎么实现。
3、怎么判断最后留下的是几号?
1234567891011121314151617181920212223242526272829303132333435363738394041#include <stdio.h>int main(){ int n; //总人数 scanf("%d", &n); int a[100]; for (int i = 0; i < n; i++) //顺序排号 { a[i] = i + 1; } int k = 0; //报数 int m = 0; //记录退出圈子的个数 int last; for (int i = 0; i < n; i++) { if (a[i] != 0) //除去为0的 ...
查询替换
在s串中,寻找t串,将之替换为g串.并记录有几次替换.
例、输入:s串 regret —— t串 re —— g串 log
在s串中查询t串re,发现两处,即两次替换后,输出替换后的s串为 logglogt
实现思路
先分别定义s、t、g对应的字符数组,给上相应大小,并指向数组,分别输入s、t、g串
调用函数 replace_str ,将s、t、g作实参传入,执行查询替换
先定义一个count,作用是记录替换次数,也可作查询到几处t串
再定义的str数组及指针,储存替换后 新的字符串。
而定义的p,记录str存储进度
接下来开始循环遍历,循环次数为s串的长度,因为要将s串中的每个字符遍历一次
新定义的k,为t串的比较进度,当循环到s串的下一个字符,t串比较进度需重新刷新为0,所以在循环内部定义,且内循环每次结束k++,表示比较t串的下一个字符。
而内循环的j,会根据当前外循环的i改变而随之改变,代表s串的比较进度
内循环每次判断s串与t串中字符相等,记录相等的次数m,如次数达到t串的长度,即表示在s串中查询到一处与t串相等的地方。
例:s 串 asacadd t串ac
只有当连续两次都 ...
统计数据不同个数
要求:输入10个数,统计10个数中,不同的个数。
思路:!!!!很重要
循环遍历需判断的10个数,当往后找不出相同的数时,计数加1.
例:样例1,当循环第一个数时,往后没有1了,计数加1
样例2,当循环第一个数时,往后还有1,直接跳出循环,进行下次判断,循环第二个数,但第二个数还是1,继续跳出循环,直到第5次循环,往后再没有1了,则计数加1.
1实现1
12345678910111213141516171819#include <stdio.h>#include <stdlib.h>int main(){ int *a, i, j; a = (int *)malloc(sizeof(int) * 10); //创建一个int形 10个int大小的存储空间 for (i = 0; i < 10; i++) //输入 scanf("%d", a + i); int flag = 0; //计数不同个数,初始值为0 for (i = 9; i >= 0; i ...
素数
什么是素数?#
素数_一般指_质数。_质数_是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
曾称质数。一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。
要求:输出1~200之间的所有素数。
思路:先定义一个数组,由于不清楚200内素数有多少个,不知道定义多大,但可以肯定不超过200。如果稍微判断,可以肯定不超过100个,因为除了2,所有偶数都不是素数,都可以被2整除。所以,先定义一个数组存放素数,大小100就够,即int a[100]。
循环判断3-199之间的所有数 i ,每次将其循环与2到当前数本身减去1,即 i % j 取余,
如遇到一个可以被整除的,那么i就不是素数,将flag赋值为0,标志当前的i不为素数,以便后面进行判断。且不必再进行判断后面的j了,直接break跳出内循环。
初步代码如下:(有错误)
12345678910111213141516171819202122232425#include <stdio.h>int main(){ int a[100], flag = 1; for ...
字符排序2
要求: 按照字母顺序排列,不区分大小写.
例: a(ASClL码97) 应该排列在 B(ASCLL码66)的前面.
A(ASClL码65) 也应该排列在 B(ASCLL码66)的前面.
思路1:统一字符大小写,将所有字母统一改为小写,即ASCLLL码在65~90范围的字母,加上32,转换为小写,再根据ASCLL码由小到大排序.
问题: ASCLLL码在65~90范围的字母,加上32,转换为小写, 暂时无法实现
1234567891011121314151617181920#include <stdio.h>#include <string.h>#define M 8int main(){ char *str[M] = {"BASIC", "Computer", "design", "FORTRAN", "Follow", "me", "Great", "Wall"}; ...
字符排序
要求#
将字符串按ASCLL码升序排序
冒泡排序法#
12345678910111213141516171819#include <stdio.h>#include <string.h>#define M 5int main(){ char *str[M] = {"China", "Japan", "Korea", "American", "England"}; for (int j = 0; j < M; j++) { for (int i = 0; i < M - j - 1; i++) { if (strcmp(str[i], str[i + 1]) > 0) { char *temp; temp = str[i]; str[i] = str[ ...
回文数判断
什么是回文数?(摘自百度百科)#
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。 [1] 设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。 [1]
注意:1.偶数个的数字也有回文数124421
2.小数没有回文数
中文名 回文数
外文名 palindrome number
定 义 正读倒读都一样的整数
增加一个定义判断: 输入字符判断
例:abcdcba
方法一#
利用 正读倒读都一样 的特性,先将字符数组倒转,判断与原数组是否相等,相等则判断为回文,否则输出 No. 代码如下
12345678910111213141516171819202122232425262728293031323334353637383940#include <stdio.h>#include <string.h&g ...
动态链表节点删除
链表是一种常见的重要的数据结构,他是动态的进行存储分配的一种结构。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100#include <malloc.h>#include <stdio.h>#include <stdlib.h> //动态分配内存引入#define NC sizeof(struct student) //宏定义内存大小struct student //定义结构体数据类型{ int num; //学号 int score; //分数 struct student *n ...












