数组作业

更新时间:2023-12-31 04:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验6 数 组

姓名:

专业: 计算机科学与技术 同组人:

学班

号级

: 1107082106 : 物联网

实验日期: 2011/12/02

【实验目的与要求】

? ? ?

掌握一维数组和二维数组的定义、赋值和输入输出的方法。 掌握字符数组和字符串函数的使用。 掌握与数组有关的算法。

【实验内容与步骤】

1. 程序改错题

(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy6_1.c存盘。

#include void main() { int n=10,i,sum=0; int a[n]; for(i=0;i<10;i++) { scanf(\ sum=sum+a[i]; } printf(\}

请给出正确的程序: #include void main() {

int n=10,i,sum=0; int a[10];

for(i=0;i<10;i++) { scanf(\ sum=sum+a[i]; }

printf(\}

请给出程序运行测试结果:

1

(2)下列程序的功能为:将字符串b连接到字符串a。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy6_2.c存盘。

#include void main( ) {

char a[]=\ int i,n=0; while(!a[n]) n++;

for(i=0;b[i]!='\\0';i++) a[n+i]=b[i]; printf(\}

请给出正确的程序: #include void main() {

char a[10]=\ int i,n=0; while(a[n]!='\\0') n++;

for(i=0;b[i]!='\\0';i++,n++) a[n]=b[i]; a[n]='\\0';

printf(\}

请给出程序运行测试结果:

2

2. 程序填空

(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy6_3.c存盘。

#include \#define N 10 void main() { int a[ ]={0,1,2,3,4,5,6,7,8,9},k; int low=0,high=N-1,mid,find=0; printf(\请输入欲查找的值:\\n\ scanf(\ while (low<=high) { mid=(low+high)/2; if(a[mid]==k) { printf(\找到位置为:%d\\n\

find=1;

} if(a[mid]>k) __________________; else __________________; } if(!find) printf(\未找到\\n\}

请给出正确的程序: #include #define N 10 void main() {

int a[]={0,1,2,3,4,5,6,7,8,9},k; int low=0,high=N-1,mid,find=0; printf(\ scanf(\ while(low<=high) { mid=(low+high)/2; if(a[mid]==k) { printf(\ find=1; break;

3

} if(a[mid]>k) high=a[mid]; else low=a[mid]+1; // printf(\ }

if(find==0) printf(\}

请给出程序运行测试结果:

(2)以下程序的功能是:采用选择排序法对随机产生的20个100以内的无序整数按由大到小的顺序重新排列,并输出重新排列后的有序整数。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy6_4.c存盘。

#define N 20 #include \void main() {

int a[N],i,j,k,t;

printf(\排序前:\\n\ for(i=0;i

for(i=0;i

4

a[k]=a[i]; a[i]=t; } }

printf(\排序后:\\n\ for(i=0;i

}

请给出正确的程序: #include #define N 20 void main() {

int a[N],i,j,k,t; printf(\ for(i=0;i

printf(\

for(i=0;ia[k]) k=j; if(k!=i) {t=a[k];a[k]=a[i];a[i]=t;} }

printf(\ for(i=0;i

请给出程序运行测试结果:

5

3. 程序编写

(1).用筛法求1~1000之间的素数。 eratosthenes筛法流程图: 创建整数组x[1000],i ,j For i=0;i<=999;i++ x[i]=i+1 x[0]=0挖掉第一个数 For j=1;j<999;j++ 1 x[j]≠ 0 x[i]% 0 For i=j+1;i<=999;i++ x[j] x[i]%x[j] x[i]=0 For i=0;i<=999;i++ 1 打印x[i]

请给出程序源码: #include void main() {

int x[1000],i,j,n; for(i=0;i<=999;i++) x[i]=i+1; x[0]=0;

x[i]≠ 0 x[i]% x[j] 0 6

for(j=1;j<999;j++) if(x[j]!=0) for(i=j+1;i<=999;i++) if(x[i]%x[j]==0) x[i]=0; for(i=0,n=0;i<=999;i++) { if(x[i]!=0) { printf(\ n++; if(n==0) printf(\ } }

printf(\} 运行结果截图:

(2).编写程序输入一个字符串,删除字符串中的所有数字字符后输出此字符串。 【算法提示】

(1)定义一个一维字符数组; (2)输入一串测试字符;

(3)依次判断数组中字符是否为数字(即>‘0’且<‘9’); (4)若是则将后面所有字符依次往前移一位; (5)输出整个字符串。 请给出程序源码: #include void main() {

char a[40],t; int i,j; gets(a);

for(i=0;a[i]!='\\0';i++)

7

if(a[i]>='0'&&a[i]<='9') { for(j=i;a[j+1]!='\\0';j++) a[j]=a[j+1]; a[j]='\\0'; i--; } puts(a); } 运行结果截图:

(3).输入若干个整数存放在一维数组中,根据此数组构造两个数组a和b,要求a中存放数组x中所有的正数,b中存放数组中所有的负数,0舍弃,最后分别输出数组a和b 。

运行结构截图:

请给出程序源码: #include void main() {

int a[3],b[3]={0},c[3]={0}; int d; int i,j,n;

for(n=0;n<3;n++) { scanf(\ }

for(n=0,i=0,j=0;n<3;n++) { if(a[n]>0) {b[i]=a[n];i++;} else if(a[n]<0) {c[j]=a[n];j++;} }

for(i=0;b[i]!=0;i++) printf(\ printf(\

for(j=0;c[j]!=0;j++) printf(\ printf(\ }

8

运行结果截图:

4. 实验练习与思考题

(1).小孩分糖问题

10个小孩围成一圈分糖,老师分给第1个孩子10块,第2个孩子2块,第3个孩子8块,第4个孩子22块,第5个孩子16块,第6个孩子4块,第7个孩子10块,第8个孩子6块,第9个孩子14块,第10个孩子20块,然后所有的小孩同时将自己手中的糖分一半给右边的小孩,糖块数为奇数的人可向老师再要一块。

问:经过这样几次调整后大家手中的糖的块数都一样?每人各有多少块糖。(注:第i个小朋友的右边是第i-1个小朋友,第1个小朋友的右边是第10个小朋友)

请给出程序源码: #include void main() { // int a[11]={0};

int a[11]={10,2,8,22,16,4,10,6,14,20,10}; int i=0,j,m=0,f=1; for(i=0;m<10000;i++) { f=0; for(j=1;j<10;j++) if(a[i]!=a[j]) f=1; if(i==10) { a[0]=a[10]; i=0; } if(a[i]%2==0) { a[i+1]=a[i+1]+a[i]/2; a[i]=a[i]/2; } else a[i]=a[i]+1; m++; if(i==0)

9

{ a[10]=a[0]; } // if(m==0) { for(j=0;j<11;j++) { printf(\ } printf(\%d\\n\ } }

printf(\}

运行结果截图:

不会. (2)数的比较问题

假设在2*10的二维数组中存放了数据,其中各行的元素构成一个整数,如第一行元素构成整数1234507000。编写程序比较两行元素构成的整数大小。(规则:从高位起逐个比对应位数,若每位均相等,则两数相等;若遇到第一个不相等的数字,则数字大者为大)

例如:

1 1 2 2 3 3 4 7 5 4 0 2 7 6 0 0 0 0 0 0 运行结构截图:

请给出程序源码: #include void main() {

int a[2][3]={{1,3,3},{1,2,4}}; int i;

for(i=0;i<3;i++) if(a[0][i]>a[1][i]) { printf(\ break; } else if(a[0][i]

10

本文来源:https://www.bwwdw.com/article/k5mx.html

Top