C语言基础练习12


1.将数组a中n个整数按相反顺序存放

#include<stdio.h>

int main()
{
	void inv(int *x, int n);
	int i, arr[10], *p = arr;
	printf("The original array:\n");
	for (i = 0; i < 10; i++, p++)
		scanf_s("%d", p);
	printf("\n");
	p = arr;
	inv(p, 10);
	printf("The array has been inverted:\n");
	for (p = arr; p < arr + 10; p++)
		printf("%d ", *p);
	printf("\n");
    return 0;
}

void inv(int *x, int n)
{
	int *p, m, temp, *i, *j;
	m = (n - 1) / 2;
	i = x; j = x + n - 1; p = x + m;
	for (; i <= p; i++, j--)
	{
		temp = *i; *i = *j; *j = temp;
	}
	return;
}
运行结果:


2.用指针方法对10个整数按由大到小顺序排序

#include<stdio.h>


int main()
{
	void sort(int x[], int n);
	int i, *p, a[10];
	p = a;
	printf("please enter 10 integer numbers:\n");
	for (i = 0; i < 10; i++)
		scanf_s("%d", p++);
	p = a;
	sort(p, 10);
	for (p = a, i = 0; i < 10; i++)
	{
		printf("%d ", *p);
		p++;
	}
	printf("\n");
    return 0;
}

void sort(int x[], int n)
{
	int i, j, k, t;
	for (i = 0; i < n - 1; i++)
	{
		k = i;
		for (j = i + 1; j < n; j++)
			if (x[j] > x[k])k = j;
		if (k != i)
		{
			t = x[i]; x[i] = x[k]; x[k] = t;
		}
	}
}
运行结果:


3.输出二维数组任一行任一列元素的值

#include<stdio.h>

int main()
{
	int a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 };
	int(*p)[4], i, j;
	p = a;
	printf("please enter row and colum:");
	scanf_s("%d,%d", &i, &j);
	printf("a[%d,%d]=%d\n", i, j, *(*(p + i) + j));
    return 0;
}
运行结果:


4.有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩

#include<stdio.h>

int main()
{
	void average(float *p, int n);
	void search(float(*p)[4], int n);
	float score[3][4] = { 65,67,70,60,80,87,90,81,90,99,100,98 };
	average(*score, 12);
	search(score, 2);
    return 0;
}

void average(float *p, int n)
{
	float *p_end;
	float sum = 0, aver;
	p_end = p + n - 1;
	for (; p <= p_end; p++)
		sum = sum + (*p);
	aver = sum / n;
	printf("average=%5.2f\n", aver);
}

void search(float(*p)[4], int n)
{
	int i;
	printf("Th score of No.%d are:\n", n);
	for (i = 0; i < 4; i++)
		printf("%5.2f ", *(*(p + n) + i));
	printf("\n");
}
运行结果:



猜你喜欢

转载自blog.csdn.net/huaweiran1993/article/details/78416506