第12周
1
利用指针编写一函数,输入3个整数,按由大到小的顺序将它们输出。(15分)
题目内容:利用指针编写一函数,输入3个整数,按由大到小的顺序将它们输出。
输入格式:
%d
输出格式:
%3d
输入样例:
25 68 17
输出样例:
68 25 17
#include<stdio.h>
int main()
{
int a[3],*p=a,t,i,j;
scanf("%d %d %d",p,p+1,p+2);
for(j=0;j<2;j++)
{
for(i=0;i<2;i++)
{
if(*(p+i)<*(p+i+1))
{
t=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=t;
}
}
}
printf("%3d%3d%3d",*p,*(p+1),*(p+2));
return 0;
}
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
#include<stdio.h>
int main()
{
float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int n;
float (*p)[4];
p=score;
scanf("%d",&n);
printf("%8.2f%8.2f%8.2f%8.2f",**(p+n),*(*(p+n)+1),*(*(p+n)+2),*(*(p+n)+3));
return 0;
}
第13周
1
某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(30分)
题目内容:
某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(注:定义一个结构体类型,用结构指针作为函数参数)
输入格式:
%ld %s %f %f %f
输出格式:
%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n
输入样例:
201701 zhao 29.8 85.4 65.4
201702 qian 96.5 87.5 65.4
201703 sun 85.4 65.4 84.6
201704 li 63.4 95.4 86.3
201705 zhou 65.9 84.6 97.5
输出样例:
Number: Name: score: Average: rank:
201701 zhao 29.8 85.4 65.4 60.2 5
201702 qian 96.5 87.5 65.4 83.1 1
201703 sun 85.4 65.4 84.6 78.5 4
201704 li 63.4 95.4 86.3 81.7 3
201705 zhou 65.9 84.6 97.5 82.7 2
#include<stdio.h>
#define X 0
#define Y 0
int main()
{
struct I
{long int Number;
char Name[10];
float score[3];
float Average;
int rank;
}n[5];
int i,j,a[5],t;
float x[5],y[5],m;
for(i=0;i<5;i++)
scanf("%ld %s %f %f %f",&n[i].Number,&n[i].Name,&n[i].score[0],&n[i].score[1],&n[i].score[2]);
printf("Number: Name: score: Average: rank:\n");
for(i=0;i<5;i++)
n[i].Average=(n[i].score[0]+n[i].score[1]+n[i].score[2])/3;
if(X)
{
printf("\n\n\n");
printf("\n\n\n");
printf("\n\n\n");
for(i=0;i<5;i++)
printf("%f、",n[i].Average);
printf("\n\n\n");
}
for(i=0;i<5;i++)
x[i]=n[i].Average;
for(i=0;i<5;i++)
y[i]=n[i].Average;
if(X)
{
printf("\n\n\n");
for(i=0;i<5;i++)
printf("%f、",x[i]);
printf("\n\n\n");
}
if(X)
{
printf("\n\n\n");
for(i=0;i<5;i++)
printf("%f、",y[i]);
printf("\n\n\n");
}
for(i=0;i<5;i++)
{
t=i;
for(j=i;j<5;j++)
if(x[t]<x[j])
t=j;
if(t!=i)
{
m=x[t];
x[t]=x[i];
x[i]=m;
}
}
/**/
for(i=0;i<5;i++)
{
j=0;
for(;j<5;j++)
if(y[i]==x[j])
break;
a[i]=j;
}
/**/
for(i=0;i<5;i++)
a[i]++;
if(Y)
{
printf("\n\n\n");
for(i=0;i<5;i++)
printf("%f、",x[i]);
printf("\n\n\n");
}
if(Y)
{
printf("\n\n\n");
for(i=0;i<5;i++)
printf("%f、",y[i]);
printf("\n\n\n");
}
if(Y)
{
printf("\n\n\n");
for(i=0;i<5;i++)
printf("%d、",a[i]);
printf("\n\n\n");
}
for(i=0;i<5;i++)
n[i].rank=a[i];
for(i=0;i<5;i++)
printf("%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n",n[i].Number,n[i].Name,n[i].score[0],n[i].score[1],n[i].score[2],n[i].Average,n[i].rank);
return 0;
}
注:这个题我忘了用函数了……