编程杂谈

1default 默认
2else if的BUG暂未解决,同志仍需努力——其实就是布尔表达式的问题
3
while(flag)相当于while(flag!=0)
while(!flag)相当于while(flag==0)
?:为三目表达式,逐个检验真假
4首行定义下面的组数或者行数可以用strlen
取其
5乘法表与
6ceil表示向上取整
7 关系和逻辑运算符的结果只有0和1——由此可以延伸到while(flag)
之类的逻辑判断。——非0即增
8由于关系运算符的结果是0 和1,所以对于关系运算符的结果可以直接相加
9 多输入一个getchar()以便于去掉缓存区的回车键
10putchar(’\101’);——这意味着输出ANSI字符
11scanf("%1s",)意味着读入单个字符,则可以利用此语句加上循环结构实现字符倒转。
12putchar getchar 输入输出注意空格回车的影响
13 1控制语句 2函数调用语句 3表达式语句 4复合语句 5空语句。
14 putchar(’\x42’);—B(转义字符输出)
Putchar(0x42);—B
15先后顺序可能导致错误,& < > + -等等尤其。
16printf格式转换说明符
17对应的控制符必须与对应数据类型一致
18想要输出8 16有前缀,则%#o %#x
19
%*d

来自 https://zhidao.baidu.com/question/90280293.html
忽略输入修饰符。

20 const意味着对变量进行限定。
21’\0’代表着空字符。
22putchar(数组)可以直接输出ASCI码
23 所有C语言的索引都是从0开始的
24宏定义不要忘记打括号
25 C中声明是不产生代码的东西,定义是产生代码的东西。
26宽度限定符前有负号是左对齐,无负号是右对齐
27
指针是一个变量,其值为另一个变量的地址

来自 http://www.runoob.com/cprogramming/c-pointers.html
28 if(flag)-----flag0则不执行,否则执行,意思是判断真假。
29 位运算符主要针对单个字符。
30 运算式中同时有整数和浮点数时会自动将整数变成浮点数
31printf("%d*%d=%2d ",x1,x2,x1*x2);//排除位数带来的干扰。 ——九九乘法表倒三角,通过对算数式子的变换排除干扰。
32 字符串(数字)倒转
1)限定宽度或输出宽度——直接暴力循环或者定义数组
2)随意输入
1.配合字符处理函数与字符数组加上暴力循环逆序输出
2
33
for(x=100;x<=101;x++){
for(i=2;i<=x;i++){
if(x%i0)printf("%d",x);
break;
嵌套循环缺少break很有可能导致循环过多

34 排序问题、字符串问题是大的总结方向
35

S = 0.5 * ( (x0y1-x1y0) + (x1y2-x2y1) + … + (xny0-x0yn) )多边形求面积
1
362042 不容易系列之二老汉问题
和孙悟空蟠桃记类似,本质是数学问题,可以进行递归,甚至可以进行问题的简化,找出通项公式。当然题目有点水,读懂是关键。
37 while(scanf()) 与 while((c=getchar())!=EOF)探寻
38 EOF的意思是end of file
39
int ma(int a){
return 0;
return 1;哪个先返回就是哪个。

40 ASCII码问题探讨:输入ASCII码得到对应字符(1)char(int) c,putchar
(2)
输入字符得到对应ASCII码
(1)
char c;
scanf("%c",&c);
printf("%d\n",c);
return 0;
(也就是进行格式的转换,同样的可以使用与进制的转换)

PS:字符的ASCII码大小。
if(s[i]>=‘0’&&s[i]=‘9’)
直接使用’a’,’‘代表单个字符
——但是仍然有问题,while输入判断时常出错,而且比如对于’\n’的ASCII码10无法进行判断。
41 排序问题:1:if列出6种情况
2三目运算符计算出最大最小中等
3使用指针
4if语句依次比较大小

42.随机个整数输入找最大值的办法就是二维字符数组 ,第一维表示个数,第二维表示大小(atoi(字符串变整数))
43换行符别忘记
44此次单元测试,错失一题。然端详答案,实为思维定式,为何一定数组乎。答案基本方法,并无巧妙,然顺利通过,吾却超时。
45注意C中的自动类型转换,此项时常致错
46scanf("%dc",&n);—后面的c起到了getchar()消去回车的作用。
47,母牛的故事等等题目不过是斐波那契的变形。斐波那契是f[n]=f[n-1]+f[n-2]
则可以递推得到隔i年生的公式为f[n]=f[n-1]+f[n-i-1]
48 int x[] =
{
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1
};----判定素数题,直接打表提交。
49 。%d*c表示读入一个字符但是不保存
1. 50 数据结构在于对象的处理和表示,数据结构是对象,算法是步骤。----线性结构,树状结构,图状结构。

50.scanf()在读取数字时会跳过空格、制表符和换行符!——本质是输入规范的问题
51
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>
数学问题
1)时间问题
闰年 year%40&&y%100!=0||y%400=0;
时间相加——模拟基本运算过程
a1+=a2;
if(a1>=60)
a+=a1/60;
a1=a1%60;
过了几周,过了几天(与判断闰年结合,可以直接switch,也可以用二维数组)
2)数列:斐波那契数列,类斐波那契(如HD母牛的故事),f[n]=f[n-1]+f[n-2]
f[n]=f[n-1]+f[n-3];
3)数论:奇偶数,质数,
可以建立函数判断,特别是质数与素数。
int isprime(int n) {
int t=2;
for(;t<sqrt(n);t++){
if(n%t0)return 1;
}
return 0;
}
4)高精度算法
加减乘除阶乘次方
5)进制转换

