使用默认元素值而不是用户在 C 中定义的值?
Default element value is used instead of user defined in C?
我是 C 初学者。我一直在编写程序代码来查找数组中的最大元素。
传递的值无法存储在类型数组中:float。
取而代之的是默认 Value:0 被存储。
怎么办?
#include <stdio.h>
// Largest Element
int main() {
int n,i;
float arr[100];
printf("Enter Element Count in range(1,100):-");
scanf("%d",&n);
while(n>100 || n<1){
printf("Enter Element Count in range(1,100) again:-");
scanf("%d",&n);
}
for(i=0; i<n;i++){
printf("Enter Element:-");
scanf("%f",&arr[i]);
}
for(int k=0;k<n;k++){
printf("Element-%d:-%d\n",k+1,arr[k]);
}
for(int j=0;j<n;j++){
for(int k=j+1;k<n;k++){
if (arr[j] < arr[k]){
break;
}
else{
printf("Largest Element:-%d\n",arr[j]);
break;
}
}
continue;
}
return 0;
}
OUTPUT SCREEN
说明
在下面的两种情况下,您使用 %d
来打印浮点数。这就是为什么您打印的是 0
而不是实际数字。
像之前那样使用 %f
来读取 scanf
上的值,而不是 %d
来读取浮点值。
printf("Element-%d:-%d\n",k+1,arr[k]);
printf("Largest Element:-%d\n",arr[j]);
要输出 float
类型的值,您必须使用转换说明符 f
。转换说明符 d
旨在输出整数值。
所以 printf 的这些调用
printf("Element-%d:-%d\n",k+1,arr[k]);
和
printf("Largest Element:-%d\n",arr[j]);
不正确。你必须写
printf("Element-%d:-%f\n",k+1,arr[k]);
和
printf("Largest Element:-%f\n",arr[j]);
此外,如果您要查找数组中的最大元素,那么这些 for 循环就没有意义。
for(int j=0;j<n;j++){
for(int k=j+1;k<n;k++){
if (arr[j] < arr[k]){
break;
}
else{
printf("Largest Element:-%d\n",arr[j]);
break;
}
}
continue;
}
至少例如 continue
语句是多余的。而且里面的for循环也是多余的,因为if-else语句中的break
语句一下子中断了
最大的元素只用一个 for 循环按下面的方式搜索。
int largest = 0;
for ( int i = 1; i < n; i++ )
{
if ( arr[largest] < arr[i] ) largest = i;
}
printf( "Largest Element:-%f at position %d\n",arr[largest], largest );
我是 C 初学者。我一直在编写程序代码来查找数组中的最大元素。 传递的值无法存储在类型数组中:float。 取而代之的是默认 Value:0 被存储。 怎么办?
#include <stdio.h>
// Largest Element
int main() {
int n,i;
float arr[100];
printf("Enter Element Count in range(1,100):-");
scanf("%d",&n);
while(n>100 || n<1){
printf("Enter Element Count in range(1,100) again:-");
scanf("%d",&n);
}
for(i=0; i<n;i++){
printf("Enter Element:-");
scanf("%f",&arr[i]);
}
for(int k=0;k<n;k++){
printf("Element-%d:-%d\n",k+1,arr[k]);
}
for(int j=0;j<n;j++){
for(int k=j+1;k<n;k++){
if (arr[j] < arr[k]){
break;
}
else{
printf("Largest Element:-%d\n",arr[j]);
break;
}
}
continue;
}
return 0;
}
OUTPUT SCREEN
说明
在下面的两种情况下,您使用 %d
来打印浮点数。这就是为什么您打印的是 0
而不是实际数字。
像之前那样使用 %f
来读取 scanf
上的值,而不是 %d
来读取浮点值。
printf("Element-%d:-%d\n",k+1,arr[k]);
printf("Largest Element:-%d\n",arr[j]);
要输出 float
类型的值,您必须使用转换说明符 f
。转换说明符 d
旨在输出整数值。
所以 printf 的这些调用
printf("Element-%d:-%d\n",k+1,arr[k]);
和
printf("Largest Element:-%d\n",arr[j]);
不正确。你必须写
printf("Element-%d:-%f\n",k+1,arr[k]);
和
printf("Largest Element:-%f\n",arr[j]);
此外,如果您要查找数组中的最大元素,那么这些 for 循环就没有意义。
for(int j=0;j<n;j++){
for(int k=j+1;k<n;k++){
if (arr[j] < arr[k]){
break;
}
else{
printf("Largest Element:-%d\n",arr[j]);
break;
}
}
continue;
}
至少例如 continue
语句是多余的。而且里面的for循环也是多余的,因为if-else语句中的break
语句一下子中断了
最大的元素只用一个 for 循环按下面的方式搜索。
int largest = 0;
for ( int i = 1; i < n; i++ )
{
if ( arr[largest] < arr[i] ) largest = i;
}
printf( "Largest Element:-%f at position %d\n",arr[largest], largest );