当前位置:网站首页>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} 。
边栏推荐
- Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
- bgp aggregation reflector federation experiment
- hutool工具-----JSON工具-JSONUtil
- flv.js解析与使用
- 哪里有期货开户的正规途径?
- Mean Consistency Tracking of Time-Varying Reference Inputs for Multi-Agent Systems with Communication Delays
- 第 45 届ICPC亚洲区域赛(上海)G-Fibonacci
- Automatic conversion of Oracle-style implicit joins to ANSI JOINs using jOOQ
- 期货开户如何确定期货公司正规性?
- Knowing the inorder traversal of the array and the preorder traversal of the array, return the postorder history array
猜你喜欢

Microsoft PC Manager V2.1 beta version officially released

理解分布式系统中的缓存架构(下)

Kunpeng compile and debug plug-in actual combat

思维导图,UML在线画图工具

【软件工程之美 - 专栏笔记】34 | 账号密码泄露成灾,应该怎样预防?

Business test how to avoid missing?

DCM 中间件家族迎来新成员

These 4 computer notepad software, you have to try

Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性

flv.js解析与使用
随机推荐
c语言字符和字符串函数总结(二)
实现删除-一个字符串中的指定字母,如:字符串“abcd”,删除其中的”a”字母,剩余”bcd”,也可以传递多个需要删除的字符,传递”ab”也可以做到删除”ab”,剩余”cd”。
Knowing the inorder traversal of the array and the preorder traversal of the array, return the postorder history array
Transient Stability Distributed Control of Power System with External Energy Storage
Industrial control network intrusion detection based on automatic optimization of hyperparameters
JSP built-in object out object function introduction
C语言函数详解(1)【库函数与自定义函数】
146. LRU cache
Disk and file system management
nodeJs--mime module
nodeJs--mime模块
什么是低代码(Low-Code)?低代码适用于哪些场景?
Detailed explanation of JSP request object function
网络请求技术--跨域
An Enhanced Model for Attack Detection of Industrial Cyber-Physical Systems
请教一下本网站左下角的动漫人物是怎么做的?
JS中对事件代理的理解及其应用场景
CVPR 2022 | SharpContour:一种基于轮廓变形 实现高效准确实例分割的边缘细化方法
Redis和MySQL数据一致性问题,有没有好的解决方案?
Identify memory functions memset, memcmp, memmove, and memcpy