c语言课堂笔记.docx
《c语言课堂笔记.docx》由会员分享,可在线阅读,更多相关《c语言课堂笔记.docx(76页珍藏版)》请在冰豆网上搜索。
![c语言课堂笔记.docx](https://file1.bdocx.com/fileroot1/2023-2/24/7782a72f-4bd4-49b1-b003-3f1e9ec3cbc1/7782a72f-4bd4-49b1-b003-3f1e9ec3cbc11.gif)
c语言课堂笔记
课堂笔记
时间:
第一周(10.03.01——10.03.07)
整理人:
周洁李超王振杰李昀桐原爽史博洋
摘要:
main;printf;scanf;while;变量
知识点:
1.main:
主函数p4
为程序的入口函数
2.printf:
输出函数p75
例如:
printf("%d,%d\n",i,sum)
括号内前半部分为格式说明(%d为占位符),后半部分为输出表列
3.scanf:
输入函数p82
例如:
scanf("%d%d%d",&i,&sum,&n)
括号内前半部分为格式控制,后半部分为地址表列
4.while:
循环语句p114
例如:
while(i<=100)
{sum=sum+i;i=i+1;}
5.变量:
变量代表内存中具有特定属性的一个存储单位,它用来存放数据也就是变量的值,在程序运行期间这些值是可以改变的。
(1)int:
整型变量p40
定义为整型变量,int型变量分配16个bit
(2)double:
双精度浮点型变量p16
double型变量分配64个bit-lvchunli10-3-5上午1:
15
(3)float:
单精度浮点型变量p16
float型变量分配32个bit
(4)char:
字符变量p49
char型变量分配8个bit
例题:
例1:
1+2+3+4+5+……+1000=?
intmain(intargc,charargv[])
{
inti=1,sum=0;
while(i<=1000)
{sum=sum+i;
i=i+1;
}
printf("%d",sum);
}
------------------------------------
例2:
铅球ρ=11340kg/m3,d8.9cm,求质量
intmain(intargc,charargv[])
{
doubled=8.9,ρ=11340,r,v,h;
d=8.9;
r=d/100.0/2.0;
v=4.0/3.03.1415926rrr;
h=vρ;
printf("%f",h);
}
------------------------------------
例3:
1+1/2+1/3+1/4+1/5=?
intmain(intargc,charargv[])
{
inti=1;doublesum=0;
while(i<=5)
{sum=sum+1.0/i;
i=i+1;
}
printf("%f",sum);
}
-------------------------------------
例4:
12345……=?
intmain(intargc,charargv[])
{
inti=1,sum=1,n;
printf("\nPleaseinputanumbern:
");
scanf("%d",&n);
while(i<=n)
{sum=sumi;
i=i+1;
}
printf("%d",sum);
}
(当输入数字过大时无法输出)
-----------------------------------
例5:
1+1/2-1/3+1/4-1/5……=?
intmain(intargc,charargv[])
{
inti=2,f=1,n;doublesum=1;
scanf("%d",&n);
while(i<=n)
{sum=sum+1.0/if;
i=i+1;
f=-1f;
}
printf("%f",sum);
}
提醒与注意:
1.“;”表示一句话的结束,注意别丢失,并且要注意区分“;”与“,”的不同意义。
2.\n表示换行。
3.“()”、“{}”等要成对出现,不能丢失。
4.int表示整数变量,double表示小数变量。
5.printf("%d",sum)与printf("%f",sum)中“%d”与“%f”为占位符也可写成“sum=%d”与“sum=%f”,d为整数占位符,f为小数占位符。
6.变量为先定义后使用,可以以“_”或字母开头。
没定变量时可用“_”,字母,数字
7.while后不可用“;”。
8.用“F4”可以查看错误。
9.编程时要注意循环体中要有一个条件使循环条件不成立。
编者:
周洁李超王振杰李昀桐原爽史博洋
周洁李超王振杰李昀桐原爽史博洋做了很优秀的工作,从她们的笔记中,让我了解到课堂中的我都讲了什么,同学们都记住了什么,如果我自己整理的话会落下很多东西-lvchunli10-3-5上午1:
16
课堂笔记
时间:
第二周(10.03.9)(周二)
整理人:
张国荣、姜昊、孙珺朋、张晓琪、邓坤。
摘要:
分支结构,if,else语句;取余语句;逻辑运算符。
知识点:
分支结构
1、if语句:
是用来判断所给定的条件是否满足,根据判定的结果(真或假)决定执行给出
的一种操作。
P95
例如:
If(x>y)printf(“%d”,x)
2、if语句表示:
(1)有if时可以没有else;有else时必须有if;
P99
(2)if与else配对使用时,else总是与它上面最近的未配对的if配对;
(3)if语句中执行赋值语句时,0表示判断为假,非0表示判断为真;
(4)if语句中的常量与变量:
最好是把常量放置在前,变量放置在后面,
以便减少失误。
例如:
if(0==x){y=0;}
(5)if后面最好加上花括号,增加程序的可读性。
3、算术运算符:
取余:
符号是“%”。
例如:
if(y%4!
=0){printf("not");}
4、逻辑运算符:
逻辑或,符号是||(相当于其它语言中的or);
P92
逻辑与,符号是&&(相当于其它语言中的and);
逻辑非,符号是!
(相当于其它语言中的not)。
例如:
if(year%4==0||(year%100!
=0&&year%4==0))
例题:
例1:
分支结构
计算分段函数:
#include"stdafx.h"
main()
{
doublex;inty;
scanf("%lf",&x);
if(x<0)
{y=1;}
else
{y=-1;}
printf("y=%lf",y);
}
--------------------------------------------------------------------------------
例2:
计算分段函数:
#include"stdafx.h"
main()
{
doublex;inty;
scanf("%lf",&x);
if(x<0)
{y=1;}
elseif(0==x)
{y=0;}
else
{y=-1;}
printf("y=%lf",y);
}
---------------------------------------------------------------------------------------例3:
判断某年是否为闰年。
#include"stdafx.h"
#include"stdio.h"
intmain(intargc,charargv[])
{
intyear,leap;
scanf("%d",&year);
if(year%4!
=0)
{printf("%disontleapyear",year);}
elseif(year%400==0)
{printf("%disleapyear",year);}
elseif(year%100==0)
{printf("%disontleapyear",year);}
else
{printf("%disleapyear",year);};
}
---------------------------------------------------------------------------------------
例题3的优化编写一:
#include"stdafx.h"
#include"stdio.h"
intmain(intargc,charargv[])
{
intyear,leap;
scanf("%d",&year);
if(year%4!
=0)
{leap=0;}
elseif(year%400==0)
{leap=1;}
elseif(year%100==0)
{leap=0;}
else
{leap=0;};
if(1==leap)
{printf("%disleapyear",year);}
else{printf("%disnotleapyear",year);};
}
---------------------------------------------------------------------------------------例题3的优化编写二;
#include"stdafx.h"
#include"stdio.h"
intmain(intargc,charargv[])
{intyear,leap;
if(year%400==0||(year%100!
=0&&year%4==0))
{printf("%disleapyear",year);}
else
{printf("%disnotleapyear",year);};
}
提醒与注意:
1、double为双精度浮点型变量,占位符最好为%lf;
2、if后面的分支体加上用花括号,养成好的习惯;
3、if语句中最好是常量在前,变量在后;
4、if语句中等号为==,而不是=,不等号为!
=;
5、学会运用逻辑或和逻辑与编写程序,简化程序。
6、if语句多分支结构中注意else是与哪个if配对。
课堂笔记
时间:
第二周周四(10.03.11)
整理人:
张国荣、姜昊、孙珺朋、张晓琪、邓坤。
摘要:
多层循环结构;逻辑运算符的复习运用;for语句。
知识点:
1、多层循环结构:
是指循环体内又包含另外一个完整的循环结构,内循环
中又可以嵌套循环。
P121
例如:
x=1;
while(x<=3)
{y=1;
while(y<=3)
{z=1;
while(z<=3)
{printf("\nx=%d,y=%d,z=%d",x,y,z);
z=z+1;
}
y=y+1;
}
x=x+1;
}
2、逻辑运算符的运用:
逻辑或与逻辑与的复习。
3、for语句:
不仅可以用于循环次数以确定的情况,而且可以用于循环次数不确定而只
给出循环结束条件的情况,它可以完全可以代替while语句。
P118
(1)关键字是for;
(2)for语句后面的括号是成对出现的;
(3)for语句中有三部分组成:
循环变量赋初值;循环条件;循环变量增值。
(4)for语句中的三部分是由分号隔开的。
3、x++等价于x=x+1;
例题:
例1:
新娘和新郞配对问题
三对情侣参加婚礼,三个新郞为A、B、C,三个新娘为X、Y、Z。
有人不知道谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:
A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。
这人听后知道他们在开玩笑,全是假话。
请找出谁将和谁结婚。
include"stdafx.h"
intmain(intargc,charargv[])
{intx,y,z;
x=1;
while(x<=3)
{y=1;
while(y<=3)
{z=1;
while(z<=3)
{if((x!
=z)&&(x!
=y)&&(y!
=z)&&(z!
=3)&&(x!
=1)&&(x!
=3))
{printf("\nx=%d,y=%d,z=%d\n",x,y,z);}
z=z+1;}
y=y+1;}
x=x+1;}
-------------------------------------------------------------------------------------------------------
例1程序的优化编写
#include"stdafx.h"
intmain(intargc,charargv[])
{intx,y,z;
for(x=1;x<=3;x=x+1)
for(y=1;y<=3;y=y+1)
for(z=1;z<=3;z=z+1)
if((x!
=z)&&(x!
=y)&&(y!
=z)&&(z!
=3)&&(x!
=1)&&(x!
=3))
{printf("\nx=%d,y=%d,z=%d\n",x,y,z);}
}
------------------------------------------------------------------------------------------------------------
例2:
韩信点兵问题
韩信点兵又称为中国剩余定理,相传汉高祖刘邦问大将军韩信统御兵士多少,韩信答说,每5人一列余3人;每7人一列余4人;每8人一列余2人;每9人一列余8人;每11人一列余2人。
#include"stdafx.h"
intmain(intargc,charargv[])
{intnum=1;
while(num<=100000)
{if(num%5==3&&num%7==4&&num%8==2&&num%9==8&&num%11==2)
printf("\nnumis%d",num);
num=num+1;
}
}
---------------------------------------------------------------------------------------------
例3:
xx除以1923(即391)的余数为13,求x。
#include"stdafx.h"
intmain(intargc,charargv[])
{intx=1;
while(x<=1000)
{if(x%391==13)
{printf("x=%d",x);}
x=x+1;}
}
这个例子说明:
你要了解所用工具的限制。
int定义的的变量的最大值是有限的。
当超过这个限制,程序的结果是有问题的。
解决实际问题时要好好,分析这种限制
-----------------------------------------------------------------------------------
例3程序的优化编写
#include"stdafx.h"
intmain(intargc,charargv[])
{
intx;
for(x=1;x<1000;x=x+1)
{if(xx%391==13)
printf("x=%d",x);}
}
提醒与注意:
1、循环结构中,最内层的循环体是外层循环体之积;
2循环结构主要是运用穷举法思想,语句中的条件是起挑选作用的;
穷举法是一种思想,计算机程序设计时常用。
循环结构是常用于穷举的实现。
3、变量是先定义后使用,先赋值再使用;
4、循环结构程序中必须有语句改变条件中变量;
5、int定义的程序中所允许处理的最大数为2的32次方(即4294967296);
6、for语句中x++等价于x=x+1;
7、for语句中括号是成对使用的,语句是由三部分组成,记得用分号隔开哦!
-------------------------------------------------------------------------------
课堂笔记
时间:
第三周(3.16(周二)3.18(周四))
整理人:
陈雪梅杨维欣钟雪莲张宁远刘明丹
摘要:
1、double与float类型变量的精度和范围和小数常量的表表如:
“1e-15“
2、数学函数sqrt,fabs的使用。
3、for循环的三部分可以分别省略,while
(1){}for(;;){}都是死循环
4、break语句
5、注释的写法。
6、调试程序的方法。
7、例题计算sin(x)
思考题1:
验证哥德巴赫猜想:
任一充分大的偶数,可以用两个素数之和表示
思考题2:
编写一定的程序,使其能表示电子宠物的各种状态。
知识点:
3.16(周二)
1.Double占64bit,大致可表示小数点后十五六位;
Float占32bit,大致可表示小数点后七八位。
2.在scanf中,““中的变量之间若不加符号,则在输入变量时,可用”空格“,”tab“,”Enter“来间隔每个变量,若”“中输入了其他符号,则在输入变量时,就一定要输入相同的符号才能执行该程序。
3.printf中占位符可以是一个变量占位,也可以是一个表达式。
4.fabs位求绝对值的函数。
5.要表达科学计数法,则用“1e-15“结构表示,后面的-15表指数。
6.一个程序正在运行时,不可以删除或修改它。
7.for循环中,()里的内容由三部分构成,各部分间由“;“隔开。
8.sqrt()位求根函数,要使用时应在最前面加“#include’math.h’“.
9.当while循环中“()“里为正数时,该命题永远为真,成为死循环;在其后加”break()“便可结束while的死循环。
10.有关式子的简易写法:
x=x+3可写成x+=3;x=x(6+5)可写成x=(6+5)。
例题:
解一元二次方程
#Include“stdafx.h”
#Include”math.h”
intmain(intargc,charargv[])
{
Doublea,b,c,delta;
Printf(“%lf%lf%lf”,&a,&b,&c);
If(0==a)
{
If(0==b)
{
Printf(“nottrue.”);
}
Else
{
Printf(“root=%lf”,-c/b);
}
}
Else
{delta=bb-4ac;
If(delta>=0)
{
printf(“root1=%lf”,-b+sqrt(delta)/(2.0a));
Printf(“root2=%lf”,-b-sqrt(delta)/(2.0a));
}
Else
{
printf(“root1=(%lf+%lfi)”,-b/(2a),sqrt(-delta)/(2a));
Printf(“root2=(%lf+%lfi)”,-b/(2a),-(sqrt(-delta))/(2a));
}
}
}
3.18(周四)
1.for(j=1;j<=i;j++),其中i,j可作控制次数的量,而不用出现在之后的运算中。
2.循环套循环,循环次数由内外循环共同决定,循环次数越多,运算速度越慢。
3.用“//”,其后可加注释。
4.“break”语句的功能是结束该循环,其前面可加条件:
if(a>10){break;}。
5.调试程序的步骤:
组建——开始调试——stepinto;箭头所指的为将执行而未执行的语句,F10比F11力度要轻,可用于调试程序或看看程序的执行顺序。
例题1:
求y=x+x~3-x~5+x~7……
{
Doubley,x,b,n,i,j,a,f
b=x;
for(i=3;i<=n;i=i+2)
{a=1;
For(j=1;j<=I;j++)
{
a=ax;
}
b=b+af;
f=f(-1);
}
Prinft(“b=%lf”,b);
}
例题2:
Y=1!
+3!
-5!
+7!
……
{
intb,a,I,j,f=1;
scanf(“%d”,&n)
for(i=3;i<=n;i=i+2)
{
a=1;
for(j=1;j<=I;j++)
{
a=aj;
}
b=b+af;
f=f(-1);
}
Printf(“y=%d”,b);
}
例题3:
Y=x-x~3/3!
+x~5/5!
-x~7/7!
……
{
Doublef=-1,c,x;
Inta,n,i,j;
Scanf(“%lf%d”,&x,&n);
b=x;
for(i=3;i<=n;i=i+2)
{
a=aj;
}
c=1;
for(j=1;j<=i;j++)
{c=cx;
b=b+c/af;
f=f(-1);
}
Prontf(“y=%lf”,b);
}
By园林092班陈雪梅杨维欣钟雪莲张宁远刘明丹
2009.03.18
0907040121的attendance
----------------------------
1.计算机算出来的结果不见得都是正确的,当你使用一个工具的时候要了解它的局限性。
2.循环体内一定要有控制循环的语句。
3.我们要懂得凭经验去判断计算机的计算结果是不是正确。
——就像每个行业都想招有经验的人,这是一样的道理。
4.世界是物质的,程序是变量的。
5.括号是成对出现的,所以写程序要养成缩进的习惯。
6.解决问题的方法,记住十六个字:
自顶向下,逐步细化,模块设计,结构编码。
--------------------------------------
1.for循环语句:
for(x=1;x<=1000;x++),需要注意的是:
A.括号内的每部分都必须用分号隔开;
B.第一部分不属于循环体,第二部分是控制语句,第三部分属于循环体的一部分。
2.while
(1){x++;}括号内为1,则表明命题为真,这个循环是个死循环。
3.x++即x=x+1x+=3即x=x+3;x=6+5即x=x(6+5);其他的依此类