C语言知识小谈

大家可能都很熟悉c这个名词,那么C是什么?C是一门语言,就好比我们学习的英语一般,它有专门的语法和逻辑。打个比方说:我们之间可以用汉语谈话,那么我们和机器之间就可以用C交流。那么,我们为什么要用C呢?那就是C具有多种特性:控制特性、高效性、可移植性、灵活性等。

首先我们要明白编程的7个编写步骤:

1.       定义程序目标(对程序能做什么有一个清晰的想法,考虑到程序所需信息、计算操作等)

2.       设计程序(决定程序如何完成它应该完成的事,用户界面事什么样的,该如何组织,目标用户是谁,用多长时间来完成这个程序?)

3.       编写代码(进行程序源代码的编写,注意其代码的规范与注释的清晰。)

4.       编译(就是将源代码转换成可执行代码,可执行代码是计算机的本机语言或机器语言表示的代码。其实,编译的工作是由编译器完成的,而编译器则是一个程序:如我们用的一些开发工具等。)

5.       运行程序

6.       测试和调试程序

7.       维护和修改程序

这是我们编写程序的基本步骤,这些步骤将整个编程工作细化、分割,方便我们有条理的去进行复杂的编程工作。

编写程序当然需要编写工具,我用的是Microsoft Visual Stduio 6.0,建一个工程的步骤是:

1.       单击File菜单,New选项。默认是project选项卡。选择Win32 Console Application(因为我们是学习的是控制台应用程序)

2.       选好程序类型后,填好工程名和保存位置。继续根据提示,选An empty project

3.       在点击File菜单New选项,选类型C++ Source File,表示要建一个源文件,填好文件名。

说了这么多,把C的语法格式介绍给大家:

     预处理头文件                          

     主函数

     {

         语句1;//注释

        

         语句n;

         返回值;

     }

    #include<stdio.h>

    int main(void)/*一个简单的C程序*/

    {

       int num;/*定义一个名为num的变量*/

       num=1;//num赋一个值

       printf("I am a simple computer./n");//输出“I am a simple computer.”并换行

       printf("My favorite number is %d because it is first./n",num);

       return 0;

    }

这里的#includeC预处理指令的一个例子,通常C编译器在编译前要对源代码做一些准备工作:这称为预处理。stdio.h文件作为所有C编译包的一部分提供,它包含了有关输入和输出函数的信息以供编译器使用。最重要的是,头文件包括了建立最终的可执行程序时编译器需要用到的信息。(例如:可以定义常量,或说明函数名以及该函数名的用法)。

接下来的int main()时申明了一个main函数。一个C程序总是从main()函数开始执行的,而()这对符号则是说明main是一个函数,括号里面一般包含传递给函数的信息,例子中没有传递任何信息。要求大家记住的是,这个函数就C程序的基本模块,并且一个c源程序中只能有一个main函数。int则是指明了main()函数的返回类型是整数类型。

printfscanf是标准输出输入函数。而运行中显示的“Press any key to continue”是由系统给出的。表示程序运行已经结束。{...}花括号是用来表示程序的开始结束的,它们是必不可少的。并且,花括号还可以将函数中的语句聚集到一个单元或代码块中。

由于我们使用的操作系统一般都是windows的,然而可能遇到一个问题:显示程序执行的窗口在终止时突然消失。如果遇到这种情况就可以在程序的“return语句之前键入getchar();语句让程序暂停,直到按下enter键为止。

我们编写的程序最好写注释,方便自己,也方便别人。这里分为两种方式

1.       /*…*/ 用于占多行来写注释。

2.       //  这种注释方式必须背限制在同一行内,否则就会产生错误!

心得:我在初识这些内容,也是充满疑惑。古语有云:“一口吃不成一个大胖子”。要分开来消化,才会融入自己的身体。但一定要保持那种饥饿感,那样才能使自己更加强壮。在学一种语言时,一定要记住它的语法格式,那样才能与电脑沟通。就像你与一个不会讲中国话的人讲中国的方言,结果不言而喻。

 

随着自己的深入,逐渐接触到一些数据类型。Eg:整数123等。小数1.22.3等。字母Aa等。然而了解这些数据十分重要,就像在沙漠中水的地位。

 

