前言:(内容仅供分享和参考):
被这个空格隔开搞了半天,后来发现在输入的时候用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)
========================================================================
结果图: