之前觉得自己c语言跟着课上了一遍语法啥的都没问题了,觉得自己看了两节课就在这方面已经是中等水平了,这两天在学长的推荐下打开了各种刷题网站,我打开第一个网站(洛谷)的时候直奔提高组,当时心里在想我基础应该很好了不需要从头做,事实证明我错的很离谱,一点思路没有!!!!!!
之后就有了从头查漏补缺的念头,十月底开始了我上大学第一波认认真真的复习,在过程中我发现自己知识体系的漏洞很多,每天都写了很多自己不会的内容作为笔记,这也是写博客的初衷。
此篇博客仅限于学了很久有一点印象忘光了,帮你回忆回忆主要内容。主要是写给自己看。
各种循环语句的查漏补缺(重要)
1.goto语句无条件转移语句
goto: if()
eg:
int sum=0;
int i=1;
loop:if(int i<=100)
{
sum=sum+i;
i++;
goto loop;
}
2.do while 至少执行一次
while执行一次
例:数学家们曾提出一个著名的猜想——冰雹猜想。
对于任意一个自然数N,如果N是偶数,就把它变成N / 2;
如果N是奇数,就把它变成 3 * N+1。
按照这个法则运算下去,最终必然得1。
试问,该数通过几轮变换,会变成1呢?
答:
int getAnswer(int num) {
int a=0;
while(num!=1){
if(num%2==0){
num/=2;
a++;
}
else {
num=3*num+1;
a++;}
}
return a;
// write your code here.
}
3.for循环
eg:输出不被三整除的 数
for(n=10;n<=20;n++)
{
if(n%3 == 0)
{
continue;
}
}
c语言一些易混淆概念:
1. 同类数据元素的集合叫数组。
2.在头文件定义lxy这个变量等于10;以后数组就能用这个变量去定义长度。
#define lxy 10;
int xyy[lxy];
3.定义一位数组
int n=5;
int lxy[n];//错误的,n是变量
4.二位数组是按行排序的;
5.
int a[3][3]={{1},{2},{3}};
此数组中的元素值为{{1,0,0},{2,0,0},{3,0,0}};
6.字符数组如果没有赋值系统复位0值;
7.put函数是直接输出字符串数组;
put(c);//输出字符数组c
8.get函数是获取字符串数组,即在终端获取字符串数组
gets(c_1);
9.strcat函数是合并字符串数组为一个数组
strcat(c,c_1);
10.
getchar();
从输入端获取一个字符
putchar();
输出一个字符
11.常用命名法
驼峰命名法
findMax
12.auto 自动变量
auto int a=0;//知道就行
13.
static int c=3;//static为静态变量,即保持上一次运算的值,留在内存里
register//比static快,因为这个函数在寄存器里保存。
14.宏定义
#define Max(a,b) (a>b)?a:b
scanf("%d%d",&a,&b);
max=Max(a,b);