在主函数中用for循环通过scanf函数输入数组元素值,并将该数组的10个元素反序,用一函数实现。要求用C语言指针。
时间: 2023-11-22 14:55:32 浏览: 98
下面是代码示例:
```c
#include <stdio.h>
void reverse(int *arr, int len) {
int *p = arr, *q = arr + len - 1, temp;
while (p < q) {
temp = *p;
*p = *q;
*q = temp;
p++;
q--;
}
}
int main() {
int arr[10];
int i;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
reverse(arr, 10);
printf("反序后的数组为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
其中,`reverse`函数用来反转数组,接收两个参数,分别为数组指针和数组长度。在函数中,定义两个指针`p`和`q`,分别指向数组的第一个元素和最后一个元素,然后交换它们所指向的值,直到`p`和`q`相遇。
在主函数中,首先通过`scanf`函数输入数组的值,然后调用`reverse`函数对数组进行反转,最后输出反转后的数组。
相关问题
2.将一个3*3的整型二维数组转置,用一函数实现。 在主函数中用scanf函数输入以下数组元素: 1 3 5 7 9 11 13 15 19 将数组0行0列元素的地址作为函数参数,在执行函数的过程中实现行列互换,函数调用结束后在主函数中输出已转置的二维数组。解题思路,以及程序分析
要实现一个二维数组的转置,可以使用一个函数来实现。函数的参数为二维数组的第 0 行 0 列元素的地址,函数的主要功能是将这个二维数组进行转置。具体实现过程如下:
```c++
#include <stdio.h>
void transpose(int *p);
int main()
{
int a[3][3];
int i, j;
printf("请输入一个3*3的整型二维数组:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &a[i][j]);
}
}
// 输出原始数组
printf("原始数组:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
transpose(&a[0][0]); // 调用转置函数
// 输出转置后的数组
printf("转置后的数组:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
void transpose(int *p)
{
int i, j;
int temp;
for (i = 0; i < 3; i++) {
for (j = i + 1; j < 3; j++) {
temp = *(p + i*3 + j);
*(p + i*3 + j) = *(p + j*3 + i);
*(p + j*3 + i) = temp;
}
}
}
```
在主函数中,我们先使用 scanf 函数输入一个 3*3 的整型二维数组。然后,我们输出原始数组,并将第 0 行 0 列元素的地址作为参数,调用转置函数。转置函数的主要功能是将二维数组进行转置。我们可以使用两个循环来实现。第一个循环控制行数,第二个循环控制列数。在循环内部,我们使用一个临时变量 temp 来存储需要交换的元素,然后将两个元素的值进行交换。
最后,我们再次输出转置后的数组,就完成了二维数组的转置。
注意,在转置函数中,我们使用指针来操作二维数组的元素。具体来说,我们可以使用 *(p + i*3 + j) 来访问二维数组中的元素。其中,p 是第 0 行 0 列元素的地址,i 是行数,j 是列数。这个表达式的意义是:访问第 i 行、第 j 列的元素。
用scanf函数输入数组10个元素值,将数组中的元素首尾倒置存储,并输出数组。
好的,请看下面的C代码:
```c
#include <stdio.h>
int main()
{
int arr[10];
int i, temp;
// 输入数组元素
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
// 首尾倒置存储
for (i = 0; i < 5; i++)
{
temp = arr[i];
arr[i] = arr[9 - i];
arr[9 - i] = temp;
}
// 输出数组元素
printf("倒置后的数组元素为:\n");
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输入格式:
```
请输入10个整数:
1 2 3 4 5 6 7 8 9 10
```
输出格式:
```
倒置后的数组元素为:
10 9 8 7 6 5 4 3 2 1
```
阅读全文