天津理工大学 c语言上机报告5

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五
(2009-9-24)
一、实验名称:
数组。

二、实验目的:
(1)掌握C语言中一维数组、二维数组的定义方法;
(2)掌握字符数组与常用字符串处理函数的使用;
(3)掌握与数组有关的算法(如数组元素的排序);
(4)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。

三、实验项目
(1)源程序为:
#include <stdio.h>
#define N 10
int main()
{
int i;
int arr[N];
int max;
int min;
double sum;
//输入(Input)
printf("%s", "Enter 10 integers: \n");
for(i=0; i<N; i++)
scanf("%d", &arr[i]);
printf("%s", "\n");
//处理(Process)
max=arr[0];
min=arr[0];
sum=0.0;
for(i=1; i<N; i++)
{
if(max<arr[i])
max=arr[i];
if(min>arr[i])
min=arr[i];
sum += arr[i];
}
//输出结果(Output)
printf("%s%d\n", "max=", max);
printf("%s%d\n", "min=", min);
printf("%s%7.2f\n", "ave=", sum/N);
return 0;
}
(2)源程序为:
#include <stdio.h>
int main()
{
int i;
char str1[80], str2[80];
//输入(Input)
printf("%s", "Enter a string: \n");
gets(str1);
//处理(Process)
i=0;
while(str1[i]!='\0')
{
str2[i]=str1[i];
i++;
}
str2[i]='\0';
//输出结果(Output)
printf("%s%s\n", "Str2 is: ", str2);
return 0;
}
(3)源程序为:
#include <stdio.h>
#define N 20
int main()
{
int i, j;
int arr[N];
int tmp;
//输入(Input)
printf("%s%d%s\n", "Enter ", N, " integers:");
for(i=0; i<N; i++)
scanf("%d", &arr[i]);
printf("\nBefore Sorting: ");
for(i=0; i<N; i++)
printf("%d ", arr[i]);
printf("\n");
//处理(Process)
for(i=1; i<N; i++)
{
for(j=0; j<N-i; j++)
{
if(arr[j]>arr[j+1])
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
//输出结果(Output)
printf("\nAfter Sorting:\n");
for(i=0; i<N; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
(4)源程序为:
#include <stdio.h>
#define N 20
int main()
{
int i, j, k; //循环变量
int arr[N]; //数组
int tmp; //临时变量
int num; //待查找的数
int flag; //是否找到的标志
int mid; //位置变量
//数据输入
printf("%s%d%s\n", "Enter ", N, " integers:");
for(i=0; i<N; i++)
scanf("%d", &arr[i]);
//选择排序
for(i=0; i<N-1; i++)
{
/*
*基本思想: 共进行N-1趟的比较,每趟比较找到剩余数中的最小值并放到指定的位置。

*/
num=arr[i];
k=i;
for(j=i+1; j<N; j++)
{
if(num>arr[j])
{
num=arr[j];
k=j;
}
}
if(k!=i)
{
tmp=arr[i];
arr[i]=arr[k];
arr[k]=tmp;
}
}
//打印排序后的结果
printf("\nAfter Sorting:\n");
for(i=0; i<N; i++)
printf("%d ", arr[i]);
//二分查找
printf("\nEnter a number to be looked up: ");
scanf("%d", &num);
flag=0;
i=0;
j=N-1;
while(i<j)
{
mid=(i+j)/2;
if(num==arr[mid])
{
flag=1;
break;
}
else if(num<arr[mid])
{
j=mid-1;
}
else
{
i=mid+1;
}
}
//输出查找结果(Output)
if(flag)
printf("Found: arr[%d]=%d\n", (i+j)/2, num);
else
printf("%d is not existing\n", num);
return 0;
}
(5)源程序为:
#include <stdio.h>
#define M 5
#define N 6
int main()
{
int i, j; //循环变量
int arr[M][N]; //数组
int max, min; //最大值、最小值
int max_i, max_j; //最大元素的下标
int min_i, min_j; //最小元素的下标
double ave[M]; //平均值
//数据输入(Input)
printf("%s%d×%d%s\n", "Enter ", M, N, " Matrix");
for(i=0; i<M; i++)
for(j=0; j<N; j++)
scanf("%d", &arr[i][j]);
//处理(Process)
max_i=max_j=0;
min_i=min_j=0;
max=min=arr[0][0];
for(i=0; i<M; i++)
{
ave[i]=0.0;
for(j=0; j<N; j++)
{
//Maximum
if(max<arr[i][j])
{
max=arr[i][j];
max_i=i;
max_j=j;
}
//Minimum
if(min>arr[i][j])
{
min=arr[i][j];
min_i=i;
min_j=j;
}
//sum
ave[i] += arr[i][j];
}
ave[i] /= N; //average
}
//打印结果(Output)
printf("\nMaximum: arr[%d][%d]=%d\n", max_i, max_j, max); printf("Minimum: arr[%d][%d]=%d\n", min_i, min_j, min); printf("Average value of each row: \n");
for(i=0; i<M; i++)
printf("\tave[%d]=%7.2f\n", i, ave[i]);
return 0;
}。

相关文档
最新文档