C语言 一维数组

1.累加和

任务描述

本关任务:向数组中输入 10 个数,并做累加和。

相关知识

本题考察的是累加,因为数据放在数组中,所以要对数组进行遍历,在遍历的过程中完成累加

编程要求

根据提示,在右侧编辑器补充代码,使得程序的输出结果和预期输出一致。

测试说明

平台会对你编写的代码进行测试:

测试输入:1 1 1 1 1 1 1 1 1 1; 预期输出: 10

main()
{
  int i,a[10],sum=0;

  for(i=0;i<10;i++)
  {
     scanf("%d",&a[i]);
     sum+=a[i];
 }

    printf("%d ",sum);

}

2.用数组生成斐波那契数列

任务描述

本关任务:编写一个能输出斐波那契数列的小程序,要求输出前 10 项。

相关知识

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因意大利数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89..,这个数列从第3项开始,每一项都等于前两项之和。 在数学上,斐波那契数列以如下递推的方法定义: F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。

编程要求

根据提示,在右侧编辑器补充代码,使得程序的输出结果和预期输出一致。

测试说明

平台会对你编写的代码进行测试:

测试输入:1 1; 预期输出: 1 1 2 3 5 8 13 21 34 55

main()
{
  int i;
  int f[10];
  //请输入前两个值
  scanf("%d %d",&f[0],&f[1]);
  /*******begin*********/
for(i=2;i<10;i++){
  f[i]=f[i-1]+f[i-2];
}
for(i=0;i<10;i++){
  printf("%d ",f[i]);
}
  /*******end***********/
 
}

3.查找整数

任务描述

题目描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

相关知识(略)
编程要求

根据提示,在右侧编辑器Begin-End处补充代码。 输入 第一行包含一个整数n。 第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。 第三行包含一个整数a,为待查找的数。 输出 如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1

测试说明

样例输入: 6 1 9 4 8 3 9 9 样例输出: 2 提示: 数据规模与约定。 1 <= n <= 1000

#include<stdio.h>

int main(void) {
  /*********Begin*********/
  int n, s[n], a,i,j;
  scanf("%d", & n);
  for (i = 0; i < n; i++) {
    scanf("%d", & s[i]);
  }
  scanf("%d", & a);
  for (j = 0; j < n; j++) {
    if (s[j] == a) {
      printf("%d", j + 1);
      break;
     
  }
 if(j==n-1){
	  	printf("-1");
    }  
}
  /*********End**********/
  return 0;
}

4.折半查找

任务描述

本关任务:由N个有序整数组成的数列已放在一维数组中,给定程序的功能是:利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值,否则返回-1

相关知识

相关知识略

编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写折半查找的小程序。

测试说明

平台会对你编写的代码进行测试:

测试输入: 5

预期输出: -5 4 9 15 28 45 66 89 100 180 Not be found!

测试输入: 9

预期输出: -5 4 9 15 28 45 66 89 100 180 m=9,index=2

#include <stdio.h>
#define   N   10
int main()
{  
	int i, a[N]={-5,4,9,15,28,45,66,89,100,180 }, k=-1, m;
	int low=0, high=N-1, mid;

	for(i=0;i<N;i++)  
		printf("%d ", a[i]);
	printf("\n");
	
	scanf("%d",&m);
	while(low <= high)
	{  
		mid = (low + high) / 2;
		if(m < a[mid])
			high = mid-1;
			
		/***** 以下一行有错误 *****/
		else if(m > a[mid])
            low=mid+1;
		
		
		/***** 以下一行有错误 *****/
		else if(m == a[mid])
        {
            k=mid;
            break;
        }  
        else
        k=-1;
	}
	
	if(k>=0)  
		printf("m=%d,index=%d\n",m,k);
	else      
		printf("Not be found!\n");
	
	return 0;
}

5.逆序排列

任务描述

本关任务:输入一个有 5 个元素的数组,并将其逆序。

编程要求

根据提示,在右侧编辑器补充代码,使得程序的输出结果和预期输出一致。

相关知识

如果数组有5个元素,那对它的逆序即数组的第一个元素和第4个元素交换,第二个元素和第3个元素交换.....以此来完成逆序

测试说明

平台会对你编写的代码进行测试:

测试输入:1 2 3 4 5; 预期输出: 5 4 3 2 1

main()
{
  int a[5],temp;
int i,j;
for(i=0;i<5;i++)
{
  scanf("%d",&a[i]);
}
/*************begin***********/
for(j=0;j<3;j++){
  temp=a[j];
  a[j]=a[4-j];
  a[4-j]=temp;
}
/*************end*************/
for(i=0;i<5;i++)
{
  printf("%d ",a[i]);
}
}

6.排序问题

任务描述

本关任务:将十个数进行从大到小的顺序进行排列。

相关知识(略)
编程要求

根据提示,在右侧编辑器Begin-End处补充代码。 输入 输入十个整数。

输出 以从大到小的顺序输出这个十个数。

测试说明

样例输入: 1 2 3 4 5 6 7 8 9 10

样例输出: 10 9 8 7 6 5 4 3 2 1

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
int a[10],j,i,t;
for(i=0;i<10;i++){
    scanf("%d",&a[i]);
}
for(i=0;i<10;i++){
    for(j=i;j<10;j++){
        if(a[i]<a[j]){
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
    }
}
for(i=0;i<10;i++){
    printf("%d ",a[i]);
} 
    /*********End**********/
    return 0;
}

7.删除最大值

任务描述

题目描述:输入10个互不相同的整数并保存在数组中,找到该最大元素并删除它,输出删除后的数组

相关知识(略)
编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写删除最大值的小程序。

输入

输入10个互不相同整数

输出

输出删除最大元素后的数组

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

样例输入:

1 2 3 4 5 6 7 8 9 0

样例输出:

1 2 3 4 5 6 7 8 0

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
int a[10],j,i,max,t,flag=0;
for(i=0;i<10;i++){
    scanf("%d",&a[i]);
}
max=a[0];
t=a[0];
for(j=0;j<10;j++){
    if(t<a[j]){
     t=a[j];
    }
}

for(i=0;i<10;i++){
    if(a[i]!=t)
    printf("%d ",a[i]);
    else
    continue;
}
    /*********End**********/
    return 0;
}

课程资源,总有人需要。

  • 29
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值