定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现
时间: 2024-05-02 18:22:51 浏览: 12
可以这样实现:
```c
#include <stdio.h>
int main() {
int stu[10];
int *p = stu; // 定义指针p指向数组stu的首地址
// 从键盘输入数据
printf("请输入10个学生的成绩:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", p + i); // 指针移动i步指向第i个元素
}
// 输出成绩
printf("学生的成绩为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", *(p + i)); // 指针移动i步输出第i个元素的值
}
printf("\n");
return 0;
}
```
解释一下:
1. 定义一个`int`数组`stu`用于存放10个学生的成绩;
2. 定义一个指向数组`stu`首地址的指针`p`;
3. 通过指针`p`从键盘输入数据,利用指针移动实现从`stu[0]`到`stu[9]`的输入;
4. 通过指针`p`输出成绩,利用指针移动实现从`stu[0]`到`stu[9]`的输出;
5. 注意指针移动的语法,`p + i`表示移动指针`p`的`i`步,`*(p + i)`表示指向的是移动后的指针所指向的元素,即`stu[i]`。
相关问题
定义一个数组stu(10)存放10学生的成绩,从键盘输入数据,要求用指针实现
好的,这是一个用指针实现输入10个学生成绩的示例代码:
```c++
#include <iostream>
using namespace std;
int main() {
int stu[10];
int* p = stu;
for(int i=0; i<10; i++) {
cout << "请输入第" << i+1 << "个学生的成绩:" << endl;
cin >> *(p+i);
}
cout << "学生成绩为:" << endl;
for(int i=0; i<10; i++) {
cout << *(p+i) << " ";
}
cout << endl;
return 0;
}
```
在这个示例代码中,我们定义了一个长度为10的整型数组stu,然后定义一个指针p指向stu的首地址。使用for循环对p进行偏移,并通过输入流输入每个学生的成绩。最后再用for循环输出数组中的元素,完成了用指针实现输入10个学生成绩的功能。
定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现。
好的,请看下面的代码实现:
```
#include <stdio.h>
int main() {
int stu[10];
int *p = stu;
printf("请输入10个学生的成绩:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", p+i);
}
printf("10个学生的成绩为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", *(p+i));
}
return 0;
}
```
简要解释一下:我们定义了一个名为stu的数组,它可以存放10个整型数值。而指针p则指向了这个数组的首地址,表示我们通过p这个指针可以操作stu数组。在输入每一个学生的成绩时,我们使用了指针的运算符,将输入的值存放到了p所指向的地址,也就是stu数组的对应位置。在输出学生成绩时,同样使用了指针的运算符,取出了p所指向地址的值,并进行了打印。