当前位置:网站首页>C语言实验六 一维数组程序设计
C语言实验六 一维数组程序设计
2022-08-02 00:18:00 【Meteor.792】
一、实验目的
(一)掌握一维数组的定义、初始化方法;
(二)掌握一维数组中数据的输入和输出方法;
(三)掌握与一维数组有关的程序和算法;
(四)了解用数组处理大量数据时的优越性。
二、预习要求
(一)理解数组的概念、利用数组存放数据有何特点;
(二)一维数组的定义、初始化方法;
(三)一维数组中数据的输入和输出方法。
三、实验内容
(一)下面的几个程序都能为数组元素赋值,请输入程序并运行。比较一下这些赋值方法的异同。
1.在定义数组的同时对数组初始化。
/* c6-1.c 在定义数组的同时对数组初始化*/
#include "stdio.h"
void main( )
{ int a[4]={0,1,2,3};
printf("\n%d %d %d %d\n",a[0],a[1],a[2],a[3]);
}
2.不使用循环对单个数组元素赋值。
/* c6-2.c 不使用循环对单个数组元素赋值*/
#include "stdio.h"
void main( )
{ int a[4]; a[0]=2;a[1]=4;a[2]=6;a[3]=8;
printf("\n%d %d %d %d\n",a[0],a[1],a[2],a[3]);
}
3.用循环结构,从键盘输入为每个数组元素赋值,输出各数组元素。
/* c6-3.c 利用循环通过键盘对数组元素赋值*/
#include "stdio.h"
void main( )
{ int i,a[4];
for(i=0; i<4; i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0; i<4; i++)
printf("%d ",a[i]);
printf("\n");
}
(二)编写程序,输出一维数组a中的元素最小值及其下标。
编程提示:
1.定义一个整型变量存放最小值下标,将其初始化为0 ,例如:int p=0;即从数组第零个元素开始判断。
2.通过循环,依次判断数组中的每一个元素a[i]是否小于a[p],如果是,则将p和a[p]的值作相应的改变。
/* c6-5.c 输出一维数组中元素的最小值及其下标*/
#include "stdio.h"
void main( )
{ int i,m,p,a[10]={9,8,7,6,1,3,5,18,2,4}; /* m为最小值,p为其下标 */
m=a[0],p=0;
for(i=1;i<10;i++)
if (a[i]<m)
{ m=a[i];
p=i;
}
printf("元素最小值为:%d,其下标为:%d\n",a[p],p); /* 输出一维数组a中的最小值及其下标 */
}
(三)编写一程序,求一维数组中下标为偶数的元素之和。
编程提示:
1.定义一个数组a并初始化。
2.定义一个整型变量sum,存放下标为偶数的元素和,并初始化为0。
3.从数组的第0个元素开始,每次循环变量递增2,一直到数组的最后一个元素,将其累加到sum变量。
4.输出sum变量即为下标为偶数的元素之和。
/* c6-6.c 求一维数组中下标为偶数的元素之和*/
#include "stdio.h"
void main( )
{ int i,sum=0; /* 初始化sum为0 */
int a[8]={2,3,4,5,6,7,8,9};
for(i=0; i<8; i=i+2)
{
sum+=a[i];
printf("sum=%d\n",sum);
}
}
(四)编写一程序,将100以内的素数存放到一个数组中。
编程提示:这是一个双层循环嵌套的程序。
1.首先复习教材上的内容,掌握判断素数的方法。
2.定义一个数组存放100以内的素数,想一想该数组的大小应该为多少?
3.定义一个整型变量作循环变量。
4.定义一个整型变量作为数组元素下标的计数器,想一想该变量应赋什么样的初值?
5.在外层循环中,对1~100之间的所有整数进行判断;内层循环则判断每个整数是否为素数。如果是素数,存放到数组中,并使数组下标变量加1;否则继续判断下一个整数。
6.用循环语句输出数组中的所有素数,注意循环变量的初值和终值如何确定。
#include <stdio.h>
int main()
{ int a[100], n = 0;
for (int i = 0; i <= 100; i++)
{ int m = 1;
for (int j = 2; j < i; j++)
{ if (i % j == 0)
m = 0;
}
if ((m == 1) && (i != 1))
a[n++] = i;
}
for (int i = 1; i < n; i++)
{ printf("%d ", a[i]);
}
printf("\n");
return 0;
}
(五)将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1,2,要求改为按2,1,4,5,6,8的顺序存放(注意是逆序存放而不是逆序输出)。
编程提示:
1.定义一个数组,为该数组赋值(可以在定义时初始化,也可以用循环语句)。
2.在循环中,使第0个元素与第5个元素交换,第1个元素与第4个元素交换,第2个元素与第个3元素交换(注意循环次数按n/2确定,n为数据个数)。
3.输出逆序存放后的各数组元素(使用循环语句)。
#include "stdio.h"
void main()
{
int m,i,t;
int a[8]={6,7,8,9,4,3,2,1);
m=8/2;
for(i=0; i<m; i++)
{
t=a[i];
a[i]=a[7-i];
a[7-i]=t;
}
for(i=0: i<8; i++)
printf("%d ",a[i]); printf("\n");
}
四、实验注意事项
(一)C规定,数组的下标下界为0,因此数组元素下标的上界是该数组元素的个数减1。
例如,有定义:int a[10]; 则数组元素的下标上界为9。
(二)由于数组的下标下界为0,所以数组中下标和元素位置的对应关系是:第一个元素下标为0,第二个元素下标为1,第三个元素下标为2,依次类推,第n个元素下标为n-1。
(三)数值型数组要对多个数组元素赋值时,使用循环语句,使数组元素的下标依次变化,从而为每个数组元素赋值。
例如:int a[10],i;
for(i=0;i<10;i++) scanf("%d",&a[i]);
不能通过如下的方法对数组中的全部元素赋值。
int a[10],i;
scanf("%d",&a[i]);
五、思考题
(一)定义一个数组名为ftop且有5个int类型元素的一维数组,同时给每个元素赋初值为0,请写出数组的定义语句 int ftop[5]={0,0,0,0,0} 。
边栏推荐
猜你喜欢
期货开户交返是行内公开的秘密
Pytorch seq2seq 模型架构实现英译法任务
GateWay实现负载均衡
冒泡排序函数封装
ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
Unknown CMake command "add_action_files"
ERROR 1064 (42000) You have an error in your SQL syntax; check the manual that corresponds to your
管理基础知识21
交返是做日内交易的必要条件
Redis-消息发布订阅
随机推荐
管理基础知识21
字符串分割函数strtok练习
Transient Stability Distributed Control of Power System with External Energy Storage
146. LRU cache
Redis - message publish and subscribe
js中内存泄漏的几种情况
Interview: Briefly describe a project you are involved in
Mean Consistency Tracking of Time-Varying Reference Inputs for Multi-Agent Systems with Communication Delays
Redis-消息发布订阅
Are test points the same as test cases?
管理基础知识9
简单工厂模式
flowable工作流所有业务概念
Business test how to avoid missing?
Microsoft PC Manager V2.1 beta version officially released
dbeaver连接MySQL数据库及错误Connection refusedconnect处理
傅立叶变换相关公式
flv.js解析与使用
测试用例:四步测试设计法
ImportError cannot import name ‘Mapping‘ from ‘collections‘