C语言例题(一维数组)

一维数组的引用

引用一维数组的一般形式为:
数组名[下标]
(1)数组元素可以作为一个独立的基本类型的变量来使用。例如:

int a[5];        /*定义数组 */

a[0] = 15;     /* 数组元素 a[0] 赋值为 15*/

(2)引用数组时,下标可以是整常数,也可以是整型表达式,但不能是小数。例如:

设有“int a[10];”,则 a[2 + 3],a[6]都是合法的数组元素,但 [6.3] 是非法的。

(3)引用数组元素时,可以使用变量的值作为下标。例如:

for(i=0;i<10;i=i+1)

     printf ( "%d",a[i] );
该语句的功能是用for 循环语句,逐一输出数组 a 中各元素的值
如果使用基本的交量,则需要 10个同样形式的语句才能完成。此例说明:通过数组可以对相同类型的组数据进行统一处理,从而使得程序显得更加简洁。

(4)参加处理的只能是数组的单个元素,而不能对数组整体进行处理。例如:

for(i=0;i<10;i=i+1)

     printf ( "%d",a);       //该程序 并不能输出数组 a 中的各元素值

例题

例1.按学生学号的大小顺序,记录某班(3人)学生的数学课程的成绩。

分析:通过循环依次输入三个人的数学成绩,并通过循环再依次输出三个学生的学号及对应成绩。

程序:

# include <stdio.h>
# define N 3  /*N值即为学生个数*/
int main ()
{
 	int i;
	float maths [N];
	printf ( "输入成绩:\n");
	for (i = 0;i< N;i++)
		scanf ("%f", &maths[i ]);  /*逐一输入N个数据*/
	for (i = 0;i< N;i++)
		printf ("\n学生学号 No.%2d, 成绩: %5.2f ", i + 1, maths[i]);/*输出编号及成绩*/
	return 0;
}

输出:

通过改变N值可以改变输出成绩的学生个数

例2.用“选择法”对10个数排序(从大到小)。


分析:设10个数分别是a[0], a[1], ··…,a[9],使用选择法排序。
第1轮:在a[o], a[1] ·…,a[9] 中选择最大元素 a[j],将 a[j] 与a[0]交换。

第2轮:在a[1], a[2], ··, a[9] 中选择最大元素 a,将a[j]与 a[1]交换。

第3轮:在a[2], a[3], ··…,a[9]中选择最大元素 a[j],将 a[j] 与 a[2]交换。

--------

第8轮:在a[7], a[8], a[9] 中选择最大元素 a[j],将 a[j]与a[7]交换。

第9轮:在a[8],a[9]中选择最大元素 a[j],将 a[j]与a[8]交换。
结论:使用选择法对n个数进行排序,需要进行n-1 轮选择。第i轮选择操台需要进行n-i次两两比较。可以通过两层嵌套的循环结构实现。

程序:

举例  假设十个数为:24、9、86、4、87、8、2、14、36、99

#include <stdio.h>
int main ()
{
 	int a[10] ={ 24, 9, 86, 4, 87, 8,2, 14, 36,99};
    int i, j, temp;
    int seat;    /*记录最大数的位置*/
    for (i=0;i<9;i++)
    {
	    seat = i;  /*设第i轮中,初始最大数的位置为i*/
		j =i + 1;
		while (j< 10 )
		{
            if (a[seat]< a[j])
			{
				seat =j;
			}/*找到新的大数,更新大数的位置记录*/
			j =j + 1;
		}
		if ( seat != 1) /*如果最大数不在本轮的初始位置*/
		{
		    temp = a[i];
			a[ i ] = a[ seat ];
			a[ seat ] = temp;
		}
    }					/*交换数组的两个元素的值*/
	printf ( "十个数从大到小排序:\n");
	i =0;
	do
	{
        printf ( "%3d", a[i] );
		i = i + 1;
	}while (i< 10 );
	return 0;
}

输出:

简单课后习题

1.运行下面程序,其输出结果是()

#include <stdio.h>
int main ( )
{
	int i,j=3;
	int a[]={1,2,3,4,5,6,7,8,9,10};
	for(i=0;i<5;i=i+1)
	    a[i]=i*(i+1);
    for(i=0;i<4;i=i+1)
        j=j+a[i]*3;
    printf ("%d",j);
	return 0;
}

2.运行下面程序,其输出结果是()

#include <stdio.h>
int main ( )
{
	int i;
	int a[10]={0,1,2,3,4,5,6,7,8,9};
	for(i=1;i<9;i=i+1)
	    a[i]=a[i-1]+a[i+1];
    printf ("%d %d",a[5],a[7]);
	return 0;
}

希望对大家的学习有帮助,期待我们共同进步,制作不易,烦请各位王子公主给我点个赞

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梧桐810

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值