谁有C语言有关数组的详细资料(最好有例题和程序),跪求啊!

如题所述

实验四 一维数组、二维数组一、实验目的与要求1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。 2、掌握与数组有关的算法。二、实验内容1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。#include "stdafx.h"#include<stdio.h>void swap2(int*,int*);void bubble(int a[],int n);int main(void){   int n,a[8];       int i;   printf("Enter n(n<=8):");   scanf("%d",&n);   printf("Enter a[%d]:", n);   for(i=0;i<n;i++)            scanf("%d", &a[i]);   bubble(a,n);printf("After sorted,a[%d]=", n);for(i=0;i<n;i++)    printf("%3d",a[i]);return 0;}void bubble(int a[],int n)   /*n是数组a中待排序元素的数量*/{    int i,j;    for(i=1;i<n;i++)        /*外部循环---请问这个嵌套循环怎么理解??*/       for(j=0;j<n-i;j++)   /*内部循环---请问这个嵌套循环怎么理解??*/          if(a[j]>a[j+1])                      swap2(&a[j],&a[j+1]);   /*交换*/}void swap2(int *px,int *py) {  int t;t=*px;*px=*py;*py=t;}单向冒泡排序法:

//输入10个整数,按从大到小输出//

#include<stdio.h>

void main()

{

int i,j,t,a[10];

printf("请输入10个整数\n");

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

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

for(j=1;j<10;j++)     //10个数要来回做(10-1)趟次//

for(i=1;i<11-j;i++)   //第j趟要做(10-j)次比较//

if(a[i]>a[i-1])           //每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒//

{t=a[i];a[i]=a[i-1];a[i-1]=t;}printf("按从大到小排序输出结果是:\n");

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

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

printf("\n");

}

双向冒泡排序法:

//输入10个整数,按从大到小输出//

#include<stdio.h>

void main()

{

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

printf("请输入10个整数\n");

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

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

for(j=1;j<10;j++)                    //10个数要来回做(10-1)趟次//

 {for(i=1;i<11-j;i++)              //第j趟要做(10-j)次比较,双向冒泡法,是先从上至下两两比较一次//

  if(a[i]>a[i-1])        //每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒//

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

  for(k=i-1;k>0;k--)      //与单向冒泡不同的是,这是双向冒泡的关键,每一次从顶至下比较完一次后,同时再从下// if(a[k]>a[k-1])           //至上比较一次,也就是说每一趟数组中的元素两两比较了两次,这就是双向冒泡排序了//

   {t=a[k];a[k]=a[k-1];a[k-1]=t;}

 }printf("按从大到小排序输出结果是:\n");

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

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

printf("\n");

}

 $(2)输入N个整数,使用改进的冒泡排序,将数据由大到小输出。#include "stdafx.h"#include<stdio.h>void swap2(int*,int*);void bubble(int a[],int n);int main(void){   int n,a[8];       int i;   printf("Enter n(n<=8):");   scanf("%d",&n);   printf("Enter a[%d]:", n);   for(i=0;i<n;i++)            scanf("%d", &a[i]);   bubble(a,n);printf("After sorted,a[%d]=", n);for(i=0;i<n;i++)    printf("%3d",a[i]);return 0;}void bubble(int a[],int n)   /*n是数组a中待排序元素的数量*/{    int i,j;    for(i=1;i<n;i++)        /*外部循环---请问这个嵌套循环怎么理解??*/       for(j=0;j<n-i;j++)   /*内部循环---请问这个嵌套循环怎么理解??*/          if(a[j]>a[j+1])                      swap2(&a[j],&a[j+1]);   /*交换*/}void swap2(int *px,int *py) {  int t;t=*px;*px=*py;*py=t;}2、*******输入N-1个整数组成一数列,再输入某数x,先将数列排序,根据x的值插入到有序数列中。#include<stdio.h> main () { void Rank(int N,int n[]); int i,j,k; int n[11]; printf("请输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&n[i]); Rank(10,n); //调用函数对输入的数组排序printf("\n请输入需要插入的整数:"); scanf("%d",&k); if(k>n[9]) n[10]=k; else { for(i=0;n[i]<=k;i++); for(j=9;j>=i;j--) n[j+1]=n[j];   //腾出位置,用以插入所输入的数n[i]=k; } printf("\n排序后此数列按升序排列为:"); for(i=0;i<=10;i++) printf("%-4d",n[i]); } void Rank(int N,int n[]) { int i,k,iTemp; for(k=1;k<=N-1;k++) for(i=N-1;i>=k;i--) if(n[i-1]>n[i]) { iTemp=n[i]; n[i]=n[i-1]; n[i-1]=iTemp; } printf("排序后此数列按升序排列为:"); for(i=0;i<=N-1;i++) printf("%-4d",n[i]); printf("\n"); }3、输入行数n,打印出杨辉三角。#include <stdio.h>

