寄语:
我呢也是刚开始学C语言,在这里做笔记是为了方便自己以后查阅,同时希望能给大家提供一些帮助。在这些笔记里,我们主要依赖看代码来学习C语言,当然还有其他的方式,每次代码后我会用自己的理解进行一些总结,如果有什么不对的地方,还请大家能够慷慨的指出,我可高兴接受你们的意见了{😮},我以后要是意识到错误我一定会回来改掉的。如果你也不会的话,就细细的读吧,应该能帮你度过现在的困难。
下边就让我们进入正题吧。
请看如下代码:
1:
#include<stdio.h>
void main()
{
int c1;
char c2;
c1='a';
c2=65.5;
printf("%d\n%d哈哈哈\n",c1,c2);
printf("%c哈哈哈\n%c\n",c1,c2);
}
第一行,就是说我们这段代码里包含一个文件,这个文件里的一些基本函数(例如:printf(输出),scanf(输入))我们就可以直接在这一段代码里使用。
第二行,main为主函数,是系统调入程序的入口点,程序从main开始执行。
当然还要注意格式,比如一行的#,二行的括号,还有要注意不能用中文的字符。
后面就是你的程序了,必须用大括号括起来。
然后我们来分析一下这个程序:
在这个程序刚开始,我们先定义了我们的数据类型int(整数),还有char(字符),
接着就是给这些变量赋值,赋值字符时要加单引号,赋值数字时不加单引号
在c语言中,每一条命令结束,都需要在后面加上分号。
然后就是最后的printf函数,要采用("",); 的格式
双引号内可以随意添加自己想输入的文本内容,
在一些位置加上换行命令\n,
就可以实现\n前后换行,
否则输出的时候就会挤在一起,十分难看。
printf里面必须要输入%d(取整数)%f(浮点数)%c(字符)来规定输出值的格式,
格式与后面的数据(c1,c2),是一一对应的,数量也是对应的,也就是说后面有几个变量我们前面就用几个%类型的格式。
由于在最后的位置可以更改输出格式,所以可能这就是C语言的灵活性所在吧。
上述代码输出结果为:(a使用的是他的ASICC码)
97
65哈哈哈
a哈哈哈
A
2:与第一个代码十分类似
先定义变量
然后赋值
然后运算
最后输出(注意里面的文本内容)
试着自己读读看,想一下输出结果
#include<stdio.h>
void main()
{
char c1,c2,c3;
c1='a';
c2='A';
c1=c1-32;
c2=c2+32;
printf("我%c\n也%c\n想",c1,c2);
输出结果:
我A
也a
想
3:看代码如下:
#include<stdio.h>
void main()
{
int a;float b,c;char d='D';
a=(int)c;
b=1.0+a*d+c;
printf("a=%d\n,b=%f",a,b);
printf("\n");
printf("看看上下两种写法有没有区别");
printf("\n");
printf("a=%d,\nb=%f",a,b);
}
在这里我直接输出的printf(\n)就是直接换行。
简单分析一下,
第四行就是给我们的变量做个定义,下边才能使用这些变量,其实我觉得这样反而还有些麻烦。
第五行为强制命令,(类型)变量 ,然后再把新的值赋给另一个变量,比如:
a=(int)b; m=(float)n;k=(char)t
第六行就是一个简单的运算。
最后输出的浮点数默认保留六位小数。
然后自己分析一下第七行与第九行\n的位置,预测一下结果
上述代码的输出结果为:
a=-107374176
,b=1181116449.000000
看看上下两种写法有没有区别
a=-107374176,
b=1181116416.000000
4:一些运算符号,代码如下:
①
#include<stdio.h>
void main()
{
printf("你\n我\n%d你\n我\n",20/7);
printf("世界\n很美好\n%f",20.7/7);
}
这一段相对难度较小只是用了较多的分行,可见,在双引号内%与\是不能乱用的,因为他的优先等级高,有他自己特定的用法。
输出结果为:
你
我
2你
我
世界
很美好
2.95714
②再看下一段代码(关于取余)
#include<stdio.h>
void main()
{
printf("百分号在运算的过程中表示取余,5/2余数就是1%d\n",5%2);
printf("注意区分上下两个式子的不同\n");
printf("百分号在运算的过程中表示取余,5/2余数就是1\n%d",5%2);
}
简单分析:取余就是除不尽的保留
注意一下分行符与%d的位置关系,
一个在前
一个在后
是两种不同的结果,
因此%d就是指代我们输出值在全部内容的位置(读不懂没关系,我也讲不明白这句话,但是很简单,自己操作一下很快就知道了)
输出结果:
百分号在运算的过程中表示取余,5/2余数就是11
注意区分上下两个式子的不同
百分号在运算的过程中表示取余,5/2余数就是1
1
③关于(自增自减)
自增:1
#include<stdio.h>
void main()
{
int i=9;
int j=i++;
printf("%d,%d",i,j);
}
i++是先用后加,所以j输出的是9而不是10
i输出i的值是最终的值
输出结果
10,9
“自增:2”
#include<stdio.h>
void main()
{
int i=9;
int j=++i;
printf("%d,%d",i,j);
}
++i是先加后用,所以j的结果是10
i输出的结果是最终的值
输出结果
10,10
自减:1
#include<stdio.h>
void main()
{
int i=9;
int j=--i;
printf("%d,%d",i,j);
}
–i为先减后用(两个减号)
i输出的值为最终值
8,8
自减:2
#include<stdio.h>
void main()
{
int i=9;
int j=i--;
printf("%d,%d",i,j);
}
i–为先用后减,所以j输出8(两个减号)
i输出的结果为最终结果
8,9
自加的简单运算:
#include<stdio.h>
void main()
{
int a=1,b=2,c=3,k;
k=a+++b+++c;
printf("k=%d\nc=%d\n",k,c);
输出结果,从这个式子里我们能看到很多更加好的表达方式,比如最后一句,就非常好,让输出的结果有头有尾。
k=6,c=3
5:scanf的使用:
#include<stdio.h>
void main()
{
char a,b,c;
printf("input 3 char(系统提示):");
scanf("%c,%c,%c",&a,&b,&c);
a='a'-32;
b='b'-32;
c='c'-32;
printf("%c,%c,%c",a,b,c);
}
一定是先定义!!!!!!!!!!!!!!!!!!!!
scanf就是让用户输入一些变量的赋值
然后运行程序,帮助客户得到最终值。
输出页面
input 3 char(系统提示):abc
A,B,C
6:运算符的简化
a+=5等同于a=a+5
a=b-3等同于a=a(b-3)**
需要注意的是如果我们定义的类型是c(char),那么最后输出的值不能大于256,如果大于就一直减256,直到结果小于256.
7:求三角形的面积(可以不看,还不完善)
已知三角形面积公式:
s=(1.0/2)(a+b+c)
S2=s(s-a)(s-b)(s-c)
#include<math.h>
void main()
{
float a,b,c,area,s;
printf("input 3 num:");
scanf("%f%f%f",&a,&b,&c);
s=(1.0/2)*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%f",area);
}
!!8:运算的优先等级(目前学的,从高到低)
++,–,!
*,/,%
+,-
>,<,>=,<=
!=,==
&&(与),||(或)
=
9:&&,||的运算
当我们让计算机判断2.>1时
它会输出1,表示正确
当我们让计算机判断2<1时
它会输出0,表示错误
当我们让计算机判断:2>1&&2<1时
&&表示的and,是和的意思,所以只有当两个条件都正确的时候才会输出1
否则输出2
所以上述判断结果为0
||表示的是or,是或的意思,所以只要有其中一个为正确时,就会输出1,只有两个条件都是假的时候才会输出0
10:判断下列的值
①
a=0,b=1,c=2
d=a++&&b++&&–c(两个减号连在一起了)
判断a,b,c,d
分析
&&表示和,全正确才输出1也就是说一个错直接输出0不需要浪费时间进行后面的判断
先判断a++&&
a++表示先用后加,b++也是先用后加
开始a为0,参与运算也就是0,
然后读到&&
他的规则是两边全是1能输出1(全真才真)
然而此时&&左边已经是0了
所以中止右边b++的程序,不用浪费资源计算了
前半段(a++&&b++)直接输出0
接着又往右读
又读到一个&&
还是同样的规则
左边已经为0
所以直接输出0
右边的–c(两个减号连在一起了)也不运行
因此输出结果就是:
a=1,b=1,c=2,d=0
②
a =0,b=1,c=2
d=a++||b++||–c(两个减号连在一起了)
判断a,b,c,d的值
分析:
a++为先用后加,所以参与运算的就为0
因为||(或)的规则是全错才错(全假才假)
所以需要继续往右读
读到b++时,b++为先用后加,所以参与运算的时1
这时左边为0,右边为1(全假才假)
所以会输出1
然后继续向右读
当读到||时
因为左边已经为1了,根据||的规则,全假才假,左边已经不为假了
所以不再往后读了
–c(两个减号连在一起了)的程序不运行
因此输出结果为
a=1,b=2,c=2,d=1