#include <stdio.h> int main(){ int arr[5]={0}; int i=0; for(i=0;i<5;i++){ scanf("%d",arr[i]); } for(i=0;i<5;i++){ printf("%d",arr[i]); } return 0; }这段代码哪里出错了
时间: 2023-07-15 08:08:15 浏览: 87
在你的代码中,`scanf`函数的调用有一个错误。在使用`scanf`函数读取输入时,需要传入变量的地址作为参数,而不是变量本身。因此,`scanf`函数的调用应该修改为`scanf("%d", &arr[i]);`。
下面是修正后的代码:
```c
#include <stdio.h>
int main() {
int arr[5] = {0};
int i = 0;
for (i = 0; i < 5; i++) {
scanf("%d", &arr[i]);
}
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个修正后的代码中,`scanf`函数调用使用了`&arr[i]`来传入变量的地址,确保正确地将输入的值存储到数组中。然后,通过循环遍历数组并使用`printf`函数打印出数组中的元素。
修正后的代码应该能够正确读取输入并输出数组的值。
相关问题
#include<stdio.h> int main() { int arr[10] = { 0 }; int i = 0; int* p = arr; for (i = 0; i <= 10; i++) { *p = i; //i=10时越界 } return 0; } 怎么改
这段代码的问题是在循环中访问了数组 `arr` 的越界元素,导致程序出现未定义行为。为了解决这个问题,可以将循环条件改为 `i < 10`,即可避免访问越界元素。同时,可以在循环中使用指针 `p` 来遍历数组元素,代码如下:
```
#include<stdio.h>
int main() {
int arr[10] = { 0 };
int i = 0;
int* p = arr;
for (i = 0; i < 10; i++) {
*(p + i) = i; // 使用指针p遍历数组元素,并赋值
}
return 0;
}
```
这样,就可以避免访问越界元素,同时也能正确地给数组 `arr` 赋值。
#include<stdio.h> #include<string.h> struct student{ char name[100]; int age; }; int main(void) { int i,j; struct student arr[5]; for(i=0;i<5;i++) { scanf("%s%d",arr[i].name,&arr[i].age); } for(i=0;i<4;i++) {
在代码中,最后一个for循环没有结束,缺少右括号。下面是修改后的代码:
```
#include<stdio.h>
#include<string.h>
struct student{
char name[100];
int age;
};
int main(void) {
int i,j;
struct student arr[5];
for(i=0;i<5;i++) {
scanf("%s%d",arr[i].name,&arr[i].age);
}
for(i=0;i<4;i++) {
for(j=0;j<4-i;j++) {
if(arr[j].age>arr[j+1].age) {
struct student t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(i=0;i<5;i++) {
printf("%s %d\n",arr[i].name,arr[i].age);
}
return 0; //需要加上返回值
} //需要加上右括号
阅读全文