数组入门
在程序里如何存储10个学生的数学、语文、英语成绩?定义30个整型变量吗?这也太麻烦了,而学习了数组后就变的简单多了,这里我们先从最简单的数组学起。
定义一个整型变量可以这样写 int a;
定义一个整型数组可以这样写 int a[3]; 中括号就是数组的标识,这里定义了一个长度为3的数组其实就相当于定义了3个变量。
那每个变量在程序里怎么表示呢?c语言里用编号的形式来表示数组里的每一个变量,注意编号是从0开始的,这个a数组里就有编号为0,1,2的变量,再比如char b[5]那b数组里就有编号为0,1,2,3,4的变量,记住永远没有编号为数组长度的变量,例如 float c[10]数组的长度为10,那在c数组里就没有编号为10的变量,编号从0到9正好10个数。
虽然我们能一次定义一组变量,给我们带来了方便,但你在编程中却还需要一个一个地操作每个变量,这就需要我们可以利用编号来操作数组里的变量,请看下面的代码。
int a[3];
a[1]=20;//把整数20存放到数组内编号为1的变量里
scanf("%d",&a[0]);//从键盘输入一个整数存放到数组内编号为0的变量里
printf("%d ",a[2]);//把数组内编号为2的变量里的值输出
你懂了吗,其实我们原来操作的是一个变量,现在操作的还是一个变量,只不过数组里的变量没有自己的变量名,而是通过用数组名加上编号的形式来表示。
下面的代码用来描述从键盘输入10个学生的数学成绩并保存到数组里
float a[10];//用来存储10个学生的数学成绩
scanf("%d",&a[0]);
scanf("%d",&a[1]);
scanf("%d",&a[2]);
......
scanf("%d",&a[9]);
现在我告诉你数组编号的位置可以是变量,例如 int i=2;a[i]当然就代表a数组里编号为2的变量,怎么样你可以用循环来简化上面的代码吗?
数组练习:某杂志社组织了一次读者短信活动,选出了10个手机号码作为中奖读者,用户从键盘输入自己的手机号码查询是否中奖。
第一步:我们得把这10个手机号码存储到我们的程序中,整数数组正好能够满足我们的要求。
int a[10]={15112345678,13012345678,13112345678,13012345678,13011111111,13822222222,18000000000,13522222222,15122222222,18922222222};
这样a数组中存储了本次中奖的10个手机号码
第二步:就是要求用户从键盘输入自己的手机号码
int no;//存储用户从键盘输入的手机号码
printf("感谢广大读者对本次活动的参与,请输入您的手机号查询是否中奖:\n");
scanf("%d",&no);
第三步:我们就是用no与数组中的手机号码挨个比较找到了就是中奖,没找到就是没中奖。
if(no==a[0]||no==a[1]||no==a[2]||no==a[3]||no==a[4]||no==a[5]||no==a[6]||no==a[7]||no==a[8]||no==a[9])
{
printf("恭喜你中奖了,请到指定地点领取奖品!\n");
}
else
{
printf("谢谢参与\n");
}
完整代码如下:
main()
{
//a数组中存储了本次中奖的10个手机号码
int a[10]={15112345678,13012345678,13112345678,13012345678,13011111111,13822222222,18000000000,13522222222,15122222222,18922222222};
int no;//存储用户从键盘输入的手机号码
printf("感谢广大读者对本次活动的参与,请输入您的手机号查询是否中奖:\n");
scanf("%d",&no);
if(no==a[0]||no==a[1]||no==a[2]||no==a[3]||no==a[4]||no==a[5]||no==a[6]||no==a[7]||no==a[8]||no==a[9])
{
printf("恭喜你中奖了,请到指定地点领取奖品!\n");
}
else
{
printf("谢谢参与\n");
}
}
这个程序没问题,但是第三步上对于10个手机号码还能写的过来,如果是100个手机号码呢,所以我们可以用循环改进一下
main()
{
//a数组中存储了本次中奖的10个手机号码
int a[10]={15112345678,13012345678,13112345678,13012345678,13011111111,13822222222,18000000000,13522222222,15122222222,18922222222};
int i;//用来控制循环,同时表示数组下标
int no;//存储用户从键盘输入的手机号码
printf("感谢广大读者对本次活动的参与,请输入您的手机号查询是否中奖:\n");
scanf("%d",&no);
//利用循环挨个访问数组里的元素,如果数组里的第i个元素与用户输入的手机号码相同说明此手机号码中奖
for(i=0;i<10;i++)
{
if(no==a[i])
{
printf("恭喜你中奖了,请到指定地点领取奖品!\n");
break;//既然找到了就不用再继续找了,直接退出循环。
}
}
}
以上的代码只能够输出中奖的情况,如果输入没中奖的手机号程序就没有输出,给你们留个练习看看需要加什么代码才能判断未中奖并输出谢谢参与,现在是输入未中奖的手机号码程序没有输出直接结束了,如下图。