新手学C语言之入门

新手学C语言之入门
新手学C语言之入门

学习C语言(新手入门)

年轻的小荣子

阿尔法和李世石的围棋对弈让我们感受到了计算机的强大,事实上计算不仅要靠硬件设备的支持,还需要在里面运行代码(很多种,包括c),这些代码就是它的灵魂(譬如我们的思想)。

介绍几部通过在计算机里头运行代码从而创造无限可能的电影,个人觉得不错的:黑客帝国,超验骇客,创战纪,人工智能等。

正题,能编辑C语言的软件非常多,比如visual c++ 6.0/7.0,turbo c等。理论总是离不开实践,在要学习C语言理论之前先要找到属于自己的能实现代码结果的软件。

这样说,计算机语言和人的语言的区别在于,人通过各种发音实现交流,但是计算机主要是通过电流来传达信息,所以只能用0/1来表示电流拥有的两种状态,这样最底层的计算运作就是通过一段长长的0/1代码,通过0和1的不同组合来表示文字或者信息。C语言当然不是最底层的0/1代码,他是一个沟通的中介,比如等于号在c语言里就是两个等号“==”,这样使得我们更容易和计算机交流了,只要学会了C语言,它就能把我们的语言翻译成计算机的语言。

以下内容从简单到困难,先来学会如何运行c语言代码(用vc 6.0中文版):1.按以下步骤打开界面(以后都可以这样打开):

2.一些常用的功能键:

(1是compile编译的意思,就是把这些我们能看懂的符号转换成计算机代码,同时按这个键可以检查错误和验证是否能运行。2是build,建立一个可以运行的EXE类文件,就是把这些代码弄成一个能运行的东西。3就是run运行,只有经过查错和建立才可以按运行。是不是很简单,自己动手一遍就会)

