C语言 实验七 数组

C语言 实验七 数组

一、实验目的
1.掌握一维数组和二维数组的定义,数组元素的引用形式和数组的输入输出方
法。
2.了解与数组有关的算法(如插入、排序、查找等)。
二、实验学时
4 学时
三、实验内容
1.从键盘输入十个学生的成绩,输出平均成绩以及高于平均成绩的学生人数。
2.某数列前两项为 2 和 3,其后每项为前两项之和,求此数列的前 10 个数并输出
显示。
3.输出 Fibonacci 数列前 60 项,要求每行输出 6 个数。如 1, 1,2,3,5,8,13……
4.任意输入 10 个整数,要求从大到小降序排列并输出,编写排序函数 int sort(int
x[],int n)。
5.从键盘输入一个 4×4 的整数矩阵,输出主对角线(\)元素之和。
6.请阅读以下程序并填空使得运行有如下的结果:
1 2 3 4 5 6
1 1 2 3 4 5
1 2 1 2 3 4
1 3 3 1 2 3
1 4 6 4 1 2
1 5 10 10 5 1
#include<stdio.h>
int main()
{ int a[6][6],i,j;
for(i=0;i<6;i++)
{for(j=0;j<6;j++)
{if (① ) a[i][j]=1;
else if(i<j) a[i][j]= ② ;
else a[i][j]= ③ ;
printf(“%4d”,a[i][j]);
}
printf(“\n”);
}
return 0;
}
7.从键盘上输入一个 4×4 整数矩阵,以主对角线为对称轴,将左下角元素中较
大元素替代右上角对应元素,并将右上角元素(含对角线元素)输出。

#include<stdio.h>
main()
{
         int i,j=0;      
         float a[10],s,aver;      
         printf("输入十个学生的成绩:");     
         for(i=0;i<10;i++)      
         {
                    scanf("%f",&a[i]);           
                    s+=a[i];       
          }      
          aver=s/10;      
          for(i=0;i<10;i++)      
          if(a[i]>aver)      
          j++;      
          printf("平均成绩=%f\n高于平均值的学生=%d",aver,j);
}
#include<stdio.h>
main()
{
	int a[10]={2,3},i;	
	for(i=0;i<10;i++)	
	{
	        if(i>1)        
	        a[i]=a[i-2]+a[i-1];        
	        printf("%d\n",a[i]);	
	 }
}
#include<stdio.h>
main()
{
	long long Fib[60]={1,1},i,j;	
	for(i=0;i<60;i++)	
	{
	        if(i>1)        
	        Fib[i]=Fib[i-2]+Fib[i-1];		
	        printf("%Id,",Fib[i]);		
	        if((i-5)%6==0)		
	        printf("\n");	
	 }
}

①冒泡排序法

#include <stdio.h>
               
int sort(int x[],int n)
{
	int i,j,s;     
	for(i=1;i<n-1;i++)     
	{
	           for(j=0;j<n-1-i;j++)           
	           if(x[j]>x[j+1])           
	           s=x[j],x[j]=x[j+1],x[j+1]=s;      
	 }      
	 for(j=0;j<n;j++)      
	 printf("%d,",x[j]);
}

int main()
{
	int x[10],i;     
	printf("请输入十个整数:");     
	for(i=0;i<10;i++)     
	scanf("%d",&x[i]);     
	sort(x,10);
}

②选择排序法

#include <stdio.h>

int sort(int x[],int n)
{
	int i,j,s,max;     
	for(i=0;i<n-1;i++)     
	{
	           max=i;           
	           for(j=i+1;j<n;j++)           
	           if(x[j]>x[max])           
	           max=j;           
	           if(max!=i)           
	           s=x[max],x[max]=x[i],x[i]=s;      
      }      
      for(j=0;j<n;j++)      
      printf("%d,",x[j]);
}

int main()
{
	int x[10],i;     
	printf("请输入十个整数:");     
	for(i=0;i<10;i++)     
	scanf("%d",&x[i]);     
	sort(x,10);
}

③交换排序法

#include <stdio.h>
                 
int sort(int x[],int n)
{
	int i,j,s;     
	for(i=0;i<n-1;i++)     
	{    
	      for(j=i+1;j<n;j++)           
	      if(x[i]>x[j])           
	      s=x[i],x[i]=x[j],x[j]=s;      
	 }      
	 for(j=0;j<n;j++)      
	 printf("%d,",x[j]);
}

int main()
{
	int x[10],i;     
	printf("请输入十个整数:");     
	for(i=0;i<10;i++)     
	scanf("%d",&x[i]);     
	sort(x,10);
}

④插入排序法

#include <stdio.h>
 
int sort(int x[],int n)
{
	int i,j,s;     
	for(i=1;i<n;i++)     
	{     
	      int m=x[i],j=i-1;           
	      while(j>=0&&x[j]>m)           
	      x[j+1]=x[j], j--;           
	      x[j+1]=m;      
	 }      
	 for(j=0;j<n;j++)      
	 printf("%d,",x[j]);
}

int main()
{
	int x[10],i;     
	printf("请输入十个整数:");     
	for(i=0;i<10;i++)     
	scanf("%d",&x[i]);     
	sort(x,10);
}
#include <stdio.h>
int main()
{
	int x[4][4],i,j,s=0;     
	printf("请输入一个 4×4 的整数矩阵:");     
	for(i=0;i<4;i++)     
	{ 
	         for(j=0;j<4;j++)           
	         {          
	                  scanf("%d",&x[i][j]);                 
	                  printf("%4d ",x[i][j]);                 
	                  if(i==j)                 
	                  s+=x[i][j];            
	           }               
	           printf("\n");      
	 }      
	 printf("主对角线元素之和=%d",s);
}
#include<stdio.h>
int main()
{
       int a[6][6],i,j;
       for(i=0;i<6;i++)
       {
              for(j=0;j<6;j++) 
              {
                      if (j==0||i==j) 
                      a[i][j]=1;
                      else if(i<j) 
                      a[i][j]=j-i+1;
                      else a[i][j]=a[i-1][j-1]+a[i-1][j];
                      printf("%4d",a[i][j]);
               }
               printf("\n"); 
       }
       return 0;
} 
#include <stdio.h>
int main()
{
	int x[4][4],i,j,s;     
	printf("请输入一个 4×4 的整数矩阵:");    
	//存入整数和输出交换元素之前的整型矩阵     
	for(i=0;i<4;i++)     
	{      
	         for(j=0;j<4;j++)           
	         {        
	                  scanf("%d",&x[i][j]);                 
	                  printf("%-4d ",x[i][j]);            
	          }               
	          printf("\n");      
	  }      
	  printf("\n");      
	  //交换元素      
	  for(i=0;i<4;i++)     
	  {     
	            for(j=0;j<4;j++)           
	            {       
	                      if(x[i][j]>x[j][i])                 
	                      s=x[i][j],x[i][j]=x[j][i],x[j][i]=s;            
	             }         
	    }      
	    //输出交换元素后的整形矩阵      
	    for(i=0;i<4;i++)     
	    {     
	              for(j=0;j<4;j++)           
	              {      
	                         printf("%-4d ",x[i][j]);            
	               }               
	               printf("\n");      
	      }      
	      printf("\n");      
	      //输出右上角元素      
	      for(i=0;i<4;i++)      
	      { 
	                for(j=0;j<4;j++)           
	                {      
	                           if(i<=j)                 
	                           printf("%-4d ",x[i][j]);            
	                 }            
	                 printf("\n");         
	        }
}
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值