c语言实验六 下载本文

内容发布更新时间 : 2024/5/18 7:08:05星期一 下面是文章的全部内容请认真阅读。

《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; }