编程小白碰到C语言中函数和数组

准确点来说是用函数实现模块化程序设计~

直奔主题 

以下程序
#define N 20
fun(int a[],int n,int m)
{ int i,j;
for(i=m;i>=n;i--)a[i+1]=a[i];
}
main()
{ int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)printf("%d",a[i]);
}

程序运行后的输出结果是(     )
(A)10234              (B)12344              (C)12334              (D)12234

 思路分析

作为一个编程小白哈,能看出来涉及到了函数和数字,鄙人能力有限,才疏学浅,去百度文库插了一下

本题函数fun的作用是将指定的数组元素(从下标n到下标m)向后移一位。由函数调用“fun(a,2,9);”可知,函数fun用于将a[2]到a[9]的各元素依次向后移一位,移完后,a数组中各元素的值分别为1,2,3,4,5,6,7,8,9,10,故输出的前5个数组元素为12334。//百度文库

仔细思考

这个函数a[2]到a[9]的元素一次向后移动一位,这个能理解,因为题目中是a[i+1]=a[i]嘛

我当时纠结的是,1,2,3,4,5,6,7,8,9,10,取前五个,为什么是12334???坑??

纠结了好久,推算出来了一点思路,

在最开始for循环中,a[9+1]=a[9];

然后以此类推 :a[8+1]=a[8];a[7+1]=a[7];a[6+1]=a[6];a[4+1]=a[4];a[3+1]=a[3];

a[2+1]=a[2];(这个时候得注意,因为有条件i>=n,n为2)

什么意思呢?简单来说,就是原始数组a[N]从a[2]到a[9]元素得向后移动一位,原来的a[2]对应元素3 , a[3]对应的元素为4,现在元素后移一位之后,即a[3]是原来a[2]对应的元素,即对应元素3,a[4]为4   

前面的a[0]=1,a[1]=2,a[2]=3,这三个元素没有改变,所以排除AD选项.然后依次往后顺,a[3]=3,a[4]=4

即 1,2,3,3,4

撸写代码 

#include<stdio.h>
#define N 20
fun(int a[],int n,int m) //n=2,m=9,测试的时候这两也可以换
{
	int i,j;
	for(i=m;i>=n;i--)
	a[i+1]=a[i];
	
}
int main()
{
	int i,a[N]={1,2,3,4,5,6,7,8,9,10};
	fun(a,2,9); 
	for(i=0;i<5;i++)  //取前五位,测试的时候i可以改为10,15,20,随意
	printf("%d\n",a[i]);
}

出现了,和推测的一样,美滋滋,大家还可以多测试几组,如取前10位,前15位,前20位的.

或者元素从2-9,或3-10,2-15,多练练,其中的原理还是的自己多多感受~

菜鸟小白不要紧,笨鸟先飞早晚也能到达自己想去的地方!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值