编写程序从用户那里输入 10 个数字并打印最大的一个
Write a programme to input 10 numbers from the user and print greatest of all
我已经编写了程序,但我猜其中存在某种编码错误。
输入部分工作正常但查找和打印最大数字不是。
#include<stdio.h>
int main()
{
int i, arr[10],c=0;
for(i=1;i<=10;i++)
{
printf("enter 10 nos. for arr[%d] :",i);
scanf("%d",&arr[i]);
}
for(i=1;i<=10;i++)
{
while(arr[i]>c)
{
c=arr[i];
}
printf("Greatest number in a given array is:%d",c);
}
return 0;
}
这是代码
#include <stdio.h>
int main() {
// Taking Variables
int a[10];
int i;
int greatest;
//Taking exactly 10 inputs in an array by using for loop
printf("Enter ten values:");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
//Iterating through the array and comparing all the values, the one which is the greatest of all is printed
greatest = a[0];
for (i = 0; i < 10; i++){
if (a[i] > greatest){
greatest = a[i];}
}
printf("Greatest of ten numbers is %d", greatest);
return 0;
}
在 C 中索引从 0 开始,因此 for(i=1;i<=10;i++)
条件在两个方面是错误的:您从第二个数组项开始(缺少 arr[0]
),然后您将退出当 i
为 10 时,与 arr[i]
边界。
您也应该将 while
更改为 if
,因为您实际上并不打算在那里设置循环。您只需要执行一次条件下的代码。您还应该考虑当您的输入中有负值时会发生什么。
最后但同样重要的是 - 如果您想打印出最终结果,printf
可能应该在 for
循环之外。
首先,数组索引从零开始,arr[10]越界
二、将最小整数值赋给c.
第三,将 while 更改为 if 并将第二个 printf() 放在第二个 for 语句之外。
如果你有一个像
这样声明的数组
int a[N];
其中 N 是某个正整数值,那么访问数组元素的索引的有效范围是 [0, N)
。
表示例如这个for循环
for(i=1;i<=10;i++)
{
printf("enter 10 nos. for arr[%d] :",i);
scanf("%d",&arr[i]);
}
必须看起来像
for ( i = 0; i < 10; i++ )
{
printf("enter 10 nos. for arr[%d] :",i);
scanf("%d",&arr[i]);
}
这个while循环
while(arr[i]>c)
{
c=arr[i];
}
只是没有意义,可能是一个无限循环。
另外这个printf的调用
printf("Greatest number in a given array is:%d",c);
放在for循环中。
程序可以这样看
#include <stdio.h>
int main( void )
{
enum { N = 10 };
int arr[N];
printf( "Enter %d numbers:\n", N );
for ( int i = 0; i < N; i++ )
{
printf("\t%d: ", i + 1 );
scanf( "%d", arr + i );
}
int max = 0;
for ( int i = 1; i < N; i++ )
{
if ( arr[max] < arr[i] ) max = i;
}
printf( "The greatest number in the given array is: %d\n", arr[max] );
return 0;
}
我已经编写了程序,但我猜其中存在某种编码错误。 输入部分工作正常但查找和打印最大数字不是。
#include<stdio.h>
int main()
{
int i, arr[10],c=0;
for(i=1;i<=10;i++)
{
printf("enter 10 nos. for arr[%d] :",i);
scanf("%d",&arr[i]);
}
for(i=1;i<=10;i++)
{
while(arr[i]>c)
{
c=arr[i];
}
printf("Greatest number in a given array is:%d",c);
}
return 0;
}
这是代码
#include <stdio.h>
int main() {
// Taking Variables
int a[10];
int i;
int greatest;
//Taking exactly 10 inputs in an array by using for loop
printf("Enter ten values:");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
//Iterating through the array and comparing all the values, the one which is the greatest of all is printed
greatest = a[0];
for (i = 0; i < 10; i++){
if (a[i] > greatest){
greatest = a[i];}
}
printf("Greatest of ten numbers is %d", greatest);
return 0;
}
在 C 中索引从 0 开始,因此 for(i=1;i<=10;i++)
条件在两个方面是错误的:您从第二个数组项开始(缺少 arr[0]
),然后您将退出当 i
为 10 时,与 arr[i]
边界。
您也应该将 while
更改为 if
,因为您实际上并不打算在那里设置循环。您只需要执行一次条件下的代码。您还应该考虑当您的输入中有负值时会发生什么。
最后但同样重要的是 - 如果您想打印出最终结果,printf
可能应该在 for
循环之外。
首先,数组索引从零开始,arr[10]越界
二、将最小整数值赋给c.
第三,将 while 更改为 if 并将第二个 printf() 放在第二个 for 语句之外。
如果你有一个像
这样声明的数组int a[N];
其中 N 是某个正整数值,那么访问数组元素的索引的有效范围是 [0, N)
。
表示例如这个for循环
for(i=1;i<=10;i++)
{
printf("enter 10 nos. for arr[%d] :",i);
scanf("%d",&arr[i]);
}
必须看起来像
for ( i = 0; i < 10; i++ )
{
printf("enter 10 nos. for arr[%d] :",i);
scanf("%d",&arr[i]);
}
这个while循环
while(arr[i]>c)
{
c=arr[i];
}
只是没有意义,可能是一个无限循环。
另外这个printf的调用
printf("Greatest number in a given array is:%d",c);
放在for循环中。
程序可以这样看
#include <stdio.h>
int main( void )
{
enum { N = 10 };
int arr[N];
printf( "Enter %d numbers:\n", N );
for ( int i = 0; i < N; i++ )
{
printf("\t%d: ", i + 1 );
scanf( "%d", arr + i );
}
int max = 0;
for ( int i = 1; i < N; i++ )
{
if ( arr[max] < arr[i] ) max = i;
}
printf( "The greatest number in the given array is: %d\n", arr[max] );
return 0;
}