3.输入代码并运行(里面的代码如下:

——————————————

#include

main()

{

int a,b,c;

a=1,b=2;

c=a+b;

printf("%d",c);

}

———————————————

Include的英文意思是包含、包括,顾名思义,#include就是把stdio.h 这个东西包含进去,其实#include<>是c语言里的一种格式,就是把什么包含进来的意思(这里是口语表达)。stdio.h叫做头文件,什么是头文件呢?打个比方,在C语言里我们要用到很多的比如开根号、乘方、阶乘n!等等数学公式函数,那么就可以把这些常用的同类型的函数放到一起形成一个函数库,然后给它取个名字比如叫math.h,这样当要用到这些函数的时候就不用自己的写了,直接用#include把整个库包含进来,里面的函数就可以直接调用。同样的,stdio.h也是这样一个库,里面有输入输出函数(就是支持键盘输入和屏幕输出)可以调用。类似的还有graphic.h图形函数库,string.h字符串函数库等等,调用格式一样的。

Main(){ 代码;}是C语言里必须有的一个格式,main翻译是”主要“,main函数就是主函数,相当于程序从这里入口并开始运行。运行的内容就是花括号{}里头的代码。

了解#includemain() {}的功能之后,就真正的开始代码实现的部分了。

上面有一条简单的代码:

——————————

int a,b,c;

a=1,b=2;

c=a+b;

printf("%d",c);

我们每句话结束用句号“。”来结束,C语言里用的是分号“;”来结束一个语句,上面每个语句后面都有一个分号。

a=1 表示赋值,把等号右边的数值赋予给左边,赋值之后a等于1,b等于2。同理可知c=a+b就是把a+b的结果数值赋予给c,这样c的值就是3.

print的翻译是打印,printf()函数实现的功能是输出(打印在屏幕上)。而printf ()函数是属于stdio.h的,这就是为什么上面要写#include原因。

int a,b,c;定义a,b,c三个变量,int是数据类型里的一种,int是整型,就是说a,b,c 都是整数而不能是其他类型。另外float浮点型,如果用float a,b,c,那么a,b,c 就能赋予小数值。还有char字符型,比如char a,b,,那么a,b只能赋予字符的值。这是因为在定义a,b,c变量的同时,要在计算机内存中分配给它们空间,整数占用2个字节而小数占4个字节,所以int a后a分配到的空间就是能装下2个字节的东西,然后如果用a=1.23,由于1.23是小数占用4个字节装不下,那么这个赋值就出错。因此,int,float,char等数据类型定义的意义就在于给变量分配一个多大的内存空间,存储对应类型大小的数据(任何没有定义数据类型的变量是不会分配内存空间所以是不能使用的!)。

来看下运行结果(print出结果c的值):

所以这样就实现了计算a+b赋值给c并输出c的值。

数据类型一览(当想要使用何种类型变量,直接用以下来定义即可):

C语言和数学语言也还是有所区别的,比如数学里判断a等于b用“a=b?”,但是C语言里“a=b?”就变成了赋值,它的等号是两个数学等号组成“==”,所以C里正确的表达是“a==b?”(不要纠结为什么要用两个等号,这是大神们设定的),为了能让计算机理解自己的代码,下面来认识C语言有哪些运算符:

int main()

{int a,b,c,d; a=1; b=a+1; c=b*2; c++; d=c%3; printf(“%d”,d); //ps:输出结果d。return 0;}

写一个能计算圆的周长和面积的C代码:

定义三个浮点型float(含有小数)变量s、l、r。

scanf()是输入函数,scan是扫描的意思,从键盘扫描你的输入,这个函数也是stdio.h头文件里的一个函数。Scanf()括号里的是参数,跟printf()一样,格式有所不同。printf(“%d”,c)表示输出结果c,c的数据类型是整型(int),用“%d”格式。如果输出结果是浮点型(float)则用“%f”格式,比如printf(“%f”,1.23)。如果是字符型(char),用printf(“%c”,’s’)等。

Scanf(“%d“,&r)比printf(“%d“,r)多了个地址运算符&,因为scanf是输入,把数据存入到r变量的地址空间,所以scanf()函数统一要加个地址运算符。

(在代码中添加备注用//备注,本行此符号之后的都为备注,也可以用/*备注*/,两个符号之内的是备注,可囊括多行。)

上面代码中:

————————————

#include

int main()

{

return 0;

}

————————————是标准主函数格式,int main()表示返回int型,return 表示返回,返回值为0。不必深究。————————————————————

float s,l,r; //备注:面积s,周长l,半径r。

scanf("%f",&r);

l = 2 * 3.14159 * r;

s = 3.14159 * r * r;

printf("周长为:%f,面积为:%f \n",l,s); ————————————————————

相当于一个能计算圆的周长和面积的计算器,只要scanf()输入r的值,就能printf()输出l(周长)和s(面积)的值,结果图示:

可以通过输入不同的半径来得到其周长和面积。

同理可以利用c语言来求得其他数学公式的结果:

求y=x^2+2x-3当x取某个数时的值。

代码:

——————————————————

int x,y;

scanf("%d",&x);//这里输入x的值。

y=x*x+2*x-3;

printf("输出结果y:%d",y);

——————————————————

对于这样的函数式:

x*x+2*x-3(0

Y=

x+2 (x>=10)

要用到条件语句。

(1)if语句

if(表达式)

语句1;

else

语句2;

(2)if语句的嵌套

If(表达式1)

语句1;//语句1也可以嵌套if语句。

else

if(表达式2)

语句2-1;

else

语句2-2;//这样的嵌套可以多重.

if()里的表达式如果正确则为真,执行紧接着的语句1,否则执行else下面的语句2。因此上面数学函数式的代码:————————————————————————————————————

#include

int main()

{

int x,y;

scanf("%d",&x);//scanf输入x的值。

if(x>0 && x<10) //x>0和x<10是与的关系,若同时为真则结果为真。

y=x*x+2*x-3;

else

if(x>=10)

y=x+2;

printf("输出结果y:%d",y); //双引号里的文字原样输出,%d输出为y的值。

return 0;

} ——————————————————————————————————ps:if()里的表达式常用到逻辑表达式“与或非”。

(3)switch语句

switch(表达式)

{

case 常量1:语句1

case 常量2:语句2

case 常量3:语句3

case 常量...:语句...

case 常量n:语句n

default:语句n+1

}

switch是匹配的意思,就是用表达式的值从常量1开始比较是否相等,如果相等,从相等的那条语句开始执行,到default的语句结束。如果想执行完这一句就结束,可以在其后加上break;语句来打断跳出switch。下面是输入小明同学的分数判断他的成绩级别的代码:

假如小明的成绩是a=76,那么十位数i=7,利用switch函数匹配,case 7符合,执行之后的printf(“C\n”)语句,又因为break;语句打断,所以不再执行之后的case,直接跳出switch(){ }。如果是59到0,都只有一条语句可执行。

(4)while循环语句

写一个代码,让你输入一个数字,如果你输入的数字不大于100则重新输入,否则结束。这里就用到了循环,循环必须要有判断条件语句,循环不能是没有结束条件的。

格式:

while(表达式)

{

语句1

}

如果表达式为真(判断正确),则执行语句1,直到表达式为假。

代码:

#include

int main()

{

int a;

scanf(“%d”,&a);//输入数字a。

while(a<=100) //判断是否小于等于100,是则循环,否则结束。

{

scanf(“%d”,&a); //重新输入a

}

return 0;

}

红色部分是循环体,花括号{ }里可以写多条语句,作为一个整体一并运行。执行的顺序是,判断while(表达式)真假,为真则执行循环体,执行完毕跳回到while(表达式)开始下一次的判断,直到判断为假结束循环。所以上面会不断循环要输入a,直到输入的值大于100,表达式为假结束。

另一种是do-while语句,区别只是先执行循环体,再判断,直到判断为假,while(表达式)后跟着一个分号!

代码如下:

#include

int main()

{

int a;

do

{

scanf(“%d”,&a); //输入a

}while(a<=100);//判断是否小于等于100,是则循环,否则结束。

return 0;

}

(5)for循环语句

for(表达式1;表达式2;表达式3);

循环体语句

实例:

以上加入了一个for循环(/* 多行备注 */),

表达式1 “a=1” 是for循环的入口,是进入for循环第一个运行的语句,而且只运行一次。

表达式1之后就到表达式2,表达式2 “a>b”后面虽然没有问号,但是它是一个判断语句,就像if语句或者while语句的判断表达式一样,在这里如果a>b 判断为真,则继续执行循环体语句,否则结束跳出for循环。

如果表达式2为真,接下来执行循环体语句,再接下来是表达式3,然后开始下一次的循环:表达式2(先判断是否为真)—> 循环体语句—> 表达式3,表达式1会且只会运行一次,之后的循环都不再执行,而且以上的表达式和循环体都可以是多个语句的组合,比如表达式1可以是“a=2,b++,……”。

(3,4,5为一个循环)——————————————————————

让我们来输出一个星号*构成的正方形:

表达1赋值使得i=1,j=4,判断i<=j为真,执行循环体{}后输出五个星号和换行,然后i=i+1(即i变成了2,j不变),继续下一次的循环:判断2<4为真,继续执行循环体语句,再输出一行星号并换行,如此重复到i=5大于j判断为假,结束for循环,这时共执行了4次循环体,打印出了4行星号,如上图。

事实上for循环里还可以套用for循环,也可以套用while循环,前者最为常见和好用。

假如要输出3次上面的矩形星号,那么把上面的for循环嵌入到另一个for循环中即可:

这样就把里面的for当成了外面for循环的循环体语句,按步骤执行即可!

兴趣是最好的老师,实践是最好的证明,如果有哪些记不住的地方,上机写代码运行处结果,让事实来让自己信服,这样不单更容易记住,而且还能提高动手能力。

如果遇到有疑问的地方,上网寻找答案,或者上机调试(就是对代码的执行结果有疑问,认为可能出现多种结果),看结果是否如自己所想,也是验证和解疑的一种好办法。

问题:输入两个正整数m和n,求其最大公约数

解题算法:辗转相除法,又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公约数的算法。

算法思路:假如求m和n的最大公约数(m>n),设y为m÷n的余数,继续用除数n除以余数y,直到余数为0。比如求99和21的最大公约数,有:

99÷21余15

21÷15余6(这里的被除数和除数分别是上面的除数和余数,相当于后移一位)15÷6余3

6÷3余0(整除)

那么最后一个除数3就是一开始两个数99和21的最大公约数,此算法可以应用到任何两个正整数上,这就是辗转相处求公约数的算法。

算法应用:

1、直接用scanf("%d%d", &m, &n) 输入需要求公约数的两个正整数;

2、m%n的余数为c

3、把n的值赋给m,把余数c的值赋给n(除数变成被除数,余数变成除数)

4、判断c是否为0,是则最后一个除数n(已经赋值给m)就是最大公约数,并输出最大公约数m即可(printf("m和n的最大公约数是:%d\n",m);)。

5、如果c不为0,继续执行步骤2,直到符合步骤4结束。

代码:

————————————————————

#include

int main() /* 辗转相除法求最大公约数 */

{

int m, n, c;

printf("输入两个正整数:\n");

scanf("%d%d", &m, &n);

c=n;

while(c!=0) /* 余数不为0,继续相除,直到余数为0 */

{

c=m%n;

m=n;

n=c;

}

printf("m和n的最大公约数是:%d\n",m);

return 0;

}

——————————————————————

自定义函数

下面代码显示1个错误,0个警告,双击错误提示,会在错误的当行出现一个箭头标识:原来是math.h前把<写成(,在printf()后漏了分号;。

在math.h中有一个求平方根的函数sqrt(x)用于求实数x的平方根,比如sqrt(1.21)的值等于1.1。

int main(){ return 0;}是代码中仅有的一个主函数,其实sqrt(),printf ()都是函数,只是其他的非主函数一般都是在主函数中“调用”。也就是说可以在主函数main(){}的外面自己定义一个函数如love(){},在花括号中写这个函数实现的功能,然后在main()函数中调用自己定义的love()函数,它就能实现其功能。好比sqrt()就是定义在math.h库中的一个函数,然后在主函数main()中直接调用就可以求平方根,这里只需要调用名称,不用管怎么实现的,功能实现只写在定义函数的花括号{}内。

自定义函数主要有三个点,函数的入口,内部代码实现,出口(返回值的输出)。—————————————

int And(int a, int b)

{

int c;

c=a+b;

return c;

}

—————————————

上面是一个计算a+b的自定义函数And(),其中()里的int a, int b是入口,表示到时将会有两个int型的数进来,然后里面的代码是实现a+b,最后的return 用来返回这个函数的结果值c,并且在And前面的int是规定这个返回值c的数据类型的。

因此,在主函数main()中可以这样用:

——————————————

main()

{

int d;

d=And(3,5);

printf(“%d”,d);(ps:运行时不接受任何中文输入法符号)

}

——————————————

那么输出的d的值是多少呢?由于3和5都是int型符合And()函数的“入口”,事实上3和5叫做实参(实际的参数),a和b叫做形参(形式上的参数),在调用这个函数之后,会把实参的值传递给形参,所以a=3,b=5。计算之后得出c的值为8,这就是And()内部代码的实现,然后通过return提供int型的返回值c,所以最终整个And(3,5)的值就是8。这样,就可以把实现某个功能的代码自定义为一个独立的函数,然后在主函数中调用,好处是可以多次调用,而且调用只需要写一次调用的函数名和写入实参,简便许多。

另外自定义函数的函数名可以自己随便起,但是不能使用中文等,只能是标识符,大小写有别,不能跟int,for这些关键字相同,标识符由字母,数字,下划线组合而成,不能以数字开头。一般使用英语单词或简称比较好记。

下面用自定义函数实现a+b:截图

自定义函数一般写在main函数后面或者放到其他地方,然后把定义函数的名称那一行照搬到main()函数的前面加个分号进行“声明”,声明之后的自定义函数才能在main()函数中合法被调用。

所以,自定义函数就这样,根据需要,自己设定返回值的类型,自己设定函数名,自己设定有多少个形参和各个形参的类型,函数里就像main()里一样实现各种功能,然后return后写上想返回的值,返回值可以是一个数字如10,可以是一个存在的变量如c,也可以是一个表达式如(2*c+a),以此返回值作为整个定义函数的结果。

把上一节求最大公约数的解法写成一个自定义函数,返回值类型是int,取函数名为gcd,入口有两个形参设为(int m,int n),所以

声明部分为:

int gcd(int m,int n);//这里加分号

(定义过形参m,n后在函数内部就不用重复定义了,直接用,其他没有定义的如果需要必须定义。)

定义函数为:

int gcd(int m,int n) //这里不能加分号

{

int c;

printf("输入两个正整数:\n");

scanf("%d%d", &m, &n); //这一句去掉,通过入口传递进形参m和n的值c=n;

while(c!=0) /* 余数不为0,继续相除,直到余数为0 */

{

c=m%n;

m=n;

n=c;

}

return m;

}

主函数为:

int main() //主函数

{

int a,b,d;

scanf("%d%d", &a, &b);

d=gcd(a,b); //调用定义的函数gcd()

printf("%d \n",d);

return 0;

}

有兴趣可以写几个自定义函数:分别求最大公约数,a+b,求1+2+3+……+n,然后在同一个主函数中调用它们。

自定义函数与递归:

递归,顾名思义就是传递过去,然后归来。比如阶乘5!,传递过去成为

5×4!,再传递过去成为5×4×3!直到变成5×4×3×2×1!之后,再倒过来归回来,因为1是直接已知的,然后归来乘以2,再归来乘以3……递归的前提条件是下一步的形式跟原来的是一致的,比如n!变成n×(n-1)!,(n-1)!变成(n-1)×(n-2)!。另外递归必须有个出口,不能无限的递下去却没有归回来,要有个终止点(具体的),比如阶乘最后的2×1。

用知乎作者Memoria的话来说就是:假设你在一个电影院,你想知道自己坐在哪一排,但是前面人很多,你懒得去数了,于是你问前一排的人「你坐在哪一排?」,这样前面的人 (代号 A) 回答你以后,你就知道自己在哪一排了,因为只要把 A 的答案加一,就是自己所在的排了。不料 A 比你还懒,他也不想数,于是他也问他前面的人 B「你坐在哪一排?」,这样 A 可以用和你一模一样的步骤知道自己所在的排。然后 B 也如法炮制。直到他们这一串人问到了最前面的一排,第一排的人告诉问问题的人「我在第一排」。最后大家就都知道自己在哪一排了。

就是这样,以同样的形式向前传递问题,到第一排有具体的答案后向后一层层返回答案。这里的第一排就是递归的出口。——————————————————

int Digui(int i)//求i的阶乘,返回值为i!

{

int m = 0;

if (0 == i)

return (1);

else

m = i * Digui(i-1);

return m;

}(ps:也可以用单词来做变量,比如int sum,number;)——————————————————

假如输入实参i的值为4,不等于0,执行else之后语句m = i * Digui(i-1),这样就变成了求4*Digui(3),调用了自身Digui(3),然后Digui(3)又变成了3*Digui(2),直到参数等于0,执行if之后的return 1,不再调用自身函数,最终计算出4*3*2*1。递归的好处显而易见:变化成一个跟自身形式相同但是更加简单的问题,从而可以再利用自身求解,直到这个问题最终变成一个具体的值,然后再逆推回来得到结果。

递归的基本思想无非就是把规模大的问题转化为规模小的相似的子问题来解决。另外递归跟循环有些相似,计算的方向刚好相反。

有兴趣可以上各大高校acm、oj题库做题(网搜oj):

题库:

选ID1000题进去可以看到问题的描述:

按summit键提交自己的代码:

然后看到系统的判断(通过与否):

C语言入门手册

●C语言入门手册 ●这里不是教你什么知识,而是给你澄清一些资料,只给对编程一窍不通的或 者刚入门的人看。如果你尚未学习或者才学习不够一天,一定要看这手册,这份手册已经讲述的知识,我们不会在版面给予回答,此手册我会尽量保持准确,但如有不正确,请指正,我也会不断更新此手册 ●Q:什么是C? ●A:一门面向过程的计算机语言,发明至今已经差不多有三十年历史,由于 它相对其他高级语言高效,运行效率又比较接近低级语言,所以至今仍得到广泛的引用,无论你用windows还是linux,你现在看到东西的底层都是用C 写的,而大部分的网络协议都是用C实现的,画面最漂亮的游戏用C实现的,工业控制程序也是用C实现的。C不是万能,也不是垃圾,只是一门某些方面适用,某些方面不适用的语言 ●Q:什么是C++? ●A:一门面向对象的计算机语言,发明至今已经有二十多年了。由于面向对 象编程对程序架构有较好的帮助,因为比较适合构建大型的系统(当然,学术界对此存在争论),但无论如何,C++由于和C一样接近底层,而且又面向对象,所以也得到广泛的使用。C++不是万能,也不是垃圾,只是一门某些方面适用,某些方面不适用的语言,不要向某一个笨蛋一样认为c + 类== c++ ●Q:TC,VC,BC,BCB是什么?有什么区别?谁好? ●A:它们都是开发C/C++的开发环境,是软件。它们是不同时期由不同公司 发行的软件Turbo C ,Borland公司在八十年代末期发行的C语言的开发环境Turbo C++,Borland公司在八十年代末九十年代初发行的C++语言的开发环境Visual C++,Microsoft公司在九十年代至今发行的C/C++开发环境Borland C++,Borland公司在九十年代中发行的C/C++开发环境Borlan C++ Builder,Borland公司在九十年代后期至今开发的C/C++开发环境,与其他开发环境不用的是它属于快速应用程序开发(RAD),可以让你不写代码就能建立程序,当然它的运行效率见仁见智没有什么是万能的,不同场合用不同的东西而且C/C++还有很多开发环境,譬如gcc,watcom C++,Dev C/C++ ●Q:什么语言/开发环境最好? ●A:没有最好,只有最适用某方面 ●Q:需要什么基础才能学C/C++ ●A:至少学过幼儿园语文,小学英语,小学数学才能学,所以先确定你拥有 小学学历,然后就能学了至于学习C++前是否需要学C,C++的发明者认为不用,但见仁见智 ●Q:如何更有效的学习C/C++? ●A:不断的看书+实践,先把书上的练习题做完再说,务必记住不要钻牛角尖, 很多初学者经常犯这样的错误,不要盲目的提出问题,现在看来是问题其实在以后的实践和学习中都会慢慢理解的,任何东西都需要一个过程。万万不可浮躁。 ●Q:TC能开发windows软件吗? ●A:不能,因为不同系统,生成的程序格式不同 ●Q:要多久才能成为高手? ●A:当你不再问这个问题的时候,总是会有比你技术高的人,也许你在你生 活的环境中没有,的确可以说你在这个小范围是高手,但是再在别的地方一定会有比你厉害的人只是你没有接触到而已 ●Q:学C/C++有什么用? ●A:先想想你为了什么而学,想不到就不要学 ●Q:学完C/C++又能怎样 ●A:没怎样,学是为了使用服务的,只证明你会一门语言,但不等于你会开 发软件。就像学外语,为的是跟外国人交际,但如果你不懂交际,即使精通英语,法语,日语,朝鲜语,阿拉伯语,西班牙语……还是不会跟人交际。 你应该继续学习软件开发的知识,包括数据结构,算法,软件工程等等,还有要提高数学水平,譬如微积分,离散数学,矩阵,概率,统计,数值分析。 ●Q:我有很多不懂,怎么办? ●A:查帮助,搜索引擎。最著名的帮助文档叫MSDN,我们主要使用其光盘发 行版,D版可以从电脑城买,正版可以去微软订购,如果没有光盘可以去https://www.360docs.net/doc/b91061714.html,查询。 ●二、开始学习了 ●Q:我在TC看到缺少cos.obj的提示,为什么?

小甲鱼零基础入门学习C语言全套教程打包下载及在线观看

《零基础入门学习C语言》全套教程打 包下载及在线观看 至今小甲鱼仍然莫名其妙会受到这样的攻击,喜欢鱼C的朋友帮忙转载下吧,所有视频完全免费!不需要任何版权!尽量转,让那些狼心狗肺的家伙不能得逞! 您也可以通过以下链接捐助鱼C,一元捐助鱼C重建家园: https://www.360docs.net/doc/b91061714.html,/item.htm?id=12584158611 第八章_指针01 在线观看:https://www.360docs.net/doc/b91061714.html,/v/bbk4575 下载地址:https://www.360docs.net/doc/b91061714.html,/file/f62aa17e74# 第八章_指针02 在线观看:https://www.360docs.net/doc/b91061714.html,/v/bbk4576 下载地址:https://www.360docs.net/doc/b91061714.html,/file/f65998ba66# 第八章_指针03 在线观看:https://www.360docs.net/doc/b91061714.html,/v/bbk4577 下载地址:https://www.360docs.net/doc/b91061714.html,/file/f6eefe22e0# 第八章_指针04 在线观看:https://www.360docs.net/doc/b91061714.html,/v/bbk4578 下载地址:https://www.360docs.net/doc/b91061714.html,/file/f6c1e2753e# 第八章_指针05 在线观看:https://www.360docs.net/doc/b91061714.html,/v/bbk4579 下载地址:https://www.360docs.net/doc/b91061714.html,/file/f6deacb2cd# 第八章_指针06 在线观看:https://www.360docs.net/doc/b91061714.html,/v/bbk4587 下载地址:https://www.360docs.net/doc/b91061714.html,/file/f63b6e3427# 第八章_指针07 在线观看:https://www.360docs.net/doc/b91061714.html,/v/bbk4588 下载地址:https://www.360docs.net/doc/b91061714.html,/file/f6408885a4# 第八章_指针08

C语言从入门到精通所需的7本书

C语言从入门到精通所需的7本书 作者:王霸羔子 1.C primer plus C primer plus作为一本被人推崇备至的c入门经典,C primer plus绝非浪得虚名。应该算得上C教材里最好的入门书了。 在知识广度上,很少有书能匹及。它能为你系统学习c提供一个良好的平台。作者对c 的见解精辟。在娓娓叙述的同时,作者辅以大量程序以分析。它让我对C有了更加系统的全新认识。决非国人所写的那些公理化的教条说教,我觉得作者把自己的心血全部吐露。书很厚,近700页,却不没有让我觉得任何的烦琐。甚至是兴趣盎然。我把上面所有的课后题目都做了。 最为重要的是,看完这本书后,我再也不觉得c很高深枯燥无味了。如果你问我,你最大收获是什么。我会告诉你,兴趣! 2.The C programming language

拿到这本薄薄的书,很多人开始怀疑,C语言是这么几百页能讲清楚的么。看完这本书,我想答案已经很明了,却真的让人感到震憾。什么是好书?无法删减的书才是真正的好书。 K&R的书一如C语言的设计理念:简单而高效里面的习题建议都认真做一遍,而且是在linux下用vi来做,用makefile来编译,用shell脚本来进行测试,本来第八章的题就是和linux 相关的计算机的大学生们不应只会在WINDOWS下用VC来编程,而都应该在linux环境下进行程序设计,因为linux本身就是为开发者准备的操作系统。 3. C和指针 这本书最大的特点就是和指针结合在一起进行讲解,通过一些经典的C例题对所学的知识进行巩固,对指针的基础和深入的探讨,有助于初学者更好的理解C语言,还有明白C 的存储机制。我之前买了《C语言详解》和《C Primer Plus》结合这本书一起学习,可以说是完美的,希望每个热爱C语言的人能够拥有这本书。 我在这里推荐给所有想学好C语言的朋友! 4.C专家编程

C语言入门必做习题100例(四)

1. (N阶梵塔) 有K根棒,第一根上放N片大小不等的圆盘,并保持上小下大的 顺序。现将N片圆盘从第1根移至第K根,移动中均保持上小下大的顺序,问最少移几次方得结果,求出移动方案。 2. 某一印刷厂有六项加工任务,对印刷车间和装订车间所需时间见下表(时间单位:天) 任务│J1 J2 J3 J4 J5 J6 ─────┼─────────────── 印刷车间│31252911 装订车间│8109631 如何安排加工顺序,使加工时间最少。 3. 将7万元投资到A,B,C三项目上,其利润见下表: 投资额(万元)│1234567 ──────┼──────────────────── 项A│0.11 0.13 0.15 0.24 0.24 0.30 0.35 B│0.12 0.16 0.21 0.25 0.25 0.29 0.34 目C│0.08 0.12 0.20 0.26 0.26 0.30 0.35 如何分配投资额,使获得的利润最大。 4. 无根树与通常所说的树(有根树)很相似,它包含有节点和枝,但不含有根。无根树节点之间只有相邻关系。如图一所示,是一棵有七个节点的无根树,以图一的A为根节点得到图二所示的有根树,以B为根节点得到图三所示的有根树,但从无根树的角度看,图一、二、三是结构相同的无根树,同时无根树的结构与节点的名称无关。 有根树可以用字符串的形式表示,其递归表示方法是: 根节点(子树1子树2子树3...) 图一,图二的有根树可表示为 A(B(CF(EGD))) 和 B(ACF(EGD))。由于子树的表示顺序可以不同,所以一棵有根树可以有多种表示方法,如图三又可表示成 B(F(EGD)CA) 或 B(ACF(DE(G)) 等。表示无根树时,可以以它任一节点为根节点,将其看作有根树,从而可以利用有根树的字符串表示形式来表示无根树。 任务一:由键盘读入一个字符串表示的无根树,无根树的各节点的名称用互不相同的大写英文字母表示。由用户输入一个节点的名称,程序应能够输出一种以该 节点为根节点的字符串形式。程序输出无根树的字符串形式时,各个节点的名称无 关紧要,所有节点都以P表示,以后的各种输出也采用这种形式。例如:输入无根 树的字符串形式:A(B(CD(EF))),指定根节点为D,程序应能输出 P(P(PP)PP),P(PP(PP)P),P(PPP(PP))中的任意 一种即可。 任务二:输入两个串表示的无根树,判断其结构是否一样。注意它与节点名称 无关,只考虑结构。

c语言入门经典必背个程序

c语言入门经典必背个程序 c语言入门经典必背18个程序 1 、/* 输出9*9 口诀。共9 行9 列,i 控制行,j 控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d 表示左对齐,占3 位*/ } printf("\n");/* 每一行后换行*/ } } 2 、/* 古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔 子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/* 控制输出,每行四个*/ f1=f1+f2; /* 前两个月加起来赋值给第三个月*/ f2=f1+f2; /* 前两个月加起来赋值给第三个月*/ } } 3 、/* 判断101-200 之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除 2 到sqrt( 这个数) ,如果能被整除, 则表明此数不是素数,反之是素数。*/ #include "math.h" main()

简单易懂的C语言源代码(供初学者使用)

#include main() {float pi=3.14159265,r; printf("enter radius:\n"); scanf("%f",&r); printf("r=%.2f,c=%.2f,area=%.2f\n",r,2*pi*r,pi*r*r); system("pause"); } #include main() {int m,n,x,y; printf("inputm,n:\n"); scanf("%d%d",&m,&n); if (n%2==1) {printf("error!! n bu shi ji shu!\n",n); return;} /*n在这里不能是奇数*/ x=(4*m-n)/2; y=(n-2*m)/2; if((x>=0)&&(y>=0)) printf("x=%d,y=%d\n",x,y); else printf("shu ru cuo wu!\n");

getch(); } #include #include #include main() {float a,b,C; printf("enter 3number(a,b,C):\n"); scanf("%.2f %.2f %.2f",&a,&b,&C); s=0.5*a*b*sinC; printf("s=%.2f\n",s); system("pause"); } #include main() {int ds,nl,yf; char c; printf("shu ru ds;\n"); scanf("%d",&ds); if (ds<14||ds>1184)

