原题链接:[编程入门]自定义函数之整数处理
解题思路:题目要求定义三个函数,分别实现输入10个数、处理最大最小的元素、输出10个数的功能。输入函数为一个for循环,循环10次,录入10个数保存在数组a[10]中。处理函数遍历数组a,首先假设a[0]最小,当a[i]<a[0]成立时,将a[i]的值和坐标存放起来,遍历后交换最小的元素(利用坐标)与第一个元素;最大的数的处理方式同理。输出函数与输入函数同理。
注意事项:开头处定义了全局变量数组a[10];因为这样才能使你在自定义函数中输入的数字,能在main函数中可以用,如果数组a的定义在其他地方,疯狂报错······代码也考虑了负整数的情况(min=a[0],max=a[0])。最初是在vc++6.0中编写的,能通过,上传结果编译错误,发现是i在for循环定义过了,下面不用定义了,但是本站的编译器跟vs2019规则一样,把i在函数开始定义一下就行了。
参考代码:开发环境vs2019
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int a[10]; //全局变量
void shuru()
{
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
}
void chuli()
{
int min = a[0];
int i;
int t;
//找到最小元素的坐标
for (i = 0; i < 10; i++)
{
if (a[i] < min)
{
min = a[i];
t = i;
}
}
int temp = a[0];
a[0] = a[t];
a[t] = temp;
//找到最大元素的坐标
int max = a[0];
for (i = 0; i < 10; i++)
{
if (a[i] > max)
{
max = a[i];
t = i;
}
}
temp = a[9];
a[9] = a[t];
a[t] = temp;
}
void shuchu()
{
for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
}
int main()
{
shuru();
chuli();
shuchu();
return 0;
}0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
min = arr[i]; // 记录最小元素下标 t = i; } } temp = arr[0]; arr[0] = arr[t]; arr[t] = temp; } void output(int* arr) { // 输出处理完的十个元素 int i = 0; for (i = 0;i < 10;i++) { printf("%d ", arr[i]); } } int main() { int arr[10] = { 0 }; input(arr); deal_with(arr); output(arr); return 0; }#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> // 输入10个整数,将其中最小数与第一个数对换,把最大的数与最后一个数对换。写三个函数 输入10个数;进行处理 输出10个数 int input(int* arr) { //输入十个元素 int i = 0; for (i = 0;i < 10;i++) { scanf("%d", &arr[i]); } return 0; } void deal_with(int* arr) { int max = arr[0], i = 0, t = 0, temp = 0; // 找出最大值并处理 for (i = 0;i < 10;i++) { if (arr[i] >= max) { max = arr[i]; t = i; // 记录最大元素下标 } } temp = arr[9]; arr[9] = arr[t]; // t对应着最大值的下标, arr[t] = temp; // 找出最小值并处理 int min = arr[0]; for (i = 0;i < 10;i++) { if (arr[i] < min) { min = arr[i]; // 记录最小元素下标 t = i; } }arr[10]={0}如果不定义为全局变量,但是调用三个函数的时候把数组名作为实参参数传过去好像也可以吧,,我的提交结果是正确的,自己测试也没发现问题;#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int a[10]; void shuru() {int i;for(i=0;i<10;i++) scanf("%d",&a[i]);} void tiaoxu() {int temp; int t,i; int max=a[0]; for(i=0;i<10;i++) {if(a[i]>max) {max=a[i];t=i;}///找最大值 与最后一个数调换 } temp=a[t];a[t]=a[9];a[9]=temp; int min=a[0]; for(i=0;i<10;i++) {if(a[i]<min) {min=a[i];t=i;}///找最小值 与第一个数调换 } temp=a[t];a[t]=a[0];a[0]=temp; } void shuchu() {int i;for(i=0;i<10;i++) printf("%d ",a[i]); } int main() { shuru(a); tiaoxu(a); shuchu(a);return 0;} 大佬们,求解#include<stdio.h> int shu(int a[10]) { int i; for(i=0;i<10;i++) scanf("%d",&a[i]); } int pai(int a[10]) { int i,t,k,f; k=t=f=0; for(i=1;i<10;i++) { t=a[0]; if(t>a[i]) { t=a[i]; k=i; } } f=a[0]; a[0]=a[k]; a[k]=f; for(i=0;i<9;i++) { t=a[9]; if(t<a[i]) { t=a[i]; k=i; } } f=a[9]; a[9]=a[k]; a[k]=f; } int chu(int a[10]) { int i; for(i=0;i<10;i++) { printf("%d ",a[i]); } } int main() { int i,t,k,f; int a[10]; t=k=f=0; shu(a); pai(a); chu(a); return 0; } 答案错误,有没有大佬帮忙看看#include<stdio.h> int a[11]; void scan() { int i; for(i=0;i<10;i++) { scanf("%d",&a[i]); } } void sort_() { int i,max=9,min=0; for(i=1;i<=8;i++) { if(a[i]<a[min])min=i; else if(a[i]>a[max])max=i; } a[0]^=a[min]; a[min]^=a[0]; a[0]^=a[min]; a[9]^=a[max]; a[max]^=a[9]; a[9]^=a[max]; } void prin() { int i; for(i=0;i<10;i++) { printf("%d ",a[i]); } } void main() { scan(); sort_(); prin(); } 这个老是报结果错误。本来是在main里面定义的a[]的,然后用指针传递数据给函数,显示结果错误。然后我看了楼主的文章,把a[]定义成了全局变量,还是不行,哪位大神帮我看看,非常感谢!