实验六 数组程序设计
实验目的
1、掌握使用一维数组编程方法
2、掌握使用二维数组进行程序设计
实验内容
一、上机验证程序,并分析结果
要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
 1#include <stdio.h>
int main()
{      int  a[ ]={1,2,3,4,5} , i, j, s=0 ;
      j = 1;
      for ( i = 4 ; i>=0 ; i--)
      {
      s = s+ a[i] * j ;
      j = j * 10 ;
      }
        printf(" s= %d \n" , s );
  return 0;
}
分析结果
 
运行结果
 
 
、程序改错题
1.下面程序的功能,是从键盘输入一个数组〔数组长度为10〕,查数组中正数的个数。源代码如下,程序中存在错误,请将其改正。
#include <stdio.h>
int main()
{
  int a(10);/*定义数组*/
  int count,i;/* i循环变量 count 正数个数*/
  for(i=0;i<=10;i++)
  {/*循环输入*/
  scanf("%d",a[i]);
  }
  count=1;
  for(i=0;i<=10;i++)
  {/*查正数*/
    if(a(i)>0)
        count++;
  }
  printf("数组中正数有:%d个\n",count);
  return 0;
}
三 编写程序
1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。
#include <stdio.h>
#define  N 30
int main()
{
      float score[N],sum=0,aver; 
      int i;
      for(i=0;i<30;i++)
      {   
            scanf("%f",&score[i]);
            sum=sum+score[i];
      }
      aver=sum/30;
      printf("平均分为:%.2f\n",aver);
      for(i=0;i<N;i++)
            if(score[i]>aver)
                printf("%.2f ",score[i]);
        printf("\n");
    return 0;
}
2.编写程序:假设有13位评委参与评分工作。计算每位歌手最终得分的方法是:去掉一个最高分和一个最低分,然后计算剩余11个分数的平均值,所得结果就是选手的最终得分。
#include<stdio.h>
#define N 13
int main()
{
    int score[N],sum=0,i,high,low;
    for(i=0;i<N;i++) 
    {
        printf("请输入第%d位评委成绩:",i+1);
        scanf("%d",&score[i]);
        sum+=score[i];
    }
    high=score[0];
    low=score[0];
    for(i=0;i<N;i++)
    {
        if (high<score[i]) high=score[i];
        if (low>score[i]) low=score[i];
    }
    printf("歌手最后得分为:%g\n",(float)(sum-high-low)/(N-2));
}
3. 假设给定一个书籍编号的数组〔数组大小和数据自己设定〕,查某本书是否在此数组中个,如果有,显示查成功以及该书在数组中的下标,否则显示查失败。
#include<stdio.h>
#define N 5
int main()
{
    int a[N],i,flag=0,s;
    printf("请输入书籍编号:\n");
    for (i=0;i<N;i++)
        scanf("%d",&a[i]);
    printf("请输入需要查的书籍编号:\n");
    scanf("%d",&s);
    for (i=0;i<N;i++)
    {
        if(a[i]==s)
        {    flag=1;  break;
        }
    }
    if(flag)
    printf("查成功!编号为%d的书籍的位置是%d\n",s,i+1);
    else
        printf("查失败!请确认书籍编号是否正确!\n");
    return 0;
}
4. 编写程序验证冒泡法排序
#include <stdio.h>
int main()
{  int a[11],i,j,t;
    printf("Input 10 numbers:\n");
    for(i=1;i<11;i++)
      scanf("%d",&a[i]);
    printf("\n");
    for(i=1;i<=9;i++)
      for(j=1;j<=10-i;j++)
          if(a[j]>a[j+1])
        {t=a[j]; a[j]=a[j+1]; a[j+1]=t;}
    printf("The sorted numbers:\n");
    for(i=1;i<11;i++)
    printf("%d ",a[i]);
return 0;
}
5. 编写程序验证选择法排序
方法一:
#include <stdio.h>
int main()
{  int a[11],i,j,k,temp;
    printf("Input 10 numbers:\n");
    for(i=1;i<11;i++)
      scanf("%d",&a[i]);
  for(i=1;i<10;i++)
  {  k=i;
      for(j=i+1;j<11;j++)
            if(a[j]<a[k])  k=j;
      if(i!=k)
      {  temp=a[i]; a[i]=a[k]; a[k]=temp;}
  }
    printf("The sorted numbers:\n");
    for(i=1;i<11;i++)
    printf("%d ",a[i]);
return 0;
}
方法二:
c语言二维数组表示方法#include <stdio.h>
#define NUM 10                      /* 参与排序的数据个数 */
int main()
{
    int data[NUM];                  /* 存放参与排序的所有整数 */
    int i, j, minValue, temp;
   
    /* 通过键盘输入待排序的整型数列 */
    printf("\nEnter %d integers.", NUM);
    for (i=0; i<NUM; i++) {
        scanf("%d", &data[i]);
    }
    /* 选择排序 */
    for (i=0; i<NUM-1; i++) {
        minValue = i;
        for (j=i+1; j<NUM; j++) {    /* 选择i~NUM-1之间的最小数值 */
            if (data[j]<data[minValue])
                minValue = j;
        }
        if (minValue!=i) {      /* 交换 */
            temp = data[i];
            data[i] = data[minValue];
            data[minValue] = temp;
        }
    }
   
    /* 输出排序后的结果 */
    printf("\nOrdering list is:\n");
    for (i=0; i<NUM; i++) {
        printf("%5d", data[i]);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。