C语言入门基础教案

C语言基础教案 教学目标: 一认知目标:了解C语言的特点和C语言的开发步骤 二能力目标:初步了解C程序的组成结构和主函数的作用; 掌握五种基本算术运算符的使用:+、—、*、/、%,了解优先级与结合性;三情意目标:学习C语言基础上能使用Microsoft Visual C++6.0 进行基本的C程序开发 教学要求: 识记:计算机程序设计语言的一些必备知识与理论 理解:理解C程序的组成结构和主函数的作用; 理解C语言等高级程序设计语言的开发过程 理解C语言中各种运算的运算规则,由运算符和相关数据组成表达式的方法; 运用:能使用printf()函数进行信息的输出; 能编写简单程序 教学重点: 1)计算机程序设计语言的理论知识,语言的分类和特点以及开发过程等; 2)C语言的简介,结构特征和特点等; 3)如何使用Microsoft Visual C++ 6.0进行C语言程序开发; 4)C语言源程序的结构介绍及基本语法的简介; 5)C语言源程序的书写要求; 6)C语言基础:函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等。 教学难点: 如何让学生理解C语言的结构及语法基础还有源程序的书写要求,掌握对函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等 授课方法:讲授法与演示法相结合

计算机程序设计语言基础 一新课导入 大家都听过程序员没?或者是网络上俗称调侃的码农?对,简单讲就是编写计算机代码的工作。在新世纪大家对与计算机相关的软件和产品都不陌生,每个人都使用过计算机软件如微信,QQ等等,那这些软件又是怎么开发出来的呢?简单来讲它们是怎么产生的呢?对,它们都是使用计算机程序编写出来的。今天我们就来学习了解下计算机程序设计语言。 二新课讲授 1计算机程序设计语言介绍及分类 程序概念:程序是由一系列指令组成的,为解决某一具体问题而设计的一系列排列有序的指令的集合。 程序设计语言分为三类:机器语言、汇编语言、高级语言。 ●机器语言:一台计算机中所有指令集合称为该计算机的指令系统,这些指令就是机器语 言,它是一种二进制语言。 优点:面向机器、程序简洁、运行速度快; 缺点:不直观、难懂、难记、难写、难以修改和维护 ●汇编语言:使用符号(助记符)来代替机器语言中的二进制代码 优点:质量高、执行速度快、占用内存少 缺点:面向机器,与机器语言基本上一一对应,具有机器语言的缺点 ●高级语言:接近自然语言,使用英语单词表达语句,便于理解、记忆和掌握 优点:通用性强,便于理解、记忆和掌握 缺点:不能直接运行源程序,运行速度相对慢 2高级程序设计语言的开发过程 ?分析问题、建立模型 ?表现模型 ?源程序的编写 ?程序的编译与连接 ?程序的测试与调试 3 C语言的特点 ①既有高级语言的程序思想与设计方法,又有低级语言的操作能力; ②结构化体系 ③可以直接访问内存的物理地址,丰富的运算符和数据类型 ④可移植性强 ⑤代码效率高 4 使用Microsoft Visual C++ 6.0开发C语言程序 (1)启动Microsoft Visual C++ 6.0

