c语言-请问一下这个c程序有什么问题

问题描述

请问一下这个c程序有什么问题

题目:有n=3个结构体变量,内含学生学号,姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息。

#include <stdio.h>
#define n 3
struct student
{long int number;
 char name[20];
 float s1,s2,s3;
 float average;
};
int main()
{void input(struct student *p);
 struct student max(struct student *p);
 void print(struct student p);
 struct student stu[n],*p=stu;
 input(p);
 print(max(p));
 return 0;
}
void input(struct student *p)
{int i;
 for(i=0;i<n;i++)
 {printf("enter student%d's number,name,3 scores:",i+1);
  scanf("%ld%s%f%f%f",&*(p+i).number,*(p+i).name,&*(p+i).s1,&*(p+i).s2,&*(p+i).s3);
  *(p+i).average=(*(p+i).s1+*(p+i).s2+*(p+i).s3)/3.0;
 }

}
 struct student max(struct student *p)
 {int i,max;
  max=0;
  for(i=1;i<n;i++)
      if(*(p+max).average<*(p+i).average) max=i;
  return *(p+max);

 }
 void print(struct student p)
 {
    printf("number=&ld,name=%s,score1=%f,score2=%f,score3=%f",p.number,p.name,p.s1,p.s2,p.s3);
 }

--------------------Configuration: 6 - Win32 Debug--------------------
Compiling...
66.cpp
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(22) : error C2228: left of '.number' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(22) : error C2228: left of '.name' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(22) : error C2228: left of '.s1' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(22) : error C2228: left of '.s2' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(22) : error C2228: left of '.s3' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(23) : error C2228: left of '.average' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(23) : error C2228: left of '.s1' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(23) : error C2228: left of '.s2' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(23) : error C2228: left of '.s3' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(31) : error C2228: left of '.average' must have class/struct/union type
D:vc 6.0Microsoft Visual StudioMyProjects666.cpp(31) : error C2228: left of '.average' must have class/struct/union type
执行 cl.exe 时出错.

解决方案

指针访问成员用->
对象用.
类用::

另外
struct student
严格来说,这是C++的写法,C要用typedef。不过你其实用的是VC++,cpp,其实你写的是C++

解决方案二:

经过修改,已经不报错了,你自己再调试一下。
#include
#define n 3
struct student
{long int number;
char name[20];
float s1,s2,s3;
float average;
};

