C语言:数组的应用实验报告

课程名称:结构化程序设计与C语言    开课实验室: 年  月  日

一、实验目的

用C语言编写和调试数组的程序,包括一维数组和二维数组。从而对数组的程序设计有比较深入的了解。

二、内容及结果

1、程序二  选择排序法

1)题目:用选择法对10个整数排序。

2)代码:

#include<stdio.h>

int main()

{

  int a[10];

  int i,j,t;

  printf("input 10 numbers:\n");

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

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

  printf("\n");

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

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

       if(a[i]>a[i+1])

     {t=a[i];a[i]=a[i+1];a[i+1]=t;}

  printf("the sorted numbers:\n");

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

     printf("%d",a[i]);

  printf("\n");

  return 0;

}

3)运行截图:

2、程序二  将一个数组中的值按逆序重新存放。

1)题目:将一个数组中的值按逆序重新存放。

2)代码:

# include <stdio.h>

int main ()

{

  int a[5]={8,6,5,4,1};

  int i,t;

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

     {

        t=a[i];

        a[i]=a[4-i];

        a[4-i]=t;

     }

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

  printf("%d ",a[i]);

  return 0;

}

3)运行截图:

3、程序三  输出杨辉三角形(10行)

1)题目:  输出杨辉三角形(10行)

2)代码:

#include<stdio.h>

int main()

{

  int yh[10][10]={0};

  int i,j;

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

     yh[i][0]=1;

  for(i=1;i<10;i++)

      for(j=1;j<10;j++)

        yh[i][j]=yh[i-1][j-1]+yh[i-1][j];

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

  {

     for(j=0;j<i+1;j++)

       printf("%5d",yh[i][j]);

      printf("\n");

  }

}

3)运行截图:

4、程序四  找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该行上最小。也可能没有鞍点。

1)程序要求:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该行上最小。也可能没有鞍点。

2)代码:

#include<stdio.h>

int main() 

{

  int a[5][5],b[5],c[5],s[5][5],k=0,l=0;

  int i,j;

  printf("请你输入s[5][5]:\n");

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

    for(j=0;j<5;j++)

    scanf("%d",&s[i][j]); 

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

    for(j=0;j<5;j++,a[i][j]=s[i][j]); 

    for(i=0,k=0;i<5;i++,k++) 

    for(j=0;j<4;j++) 

  {

     if(a[i][j]>=a[i][j+1]) 

        b[k]=a[i][j+1]=a[i][j]; 

        else  

        b[k]=a[i][j+1]; 

  } 

    for(j=0,l=0;j<5;j++,l++) 

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

  {

     if(a[i][j]<=a[i+1][j]) 

             c[l]=a[i+1][j]=a[i][j]; 

        else  

             c[l]=a[i+1][j]; 

  } 

    for(i=0,k=0;i<5;i++,k++) 

    for(j=0,l=0;j<5;j++,l++) 

    if(s[i][j]-b[k]==0) 

  {

     if(s[i][j]-c[l]==0) 

            printf("s[%d][%d]=%d\n",i,j,s[i][j]); 

else 

            printf("s[%d][%d]=%d不是鞍点\n",i,j,s[i][j]); 

  }

  return 0;

3)运行截图:

三、实验结果、分析和结论:

    此次试验主要就是对数组的运用,同时也运用了if条件语句以及for循环语句的运用,让以前的知识点得到了复习。通过对数组的运用,我们首先学会的就是如何对一个数组的定义,然后就是数组的作用,我们运用数组对多个数进行排序和两个数的排序。而在数组中我们运用最多、最广的就是二维数组,所以我们掌握二维数组的相关信息,首先就是怎样定义一个二维数组,其次就是怎样引用二维数组中的元素以及对二维数组的初始化。还有一个重要的数组就是字符数组,此次虽未用到,但也是需要我们掌握的,因此只有我们掌握了各种数组的运用,我们才能正确的把它运用到解题中去。

 