零基础如何学习编程心得笔记

零基础如何学习编程心得笔记 自学编程2年来,加过n多群,泡过n多论坛,接触过心怀激情的编程新人,遇到过沉着冷静的技术大牛……编程,吸引了一批又一批的热血青年,或许是为了理想,或许是心中的爱好,不断有新人的加入,也不断有人从编程中退出。编程的入场入口只有一个,出场的出口却很多。自学编程的新人,有很大一部分卡在了入门上,对此,我想写下对编程入门的一些拙见,权当抛砖引玉,或对或错,还望同学们自己鉴定。 1.零基础,打算自学编程,应具备哪些的知识? 答: 对于入门阶段,对知识水平的要求并不算高,或者说很低,大家都应该听说过xxx小学生编程如何如何这般这般怎么样之类的话题,这里,我们不谈长期发展,只谈如何入门。首先,我觉得你应该具备计算机的基本操作能力,如果说你连新建一个文件夹或者说从网上下载资料都不会,那么你应该先买本《windows xx从入门到提高》看,然后再考虑编程这件事,如果你觉得对计算机的基本操作已经熟练后,请继续向下看。 2.学编程应具备哪些条件? 答: 第一:硬件保证,首先你应该具备一台电脑,不管是笔记本还是台式,也不管性能高低,性能对前期学习编程几乎无任何影响,就入门来看,操作系统还是首选windwos。 第二:有xx语言的入门本书,纸做的,具体xx语言是哪种语言,后面我们再讨论这个问题。虽说现在铺天盖地的都是电子书了(保留这句话的确定性),到处是扫描版,还高清呢,但我还是推荐看纸做的书,好处有两点,其一是便于携带,可以随时翻阅;其二是避免眼疲劳,我不信你一直晚盯着显示器看电子书眼睛不会酸;还有一点,尊重图书作者的版权。 第三:时间保证,如果你每天都有一大堆事等着你去处理,先去处理那些事吧,处理完后把剩余时间划出一整块的给编程,进行随时可能被打断的学习,在编程这块,我不认为这是在用功学习,零碎时间去背单词?应该是个不错的选择。 3.你确定要学编程? 答: 这个问题看起来有点多余,但为什么要提出这个问题?要知道,编程不是一朝一夕的事,如果你只是一时的冲动,或者仅仅是要完成心目

