注册 登录
编程论坛 C++教室

大家好,我这个程序是一个学生管理系统,可是老是不能调用函数进行求总成绩和平均值,请大家帮忙看看怎么改一下我那调用的函数!谢谢了啊!

人海穿越 发布于 2010-11-29 21:11, 696 次点击
#include "stdio.h"
#include "string.h"
#define N 4
#define pw 123
struct student
{
    char name[9];
    int num;
    int age;
    int sex;
    float score[3];

};
count(float x,float y,float z)
{
    float m,n;
    m=x+y+z;
    n=m/3;

}
main()
{    int password,n=1;
    printf("\n*************请输入学生信息*************");
    printf("\n*****                              *****");
    printf("\n*****                              *****");
    printf("\n*****                              *****");
    printf("\n*************请输入登录密码*************");
    do
    {
        
        
        if(n>3)
        {
            printf("对不起,你已被禁止使用该程序,请推出谢谢合作!");
            return;
        }
            printf("\n请输入密码");
            scanf("%d",&password);
                if(password==pw)
            {
                printf("欢迎使用该程序,请输入你的密码,谢谢合作");
                break;
            }
                n++;
   
   
   
    }
    while(1);
    student stu[N];
    float p,k;
    for(int j=0;j<N;j++)
    {
        printf("\n请输入第%d个学生的姓名",j+1);
        scanf("%c",&stu[j].name);
        printf("请输入第%d个学生的学号",j+1);
        scanf("%d",&stu[j].num);
        printf("\n请输入第%d个学生的年龄",j+1);
        scanf("%d",&stu[j].age);
        printf("\n请输入第%d个学生的性别",j+1);
        scanf("%d",&stu[j].sex);
        printf("\n以下输出%d学生的个人信息",j+1);
        printf("姓名:%c\n学号:%d\n年龄:%d\n性别:%d\n",stu[j].name,stu[j].num,stu[j].age,stu[j].sex);
        printf("\n请输入第%d个学生的三门课程成绩",j+1);
        for(int i=0;i<3;i++)
        {
            scanf("%f",&stu[j].score[i]);
        }
        printf("\n输出第%d个学生的三门课程成绩",j+1);
        for(i=0;i<3;i++)
        {
            printf("%f",stu[j].score[i]);
        }
        
   
        printf("\n输出第%d个学生的平均成绩和总成绩",j+1);
        count(stu[j].score[i],stu[j].score[i+1],stu[j].score[i+2]);
        printf("第%d个学生的平均成绩为%f",j+1,k);
        printf("第%d个学生的总成绩为%f",j+1,p);
   
    }    程序中红色部分不能正确运行,请诸位高手帮忙斧正啊,谢谢了!
}      还有就是我把输入的姓名用成拼音输入时会一下子把所有的还没输入的全部显示出来,输入数字1。。。这类的时候是一步一步显示的,请帮我改改,谢谢了啊!声明一点啊我是想让它们一步一步的输出啊!
6 回复
#2
rainbow12010-11-29 21:46
第一个红色部分的}后少了“;”;
#3
rainbow12010-11-29 21:47
第二个正在看。
#4
rainbow12010-11-29 21:51
第二个问题解决了,第二个问题也解决 了。
#5
xanxus2010-11-30 11:52
LZ还没解决??
程序代码:
#include "stdio.h"
#include "string.h"
#define N 4
#define pw 123
struct student
{
    char name[9];
    int num;
    int age;
    char sex[4];
    float score[3];

};

