写在之前,分享指针字符数组输出应用;
#include <stdio.h>
int main()
{
char *p="%d,a=%d,b=%d\n";//这里定义的是指针字符数组。
int a=111,b=10,c;
c=a%b;
p+=3;//是从使得该字符数组从数组下标3开始输出。
printf(p,c,a,b);
//p只是对指针变量进行引用,所以这里的p等同于(p+3)。
//即这部分可写为——printf("a=%d,b=%d\n",c,a,b);实际对应输出的为c和a的值。
}
对于const的补充;
const可限定指针变量固定不变,其被赋值内容可以是地址
例如:
int *const q=&a;
正题:
#include <stdio.h>
struct student
{
char name[12];
int score[3];
double sum;
double average;
}stu[3];//结构体数组,其stu[3]这个数组的每一个元素均含有整个结构体所包含的变量属性————也就是说一个学生就是数组中一个元素有名字分数、总分、平均分这些属性。
int main()
{
int i,j;
double sum;
for(i=0;i<3;i++)
{
printf("请输入第%d个学生姓名:",i+1);
gets(stu[i].name);//在对提前初始化的学生个数进行挨个命名
sum=0;
for(j=0;j<3;j++)
{
printf("输入第%d个学生第%d科成绩:",i+1,j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];//挨个计算总分
}
fflush(stdin);//输入缓冲区;
stu[i].sum=sum;
stu[i].average=sum/3;//挨个求平均分
}
printf("Information of Stu:\n");
printf("%10s%7s%7s%7s%7s%7s\n","姓名","成绩1","成绩2","成绩3","总分","平均分");//对数据进行整合。
for(i=0;i<3;i++)
{
printf("%10s",stu[i].name);
for(j=0;j<3;j++)
{
printf("%7d",stu[i].score[j]);
}
printf("%7.2f%7.2f",stu[i].sum,stu[i].average);
printf("\n");
}
return 0;
}
其中代码分析在代码中有相应阐述。