第八周学习总结
2022/10/24
(1)题目描述:
输入一个四位数,输出它的每一位数,并且判断它的各个位数的相加之和是否是偶数,如果是就输出YES,否则就输出NO
代码如下:
思路:
输入一个四位数通过计算将各位数一个一个挑出来,然后再将这些数进行相加再除以2取余,进行判断
从这一题所学知识:
1.个位数算法:a=n(输出数)%10(取余) 十位数算法:b=n/10%10(把个数位剔除,取余)
百位数算法:c=n/100%10(把个数位和十位数剔除,取余)
以此类推............
2.判断偶数的方法:n%2=0(如果数能被2整除,那么就是一个偶数)
3.多组输出一般采用: while(scanf("%d",&n)!=EOF)或while(n--)(当n=0的时候判断为假,跳出循环)
我在打代码时出现的问题:
[Error] lvalue required as left operand of assignment
原因:计量值为== != 变量为=
赋值语句左边应该是,不能是表达式。要把=改成==.
10/25
(1)题目描述:
有n个实数,实数的范围在0---100之间,通过average函数求这n个实数去掉最大最小值后的平均值
要求:n及n个实数在主函数中输入,结果保留2位小数
代码如下:
思路:
通过选择排序法将输出的值进行排序,然后减去掉a[0]和a[n-1],也就是最小值和最大值,相加除以n-2个数得平均值
(2)题目描述:
小璐有一群笔友,有一天他们跟小璐约定好去互相寄邮件,每个人只能寄一封邮件,也只能收一封信,寄给这些笔友或者是小璐,小璐也要寄,当然了不能自己寄给自己,那么小璐想知道有多少种不同的寄邮件方式,对于这等问题,小璐早就知道了答案,所以他要来考考你,那么就交给你了。
代码如下:
思路:
1.个人认为是存粹的找规律问题,如;
1( 只有一个人时) 0;
2 (0x2+1) 1;
3 (1x3-1) 2;
4 (2x4+1) 9;
5 (9x5-1) 44;
6(44x6+1) 265;
2.当然也得注意输出值的大小,如果用int型的话,也就不能输出后面的数了
10/26
(1)所学知识:
判断偶数时可以只判断个位数,这样可以使速度提快
10/27
(1)题目描述:
你的好友一直想对一个女孩说"I still love you very much!",可出于某种原因,他想将这句话发到网上,好让她看见。可你的好友又怕太多人知道这句话的意思,
于是他便想将这句话中的每一个字符所对应的int值转换为二进制,二进制不足8位的在前面补0,比如字符'I'所对应的int值为73,所对应的二进制为01001001.
由于你的好友还不会字符串,所以只能来求助你了。
代码如下:
思路 :
先定义一个字符数组,然后输入一个字符串,再将数组内每一个元素转换成ASCII值,再将ASCII值转换成二进制
注意:
1.6二进制所对应的ASCII值最大为64,位7位二进制所对应的ASCII值最大为128,8位二级制所对应的ASCII最大为256,也就是说最少要补一位0,而'a'对应的ASCII值为65
2.用while循环因为n可能小于2,无法进行循环,所以使用do while循环
3.n经过计算最终会变为0为假,然后结束循环
从这一题中所学知识
1.数值转换成二进制:先定义一个数组来储存二进制的各个值,然后再利用“a[i]=n%2,n=n/2;”来计算各ASCII值
2.#include<string.h>表示你可以引用关于字符串的函数
3.gets()的作用是从键盘上读取字符串,与sacnf()相似但又不同
gets() 可以接收空格、Tab键, 碰到回车键输入才结束;而scanf碰到空格、回车、Tab键 都会结束输入
gets() 和scanf() 都不能检测越界
4.strlen函数可以计算字符串的长度
5.printf(“%s”,a)可以换成puts(s)
(2)所学知识:
字符串函数:
1.puts()的作用是将一个字符串输出
2.strcat(字符数组1,字符数组2)的作用两个字符数组中的字符串连接起来,把字符串2连接到字符串1的后面,结果放在字符数组1中。
3.strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去
trcpy(字符数组1,字符串2,n)——字符串选择复制的函数
4.strcmp(字符数组1,字符串2)因为字符串不能用等号来比较大小,所以就用strcmp函数来比较
如果字符串1与字符串2相同,则函数值为0
如果字符串1 > 字符串2,则函数值返回一个正数
如果字符串1 < 字符串2,则函数值返回一个负数
5.strlwr(字符串)作用是将字符串中的大写字母转换成小写字母
6.strupr(字符串)作用是将字符串中的小写字母转换成大写字母
7.strstr(字符串1,字符串2)
用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。如果找到该数组,就会从找到的地方开始输出
8.\0表示在字符串数组内表示结束,也表示0
10/29
(1)题目描述:
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,
则删除之后的第一个字符串变成”Thy r stdnts.”。
代码如下:
思路:
将删除字符一个一个比较被删除的字符,如果相等,固定值temp改变,跳出循环,就不把相等的字符放进c组;如果不相等,就固定值temp不变,就把不相等的字符放进c组
依次循环.......
再将c组的字符输出
(2)今日所学知识:
1.全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序
2.局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。在复合语句中也可定义变量,其作用域只在复合语句范围内
3.用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量
4.用extern声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量
5.在C语言中不能被其他源文件调用的函数称谓内部函数 ,内部函数由static关键字来定义,因此又被称谓静态函数
6.在C语言中不能被其他源文件调用的函数称谓内部函数 ,内部函数由static关键字来定义,因此又被称谓静态函数,
(3)题目描述:
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符
代码如下:
思路:
定下标定在最前面和最后面的字符,相交换后,前面字符往前走一个,后面字符我往后走一个 ,再交换,再往前往后走,以此循环,其中i<j