第二篇:数组(C语言实验报告)

仲恺农业工程学院实验报告纸

信息学院(院、系) 专业 班 C语言程序设计 课 实验目的:

(1)掌握一维和二维数组的定义、赋值和输入输出方法。

(2)掌握字符数组和字符串函数的使用。

(3)掌握与数组有关的算法。

实验内容与总结:

编程练习

1、输入一个字符串,统计其中字母、数字、空格和其他字符各多少个。

程序如下:

#include <stdio.h>

#define N 100

void main()

{

int i,letter,number,space,other;

char c[N]; letter=number=space=other=0; printf("请输入字符串:\n"); gets(c); for(i=0;i<N&&c[i]!='\0';i++) { if((c[i]>='a'&&c[i]<='z')||(c[i])>='A'&&c[i]<='Z') letter++; else if(c[i]>='0'&&c[i]<='9') number++; else if(c[i]==' ') space++; else other++; } printf("字母 %d 数字 %d 空格 %d 其它字符 %d\n",letter,number,space,other); }

(1)程序编制要点:

①一维数组的定义、赋值和输入输出方法;

②gets函数的表达。

(2)该题目涉及的知识点和难点:

①一维数组的输入输出;

②for语句的输入与使用;

③if语句的使用;

④gets函数的使用。

2、输出杨辉三角形。教材p153-7.6

程序如下:

#include<stdio.h>

#define N 10

void main()

{

int i,j,a[N][N]; /*数组为10行10列*/

printf("杨辉三角形的前10行如下:\n");

for(i=0;i<N;i++) { a[i][0]=1; /*使第1列的元素值为1*/ a[i][i]=1; /*使对角线的值为1*/ } for(i=2;i<N;i++) /*从第3行开始处理*/ for(j=1;j<=i-1;j++) { a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=0;i<N;i++) { } for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n");

}

(1)程序编制要点:

①二维数组的定义、赋值和输入输出方法;;

②用for语句实现循环;

(2)该题目涉及的知识点和难点:

①宏定义;

②二维数组的输入输出;

③for语句的输入与使用。

3、餐饮服务质量调查打分

在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来。例如,一个公司的主管可能需要了解一年来公司的营业状况,比较一下各月份的销售收入状况。如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)的形式表示,将会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,练习这方面的程序编写方法。

假设有20个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。

Grade Count

1

2

Histogram ***** ********** 第 2 页 共 3 页 5 10

3

...

程序如下: 7 *******

#include<stdio.h>

void main()

{

int score[20]; int count[6]={0}; int i,j; for(i=0;i<20;i++) { printf("请输入第%d位同学对自助餐厅食品和服务质量的打分(1~5分):\n",i+1); scanf("%d",&score[i]); count[score[i]]++; } printf("统计调查结果如下:\n"); printf("Grade Count Histogram\n"); for(i=1;i<=5;i++) { printf("%2d %6d ",i,count[i]); for(j=0;j<count[i];j++) printf("*");

printf("\n");

}

}

(1)程序编制要点:

①数组输入输出;

②用for语句实现循环。

(2)该题目涉及的知识点和难点:

①整型int,scanf函数;

②数组的输入输出及使用;

③for语句的输入与使用。

程序代码和运行情况描述:

在实验1中,当程序运行时,先初始化数据letter=number=space=other=0,输入字符串后,自动统计其中字母、数字、空格和其他字符各多少个。

在实验2中,先定义一个二维数组,然后用for语句实现循环,杨辉三角形的前10行的计算在循环中执行。

在实验3中,定义一个数组score[20]和count[6]。用for语句实现循环,统计的次数在循环中自增:第一个for语句用来实现对20个学生给自助餐厅的食品和服务质量的打分的输入与统计;第二个for语句统计输出的Grade与Count的数值;第三个for语句实现条形图(*)的长度。

相关推荐