c语言初学者
应该是第二个循环的问题,但不知道哪里出错了
#include
int main()
{
int i=0,t;
int a[10];
for (i;i<10;i++)
scanf_s("%d", &a[i]);
while (i<10)
{
if (a[i] > a[i + 1]);
{t = a[i];
a[i + 1] = t; }
i = i + 1;
}
printf("%d\n", a[9]);
return 0;
}
希望此回答对你有所帮助,望采纳。
首先看你的源代码,一共有两处问题:
你两次循环分别用来 for 和 while 循环。并且两次循环中都用的同一个变量 i,在程序执行完 for 循环后,此时的 i 已经等于 10,不再符合 for 循环的循环条件,因此会执行下面的语句,那么在执行到 while 循环时,因为你没有给变量 i 赋值为 0,此时的 i 依旧为 10,并不符合 while(i < 10)的条件,因此不会进入循环,会跳过循环直接输出你所输入的最后一个数字。
在第二个循环中你的 if 判断后面加了 分号; ,这就是一个无意义的判断,不管判断符不符合条件都会执行下边的语句。
将这两处错误改过来,程序就可以正常运行啦。
你的源代码:
#include<stdio.h>
int main()
{
int i=0,t;
int a[10];
for (i;i<10;i++)
scanf_s("%d", &a[i]);
// 在此处应该将变量 i 赋值为 0
while (i<10)
{
if (a[i] > a[i + 1]);// 此处不应加 ;
{t = a[i];// 不论判断符不符合条件,都会执行 { }中的语句
a[i + 1] = t; }
i = i + 1;
}
printf("%d\n", a[9]);
return 0;
}
找出问题后,我们就解决问题,在 for 循环后面将 i 赋值为 0,然后将 if 后的分号去掉。
更改后的源代码:
#include<stdio.h>
int main()
{
int i = 0,t = 0;
int a[10];
for (i = 0;i < 10;i++)
{
scanf_s("%d", &a[i]);
}
i = 0;// 将 i 赋值为 0,
while (i < 10)
{
if(a[i] > a[i + 1])// 此处去掉 ;
{
t = a[i];
a[i + 1] = t;
}
i = i + 1;
}
printf("%d\n", a[9]);
return 0;
}
运行结果如下图:
#include <stdio.h>
int main() {
int a[10];
int Max = 0;
for (int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < 10; i++) {
if(a[i] > Max) {
Max = a[i];
}
}
printf("十个数中最大的是:%d", Max);
return 0;
}