int main()

{

    int yh[101][101]={{},{0,1}},i,n,m;

    scanf("%d",&m);   /*输入要打印的行数,,,不能太大。。我水平不高。。*/

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

    {

        yh[i][1]=yh[i][i]=1;

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

        {

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

        }

    }

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

    {

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

        {

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

        }

        printf("\n");

    }

return 0;

}


#include<stdio.h>#include<math.h>main(){  int  a[8][8],i,j;   for(i=0;i<8;i++){for(j=0;j<8;j++)    if(j==0)  a[i][j]=1;else if(i==j)        a[i][j]=1;else if(i>j&&j>=1)a[i][j]=a[i-1][j]+a[i-1][j-1];else    a[i][j]=0;}  for(i=0;i<8;i++)  {for(j=0;j<=i;j++)     printf("%3d",a[i][j]);  printf("\n");  }}4、青年歌手参加歌曲大奖赛计分系统(1)有N个评委进行打分,求这位选手的平均得分(去掉一个最高分和一个最低分)。#include <stdio.h>#include <stdlib.h>#include <time.h>void bubble_sort(int a[],int n){  int i,j, itmp;  for (i =0; i<n;i++)  {    for(j=i+1 ;j<n;j++)    {      if( a[i] >= a[j])      {        itmp = a[j];        a[j] = a[i];        a[i] = itmp;      }    }  } }int main( int argc, char **argv){ int iguide[10] = {0}; srand((unsigned )time(NULL)); for (int i = 0 ; i< 8;i++) {  int isum = 0;  for (int j = 0 ; j< 10; j++)  {   iguide[j] = rand()%10 +1;  }  bubble_sort(iguide,10);  for (int l = 1;l<=8; l++)  {   isum += iguide[l];  }  printf("The  avg score the %d  singer get is %d \n" ,i+1,isum/8);  } return 0;}$(2)有N个评委进行打分,求M个选手每个人的平均得分(去掉一个最高分和一个最低分),并按平均得分由高到低排序输出。#5、输入N个整数,使用选择排序,将数据由大到小输出。#include <stdio.h>//冒泡法(指针)main(){ int a[10]; int i,j,temp; int *p=a; printf("input:"); for(i=0;i<10;i++)  scanf("%d",p+i); for(i=1;i<10;i++)  for(j=0;j<10-i;j++)   if(*(p+j)>*(p+j+1))   {temp=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=temp;} for(i=0;i<10;i++)  printf("%4d",*(p+i)); printf("\n");}补充作业实验题:1.输入10个数,按小到大排序。#include<stdio.h>main(){ int i,j,temp,a[10],n; for(i=0;i<10;i++)  scanf("%d",&a[i]); for(i=0;i<=8;i++){   for(j=i+1;j<10;j++)    if(a[i]>a[j]){   temp=a[i];   a[i]=a[j];   a[j]=temp;} } for(i=0;i<10;i++)  printf("%5d",a[i]);printf("\n");scanf("%d",&n); if(n>a[9])  a[10]=n; else {   for(i=0;i<9;i++)    if(a[i]>n)    {for(j=9;j>=i;j--)      a[j+1]=a[j];    a[i]=n;    break;    } }printf("11shu\n"); for(i=0;i<=10;i++)  printf("%4d",a[i]);}2.求10个数中大于平均值的数的个数#include <stdio.h>void main(){float a[10],sum,average;int i;sum=0.0;printf("请输入十位数:\n");for(i=0;i<10;i++)scanf("%f",&a[i]);for(i=0;i<10;i++)sum=sum+a[i];average=sum/10;sum=0.0;for(i=0;i<10;i++)if(a[i]>=average)sum=sum+a[i];printf("%.5f",sum);}3.求出大于m并且紧随m的n个素数,并存入数组中,输出,m和n从键盘输入。4.将一个数组中的值按逆序重新存放。#include<stdio.h>main(){    int a[5], i, temp;          /*定义数组及变量为基本整型*/    printf("please input array a:\n");    for (i = 0; i < 5; i++)        /*逐个输入数组元素*/        scanf("%d", &a[i]);    printf("array a:\n");    for (i = 0; i < 5; i++)        /*将数组中的元素逐个输出*/        printf("%d ", a[i]);    printf("\n");    for (i = 0; i < 2; i++)        /*将数组中元素的前后位置互换*/    {        temp = a[i];          /*元素位置互换的过程借助中间变量temp*/        a[i] = a[4-i];        a[4-i] = temp;    }    printf("Now array a:\n");    for (i = 0; i < 5; i++)        /*将转换后的数组再次输出*/        printf("%d ", a[i]);}三、源程序四、程序结果五、总结

                                                                                                  中国物联网校企联盟技术部

温馨提示:答案为网友推荐,仅供参考
相似回答