写给初学者──如何学习C语言

写给初学者──如何学习C语言(For computer related professional and programming of scholars........) 学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。 一、要读就读好书,否则不如不读 所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。 大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的(PS:这句话不假,的确够浅显的,不过入门也够了,看过後在读别的书就不会太难了)。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误(PS:的确有错误,看的时候多注意下)。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:) Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。 如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦

STM32入门C语言详解精编版

阅读flash:芯片内部存储器flash操作函数我的理解——对芯片内部flash进行操作的函数,包括读取,状态,擦除,写入等等,可以允许程序去操作flash上的数据。 基础应用1,FLASH时序延迟几个周期,等待总线同步操作。推荐按照单片机系统运行频率,0—24MHz时,取Latency=0;24—48MHz时,取Latency=1;48~72MHz时,取Latency=2。 所有程序中必须的 用法:FLASH_SetLatency(FLASH_Latency_2); 位置:RCC初始化子函数里面,时钟起振之后。 基础应用2,开启FLASH预读缓冲功能,加速FLASH的读取。 所有程序中必须的 用法:FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); 位置:RCC初始化子函数里面,时钟起振之后。 3、阅读lib:调试所有外设初始化的函数。 我的理解——不理解,也不需要理解。只要知道所有外设在调试的时候,EWRAM需要从这个函数里面获得调试所需信息的地址或者指针之类的信息。 基础应用1,只有一个函数debug。所有程序中必须的。 用法:#ifdef DEBUG debug(); #endif 位置:main函数开头,声明变量之后。 4、阅读nvic:系统中断管理。 我的理解——管理系统内部的中断,负责打开和关闭中断。 基础应用1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。 所有程序中必须的。 用法:void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; //中断管理恢复默认参数 #ifdef VECT_TAB_RAM //如果C/C++ Compiler\Preprocessor\Defined symbols中的定义了 VECT_TAB_RAM(见程序库更改内容的表格) NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //则在RAM调试 #else //如果没有定义VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);//则在Flash里调试 #endif //结束判断语句 //以下为中断的开启过程,不是所有程序必须的。 //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC优先级分组,方式。 //注:一共16个优先级,分为抢占式和响应式。两种优先级所占的数量由此代码确定, NVIC_PriorityGroup_x可以是0、1、2、3、4,分别代表抢占优先级有1、2、4、8、16个和响应优先级有16、8、4、2、1个。规定两种优先级的数量后,所有的中断级别必须在其中选择,抢占级别高的会打断其他中断优先执行,而响应级别高的会在其他中断执行完优先执行。 //NVIC_InitStructure.NVIC_IRQChannel = 中断通道名; //开中断,中断名称见函数库 //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级 //NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级

