C语言指针使用例(指针自加自减运算、数组与指针、字符串与指针)

 1.在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列

#include
#define	N 10
void fun(int *a)
{
	int number,i;
	printf("Please enter a integer to insert in the array:");
	scanf("%d", &number);
	for (i = N - 2; i >= 0; i--)
	{
		if (number <= *(a + i))
		{
			*(a + i + 1) = *(a + i);
		}
		else
		{
			*(a + i + 1) = number;
			break;
		}
	}
	if (number < *a)
	{
		*a = number;
	}
	printf("The result array:");
	for (i = 0; i < N; i++)
	{
		printf("%5d", *(a + i));
	}
	printf("\n");
}

void main()
{
	int number;
	int i;
	int a[N] = { 11,22,33,44,55,66,77,88,99 };
	printf("The original array:");
	for (i = 0; i < N-1; i++)
	{
		printf("%5d", *(a+i));
	}
	printf("\n");
	fun(a);
}

C语言指针使用例(指针自加自减运算、数组与指针、字符串与指针)_第1张图片

 

2.函数comb(char *a,char *b)将字符串a逆序后,再在尾部接上字符串b

#include
#include
void comb(char *a, char *b)
{
	int i, j;
	int len = strlen(a);
	char c;
	for (i = 0; i < len / 2; i++)
	{
		c = *(a + i);
		*(a + i) = *(a + len - i - 1);
		*(a + len - i - 1) = c;
	}
	*(a + len++) = ' ';
	j = 0;
	while (*(a + len + j) = *(b + j++));
}

void main()
{
	char a[100] = "margorP C";
	char b[] = "Design";
	comb(a, b);
	printf("%s\n", a);
}

 

3.输入一维数组的10个元素,最大的与a[9]交换,最小的与a[0]交换,输出数组的10个元素

#include
#include
#include
void input(int number[])
{
	int i;
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &number[i]);
	}
}

void max_min(int array[])
{
	int *max, *min;
	int *p, *arr_end;
	arr_end = array + 10;
	max = min = array;
	for (p = array + 1; p < arr_end; p++)    //for循环结束后p指向array[10]的地址
	{
		if(*p>*max)
		{
			max = p;
		}
		else if(*p<*min)
		{
			min = p;
		}
	}
	
	*p = array[0];    //借助array[10]进行交换
	array[0] = *min;
	*min = *p;
	
	*p = array[9];
	array[9] = *max;
	*max = *p;
}

void output(int array[]) 
{
	int *p;
	for (p = array; p < array + 10; p++)
	{
		printf("%d ",*p);
	}
}

void main()
{
	int number[11];
	input(number);
	printf("\n");
	max_min(number);
	output(number);
}

 

4.输出两个整数中较大的数,两个整数由键盘输入

#include
#include
void main()
{
	int *p1, *p2;
	p1 = (int*)malloc(sizeof(int));
	p2 = (int*)malloc(sizeof(int));
	scanf("%d%d", p1, p2);
	if (*p2 > *p1)
	{
		*p1 = *p2;
	}
	free(p2);
	printf("%d\n", *p1);
	free(p1);
}

 

5.删除字符串中的数字字符

#include
#include
void fun(char *s)
{
	char *p = s;
	while (*p)
	{
		if ((*p >= '0') && (*p <= '9'))
		{
			p++;
		}
		else
		{
			*(s++) = *(p++);
		}
	}
	*s = '\0';
}
void main()
{
	char item[100];
	printf("Enter a string:");
	gets_s(item);
	fun(item);
	printf("%s\n", item);
}

 

6.将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中

#include
#include
void fun(char *s,char *t)
{
	int i, d;
	d = strlen(s);
	for (int i = 0; i < d; i++)
	{
		t[i] = s[i];
	}
	for (int i = 0; i < d; i++)
	{
		t[i + d] = s[d - 1 - i];
	}
	t[2 * d] = '\0';
}
void main()
{
	char s[100], t[100];
	printf("Please enter string:");
	scanf("%s", s);
	fun(s, t);
	printf("\nThe result is:%s\n", t);
}

C语言指针使用例(指针自加自减运算、数组与指针、字符串与指针)_第2张图片

 

7.从键盘接收一个字符串,然后按字符顺序从小到大进行排序,并删除重复的字符

#include
#include
void main()
{
	char str[100], *p, *q, *r, c;
	printf("输入字符串:");
	gets_s(str);
	for (p = str; *p; p++)
	{
		for (q = r = p; *q; q++)
		{
			if (*r > *q)
			{
				r = q;
			}
		}
		if (r != p)
		{
			c = *r;
			*r = *p;
			*p = c;
		}
	}
	for (p = str; *p;p++)
	{
		for (q = p+1 ; *p == *q;)
		{
			strcpy(p, q);
		}
	}
	printf("结果字符串:%s\n", str);
}

 

 

8.统计字符串中单词的个数

#include
int wordCount(char *s)
{
	int num = 0,i,word=0;
	while (*s != '\0')
	{
		if (*s == ' ')
		{
			word = 0;
		}
		else if (word == 0)
		{
			word = 1;
			num++;
		}
		s++;
	}
	return(num);
}
void main()
{
	char str[101];
	int wordnum;
	printf("输入不超过100字符的字符串:");
	gets_s(str);
	wordnum = wordCount(str);
	printf("有%d个单词\n", wordnum);
}

 

9.将一个3行5列的二维数组的第二行元素输出

#include
void main()
{
	int a[3][5],i,j;
	printf("please input:\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			scanf("%d", *(a + i) + j);
		}
	}
	printf("The second line is:");
	for (j = 0; j < 5; j++)
	{
		printf("%5d", *(*(a + 1) + j));
	}
	printf("\n");
}

C语言指针使用例(指针自加自减运算、数组与指针、字符串与指针)_第3张图片

你可能感兴趣的:(C语言)