注:本文所有程序均为笔者自己编写,仅供交流学习使用,欢迎一切纠错与指正。
目录
八、使用指向一维数组元素的指针作为函数参数,编写冒泡法、选择法实现从小到大排序的函数,并编写main()函数实现排序。
六、使用指针编写程序,求两个向量的内积。
#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;
}