指针实践(4)

利用指针数组的便捷之处:
示例:
阿拉伯数字翻译成罗马数字;(在之前博客提过,但当时未曾接触指针,今天再次拿出来细品)

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	 char a[][10][10]={
    
    "","I","II","III","IV","V","VI","VII","VIII","IX",
						"","X","XX","XXX","XL","L","LX","LXX","LXXX","XCC",
						"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"
						};
	int n,t,i,m;
	printf("Please input number: ");
	scanf("%d",&n);
	printf("Output:\n");
	if(n<=0 || n>=1000)
	{
    
    
		printf("Input error!\n");
		return 0;
	}
	printf("%d=",n);
	for(m=0,i=1000;m<3;m++,i/=10)
	{
    
    
		t=(n%i)/(i/10);
		printf("%s",a[2-m][t]);
	}                           
	putchar(10);
	return 0;
}

这是三维数组写出的,在未学过指针前方便理解。
利用指针数组可体现出指针可直接指向整个字符串。

#include<stdio.h>

int main()
{
    
    
	 char *a[][10]={
    
    "","I","II","III","IV","V","VI","VII","VIII","IX",
						"","X","XX","XXX","XL","L","LX","LXX","LXXX","XCC",
						"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"
						};
	int n,t,i,m;
	printf("Please input number: ");
	scanf("%d",&n);
	printf("Output:\n");
	if(n<=0 || n>=1000)
	{
    
    
		printf("Input error!\n");
		return 0;
	}
	printf("%d=",n);
	for(m=0,i=1000;m<3;m++,i/=10)
	{
    
    
		t=(n%i)/(i/10);
		printf("%s",a[2-m][t]);
	}
	putchar(10);
	return 0;
}

对于以下语句分析:

t=(n%i)/(i/10);

第一次循环:
255%1000其值不为0;

用以下代码实践

#include <stdio.h>
int main()
{
    
    

	printf("a=%d\n",255%1000);
	return 0;
}

在这里插入图片描述
二维数组指向运算示例:

#include<stdio.h>
int main()
{
    
    
	int i,j,cnt=1;
	int array[5][6];

	for(i=0;i<5;i++)
	{
    
    
		for(j=0;j<6;j++)
		{
    
    
			array[i][j]=cnt++;
		}
	}
	printf("%d\n%d\n%d\n%d\n",array[2][3],*(*(array+2)+3),*(array[2]+3),(*(array+2))[3]);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/yooppa/article/details/113056683