C语言之数组的基础练习题(指针变量做函数参数)

1、交换两个变量的值:

#include 
void swap(int *a,int *b)
{
	int tmp;
	tmp=*a;
	*a=*b;
	*b=tmp;
	
}
void main()
{
	int x,y;
	int *p_x,*p_y;
	printf("请输入两个数:\n");
	scanf("%d",&x);
	scanf("%d",&y);
	p_x=&x;
	p_y=&y;
	swap(p_x,p_y);
	printf("x=%d\n",x);
	printf("y=%d\n",y);
}

2、将输入的数值从小到大进行排列输出:

#include
void swap(int *p1, int *p2) 								/*自定义交换函数*/
{
    int temp;
    temp =  *p1;
    *p1 =  *p2;
    *p2 = temp;
}
void exchange(int *pt1, int *pt2, int *pt3) 						/*三个数由大到小排序*/
{
    if (*pt1 <  *pt2)
        swap(pt1, pt2); 								            /*调用swap函数*/
    if (*pt1 <  *pt3)
        swap(pt1, pt3);
    if (*pt2 <  *pt3)
        swap(pt2, pt3);
}
void main()
{
    int a, b, c,  *q1,  *q2,  *q3;
    puts("Please input three key numbers you want to rank:");
    scanf("%d,%d,%d", &a, &b, &c);
    q1 = &a; 							                        	/*将变量a地址赋给指针变量q1*/
    q2 = &b;
    q3 = &c;
    exchange(q1, q2, q3); 					                        /*调用exchange函数*/
    printf("\n%d,%d,%d\n", a, b, c);
}

3、将某银行一周的钱收纳汇总

#include                   /*包含头文件*/
void SUM(int *p,int n)              /*自定义函数*/
{
	int i,sum=0;                    /*定义变量*/
	for(i=0;i

4、使用指针实现冒泡排序

#include
void order(int *p,int n)
{
	int i,t,j;
	for(i=0;i*(p+j+1)) 								/*判断相邻两个元素的大小*/
			{
				t=*(p+j);
				*(p+j)=*(p+j+1);
				*(p+j+1)=t; 								/*借助中间变量t进行值互换*/
			}
			printf("排序后的数组:");
			for(i=0;i

5、按字母顺讯排序

#include 
#include 
sort(char *strings[], int n)									/*自定义排序函数*/
{
	char *temp;
	int i, j;
	for (i = 0; i < n; i++)
	{
		for (j = i + 1; j < n; j++)
		{
			if (strcmp(strings[i], strings[j]) > 0) 				/*比较两个字符串的大小*/
			{
				temp = strings[i];
				strings[i] = strings[j];
				strings[j] = temp; 						/*如果前面字符串比后面的大,则互换*/
			}
		}
	}
}
void main()
{
	int n = 12;
	int i;
	char **p; 											/*定义字符型指向指针的指针*/
	char *month[] =
	{
		"January", 
			"February", 
			"March", 
			"April", 
			"May", 
			"June", 
			"July", 
			"August", 
			"September", 
			"October", 
			"November", 
			"December" 
			
	};
	p = month;
	sort(p, n);											 /*调用排序函数*/
	printf("排序后的12月份如下:\n");
	for (i = 0; i < n; i++)
		printf("%s\n", month[i]); 							/*输出排序后的字符串*/
}

找出二维数组中每行最大的数值进行求和

#include
#define N 4
void max(int (*a)[N],int m)								/*自定义min函数,求二维数组中每行最小元素*/
{
	int value,i,j,sum=0;
	for(i=0;ivalue) 						/*判断其他元素是否小于value的值*/
				value=*(*(a+i)+j);					/*把比value大的数重新赋给value*/
			printf("第%d行:最大数是:%d\n",i,value);
			sum=sum+value;
	}
	printf("\n");
	printf("每行中最大数相加之和是:%d\n",sum);
}
void main()
{
	int a[3][N],i,j;
	int (*p)[N];
	p=&a[0];
	printf("please input:\n");
	for(i=0;i<3;i++)
		for(j=0;j

7、求新入学班级新生的总人数

#include
void SUM(int *p,int n) 							 
{
	int i,sum=0;
	for(i=0;i

8、判断两个数值的大小

#include 
void swap(int *x1,int *x2)
{
    int t;
    t=*x1;
    *x1=*x2;
    *x2=t;
}
void order(int *a,int *b)
{
    if(*a>*b)
    swap(a,b);
}
int main()
{
 int x,y;
 printf("输入值:\n");
 scanf("%d,%d",&x,&y);
 printf("x=%d,y=%d\n",x,y);
 order(&x,&y);
 printf("x=%d,y=%d\n",x,y);
 return 0;
}

你可能感兴趣的:(C语言编程,C语言基础,指针练习)