内容发布更新时间 : 2024/11/6 7:22:27星期一 下面是文章的全部内容请认真阅读。
《C语言程序设计》实验指导与报告书
实验7 数组程序设计(1)
7.1 实验目的
1.掌握一维数组的定义及初始化方法。
2.掌握用循环语句对一维数组进行处理的方法。
3.熟悉对数组元素进行处理的常规算法(如排序、插入、删除及查找等)。
7.2 示例程序
【实验7.1】本程序的功能是:取出一个十进制正整数中的所有偶数数字,用这些数字构成一个最大数。
程序代码:
#include
#define N 10
int main()
{ int i,j,k=0,t,d,a[N];
long n,m=0;
printf(\
scanf(\
while(n>0) /* 依次取出每位数,并将偶数存入数组*/
{ t=n; /* 取出一位数*/
if(t%2==0) /* 判断是否偶数*/
a[k++]=t; /* 将偶数存入数组*/
n/=10; /* 为取下一位数做准备*/
}
for(i=0;i { d=i; /* 记录每轮起始元素的下标*/ for(j=i+1;j if(a[j]>a[d]) /* 后续元素依次与起始元素进行比较*/ d=j; /* 记录比起始元素大的元素的下标*/ if(d!=i) /* 一轮比较后判断记录的下标是否发生了变化*/ { t=a[d];a[d]=a[i];a[i]=t;} /* 若发生了变化,则交换元素值*/ } for(i=0;i m=m*10+a[i]; printf(\ return 0; } 说明: 1.while循环语句的作用是依次将每一位数字分离出来,判断分离的数字是否为偶数, 若是偶数,将其存入数组中。 2.对取出的偶数进行降序排序,排序采用的是选择排序算法。 3.使用表达式“m=m*10+a[i]”将排序后的偶数组合成一个最大数。 7.3 阅读程序 【实验7.2】以下程序的功能是:验证在7~2000之间的所有素数中存在这样的两个素数,它们的差恰好是1898。 程序代码: #include int main() { int i,j,a[1000],k=0,m,n,flag=0; for(i=7;i<2000;i+=2) { for(j=2;j<=i/2;j++) /* */ if(i%j==0)break; /* */ if(j>i/2) /* */ a[k++]=i; /* */ } for(i=0;i for(j=1;j if(a[j]-a[i]==1898) /* */ { m=i; n=j; flag=1; /* */ break; } if(flag) printf(\ else printf(\ return 0; } 说明: 1.程序中首先找出7~2000之间的所有素数,将其存入数组中。 2.采用双循环遍历素数数组元素,若两个元素的差是1898,则分别记录两个元素的下标,同时退出循环。 3.程序中的flag变量作为标志变量,其初始值为0,若找到符合条件的两个元素时,将其值置为1。循环外依据标志变量flag的值给出结果。 【实验7.3】编写程序,由键盘输入一个十进制整数,输出其补码。 程序代码: #include int main() { int n,k,sign,carry,bm[8]; do { printf(\ scanf(\ }while(n<-128||n>127); /* */ for(k=0;k<8;k++) bm[k]=0; /* */ if(n>0)sign=0; else { sign=1; n=-n; }