C语言经典案例---小球的掉落&&反弹总高度,选择法排序,求二维数组对角线之和

题目如下:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它第10次落地时,共经过多少米?第10次反跳多高?

示意图

这里我采用了两种方法:

法一如下:

#include<stdio.h>

void main()

{

int  i=1;

float  H=100,h=H/2;     //h代表每一次反弹后的高度(为原来的一半);

do

{

H=H+2*h;         //本句的意思是:(下上下↓+↑↓)后边一上一下为一个循环所经过的高度是相同的;

h=h/2;

i++;

}while(i<=9);    //为什么不是i<=10?因为第10次掉下来,恰巧是要求的 h ;

    printf("共经过%f米,第10次反弹为%f米\n",H,h);

} 

结果:共经过299.609375米,第10次反弹为0.097656米

法二如下:

#include <stdio.h>

int main()
{
    int i=1;
	float H=100,h=H/2;
	for(i=1;i<10;i++){
	    H=H+2*h;
		h=h/2;
	}
	printf("共经过%f米,第10次反弹为%f米\n",H,h);
}

选择法排序

#include<stdio.h>                  //选择法排序//
#define N 10
int main()
{
	int a[N],i,j,t;
	printf("请输入10个数:");
	for(j=0;j<10;j++) //累计循环输入10个数;
	scanf("%d", &a[j]);
	printf("\n");
	for(i=0;i<9;i++)//外循环变量i从0循环到8,共9次;
		for(j=i+1;j<10;j++)//内循环变量j从i+1循环到9。
			if(a[i]>a[j])  //i是前一个数,j是后一个数。
			{
				t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
			printf("排序之后:");
			for(j=0;j<10;j++) 
			printf(" %d ", a[j]);
			return 0;  
}

输入一个3*3的矩阵,并计算对角线上所有元素之和:

#include<stdio.h>
int main()
{
	int a[3][3]={1,2,3,6,5,4,7,8,9},i,j,sum=0;
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
	printf("%d\t", a[i][j]);
	printf("\n");
	}
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
	if(i==j||i+j==2)
		sum+=a[i][j]+1;
	printf("对角线的总值为:%d\n",sum);
	return 0;
}  

一维数组定义的一般形式为:类型名 数组名[常量表达式]

例如:int a[6];  定义了一个整型一维数组,数组名为a含有6个元素

C语言规定,数组元素的下标从0开始,不能为负数。

下标的最大取值由“常量表达式”的值减1确定。

例如:int a[6];  它的元素分别为a[0], a[1], a[2], a[3], a[4], a[5]。不存在数组元素a[6]!

一维数组元素的引用形式为:数组名[下标]

其中,下标必须是一个整型表达式。

例如:a[3]=5;      /* 将5赋值给数组元素a[3] */

a[2]=a[3]-a[a[3]-4];  /*将a[3]与a[1]之差赋值给数组元素a[2]*/

A[1.6]=10;  /* 下标错误,下标不能为小数 */

在引用数组元素时,方括号内是表达式,代表下标,可以是变量,

下标的取值范围是[0,数组长度1]

二维数组的一般形式为:

类型名 数组名[常量表达式1][常量表达式2]

二维数组的引用:数组名[行下标][列下标]  /* 注意是先行后列*/

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶灼hua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值