在选择数据类型时,应尽量满足使用的要求,也要有“节约资源”的好习惯,不同大小的数据对应其适合的类型。

因为一个变量所占的内存的空间和它的数据类型有关,接下来给大家介绍数据类型的相关定义与特点。

n         整型 :即整数。可用来表示学号、职工号等。整型无法表示小数,范围也不大,但运算却十分         精确,不会发生四舍五入的情况。

n         实型:即实数,分浮点型和双精度型。两者主要的区别表示范围不同和占用的存储空间不同。可用两种方式表示实数。

u       小数形式,如0.10.3等。

u       指数形式:即科学计数法。如0.25E5表示0.25×105.其中E表示10的多少次方,也可用小写。注意:在E之后的指数必须是整数。

n         字符型;如:char a,一个字符型变量可以存放一个半角字符或一个转义字符。转义字符仍作为一个字符处理。

 

在上面的那个例子,我定义一个变量,那是为什么?我们知道计算机有存储的功能,在设计程序的时候,我们要存储的数据放在一个叫变量的东西里,它好比一个箱子,而数据就是箱子里的物品,当然,在我们存储之前必须要创建这么一个“箱子”,及创建一个变量,这个创建变量的语句又称为变量的声明。

它的语法格式为:

Ø         变量数据类型  变量名1变量名2变量名n

在上面那个例子中,声明变量后,下面的语句中才能调用num这个变量。

然而有变量就会有常量。常量分两种:一种是文字常量,比如整型13等,字符型char a;另外一种则是自己声明的常量,它的表达与变量有些类似。声明一个常量的语法格式为:

Ø         const 数据类型 常量名=文字常量;

Eg:输入圆半径的值,求圆周长。

#include<stdio.h>

void main()

{    

       float l,r;//变量的声明

       const float pi=3.14159265;//常量的声明

       printf("输入数字");

       scanf("%f",&r);

       l=2*pi*r;

       printf("%f",l);

       return 0;

}

有数据的运算就会有数据类型的转化。转化分为两种(即隐式转化与显示转化)。一个int + double型,类型为隐式转化,最后结果为double型,这里看出隐式转化不会丢失数据。而double dAn=3.2344 转化为int iAn=3,小数部分被舍去。说明显示转化会丢失数据。

前面提到了常量与变量,然而它们的命名又是怎样的?就跟我们自己的名字一样,有着一定的规则,命名时应注意以下几点:

1.         第一个字符必须是字母或下划线。

2.         不能与保留字重名如:int,double等。

3.         对大小写敏感。

4.         只能由字母,数字,下划线组成。

这里有两种写法:

1)        驼峰标记法:numOfStudenttypeOfBook等。

2)        匈牙利标记法:表示学生的整型变量可以写成iNumOfStudent;表示结果为浮点型变量则可写成fResult;推荐使用匈牙利标记法,因为它是变量的类型开头的。一看就知道是什么类型。

 

常用的运算符

1.         算术运算符(+、-、*/%

这里重点介绍“/”与“%

a)         /”有两种含义:1.当除号两边均为整型数据时为整除,即商的小数部分被截去(不是四舍五入)。2.除号两边只要有一个为实型数据,那么就做除法,小数部分保留。

b)        %”称为取余操作符,eg:7%3结果为1.注意:在取余操作符两边都应该为整数,否则无法通过编译。

 

2.         赋值操作符( = )

=”它是将右边的值赋给左边的变量或常量,注意它与= =有区别,“= =”是C的相等运算符,如:i==1它是判断i是否等于1

3.         逻辑运算符

      逻辑非运算符

&&         逻辑与运算符

||             逻辑或运算符

4.         自增自减运算符(自增(++)、自减(--))

a++等价于a=a+1;a--等价于a=a1;

