《c语言入门题目16》编写程序,从键盘输入 10 个整数,之间以一个空格隔开,存放在一维数组中。找出其最大最小值并指出其所在的元素下标。

前言:(内容仅供分享和参考):

被这个空格隔开搞了半天,后来发现在输入的时候用enter和你用空格在输入一个数字好像都差不多的,enter的话不会输多,但是空格等一下输着输着等会不知道几个了,感觉问题有点大,我的评价是不如用enter来做,虽然做的时候也遇到了不少问题,但也有不少收获。

基础知识:数值取值的第一个元素是从0项开始的,所以第一项是[0],最后一项是[n-1]。

========================================================================

题目:编写程序,从键盘输入 10 个整数,之间以一个空格隔开,存放在一维数组中。找出值大和最小的元素,第一行输出最大值及其所在的元素下标,之间以一个空格隔开;第二行输出最小值及其所在的元素下标,之间以一个空格隔开。

代码:(用到的软件:VisualStudio)

​
#include<stdio.h>
const int array_size = 10;
int main(void) {
	int number[array_size];//定义一个数组
	int i;//定义变量

	for (i = 1; i <= array_size; ++i) {//从零开始也可以,从一开始也可以,不过从i=1开始的话,后面给最大最小赋值最好用number=[1],不然等会最小值会出问题,可以自己试试看
		scanf_s("%d", &number[i]);
	}
	//取最大最小值
	int Maxnumber, Minnumber;
	int X = 0, Y = 0;
	Maxnumber = number[1];//先给最大最小赋值,不要赋0,不然等会也可能最小值会是0
	Minnumber = number[1];
	for (int i = 1; i <= array_size; ++i) {
		if (number[i] > Maxnumber) {
			Maxnumber = number[i];
			X = i-1;//顺便取一下元素下标,感觉用二分查找有点长,直接这样就行了,感觉简单点
		}
		if (number[i] < Minnumber) {
			Minnumber = number[i];
			Y = i-1;
		}
	}
	printf("该数组的最小值为:%d,其所在的元素下标为:%d\n",Minnumber,Y);
	printf("该数组的最大值为:%d,其所在的元素下标为:%d\n",Maxnumber,X);
	return 0;
}

​

 纯净版:

#include<stdio.h>
const int array_size = 10;
int main(void) {
	int number[array_size];
	int i;
	printf("请输入十个数字以存放到数组中:");
	for (i = 1; i <= array_size; ++i) {
		scanf_s("%d", &number[i]);
	}
	int Maxnumber, Minnumber;
	int X = 0, Y = 0;
	Maxnumber = number[1];
	Minnumber = number[1];
	for (int i = 1; i <= array_size; ++i) {
		if (number[i] > Maxnumber) {
			Maxnumber = number[i];
			X = i-1;
		}
		if (number[i] < Minnumber) {
			Minnumber = number[i];
			Y = i-1;
		}
	}
	printf("该数组的最小值为:%d,其所在的元素下标为:%d\n", Minnumber, Y);
	printf("该数组的最大值为:%d,其所在的元素下标为:%d\n", Maxnumber, X);
	return 0;
}

关于空格输入多了的问题:

实际上输入多了也没事,一开始数组能存储几个元素是固定的,多余的数会被截断,问题不大,

比如你多输入这么几个,实际上调试界面里面也能看到,编译器是一个一个录入的,所以实际上多

输入几个也没啥事,不过用enter会好点,到数了就跳。

错误示范:

#include<stdio.h>
int main(){
	const int number = 10;
int box[number] = {};
printf("请输入十个整数(按照要求用空格隔开每一个数):\n");
for (int i = 1; i <= number; ++i) {
	scanf_s("%d", &box[number]);
}
int Maxnumber, Minnumber;
Maxnumber = box[0];
Minnumber = box[0];
for (int i = 1; i <= number; ++i) {
	if (box[number] > Maxnumber)
		Maxnumber = box[number];
	if (box[number] > Maxnumber)
		Minnumber = box[number];
}
printf("该数值中最大的整数为:%d", Maxnumber);
printf("该数值中最小的整数为:%d", Minnumber);
return 0;
}

有空可以试试看这个错在哪里(doge)

你会发现输了半天数组里一个数都录不了(doge)

看起来是差不多,找起来还是有点麻烦的,问题很大(doge)

========================================================================

结果图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Alueaxten(上学版)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值