void input(struct student *p);
int main()
{

void input(struct student *p);
struct student max(struct student *p);
void print(struct student p);
struct student stu[n],*p=stu;
input(p);
print(max(p));
return 0;
}
void input(struct student *p)
{int i;
for(i=0;i
{
printf("enter student%d's number,name,3 scores:",i+1);
scanf("%ld%s%f%f%f",(p+i)->number,(p+i)->name,(p+i)->s1,(p+i)->s2,(p+i)->s3);
(p+i)->average=((p+i)->s1+(p+i)->s2+(p+i)->s3)/3.0;
}

}
struct student max(struct student *p)
{int i,max;
max=0;
for(i=1;i
if((p+max)->average<(p+i)->average) max=i;
return *(p+max);

}
void print(struct student p)
{
printf("number=&ld,name=%s,score1=%f,score2=%f,score3=%f",p.number,p.name,p.s1,p.s2,p.s3);
}

解决方案三:

scanf("%ld%s%f%f%f",(p+i)->number,(p+i)->name,(p+i)->s1,(p+i)->s2,(p+i)->s3);

指针用->访问结构体属性

解决方案四:

面试题:描述一下C程序的编译过程
----------------------

时间: 2024-12-02 22:04:44

c语言-请问一下这个c程序有什么问题的相关文章

c语言-请问各位,这个程序运行结果是?

问题描述 请问各位,这个程序运行结果是? #include int main(void) { char s[]="ABCD"; char *p; for (p=s;p<s+4;p++) printf("%cn",*p); return 0; } 解决方案 #include "stdafx.h" int main(int argc, char* argv[]) { char s[]="ABCD"; char *p; for

c语言-请问怎么在此程序中使比较次数交换次数输出程序中错误在哪里

问题描述 请问怎么在此程序中使比较次数交换次数输出程序中错误在哪里 #include #include #include #define max_len 5 void generate_arr(int r[], int rLen); void Qsort(int r[], int l, int h); int main() { int i; int r[max_len]; generate_arr(r, max_len); //使用方式 Qsort(r,0,max_len-1); //调用快速排

在做科技立项-请问各位怎么把程序写到手机啊

问题描述 请问各位怎么把程序写到手机啊 请各位大神帮帮忙,我是一个新手,是在校大学生,在做科技立项,第一次做这个,有很多不懂的,请大家多多关照 解决方案 用android studio开发程序,然后打包成apk,下载到android手机上运行. 或者用xcode开发程序,选择oc或者swift语言,然后把程序发布到app store,下载到ios上运行.也可以直接在apple手机上运行. 解决方案二: 看什么系统的手机了,Android,IOS,还有WinCE手持端了需要不同的运行环境 解决方案

strlen-C语言 请问这两行代码是什么意思

问题描述 C语言 请问这两行代码是什么意思 for(int i = 0; i < strlen(charSet); i++) hash[charSet[i]] = 1; 下面是完整代码 // Created by www.runoob.com on 15/11/9. // Copyright ? 2015年 菜鸟教程. All rights reserved. // #include #include #include // 删除字符串中指定字母函数 char* deleteCharacters

c语言-C语言,请问这两行代码是什么意思

问题描述 C语言,请问这两行代码是什么意思 请问 else printf("^%-4c",ch+64);和 if(i%8 == 0) printf("n");这两句是什么意思 #include int main(void) { char ch; int i; for(i=1; (ch=getchar()) != EOF; i++) { if (ch >= ' ' || ch == 'n' || ch == 't') printf("%-5c"

c语言-用C语言编写一个对数组排序的程序,要求使用递归算法实现。

问题描述 用C语言编写一个对数组排序的程序,要求使用递归算法实现. 用C语言编写一个对数组排序的程序,要求使用递归算法实现. 解决方案 http://blog.sina.com.cn/s/blog_70441c8e0100pxuh.html 快速排序 解决方案二: http://blog.csdn.net/meditator_hkx/article/details/49756199 快速排序采用的二分法,正是将问题化大为小,展现递归的精髓-

c语言-【C语言】vc6.0运行程序过程中提示***.EXE已停止工作

问题描述 [C语言]vc6.0运行程序过程中提示***.EXE已停止工作 在运行"添加"这一块时,输入完信息之后就提示***.EXE已停止工作,这是什么错? 代码如下 #include #include #include #include #include #define LENTEL sizeof(tel) #define ID struct tel struct tel { char name[15]; char tele[15]; char style[15]; char mai

指针-@C语言大神,这程序谭浩强给的答案看不懂,求解释?

问题描述 @C语言大神,这程序谭浩强给的答案看不懂,求解释? //题目:输出字符串里数字团,以及个数.比如89cy129//就输出89,129,一共2个数.// 问题:后面一大段为啥要复制粘贴前面一大段的代码?//有什么用?求解释.而且运行也不对,求修改!跪谢! include int main() { char str[80],*pstr; int m,i=0,j=0,k=0,digit=0,ndigit=0,e10,a[80],*pa; pstr=&str[0];pa=&a[0]; g

用C语言编写自动排班程序

问题描述 用C语言编写自动排班程序 学校组织有需要值班的地方,而需要在学生没课的时候安排值班,这是一个繁琐的工程,我想写一个自动排班的程序.比如有50个人,每个人都有自己的课表,把自己没课的时间都按照一定要求列出来,然后按照一天上午两个班,下午两个班,晚上两个班,进行排班,一个班两个人,如果出现了有一个班所有同学都上课,那就空出来,其他的进行随机安排即可,一个人一周两个班.求大神指点!有偿1851841831 微信hao_zi7 解决方案 Linux下编写C语言程序 解决方案二: 不知道优先队列