C语言从入门到精通(吐血分享)4

成功! 结构体、链表、文件 数组、字符串 函数、指针 三种结构化程序设计 三种数据类型、六大表达式 一、简单的程序 #include数学函数命令行 main()/*主函数*/ {/*左花括号,函数体的开始*/ int a,b,c;/*定义语句*/ a=3;/*执行语句*/ b=4; c=a+b; printf("a=%d,b=%d,c=%d\n",a,b,c); }/*右花括号函数体结束*/ 二、vc++6.0使用 1.新建 2.编译 3.组建 4.运行 三、标识符、常量和变量 1.标识符:

1)用途:命名 2)命名规则:a.字母、数字和下划线组成 b.第一个必须是字母或下划线 3)区分大小写 4)分类: a.关键字:代表固定含义,不能另作它用 b.预定义标识符:预先定义并具有特定含义的标识符 库函数的名字(printf)和预编译处理命令(define) 建议不另作它用 c.用户标识符 “见名知意” 2.常量 1)定义:程序运行过程中,其值不能被改变的量。 2)分类:整型常量、实型常量、字符型常量和字符串常量 3)符号常量 #define M5 #define PI 3.14159 s=PI*r*r; 3.变量 1)定义:程序运行过程中,其值可以改变的量 2)实质:一个变量实质上是代表了内存中的某个存储单元 3)原则:变量先定义后使用 四、三种基本数据类型

