【拯救大学牲】人民邮电出版社C语言程序设计第八章编程题答案(下)

 注:本文所有程序均为笔者自己编写,仅供交流学习使用,欢迎一切纠错与指正。

 

目录

六、使用指针编写程序,求两个向量的内积。

七、使用指针,求10个数均方差。

八、使用指向一维数组元素的指针作为函数参数,编写冒泡法、选择法实现从小到大排序的函数,并编写main()函数实现排序。

九、求某班50个学生的5门课平均成绩。


六、使用指针编写程序,求两个向量的内积。

#include <stdio.h>

int main()
{
	int a[3],b[3],sum=0;
	int i;
	int *p = a,*q = b;
	printf("请输入向量a的三个坐标:꣺");
	for(i=0;i<3;i++)
	{
		scanf("%d",&a[i]);
	}
	printf("请输入向量b的三个坐标:꣺");
	for(i=0;i<3;i++)
	{
		scanf("%d",&b[i]);
	}
	for(i=0;i<3;i++)
	{
		sum += *p**q;
		p++;
		q++;
	}
	printf("%d",sum);

	return 0;
}

七、使用指针,求10个数均方差。

#include <stdio.h>
#include <math.h>

int main()
{
	float a[10],xi=0,i=0,s;
	float *p = a;
	printf("请输入10个数:");
	for(p;p<a+10;p++)
	{
		scanf("%f",p);
	}
	for(p=a;p<a+10;p++)
	{
		xi += *p;
	}
	xi /= 10;
	for(p=a;p<a+10;p++)
	{
		i += pow(*p-xi,2);
	}
	s = sqrt(i/10);
	printf("%f",s);

    return 0;
}

八、使用指向一维数组元素的指针作为函数参数,编写冒泡法、选择法实现从小到大排序的函数,并编写main()函数实现排序。

#include <stdio.h>

void BubbleSort(int *p,int n)
{
	int t;
	int i;
	while(n)
	{
		for(i = 0;i<n-1;i++)
		{
			if(*(p+i)>*(p+i+1))
			{
				t = *(p+i);
				*(p+i) = *(p+i+1);
				*(p+i+1) = t;
			}
		}
		n--;
	}
}

void SelectSort(int *p,int n)
{
	int max = *p;
	int i,j,t;
	while(n)
	{
		max = 0;
		for(i = 0;i<n;i++)
		{
			if(max<*(p+i))
			{
				j = i;
				max = *(p+i);
			}
		}
		t = *(p+n-1);
		*(p+j) = t;
		*(p+n-1) = max;
		n--;
	}
}

int main()
{
	int a[10],b[10],*p = a,*q = b;
	int i;
	printf("请输入需要排序的10个数:");
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
		b[i] = a[i];
	}
	BubbleSort(p,10);
	SelectSort(q,10);
	for(i=0;i<10;i++)
	{
		printf("%d\t",a[i]);
	}
	printf("\n");
	for(i=0;i<10;i++)
	{
		printf("%d\t",b[i]);
	}

	return 0;
}

九、求某班50个学生的5门课平均成绩。

#include <stdio.h>

int main()
{
    int grades[50][5] = {
        {90,36,49,40,81},
        {37,64,25,13,57},
        {20,46,23,57,26},
        {46,68,23,47,1},
        {36,85,1,25,57},
        {25,47,69,84,35},
        {34,23,74,13,46},
        {25,74,32,48,86},
        {35,85,21,47,9},
        {2,86,4,37,58,},
        {25,58,2,85,23},
        {75,23,47,23,12},
        {25,47,96,23,74},
        {57,24,57,23,57},
        {36,86,75,58,34},
        {37,13,74,13,74},
        {36,58,63,23,75},
        {25,75,45,86,43},
        {25,75,75,31,47},
        {47,97,59,53,23},
        {36,78,53,23,64},
        {35,64,86,57,31},
        {75,23,46,1,74},
        {36,85,63,23,45},
        {35,64,32,13,64},
        {97,75,86,96,86},
        {90,36,49,40,81},
        {37,64,25,13,57},
        {20,46,23,57,26},
        {46,68,23,47,1},
        {36,85,1,25,57},
        {25,47,69,84,35},
        {34,23,74,13,46},
        {25,74,32,48,86},
        {35,85,21,47,9},
        {2,86,4,37,58,},
        {25,58,2,85,23},
        {75,23,47,23,12},
        {25,47,96,23,74},
        {57,24,57,23,57},
        {36,86,75,58,34},
        {37,13,74,13,74},
        {36,58,63,23,75},
        {25,75,45,86,43},
        {25,75,75,31,47},
        {47,97,59,53,23},
        {36,78,53,23,64},
        {35,64,86,57,31},
        {75,23,46,1,74},
        {36,85,63,23,45},
    };
    int i,j;
    float sum,avg;
    for(i=0;i<5;i++)
    {
        sum = 0;
        for(j=0;j<50;j++)
        {
            sum += grades[i][j];
        }
        avg = sum/50;
        printf("此门课平均成绩为:%f\n",avg);
    }

    return 0;
}

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风痕天际

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值