C语言程序设计经典例题100道(七)

目录

1、计算学生平均身高

 2、使用指针实现数据交换

3、使用指针实现整数排序

5、使用指针输出数据元素

6、使用指针查找数组中的最大值和最小值。

7、使用指针连接两个字符串

8、用指针数组构造字符串数组

9、使用指针的指针输出字符串

10、找出最高分


1、计算学生平均身高

输入学生数并逐个输入学生的身高,输出身高的平均值。

#include<stdio.h>
float average(float arry[],int n);
int main()
{
	float average(float arry[],int n);
	float height[100],aver;
	int i,n;
	printf("请输入学生的数量:\n");
	scanf("%d",&n);
	printf("请输入学生们的身高:\n");
	for(i=0;i<n;i++)
	scanf("%f",&height[i]);
	printf("\n");
	aver=average(height,n);
	printf("学生的平均身高为:%6.2f\n",aver);
	return 0;
 } 
 float average(float array[],int n)
 {
 	int i;
 	float aver,sum=0;
 	for(i=0;i<n;i++)
 	sum+=array[i];
 	aver=sum/n;
 	return(aver);
 }

运行结果

 2、使用指针实现数据交换

输入两个整型数值,将变量a,b中的值交换,然后输出道窗体上。

#include<stdio.h>
int swap(int *p1, int *p2);
int main()
{
	int a,b;
	int *pointer1, *pointer2;
	scanf("%d%d",&a,&b);
	pointer1 = &a;
	pointer2 = &b;
	swap(pointer1, pointer2);
	printf("\nThe result is :%d,%d\n",a,b);
	return 0;
}
swap(int *p1,int *p2)
{
	int temp;
	temp = *p1;
	*p1 = *p2;
	*p2 = temp;
}

运行结果

3、使用指针实现整数排序

输入三个整数,将这三个整数按照由大到小的顺序输出,显示在屏幕上。 

#include<stdio.h>
int swap(int *p1,int *p2);
int exchange(int *pt1,int *pt2,int *pt3);
int 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;
	q2 = &b;
	q3 = &c;
	exchange(q1,q2,q3);
	printf("\n%d,%d,%d\n",a,b,c);
	puts("\n Press any key to quit...");
	return 0;
}
swap(int *p1,int *p2)
{
	int temp;
	temp = *p1;
	*p1 = *p2;
	*p2 = temp;
}
exchange(int *pt1,int *pt2,int *pt3)
{
	if(*pt1<*pt2)
		swap(pt1,pt2);
	if(*pt1<*pt3)
		swap(pt1,pt3);
	if(*pt2<*pt3)
		swap(pt2,pt3);
	
}

运行结果

 4、指向结构体变量的指针

通过指向结构体指针变量实现在窗体上显示学生的信息。

#include<stdio.h>
struct student
{
	int num;
	char name[20];
	char sex;
	int age;
	float score;
};
int main()
{
	struct student student1={
		1001,"李xx",'M',25,90.3
	};
	struct student *p;
	p = &student1;
	printf("Numbers:%d\n",p->num);
	printf("Name:%s\n",p->name);
	printf("Sex:%c\n",p->sex);
	printf("Age:%d\n",p->age);
	printf("Score:%5.1f\n",p->score);
}

运行结果

5、使用指针输出数据元素

通过指针变量输出数组的各元素值,程序运行后,输入10个数字后,可以看到输出的数组元素值。 

#include<stdio.h>
int main()
{
	int *p,a[10],i;
	p=&a[0];
	printf("请输入10个数字:\n");
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	printf("数组中的元素为:\n");
	for(i=0;i<10;i++)
	{
		printf("%d",*(p+i));
	}
	printf("\n");
}

运行结果

6、使用指针查找数组中的最大值和最小值。

输入10整型数,自动查找数组中的最大值和最小值,并显示在窗体上。

 

#include<stdio.h>
int max_min(int a[],int n,int *max,int *min);
int main()
{
	int i,a[10];
	int max,min;
	printf("Input 10 int eger numbers you want to operate:\n");
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	max_min(a,10,&max,&min);
	printf("\nThe maximun number is:%d\n",max);
	printf("The minimun number is :%d\n",min);
}
int max_min(int a[],int n,int *max,int *min)
{
	int *p;
	*max = *min = *a;
	for(p=a+1;p<a+n;p++)
	if(*p>*max)
	{
		*max =*p;
	}
	else if(*p<*min)
	{
		*min = *p;
	}
	return 0;
	
	
}

运行结果

7、使用指针连接两个字符串

要求实现将两个已知的字符串连接,放到另外一个字符串数组中,并将连接后的字符串输出到屏幕上。 

#include<stdio.h>
#define N 20
char *MyStrcat(char *dstStr,char *srcStr)
{
	char *pStr = dstStr;
	while(*dstStr !='\0')
	{
		dstStr++;
	}
	for(;*srcStr!='\0';dstStr++,srcStr++)
	{
		*dstStr = *srcStr;
	}
	*dstStr = '\0';
	return pStr;
}
int main()
{
	char first[2*N];
	char second[N];
	char *result = NULL;
	printf("输入第一组:");
	gets(first);
	printf("输入第二组:");
	gets(second);
	result = MyStrcat(first,second);
	printf("结果:%s\n",result);
	return 0;
}

运行结果

8、用指针数组构造字符串数组

要求实现输入一个星期中对应的第几天,可显示其英文写法。如,输入‘4’,则显示星期四对应的英文名。 

#include<stdio.h>
int main()
{
	char *Week[]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
	int i;
	printf("Please enter a number for week\n");
	scanf("%d",&i);
	printf("The week is :");
	printf("%s\n",Week[i-1]);
	return 0;
}

运行结果

9、使用指针的指针输出字符串

首先使用指针数组创建一个字符串数组,然后定义指向指针的指针,使其指向字符串数组,并使用其将数组中字符串输出。 

#include<stdio.h>
int main()
{
	char *strings[]={"赵xx","钱xx","孙xx","李xx","周xx"};
	char **p,i;
	p=strings;
	printf("%s\n",strings[0]);
	for(i=0;i<5;i++)
	{
		printf("%s\n",*(p+i));
	}
	return 0;
}

运行结果

10、找出最高分

通过结构体变量记录学生成绩,比较得到记录中的最高成绩,输出该学生的信息。 

#include<stdio.h>
struct student
{
	int num;
	char name[20];
	float score;
};
int main()
{
	int i,m;
	float maxscore;
	struct student stu[5]=
	{
		{101,"李明",89},
		{102,"苑达",95},
		{103,"孙佳",89},
		{104,"王子川",85},
		{105,"刘春月",75}, 
	};
	m=0;
	maxscore = stu[0].score;
	for(i=1;i<5;i++)
	{
		if(stu[i].score>maxscore)
		{
			maxscore = stu[i].score;
			m=i;
		}
	 } 
	 printf("最高分是:%5.1f\n",maxscore);
	 printf("最高分学生的学号是:%d\n",stu[m].num);
	 printf("最高分学生的姓名是:%s\n",stu[m].name);
}

运行结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值