C语言实验报告 数组

C语言实验报告 数组
C语言实验报告 数组

实验七数组

1.实验目得

(1)熟练掌握一维数组、二维数组得定义、初始化与输入/输出方法;

(2)熟练掌握字符数组与字符串函数得使用;

(3)掌握与数组有关得常用算法(如查找、排序等).

2.实验指导

(1)对任意一个一维型数组,从中找出数组元素得最大值与最小值并输出。要求:

①数组有十个元素;

②使用scanf函数实现数组元素得输入前给出必要得提示;

③输出时,首先输出数组得十个元素,然后输出其最大值与最小值。

分析指导:

①算法分析:首先定义一个数组,通过循环从键盘输入十个数组元素得值,再通

过另一个循环判断数组元素得最大只与最小值;

②根据分析情况编写程序:

#include<stdio、h>

main()

{

int a[10],i,max,min;

printf(”please input ten integers:");

for(i=0;i<=9;i++)

{

scanf(”%d",&a[i]);

max=a[0];

min=a[0];

for(i=1;i〈=9;i++)

if(a[i]〉max)

max=a[i];

if(a[i]〈min)

min=a[i];

}

for(i=0;i〈=9;i++)

printf("a[%d]=%d\n”,i,a[i]);

printf(”The maximum value is%d,and the minimum value i s%d\n",max,min);

运行程序,输入十个整数,如:

21 37 6 17 9 12 89 76 35 59

运行结果如下:

(2)编写函数cmpStr(char s1[],char s2[])比较两个字符串s1与 s2得大小。如果s1>s2,返回一个正数;s1=s2,返回0;s1〈s2,返回一个负数,在主函数中调用该函数完成字符串得比较操作,并输出返回得值。要求:

①不允许使用strcmp()函数;

②用gets()函数在主函数中输入两个字符串;

③实现触摸屏受托人()函数,返回得正数或负数得绝对值应该就是进行比较得

两个字符传中相应字符得ASCII码得差值。

分析指导:

①算法分析:两个字符串从第一个字符开始一一对应进行比较,直到不相等得

那个字符,从而求得它们得ASCII码得差值。比如,‘A’与‘C’相比,由于‘A’<‘C’,应输出负数,由于‘A'与‘C’得ASCII码得差值为2,因此,应输出“-2”。同理,“And”与“Aid”比较,根据第二个字符比较结果,‘n’比‘I’大5,因此应输出‘5’;

②根据分析情况编写程序:

#include〈stdio、h〉

int cmpstr(char s1[],char s2[])

{

?int i,diff;

i=0;

?while((s1[i]==s2[i])&&(s1[i]!='\0’))i++;

if(s1[i]=='\0'&&s2[i]=='\0')

??diff=0;

?else

??diff=s1[i]—s2[i];

returndiff;

}

void main()

{

?int z;

char s1[100],s2[100];

printf("input the first string:");

?//输入字符串1

?gets (s1);

?printf(”input the secondstring:”);

?//输入字符串2

gets(s2);

?z=cmpstr(s1,s2);

?//输出比较结果

?printf("the difference between two strings is %d\n”,z);

查瞧运行结果如下:

重新输入两个字符串meet,mood运行结果如下:

(3)再给定得字符串中查找指定得字符。

要求:

①字符串采用直接初始化得方式处理;

②通过scanf函数读入一个任意字符;

③在字符串中查找该字符,如果存在该字符,输出该字符在字符串中得一次出现

得位置,如果再给定得字符串中不存在该字符,则给出相应得说明信息.

#include〈stdio、h>

void main()

inti;

?charch;

?char s[]=" program";

?printf(”输入一个英文字母:");

?scanf("%c",&ch);

?for (i=0;s[i]!='\0’;i++)

?{

?if (s[i]==ch)

?break;

}

?if (i<7)

?printf("s[%d]=%c\n",i,ch);

?else

printf(”No founded\n”);

}

输入一个英文字母O运行程序如下:

再次输入一个英文字母w运行程序如下:

(4)首先输入一个大于二且小于十得整数n,然后定义一个二维整型数组(n*n),初始化该数组,讲述组中最大元素所在得行与最小元素所在得行对调。

要求:

①n*n数组元素得值由scanf函数从键盘输入(假定最大值最小值不在同一行

上),然后输出该数组;

②查找最大值最小值所在得行,将数组中最大元素所在得行与最小元素所在得

行对调,并输出对调后得数组;

③为直观起见,数组按n行n列得方式输出;

④修改程序,对最大值与最小值可能出现在一行种得情况进行处理。

#include

main()

?long matrix[9][9],min,max,temp;

?int i,j,n,nMax=0,nMin=0;

printf("\nplease inputen of matrix:\n");

?scanf("%d",&n);

printf("\npleaseinpute elementsof matrix(%d*%d):\n”,n,n);

for(i=0;i<n;i++)

for(j=0;j

??scanf("%ld”,&matrix[i][j]);

?min=max=matrix[0][0];

?for(i=0;i<n;i++)

?for(j=0;j<n;j++)

?{

if(matrix[i][j]>max)

???{

???max=matrix[i][j];

??nMax=i;

?}

??else if(matrix[i][j]<min)

?min=matrix[i][j];

??nMin=j;

}

??}

for(j=0;j

?temp=matrix[nMax][j];

??matrix[nMax][j]=matrix[nMin][j];

matrix[nMin][j]=temp;

?printf(”\nResult matrix:\n”);

?for(i=0;i

?for(j=0;j

?printf(”%5ld",matrix[i][j]);

printf("\n");

?}

输入一个数4,输入一个4*4得数组

1 3 67

2458

13 5 7

2 6 9 7

运行程序如下:

再次输入一个数字3,输入一个3*3得数组12 3

24 5

37 8

运行程序如下:

3 实验结论

通过本次实验熟练得掌握一维数组、二维数组得定义、初始化与输入/输出方法以及字符数组与字符串函数得使用,还有就就是掌握与数组有关得常用算法

相关主题
相关文档
最新文档