注意:自增、自减符号既可位于变量的前面(称之为前缀),也可位于变量的后面(称之为后缀)。在单独作为一个表达式时“a++”与“++a”效果一样。都是变量自增。若作为一个复杂的表达式eg(a++)+b与(++a+b。前缀“++”表示先将变量自身的值加1,然后将增1后的变量参与表达式的运算,而后缀“++”表示变量先参与表达式运算,然后本身再增1。若a=1,b=2;(a++)+b结果为3,而(++a+b结果为4.自减运算符类似。并且,自增、自减的优先级只比圆括号的优先级低,与逻辑非运算等级。

 

条件语句

在我们生活中,对于可能发生的事,我们经常说如果,那么。在C++有这样的语句。格式为:

If(条件)

{

       语句1

                      语句块  

       语句n;

}

注意:if语句的结束是没有分号的,分号只属于语句块中的各个语句。举个例子,当输入1~7这几个数时,电脑分别输出星期几。程序如下:

#include<stdio.h>

int main ()

{

       int n;//声明一个变量

       printf("输入一个数字");

       scanf("%d",&n);//给这个变量输入一个值

       if(n==1)  printf("星期一");//判断变量值,然后给出显示

       if(n==2)  printf("星期二");

       if(n==3)  printf("星期三");

       if(n==4)  printf("星期四");

       if(n==5)  printf("星期五");

       if(n==6)  printf("星期六");

       if(n==7)  printf("星期天");

       if(n<1||n>7) printf("输入错误");

       return 0;

}

 

还有一种就是如果,否则。在C++中它的语法格式为:

If(条件)

  语句1

Else

  语句2

例如:比较两个数的大小,从大到小排列

 

#include<stdio.h>

int main ()

{

       int a,b;//声明变量

       printf("输入两个数字,数字之间用空格分开/n");

       scanf("%d  %d",&a,&b);//给变量分别输入一个值

       if(a>=b)

       {

              printf("按大到小的顺序排列%d  %d/n",a,b);

       }

       else

       {

              printf("按大到小的顺序排列%d  %d/n",b,a);

       }

       return 0;

}

 

如果里的如果——if嵌套

下面来看一个例子来熟悉if嵌套

比较三个数的大小

#include<stdio.h>

int main()

{

       int a,b,c;//声明三个变量

       printf("输入三个不同的数,数字之间用空格隔开:");

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

       if(a>b)

       {

              if(b>c)

              {

                     printf("%d > %d > %d/n",a,b,c);

              }

              else

              {

                     if(a<c)

                     {

                            printf("%d > %d > %d/n",c,a,b);

                     }

                     else

                     {

                            printf("%d > %d > %d/n",a,c,b);

                     }

              }

       }

       else

       {

              if(a>c)

              {

                     printf("%d > %d > %d/n",b,a,c);

              }

              else

              {

                     if(b>c)

                     {

                            printf("%d > %d > %d/n",b,c,a);

                     }

                     else

                     {

                            printf("%d > %d > %d/n",c,a,b);

                     }

              }

       }

       return 0;

}

循环语句

循环控制语句提供重复处理能力,当某以特定条件为true时,循环语句就重复执行,并且每循环一次,就会测试下一次循环条件,如果为false,则循环结束,否则继续循环。这里介绍三种循环:whiledo-whilefor循环语句。三者可以完成类似的功能,不同的是它们控制的循环方式存在差异。

1.         while 语句格式:

while (条件表达式)语句;

当“条件表达式”的运算结果为true时,则重复执行“语句”。每执行一次“语句”后,就会重新计算一次“条件表达式”,当该表达式的值为false时,while循环结束。

#include<stdio.h>

int main()

{     

int num=0;

while(num<3)

{

printf("num is %d/n",num);

num++;

}

printf("That is all this program does/n");

return 0;

}

 

2.         do-while语句

语法格式:

do

                     语句;

while(条件表达式);

do-while语句每一次循环执行一次“语句”,然后计算“条件表达式”是否为true,如果是则继续循环。不同点:do-while循环中的“语句”至少会执行一次,而while语句当条件第一次就不满足时,语句一次也不会执行。

 

在命令提示符中输入数据的时候一般只能输入一次,想再输入其他数据时,又要重新运行程序。讲到这里先给大家看一段程序:

#include<stdio.h>

int main()

{    

       const int num=13;

       int nub;

       do

       {

              printf("输入13退出程序");

              scanf("%d",&nub);

       }

       while (nub!=num);

       printf("程序结束");

       return 0;

}


3.         for循环

for循环的语法格式:for(条件1;条件2;条件3

       语句块;

eg:计算整数1~100的和

#include<stdio.h>

int main()

{

       int sum=0;

int i;//声明变量

       for(i=1;i<=100;i++)

       {

              sum=sum+i;

       }

       printf("%d/n",sum);//输出结果

       return 0;

}

 

这里创建一个变量sum=0,遇到for语句,判断i是否小于等于100,满足(i=1<100,则继续执行sum=sum+i语句,即sum=0+1,第一次循环完毕。此时sum=1i=i+1i=2,继续判断i是否小于等于100,满足(i=2<100),于是继续执行sum=sum+i语句,即sum=1+2,第二次循环完毕,以下同理。循环100次后输出结果为5050

这里用到了累加法,即i=i+1。即在自身的数值上加1

有时我们经常遇到一些循环体,即循环里又套了一个循环,eg:for循环实现下面的图形:

#include<stdio.h>

int main()

{

 int i;

       for(i=1;i<=5;i++)

       {     int j;

              for(j=5;j>=i;j--)

              {

                     printf("*");

              }

              printf("/n");

       }

       return 0;

}

首先判断i是否小于等于5,满足(i=1<5,则继续判断j是否大于等于i,满足(j=5>i=1),则输出星号,内循环继续。此时运算“j--”即j=4,继续判断j是否大于等于i,满足(j=4>i=1)。输出星号。当j=1时,继续判断j是否大于等于i,满足(j=i)。输出星号。继续运算“j--”即j=0, 继续判断j是否大于等于i,不满足(j=0<i=1)。退出内循环。继续运算“i++”,即i=2,判断i是否小于等于5,满足(i=2<5,则继续判断j是否大于等于i,满足(j=5>i=2),输出星号,内循环继续。以下同理。

这个程序设计的理念:外循环控制循环的次数,而内循环控制输出星号的个数。关键点:内循环中的“j>=i;”。我们称为变量的互控。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在本次C语言课程设计中,我学到了很多有关于C语言编程的知识和技巧,同时也提高了自己的编程能力。在这篇小结中,我将回顾整个课程设计的过程,总结一下自己的收获和不足之处,并谈一谈今后的学习和发展方向。 首先,我要感谢我的老师和同学们,他们在整个过程中给了我很多的支持和帮助。在开始设计之前,老师给我们详细地讲解了要求和设计思路,并提供了一些有用的参考资料。在整个设计过程中,同学们互相帮助,共同探讨,使得我们的作品得以不断完善和改进。 在这个课程设计中,我主要学到了以下几点: 1. 熟悉了C语言的基本语法和常用函数,如输入输出函数、数组和指针等。 2. 学习了如何设计和实现一个简单的游戏,包括游戏界面的设计、游戏元素的移动和碰撞检测等。 3. 掌握了调试和优化程序的技巧,例如使用调试工具查找程序中的错误,使用数据结构优化程序性能等。 通过这个课程设计,我不仅学到了具体的编程知识和技能,也锻炼了自己的思考能力和团队合作能力。在整个设计过程中,我遇到了很多问题和挑战,例如如何实现游戏元素的碰撞检测,如何提高程序性能等。通过分析问题、查找资料和和同学们的讨论,我成功地解决了这些问题,并最终完成了一个简单的游戏。 不过,在这个过程中,我也发现了自己的不足之处。首先,我在一些细节上还不够严谨,例如在输入输出时没有考虑到一些特殊情况,导致程序出现了一些问题。其次,我的编程能力还有待提升,例如在程序设计和调试方面还有很多不足之处。因此,我需要在今后的学习中继续努力,提高自己的编程能力和代码质量。 最后,我认为今后的学习和发展方向应该是深入研究计算机科学和编程技术,在掌握C语言的基础上,学习其他编程语言和算法知识,例如Python、Java、数据结构和算法等。同时,我还要注重实践,通过编写实际的项目和应用程序来提高自己的编程技能和经验。 总之,这个C语言课程设计使我受益匪浅,让我更深入地了解和掌握了C语言编程知识和技巧。我相信这种经验和能力对我的未来学习和工作都会有很大的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值