1.整型数据 1)整型常量 二进制八进制十进制十六进制 十进制--->二、八、十六进制:除n求余 二、八、十六进制--->十进制:按权展开 八进制、十六进制=》二进制 八进制转化二进制 1:0012:0103:0114:1005:1016:110 7:111 十六进制转化为二进制 1:00012:00103:00114:01005:0101 6:01107:01118:10009:1001a:1010 b:1011c:1100d:1101e:1110f:1111 2)整型变量 定义语句的格式 类型名变量名; 整型分类(有符号、无符号) signed unsigned 表2.1 <3>整型数据在内存中的存储 1>最小存储单位:位 2>1字节(B)=8个二进制位 3>在内存中,存储空间右端代表低端,左端代表高端 4>最高位是符号位

40个C语言的基础编程题

C语言基础编程题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 2.程序源代码: main() {long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ }} ========================================【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 2.程序源代码: #include "math.h" main() {int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) {printf("%-4d",m);h++; if(h%10==0) printf("\n");} leap=1;} printf("\nThe total is %d",h);} ======================================== 【程序3】 题目:打印出所有的“水仙花数”,所谓“水仙花数”是 指一个三位数,其各位数字立方和等于该数本身。例 如:153是一个“水仙花数”,因为153=1的三次方+ 5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个 数分解出个位,十位,百位。 2.程序源代码: main() {int i,j,k,n; printf("'water flower'number is:"); for(n=100;n<1000;n++) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) {printf("%-5d",n); } } printf("\n");} ======================================== 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打 印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小 的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程 已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值, 并用n除以k的商,作为新的正整数你n,重复执行第 一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复 执行第一步。 2.程序源代码: /* zheng int is divided yinshu*/ main() {int n,i; printf("\nplease input a number:\n"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) {while(n!=i) {if(n%i==0) { printf("%d*",i); n=n/i; } else break; } } printf("%d",n);} ======================================== 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成 绩>=90分的同学用A表示,60-89分之间的用B表 示,60分以下的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 2.程序源代码: main() {int score; char grade; printf("please input a score\n"); scanf("%d",&score); grade=score>=90?'A':(score>=60?'B':'C'); printf("%d belongs to %c",score,grade);} ======================================== 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最 小公倍数。 1.程序分析:利用辗除法。 2.程序源代码: 第一种做法: #include "stdio.h" void main() { int m,n,i; printf("请输入两个正整数:"); scanf("%d%d",&m,&n); if(m='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ')

C语言入门的基本学习方法

