输入的是:629581732598
/* 运行环境:Microsoft Visual C++ 2010 学习版
* 文件名:test.c
* 功能:了解数组与指针关系
* 日期:2021 年 9 月 15 日
*/
#include <stdio.h>
#include <string.h>
#include <Windows.h>
int main()
{
char a[80], *p;
int n, i, j;
printf("\n 输入一个不大于 80 位的正整数:\n");
gets(a);
printf("\n去除个位数:\n");
scanf("%d", &n);
for (i = 0; i < n; i++)
{
for (p = a; *(p); p++)
{
printf("p1 = %p\n", p);
if (*(p+1) > *p)
{
printf("p2 = %p\n", p);
break;
}
}
strcpy(p, p+1);
}
printf("\n 结果是:%s\n", a);
system("pause");
return 0;
}
第一次 if 条件为真:629581732598;
执行 strcpy 后:a = "69581732598\n??????..."
第二次 if 条件为真:69581732598\n;
执行 strcpy 后:a = "9581732598\n???????..."
第三次 if 条件为真:9581732598\n??;
执行 strcpy 后:a = "981732598\n??????..."
第四次 if 条件为真:981732598\n???;
执行 strcpy 后:a = "98732598\n??????..."
第五次 if 条件为真:98732598\n????;
执行 strcpy 后:a = "9873598\n??????..."
执行 for 循环括号中判断表达式中的表达式3:i++ 后,i == 5,i == n,跳出外层循环,输出结果:
983598 |