字符问题
1)大小写——ASCII码, ‘a’<=ch<‘z’ ,isalpha,isdigit,tolower,toupper
2)string.h 函数库,int len=strlen(a);int strcpy
3)字符遍历查找,同时结合数学性质查找(最大最小值),出现次数,相等,大小,连续性)
4)二位数组结合矩阵
5)加密问题:
排序问题
1)基本排序类型:冒泡选择希尔快排
2)经典简单排:3个数,10个数
特别是3 个数,主要是语法问题,可以冒泡排序(逐个比较并交换一轮 即可(??,void swap(*a,*b,*c)——注意改变实参)
3)
搜索问题

选择排序:
基本解题方法
1暴力枚举
2动态规划??
3打表
4贪心??
5分块解决,构建函数
6依照题意,线性结构解决。
注意事项,易错问题 :

52 代码阅读——删,改,加,查
53 二进制就是8BIT
54__int64相当于long long
55 删除字符就用’\0’
56异或异1同0
57 control+空格可以端掉中文输入法
58 高精度算法输出最后几位的一个方法为取模(也就是直接%)
59 例如循环寻找最大的三个数,别忘记将每次找到的MAX定义为0.
60 字符串输入时字符数组的列数大于字符数加1(除非是单个字符输入)
61 二维数组:长度问题,与指针结合,输入输出问题。
62字符串输出的时候必须有’\0’
63 判断一个单词在一个句子中的位置(学宝中相关的问题推广化)解题报告:
1暴力解法
2基本思想是定义二维数组再循环比较,然鹅二维数组的输入是一个大问题,不管是gets还是scanf貌似都不能满足要求
3或许指针可以解决定位问题,比如指针数组。
64 字符数组 指针 多维数组 递归 图形输出 链表 排序算法 参数问题(参数传递,实参形参,多维数组与指针与参数的结合)
65 输入字符勿忘getchar()
66效率之辩:单纯看书效率或许不高,单纯练习达到瓶颈也难以进入心流,so怎么办呢
67 效率效率,何为效率,能说出多少就表示学到多少,相应表现为效率值
68 终于摸透二位字符数组了;a[][]前面那个是行,后面那个是列,列必须定义,保证不会发生内存溢出。
于是乎与行有关的无限制行与数组名作为二位字符结合为二维字符数组的指针。
69 编程学习和数学英语有想通之处,也应该进行一定的借鉴。比如大量练习,修改完善练习,不断思考完善知识结构,这些方面是绝逼滴。应该尽早学完C++与数据结构算法,在11.30之前干完C++ C 数据结构与算法,NOI所有题目,HDOJ200道题,反复琢磨,完善思路
70 数组名就是指针,如此可以指针调用
71 补码问题——32位与负数表示。。。哦哦哦,无符号数的原码补码反码相同。
72 for(i=31;i>=0;i++)
Printf("%d",(x>>i)&1);
完美的输出了每一位,由此还可以到处位运算输出二进制的方法。
73 %o是八进制,%x是十六进制。进制转换进行短除
74合理运用取模方法,用以限定范围——如取随机数,求高精度算法的最后几位(貌似可以直接使用而不需要数组承载)
75 if(x&1)是判断奇数的,奇数则正确,否则指向else。(类比十进制,除10能除进则后面有0.则偶数二进制最后一位也是0)
76指针其实就可以看做数组,名字是数组名,通过名字访问值
77 sizeof在子函数中谨慎使用,得到的值不一样。78形参可以修改实参的值只有在数组做形参的时候
79 实参就是实际占用了内存空间,形参就是传递,实参就是改变。形参传递的是值,实参传递的是地址。
传值是单向传递,传地址是双向传递(看来自己学的还是不仔细啊,听网课也得有规划了
80 顺序表插入操作可以由后到前 还可以逐个交换
81直接开始战斗,直接开刷题,直接开始考试,直接开始做作业,不要怂就是干!!!
82二维数组就是指针,a[0]是指针,a[0][0]是元素。[]可以理解为*。(看来指针的概念不理解C语言是很难学好的。)
83 编程语言是材料,不是工具。
84 %#输出带0x的16进制数,%中的表示赋值进制字符,吃掉后面的输入
85 a>>1为除以2 a<<1为乘以2
86 素数筛

转载于:https://www.cnblogs.com/tomjobs/p/10612589.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值