一、C语言入门的基本学习方法 《C语言》的内容很丰富,有的部分涉及到的细节很多,如硬件知识和数据结构知识等,自学时不可能面面俱到,否则必然会顾此失彼,反而抓不住主要矛盾。笔者认为对初学C 语言的考生,开始不必在每一个细节上过于死抠,而应当把主要精力放在最基本、最常用的那些部份,待有一定的基础后再深入到一些非主要的细节,有一些细节需要通过较长期的实践才能熟练掌握。初学C语言时,可能会遇到有些问题理解不透,请不要气馁,鼓足勇气向后面的内容学习,待学完后面的章节知识,前面的问题也就迎刃而解了。学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是学习的人最不易做到的,然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。 下面我们就围绕《C语言》的特点、以98年全国等级考试大

纲为基础,把里面的重点和难点,从宏观和微观两个角度,就如何学好这门课程提供一些建议和方法,供大家学习时参考。 首先从宏观上谈一谈自学C语言的方法。 我认为要学好C语言首先必须了解等级考试C语言的大纲和内容,以及各种辅助材料的用途,这是学好C的基础。从以前的经验以及考网上的一些信息可知,要自学C语言必须准备以下资料: 1、教材:大家现在都公认是清华大学谭浩强主编的那本,当然有其他的也可以,如高校出版社的。 2、习题集:我认为清华大学的《C语言样题汇编》不错。书后面附有答案。 3、上机练习:我认为南开大学的那个可以,最好是在考前从头到尾做一遍。答案可以去考网下载区下载。 4、大纲:这个肯定要的,可以在考网二级版那里去下,然后打印出来。

C语言基础练习100题(含答案)

C语言基础练习100题(含答案) 雷柳青编排 1、下面程序的输出是________ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是________. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C语言字符常量是__________. A) '\t' B) "A" C) 65 D) A 4、字符(char)型数据在微机内存中的存储形式是____. A) 反码B) 补码C) EBCDIC码D) ASCII码 5、设int a=12,则执行完语句a+=a-=a*a后,a的值是________ A) 552 B) 264 C) 144 D) -264 6、执行下面程序中的输出语句后,输出结果是______. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 7、下面程序的输出是__________. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 8、下面程序的输出是___________. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 9、以下程序的输出结果是________. #include void main() { int x=10,y=10; printf("%d %d\n",x--,--y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 10、若x和y都是int型变量,x=100,y=200,且有下面的程序片段: printf("%d",(x,y)); 上面程序片段的输出结果是_______. A) 200 B) 100 C) 100 200 D) 输出格式符不够,输出不确定的值 11、阅读下面的程序 #include void main() { int i,j; i=010; j=9; printf("%d,%d",i-j,i+j); } 则程序的运行结果是________. A) 1,19 B) -1,19 C) 1,17 D) -1,17 12、阅读下面的程序 #include void main() { int i,j,m,n; i=8;j=10; m=++i; n=j++; printf("%d,%d,%d,%d",i,j,m,n); } 程序的运行结果是_________. A) 8,10,8,10 B) 9,11,8,10 C) 9,11,9,10 D) 9,10,9,11

新手学C语言之入门

学习C语言(新手入门) 年轻的小荣子 阿尔法和李世石的围棋对弈让我们感受到了计算机的强大,事实上计算不仅要靠硬件设备的支持,还需要在里面运行代码(很多种,包括c),这些代码就是它的灵魂(譬如我们的思想)。 介绍几部通过在计算机里头运行代码从而创造无限可能的电影,个人觉得不错的:黑客帝国,超验骇客,创战纪,人工智能等。 正题,能编辑C语言的软件非常多,比如visual c++ ,turbo c等。理论总是离不开实践,在要学习C语言理论之前先要找到属于自己的能实现代码结果的软件。 这样说,计算机语言和人的语言的区别在于,人通过各种发音实现交流,但是计算机主要是通过电流来传达信息,所以只能用0/1来表示电流拥有的两种状态,这样最底层的计算运作就是通过一段长长的0/1代码,通过0和1的不同组合来表示文字或者信息。C语言当然不是最底层的0/1代码,他是一个沟通的中介,比如等于号在c语言里就是两个等号“==”,这样使得我们更容易和计算机交流了,只要学会了C语言,它就能把我们的语言翻译成计算机的语言。 以下内容从简单到困难,先来学会如何运行c语言代码(用vc 中文版): 1.按以下步骤打开界面(以后都可以这样打开): 2.一些常用的功能键: (1是compile编译的意思,就是把这些我们能看懂的符号转换成计算机代码,同时按这个键可以检查错误和验证是否能运行。2是build,建立一个可以运行的EXE类文件,就是把这些代码弄成一个能运行的东西。3就是run运行,只有经过查错和建立才可以按运行。是不是很简单,自己动手一遍就会) 3.输入代码并运行(里面的代码如下: —————————————— #include<> main() { int a,b,c; a=1,b=2; c=a+b; printf("%d",c); } ——————————————— Include的英文意思是包含、包括,顾名思义,#include<>就是把这个东西包含进去,其实#include< >是c语言里的一种格式,就是把什么包含进来的意思(这里是口语表达)。叫做头文件,什么是头文件呢?打个比方,在C语言里我们要用到很多的比如开根号、乘方、阶乘n!等等数学公式函数,那么就可以把这些常用的同类型的函数放到一起形成一个函数库,然后给它取个名字比如叫,这样当要用到这些函数的时候就不用自己的写了,直接用#include<>把整个库包含进来,里面的函数就可以直接调用。同样的,也是这样一个库,里面有输入输出函数(就是支持键盘输入和屏幕输出)可以调用。类似的还有图形函数库,字符串函数库等等,调用格式一样的。

(1小时学会C语言51单片机)C语言入门教程

相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没 什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大 家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什 么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机, 但是具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片 机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候, 我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出, 或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看 我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具 体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上 书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似, 编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特 点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲 的全是C方面的,完全在浪费你的时间! 呵呵^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件 仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使 你每天捧着本书,把那本书翻烂,也永远学不会单片机的!刚接触单片机的朋友,看了资料,一定会对以下几个词见的比较多,但是具体的概 念还是比较模糊,现作如下说明: (1)编程器编程器是用来烧单片机芯片的,是把HEX或者BIN文件烧到单片机ROM里

相关文档
最新文档