void main()
{  
    int password,n=1;
    float p=0;
    float k=0;
   
    printf("\n*************请输入学生信息*************");
    printf("\n*****                              *****");
    printf("\n*****                              *****");
    printf("\n*****                              *****");
    printf("\n*************请输入登录密码*************");
    do
    {
      
      
        if(n>3)
        {
            printf("对不起,你已被禁止使用该程序,请推出谢谢合作!");
            return;
        }
            printf("\n请输入密码");
            scanf("%d",&password);
                if(password==pw)
            {
                printf("欢迎使用该程序,请输入你的密码,谢谢合作");
                break;
            }
                n++;
   
   
   
    }
    while(1);
    student stu[N];
    for(int j=0;j<N;j++)
    {
        printf("\n请输入第%d个学生的姓名",j+1);
        scanf("%s",&stu[j].name);
        printf("请输入第%d个学生的学号",j+1);
        scanf("%d",&stu[j].num);
        printf("\n请输入第%d个学生的年龄",j+1);
        scanf("%d",&stu[j].age);
        printf("\n请输入第%d个学生的性别",j+1);
        scanf("%s",&stu[j].sex);
        printf("\n以下输出%d学生的个人信息",j+1);
        printf("姓名:%s\n学号:%d\n年龄:%d\n性别:%s\n",stu[j].name,stu[j].num,stu[j].age,stu[j].sex);
        printf("\n请输入第%d个学生的三门课程成绩",j+1);
        for(int i=0;i<3;i++)
        {
            scanf("%f",&stu[j].score[i]);
        }
        printf("\n输出第%d个学生的三门课程成绩",j+1);
        for(i=0;i<3;i++)
        {
            printf("%f\n",stu[j].score[i]);
        }
        printf("\n输出第%d个学生的平均成绩和总成绩",j+1);
        p=stu[j].score[j]+stu[j].score[j+1]+stu[j].score[2];
        k=k/3;
        printf("第%d个学生的平均成绩为%f",j+1,k);
        printf("第%d个学生的总成绩为%f",j+1,p);
    }   
}  
修改的我用下划线标出了,而且把count函数去掉了,感觉没必要,
字符串的输入输出是%S
希望对楼主有所帮助

[ 本帖最后由 xanxus 于 2010-11-30 11:55 编辑 ]
#6
人海穿越2010-12-05 10:36
回复 5楼 xanxus
呵呵 谢谢你啊 已经帮我解决了把部分问题 剩下的我自己再解决啊 谢谢了
#7
Mack22010-12-05 17:16
#include "stdio.h"
#include "string.h"
#define N 4
#define pw 123
struct student
{
    char name[9];
    int num;
    int age;
    char sex[5];
    float score[3];

};
void count(float x,float y,float z,int i)
{
    float m,n;
    m=x+y+z;
    n=m/3;
    printf("第%d个学生的平均成绩为%f",++i,n);
    printf("第%d个学生的总成绩为%f",i,m);

};
int main()
{    int password,n=1;
    printf("\n*************请输入学生信息*************");
    printf("\n*****                              *****");
    printf("\n*****                              *****");
    printf("\n*****                              *****");
    printf("\n*************请输入登录密码*************");
    do
    {
        
        
        if(n>3)
        {
            printf("对不起,你已被禁止使用该程序,请推出谢谢合作!");
            return 0;
        }
            printf("\n请输入密码");
            scanf("%d",&password);
                if(password==pw)
            {
                printf("欢迎使用该程序,请输入你的密码,谢谢合作");
                break;
            }
                n++;
   
   
   
    }
    while(1);
    student stu[N];
    for(int j=0;j<N;j++)
    {
        printf("\n请输入第%d个学生的姓名",j+1);
        scanf("%s",&stu[j].name);
        printf("请输入第%d个学生的学号",j+1);
        scanf("%d",&stu[j].num);
        printf("\n请输入第%d个学生的年龄",j+1);
        scanf("%d",&stu[j].age);
        printf("\n请输入第%d个学生的性别",j+1);
        scanf("%s",&stu[j].sex);
        printf("\n以下输出%d学生的个人信息",j+1);
        printf("姓名:%s\n学号:%d\n年龄:%d\n性别:%s\n",stu[j].name,stu[j].num,stu[j].age,stu[j].sex);
        printf("\n请输入第%d个学生的三门课程成绩",j+1);
        for(int i=0;i<3;i++)
        {
            scanf("%f",&stu[j].score[i]);
        }
        printf("\n输出第%d个学生的三门课程成绩",j+1);
        for(i=0;i<3;i++)
        {
            printf("%f",stu[j].score[i]);
        }
        
   
        printf("\n输出第%d个学生的平均成绩和总成绩",j+1);
        count(stu[j].score[0],stu[j].score[1],stu[j].score[2],j);
};
        return 0;
}   
1