如题,两个小问题不会解
输入5个数,找最小值;输入10个数,排序
麻烦写完整图片/流程
代码加流程图我可以
第一题:
#include <stdio.h>
int main()
{
int num[5], i, min;
printf("请输入5个数:\n");
for(i = 0; i < 5; i++)
{
scanf("%d", &num[i]);
}
min = num[0];
for(i = 1; i < 5; i++)
{
if(num[i] < min)
{
min = num[i];
}
}
printf("最小值为:%d\n", min);
return 0;
}
第二题:
#include <stdio.h>
int main()
{
int arr[10];
int i, j, temp;
printf("请输入10个整数:\n");
for(i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
for(i = 0; i < 9; i++)
{
for(j = 0; j < 9 - i; j++)
{
if(arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("排序后的数组为:\n");
for(i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
输入提示信息:“Input 10 numbers:”
输入格式:"%d"
输出提示信息:“Exchang results:”
输出格式:"%4d"
程序运行结果示例:
Input 10 numbers:8 2 7 4 9 11 5 47 6 97↙
Exchang results: 8 97 7 4 9 11 5 47 6 2
第一次这么认真地做学校C语言习题。虽然写的代码又臭又长,而且没有按照要求的函数原型来写……(标准答案在最后面)
#include <stdio.h>
#include <stdlib.h>
void Input(int a[],int n);
int Findmax(int a[],int n);
int Findmin(int a[],int n);
void Exchange(int x[], int n, int a,int b);
void Output(int a[],int n);
int main()
{
printf("Input 10 numbers:");
int num[10];
int max,min;
Input(num,10);
max=Findmax(num,10);
min=Findmin(num,10);
printf("%d,%d",max,min);
Exchange(num,10,max,min);
printf("Exchang results:");
Output(num,10);
return 0;
}
void Input(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
return 0;
}
int Findmax(int a[],int n)
{
int i,findmax=a[0];
for(i=1;i<n;i++)
{
if(findmax<a[i])
findmax=a[i];
}
return findmax;
}
int Findmin(int a[],int n)
{
int i,findmin=a[0];
for(i=1;i<n;i++)
{
if(findmin>a[i])
findmin=a[i];
}
return findmin;
}
void Exchange(int x[], int n, int a,int b)
{
int i;
printf("%d,%d\n",a,b);
for(i=0;i<10;i++)
{
if(x[i]==a)
x[i]=b;
else if(x[i]==b)
x[i]=a;
else
x[i]=x[i];
}
}
void Output(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
return 0;
}
然后是标准答案:
#include <stdio.h>
void MaxMinExchang(int a[], int n);
int FindMaxPos(int s[], int n);
int FindMinPos(int s[], int n);
int main()
{
int i, a[10];
printf("Input 10 numbers:");
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
MaxMinExchang(a, 10);//1
printf("Exchang results:");
for (i = 0; i < 10; i++)
{
printf("%4d", a[i]);//1
}
printf("\n");
return 0;
}
/* 函数功能:将数组中的最大数与最小数位置互换 */
void MaxMinExchang(int a[], int n)
{
int maxPos, minPos, temp;
maxPos = FindMaxPos(a, n);//1
minPos = FindMinPos(a, n);//1
temp = a[maxPos];
a[maxPos] = a[minPos];//1
a[minPos] = temp;
}
/* 函数功能:计算数组中的最大值在数组中的下标位置 */
int FindMaxPos(int s[], int n)//1
{
int maxPos = 0, max = s[0], i;
for (i = 1; i < n; i++)
{
if (s[i] > max) //1
{
max = s[i];
maxPos = i;
}
}
return maxPos;
}
/* 函数功能:计算数组中的最小值在数组中的下标位置 */
int FindMinPos(int s[], int n)//1
{
int minPos = 0, min = s[0], i;
for (i = 1; i < n; i++)
{
if (s[i] < min)//1
{
min = s[i];
minPos = i;
}
}
return minPos;
}
同学们还是要认真对待每一门课程,不要像我一样偷懒!呜呜呜呜呜。
可以使用嵌套循环来遍历输入的所有数并比较它们的大小。
思路:
在程序中,首先定义 3 个变量,分别用来存储每个数的输入、最小值和循环计数器。然后使用 printf() 函数提示用户输入 5 个数的值,使用 for 循环接收输入,并将每个数的值存储在 num 数组中。
接着使用两个嵌套的 for 循环来遍历 num 数组中的所有数,并比较它们的大小,找出最小值。外层循环 i 从 0 开始,逐个遍历 num 数组中的每个数;内层循环 j 从 i+1 开始,逐个遍历 num 数组中剩余的数。使用 if 语句比较当前数和 min_num,如果找到了更小的数,就更新 min_num 的值。
最后使用 printf() 函数输出最小值,即可完成程序的编写。
以下是用 C 语言实现输入 5 个数并找出最小值的代码:
#include <stdio.h>
int main() {
int i, j;
float num[5], min_num;
// 输入5个数
printf("请输入5个数:\n");
for (i = 0; i < 5; i++) {
printf("请输入第%d个数:", i+1);
scanf("%f", &num[i]);
}
// 找出最小值
min_num = num[0];
for (i = 0; i < 5; i++) {
for (j = i+1; j < 5; j++) {
if (num[j] < min_num) {
min_num = num[j];
}
}
}
printf("最小值是:%f", min_num);
return 0;
}