抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

指针与指针变量

编程练习7.1

输入三个整数,按从小到大的顺序输出,要求用指针实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
int main(void)
{
int num1,num2,num3,*p1,*p2,*p3,tmp;
printf("请输入三个数:\n");
scanf("%d%d%d",&num1,&num2,&num3);
p1 = &num1;
p2 = &num2;
p3 = &num3;
if(*p1 < *p2)
{
tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
if(*p2 < *p3)
{
tmp = *p2;
*p2 = *p3;
*p3 = tmp;
}
if(*p1 < *p2)
{
tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
printf("%d\t%d\t%d\n",num1,num2,num3);
return 0;
}

指针与一维数组

编程练习7.2

输入 10 个数,将其中最小的数与第一个数对换,最大的数与最后一个数对换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
int main(void)
{
printf("****************************** 编程练习7.2 ******************************\n");
int num[10];
int *p, i, max, min, tip1, tip2, temp;
p = num;
for(i = 0;i < 10;i ++)
{
scanf("%d", p + i);
}
p = num;
max = p[0];
min = p[0];
for(i = 1;i < 10;i ++)
{
if(*(p + i) < min)
{
tip1 = i;
min = *(p + i);
}
else if(*(p + i) > max)
{
tip2 = i;
max = *(p + i);
}
}
p = num;
// 交换
temp = p[tip1];
p[tip1] = p[0];
p[0] = min;
temp = p[tip2];
p[tip2] = p[9];
p[9] = temp;
for(i = 0;i < 10;i ++)
{
printf("%6d", *p++);
}
printf("\n");
return 0;
}

编程练习7.3

编写四个程序,分别用四种方法引用数组元素,输入 10 个整数,按升序排列,输出排序结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
int main(void)
{
printf("******************************* 编程练习7.3 *******************************\n");
int a[10], *p, i, j, temp;

// 第一种
printf("请输入10个整数:\n");
for(i = 0;i < 10;i ++)
{
scanf("%d", &a[i]);
}
for(i = 0;i < 10;i ++)
{
for(j = 0;j < 10 - i;j ++)
{
if(a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(i = 0;i < 10;i ++)
{
printf("%6d", a[i]);
}
printf("\n");
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
int main(void)
{
printf("******************************* 编程练习7.3 *******************************\n");
int a[10], *p, i, j, temp;
// 第二种
p = a;
for(i = 0;i < 10;i ++)
{
scanf("%d", p ++);
}
p = a;
for(i = 0;i < 10;i ++)
{
for(j = 0;j < 10 - i;j ++)
{
if(p[j] > p[j + 1])
{
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
for(i = 0;i < 10;i ++)
{
printf("%6d", p[i]);
}
printf("\n");
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
int main(void)
{
printf("******************************* 编程练习7.3 *******************************\n");
int a[10], *p, i, j, temp;
// 第三种
for(i = 0;i < 10;i ++)
{
scanf("%d", a + i);
}
for(i = 0;i < 10;i ++)
{
for(j = 0;j < 10 - i;j ++)
{
if(*(a + j) > *(a + j + 1))
{
temp = *(a + j);
*(a + j) = *(a + j + 1);
*(a + j + 1) = temp;
}
}
}
for(i = 0;i < 10;i ++)
{
printf("%6d", *(a+i));
}
printf("\n");
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
int main(void)
{
printf("******************************* 编程练习7.3 *******************************\n");
int a[10], *p, i, j, temp;
// 第四种
p = a;
for(i = 0;i < 10;i ++)
{
scanf("%d", p++);
}
p = a;
for(i = 0;i < 10;i ++)
{
for(j = 0;j < 10;j ++)
{
if(*(p + j) > *(p + j + 1))
{
temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
}
}
}
for(i = 0;i < 10;i ++)
{
printf("%6d", *(p + i));
}
printf("\n");
return 0;
}

指针与二维数组

编程练习7.4

输入 3 行 4 列二位数组,求最小值及其下标。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
int main(void)
{
printf("********************** 编程练习7.4 **********************\n");
int array[3][4];
int i, j, min, t, k, (*p)[4];
p = array;
k = t = 0;
printf("请输入12个数字:\n");
for(i = 0;i < 3;i ++)
{
for(j = 0;j < 4;j ++)
{
scanf("%d", *(p+i)+j);
}
}
min = array[0][0];
for(i = 0;i < 3;i ++)
{
for(j = 0;j < 4;j ++)
{
printf("%6d", *(*(p + i) + j));
}
printf("\n");
}
for(i = 0;i < 3;i ++)
{
for(j = 0;j < 4;j ++)
{
if(min > *(*(p + i) + j))
{
min = *(*(p + i) + j);
k = i;
t = j;
}
}
}
printf("最小值:%d , 行下标:%d , 列下标:%d\n", min, k, t);
return 0;
}

评论