基础语句,数组

 学习一门语言首先要读一本好书,其次要有好的交流论坛或网站。所以在这里我向大家推荐几本自己觉得还可以的书籍,刚刚接触的同学可以看看:C语言入门很简单,这门书语言比较风趣幽默,举例比较贴近生活,易于理解。当有了一定的基础后我还是建议大家看看C primer;编程软件的话建议大家使用vs或者QT。

 学习编程语言首先要了解数据类型,相信这些基础大家都已经十分了解,这里就不在讲解了。在了解了数据类型后就要开始接触一些简单的语句了。最简单的就是选择判断语句。常见的是if-else语句,if和else表示的是一种对立条件,二者互不共存任意时间只有一个条件成立,并且二者均只能带一条语句,如果条件成立时要执行多条语句时要使用大括号来限定范围,大括号里面的所有语句相当于一条复合语句。if-else if-else可以构成多个条件判断,同时if-else可以嵌套,但要注意else与离他最近的没有配对的if相配对。else不可单独出现,if可以单独出现,实际上表明当条件不满足时什么都不做。与if-else语句相对的条件语句还有switch-case语句。此语句中所有的case语句之间是并列关系,并且case后要接常量:并且每一个case后的常量必须互不相同,switch中的判断条件必须为整形。当每一case条件后的语句执行完后必须用break来结束switch判断,要不程序会继续执行并将所有case后的语句均执行,造成错误。当有多个case执行相同语句时可以进行相应简写,eg:case 1:case 2:case 3:printf(“相同的执行语句”);break;

 这里既然提到了break语句就顺便提一下,break通常有两个作用:(1)结束循环,跳出本层循环。(2)结束switch语句。提到break语句就不得不提continue语句,此语句的作用是跳过本层循环,并没有彻底结束循环。还要顺便说一句return语句,他也可以用作结束循换,当程序执行到现应的return语句时,程序返回到操作系统,结束程序。此时作用与exit函数的作用相同。

 说完条件语句接下来就到了循环语句了,C中有三种常用循环语句for、while、do-while。while和do-while语句比较适用于执行次数不知的情况,二者的区别仅在于,while先判断后执行,当条件不满足时可能一次也不执行;而do-while则是先执行后判断,所以最少要先执行一次。for比较适用于执行次数已知的情况,for(语句1;语句2;语句3)其中两个分号不可省略,语句1表示初始条件,可以省略;语句2表示判断条件,也可以省略,省略时表示条件永真。语句3表示控制语句,可以省略。三者之间可以任意嵌套构成多层循环,当要使用多层循环时首先要弄清楚控制条件,谁是外层循环,谁是内层循环,外层执行一次内层要执行多少次。此外可以利用go-to语句构成循环,goto语句可以一次跳出多层循环,但不建议使用。eg:

#include <stdio.h>

 

void main()

{

int w,k;

printf("请输入变量k值\n");

scanf("%d",&k);

w=k;

loop begin:  if(w==0)

goto loop end;

w--;

printf("*");

goto loop begin;

loop end: printf("\n");

}

 讲过基本语句后就要介绍一下写程序经常会用到的数据结构。首当其冲的要介绍一下数组,数据就是一些具有相同数据类型的变量,一维数组定义形式为: 数据类型 数组名[数组元素个数],注意数组的下标从0开始,但是在以后学数据结构时通常从1开始算。注意数组不可以整体赋值,定义时可以整体初始化。在操作时可以借助循环来做。二维数组的定义形式与一维数组类似,eg:int a[2][3]={0};定义一个2行3列的整形数组,同时初始化为0,对二维的操作通常也要借助于循环语句。下面介绍一个二维数组的排序,eg:

#include "stdafx.h"
#include<stdio.h>


void main()
{
int i, j, a[3][3], max, min,k,temp;
printf("二维数组初始化");
for (i = 0; i<3; i++)
for (j = 0; j<3; j++)
{
a[i][j] = 3 * i - j;
}
printf("排序前的结果:\n");
for (i = 0; i<3; i++)
for (j = 0; j<3; j++)
printf("%d\t", a[i][j]);
printf("\n");
printf("排序后");
for (i = 0; i<3; i++)
{
for (j = 1; j<3; j++)
for (k = 0; k<3; k++)
{
if (a[i][j]<a[i][k])
{
temp = a[i][k];
a[i][k] = a[i][j];
a[i][j] = temp;
}
}
}
for (i = 0; i<3; i++)
for (j = 0; j<3; j++)
printf("%d\t", a[i][j]);
printf("\n");
}

 上述的小代码实现了对二维数组的每一行进行排序,在程序中我多次使用了相同的变量,但并没有引起冲突或导致程序出错,原因在于变量作用域的原因。ij均属于局部变量,在面开始是有定义,但在主函数结束时变量销毁。这样说不是很准确,主要是因为变量可以多次重复赋值。在这个程序里我多次调用了输出程序,如果编程久了应该让自己的主函数的代码尽量短一些,将一些功能封装为函数,这样可以减少代码的冗余同时也方便查错。在这里在与大家分享一个编程小经验,当你在写代码前先写注释,解释自己代码的主要功能,也可以写出自己的编程思路,这样可以节省时间,同时也方便代码的重构。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值