C语言作业6

1. 选择题
关于数组初始化,下列说法不正确的是:
A. ⼆维数组初始化的时候,列数是必须给出的,⾏数可以由编译器来数。B. ⼆维数组初始化的时候,每⾏⼀个{},逗号分隔。
C. 对⼀维数组初始化的时候,即使给全部元素都赋了初值,也不能省略数组⻓度
D. ⼆维数组初始化的时候,最后的逗号可以存在

1.C

2.C   str是数组,不能这样整体赋值。

3.若⼆维数组 a 有 m 列,则在 a[i][j] 前的元素个数为( ). 

3.C

4.下列程序段中能完成数组中n个元素前后倒置的是( )。如数组元素为 3,1,8 时,完成倒置后变为 8,1,3 。

4.A  C

5. 填空题
题⽬:有以下程序,程序运⾏后的输出结果是( )。需附上简要解释。

5.1        2        3

   3        4        5

列数3>2,a[0][2]储存原a[1][1]数据,新a[1][1]仍储存原a[1][1]数据

6. 编程题
参考学习通上传的PPT「第⼋章 数组」,仿照【例8.7】计算最⾼分,使⽤「数组 + 函数」,计算最低分。这道题重点考查如何向函数传递⼀位数组。

#include <stdio.h>
int ReadScore(int score[]);
int Findlow(int score[], int n);
int main()
{
	int score[40],low,n;
	n = ReadScore(score);
	low=Findlow (score, n);
	printf ("The lowest score is %d\n", low);
	return 0;
}
int ReadScore(int score[])
{
	int i,N;
	scanf("%d",&N);
	for(i=0;i<N;i++)
	{
		scanf("%d",&score[i]);
	}
	return i;
}


int Findlow(int score[],int n)
{
	int low,i;
	low = score[0];
	for (i=1;i<n;i++)
	{
		if (score[i]< low)
		{
			low= score[i];
		}
	}
	return low;
}

7. 编程题
参考学习通上传的PPT「第⼋章 数组」,仿照【例8.8】⽤交换法对成绩降序排序,使⽤「数组 + 函数」,对10个double 类型的数值进⾏从⼩到⼤进⾏排序。

​
#include <stdio.h>

void DataSort(double score[],int n);

int main()
{
	int i,n;
    double score[10]={6.3,2.6,5.3,9.5,3.5,3.9,5.5,1.7,7.4,7.2};
	DataSort(score,10);
	for (i=0;i<10;i++)
    {
    	printf("%f ", score[i]);
	}       
    return 0;
}


void DataSort(double score[],int n)
{
	int i, j;
	double temp1;
	for (i=0;i<n-1;i++) 
    {
        for (j=0;j<n-i-1;j++)
        {
            if (score[j]>score[j+1]) 
			{
                temp1 =score[j];
                score[j] =score[j+1];
                score[j+1] =temp1;
            }
        }
    }
}

​

8. 附加题
题⽬:输⼊⼀个⼆维数组的⾏数 m(m≤10),列数 n(n≤10),⼆维数组的各元素值。输出周边元素之和。
说明:「周边元素是指⾸⾏、⾸列、末⾏、末列的数组元素」输⼊⽰例:3⾏4列,后接具体的3⾏4列数组。

#include<stdio.h>
#include<math.h>

#define M 10
#define N 10

int main()
{
	int a[M] [N];
	int i,j,k,b,n,m,sum1 = 0,sum2 = 0,sum;
	scanf("%d%d",&m,&n);
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			scanf("%d",&a[i][j]);
			sum1+=a[i][j];
		}
	}
	if(n==2||m==2)
	{
		printf("%d",sum1);
	}
	else
	{
		for(k=1;k<m-1;k++)
		{
			for(b=1;b<n-1;b++)
			{
				sum2+=a[k][b];
			}
		}
		sum = sum1-sum2;
		printf("%d",sum);
	}	
}
	

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值