指针与数组 分数 100 全屏浏览题目 作者 于延 单位 哈尔滨师范大学 请分析以下代码,理解指针与数组的关系、指针运算。 #include<stdio.h> int main(){ int a[10]={0,1,2,3,4,5,6,7,8,9}; int i,*p1,*p2,*p3; p1=a,p2=a+5,p3=a+7; //相当于 p1=&a[0],p2=&a[5],p3=&a[7]; printf("%ld,%ld,%ld\n",p1,p2,p3); //输出指针的值(数组元素地址值) printf("%d,%d,%d\n",*p1,*p2,*p3); //输出指针指向变量的值 printf("%d,%d\n",p1-p2,p2-p1); //指针减法 printf("%d,%d\n",p1>p2,p1==a); //指针与指针的关系 for(p1=a;p1<a+10;p1++) //通过指针遍历数组 printf("%d ",*p1); return 0; } 编程读入若干整数(不超过50个)到数组中,然后倒序输出,遍历数组时用指针实现。 输入样例: 1 5 25 18 -299 输出样例: -299 18 25 5 1
时间: 2024-01-19 18:03:24 浏览: 250
下面是一种实现方式:
```c
#include <stdio.h>
int main() {
int a[50]; // 定义长度为50的整型数组
int *p = a; // 定义指针p,指向数组的第一个元素
int n = 0; // 记录输入的整数的个数
int x;
// 循环读入整数,直到输入的整数个数超过50个或者输入一个负数为止
while (n < 50 && scanf("%d", &x) == 1 && x >= 0) {
*(p + n) = x; // 将输入的整数存入数组中
n++; // 统计输入的整数个数
}
// 倒序输出数组元素
for (int i = n - 1; i >= 0; i--) {
printf("%d ", *(p + i));
}
return 0;
}
```
在该程序中,我们首先定义了长度为50的整型数组 a 和一个指针变量 p,指向数组的第一个元素。然后,我们使用循环读入整数,将输入的整数存入数组中,并统计输入的整数个数。当输入一个负数或者输入的整数个数达到50时,输入结束。
接着,我们使用一个循环将数组元素倒序输出。由于我们使用指针 p 指向数组的第一个元素,因此可以通过 *(p + i) 来访问数组中的第 i 个元素。注意,在循环中,我们需要将 i 从 n-1 循环到 0,以实现倒序输出的效果。
最后,我们返回 0 表示程序运行正常结束。
相关问题
pta仅有头指针的队列 分数 20 全屏浏览 切换布局 作者 陈越 单位 浙江大学 如果用一个循环数组表示队列,且只有一个队列头指针 front,不设队列尾指针 rear,而设置计数器 count 用以记录队列中结点的个数。请编写算法实现队列的三个基本运算:判空、入队、出队。
### 实现基于头指针和计数器的循环数组队列
#### 判空操作
对于仅使用头指针 `front` 和计数器 `count` 的循环数组队列而言,当计数器 `count` 为零时,则表示当前队列为空。因此,可以通过检查 `count` 是否等于0来判断队列是否为空[^1]。
```python
def is_empty(count):
return count == 0
```
#### 入队操作
为了向这种特定结构的队列中添加新元素,在已知头指针位置的情况下,可以计算出下一个可用的位置用于放置新的数据项。具体来说,通过 `(front + count) % array_size` 可以找到实际存储位置,并在此处插入新元素;之后更新计数值 `count += 1` 表示新增了一个项目[^2]。
```python
def enqueue(queue, front, count, element, max_size):
if count >= max_size:
raise Exception('Queue overflow')
position = (front + count) % max_size
queue[position] = element
return count + 1
```
#### 出队操作
移除最先进入队列中的元素即执行一次出队动作。这涉及到两个方面的工作:一是物理上删除或覆盖旧的数据(这里简单地将其置为None),二是逻辑上前进一步即将 `front` 更新为其后续索引值并减少计数器 `count -= 1` 。需要注意的是,由于采用循环方式管理空间,故而应利用取模运算调整 `front` 的指向。
```python
def dequeue(queue, front, count, max_size):
if count <= 0:
raise Exception('Queue underflow')
old_front_value = queue[front]
queue[front] = None
new_front = (front + 1) % max_size
return new_front, count - 1, old_front_value
```
6-6 学生平均成绩的计算和输出分数 30 全屏浏览题目 切换布局 作者 王群芳 单位 合肥师范学院 本题要求实现一个函数,计算学生平均成绩并输出。要求:输入m个学生(0<m≤30)n门课程(0<n≤ 5)的成绩,然后调用函数计算并输出每个学生各门课的平均分。 函数接口定义: void Score_Avg(int (*p)[N], int m, int n); 其中:p为指向学生成绩数组的指针,m和n依次是学生人数、课程数。 裁判测试程序样例: #include <stdio.h> #define M 30 #define N 5 void Score_Avg(int (*p)[N], int m, int n); int main() { int score[M][N], m, n, i, j; scanf("%d%d", &m, &n); //输入学生数和课程数 for(i = 0; i<m; i++) for(j = 0; j<n; j++) scanf("%d", &score[i][j]); Score_Avg(score, m, n); //计算并输出学生平均分 return 0; } /* 你的代码将被嵌在这里 */
下面是使用 JavaScript 编写的函数实现:
```javascript
const N = 5;
function Score_Avg(p, m, n) {
for (let i = 0; i < m; i++) {
let sum = 0;
for (let j = 0; j < n; j++) {
sum += p[i][j];
}
const avg = sum / n;
console.log(`第 ${i + 1} 个学生的平均分为:${avg.toFixed(2)}`);
}
}
```
该函数用于计算每个学生各门课的平均分。函数接收一个二维数组 `p`,表示学生的成绩,以及学生人数 `m` 和课程数 `n`。函数通过两重循环遍历学生的成绩,计算每个学生各门课的平均分,并使用 `console.log()` 函数输出结果。由于 JavaScript 中浮点数运算可能存在精度问题,我们使用 `toFixed()` 方法保留两位小数。
阅读全文
相关推荐















