求讨教。不知道哪里写错了

C语言 码拜 9年前 (2016-04-16) 762次浏览
题目,输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输入数组。
#include<stdio.h>
int main()
{
int a[10],max,min,i,t,y;
printf(“please enter 10 numbers:”);
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for(i=1;i<10;i++)
{max=a[0];
if(a[i]>max)max=a[i];{t=max;max=a[0];a[0]=t;}}
for(i=1;i<10;i++)
{min=a[0];
if(a[i]<min)min=a[i];{y=min;min=a[9];a[9]=y;}}
for(i=0;i<10;i++)
printf(“%d”,a[i]);
return 0;
}
求指导,哪里写错了。
解决方案

40

逻辑有点问题:
1.下标初始化放在for循环之前
2.保存最大值和最小值的下标才对
3.交换数值应该放在for循环之后
4.打印的时候两个数之间加上空格

#include<stdio.h>
int main()
{
	int a[10],max,min,i,t,y;
	printf("please enter 10 numbers:");
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
	max=0;
	for(i=1;i<10;i++)
	{
		if(a[i]>a[max])
			max=i;
	}
	t=a[max];a[max]=a[0];a[0]=t;
	min=0;
	for(i=1;i<10;i++)
	{
	if(a[i]<a[min])
		min=i;
	}
	y=a[min];a[min]=a[9];a[9]=y;
	for(i=0;i<10;i++)
		printf("%d ",a[i]);
	return 0;
} 

代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

20

#include <stdio.h>
int main() {
    int a[10],max,min,i,t,y;
    printf("please enter 10 numbers:");fflush(stdout);
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    y=0;
    max=a[y];
    for(i=1;i<10;i++) {
        if (a[i]>max) {
            y=i;
            max=a[y];
        }
    }
    t=a[y];a[y]=a[0];a[0]=t;
    y=1;
    min=a[y];
    for(i=2;i<10;i++) {
        if(a[i]<min) {
            y=i;
            min=a[y];
        }
    }
    t=a[y];a[y]=a[9];a[9]=t;
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    return 0;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求讨教。不知道哪里写错了
喜欢 (0)
[1034331897@qq.com]
分享 (0)