中国大学MOOC C语言程序设计(大连理工大学) 课后编程题 第十二周题解(个人向仅供参考)

第十二周 指针二

1 利用指针编写一函数,输入3个整数,按由大到小的顺序将它们输出。(15分)

题目内容:利用指针编写一函数,输入3个整数,按由大到小的顺序将它们输出。

输入格式:

%d

输出格式:

%3d

输入样例:

25 68 17

输出样例:

68 25 17

时间限制:500ms 内存限制:32000kb

#include
int sort(int *pa,int *pb,int *pc){
	int temp;
	if(*pa>*pb)
		{temp=*pa;*pa=*pb;*pb=temp;}
	if(*pa>*pc)
		{temp=*pa;*pa=*pc;*pc=temp;}
	if(*pb>*pc)
		{temp=*pb;*pb=*pc;*pc=temp;}

}
int main(){
	int a,b,c;
	int *pa,*pb,*pc;
	scanf("%d%d%d",&a,&b,&c);
	pa=&a;pb=&b;pc=&c;
	sort(pa,pb,pc);
	printf("%3d%3d%3d",c,b,a);
	return 0;
} 

我觉得这个第一题题解我写的很辣鸡,我本来想用数组加冒泡排序来写的,但题目要求用指针编写函数,我卡在sort函数中,在sort函数中我打算用指针来写冒泡排序,可是一直不对。呜呜呜,指针杀我,但我发现函数中不用指针OJ系统也会过,下面我把没用指针编写函数的题解贴出来,等周末有空再改改,希望给大家一个参考

#include
#define N 3
int main(){
	int i,a[N];
	int sort(int a[N]);
	for(i=0;i<N;i++)
	scanf("%d",&a[i]);
	sort(a);
	for(i=N-1;i>=0;i--)
	printf("%3d",a[i]);
	return 0;
} 
int sort(int a[N]){
	int i,j,temp;
	for(i=0;i<N-1;i++){
		for(j=1;j<N-i;j++){
			if(a[j-1]>a[j]){
				temp=a[j-1];
				a[j-1]=a[j];
				a[j]=temp;
			}	
		}
	}	
	return a[j];
}

2 用指向数组的指针变量实现输出指定学生的全部成绩。(15分)

题目内容:

有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指向数组的指针变量实现。

使用数组 float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}}

输入格式:

%d

输出格式:

%8.2f

输入样例:

1

输出样例:

56.00 89.00 67.00 88.00

时间限制:500ms 内存限制:32000kb

#include
int main(){
	float *p,score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
	int n,i;
	p=score[0];
	scanf("%d",&n); 
	p=p+4*n;
	for(i=0;i<4;i++)
	printf("%8.2f",*(p+i));
	return 0;
} 

我以为第二题会很难的,没想到比第一题好写多了。
好了,第十二周的题解已经更新啦,很抱歉因为电脑原因拖了两天
看完记得点赞评论哦!
你的点赞评论分享就是我的动力。
下次见!

**
——》第十三周编程题题解《——

你可能感兴趣的:(中国大学MOOC)