summeraaaaaaaa
summeraaaaaaaa
采纳率75%
2017-12-19 11:23

求大神指教一个自定义函数,C语言

5

#include
#include
#include
struct score
{
int sno;
int cno;
int score;
};
struct Node_sc
{
score data;
Node_sc next;
};
Node_sc *create(int n);
void fileOutput(Node_sc *phead);
void traversal(Node_sc
phead);
int main()
{
int n;
printf ("输入数据个数:");
scanf ("%d",&n);
printf("\n");

Node_sc* phead=create(n);
fileOutput(phead);
traversal(phead);
return 0;
}

Node_sc create(int n)

{
Node_sc *pnew;
Node_sc *phead;
Node_sc *ptail;
for (int i=0;i<n;i++)

{
pnew=(Node_sc
)malloc(sizeof(Node_sc));
printf("学号:");scanf ("%d",&pnew->data.sno);
fflush (stdin);
printf ("课程号:");scanf("%d",&pnew->data.cno);
printf ("成绩:");scanf ("%d",&pnew->data.score);
pnew->next=NULL;
if (i==0)
{
phead=pnew;
ptail=pnew;
}
else
{
ptail->next=pnew;
ptail=ptail->next;
}
}
return phead;

}

void fileOutput(Node_sc *phead)
{
Node_sc *p=phead;
FILE *fp1;
fp1=fopen("studentscore.dat","wb");
if(fp1==NULL)
{
printf("文件无法打开!\n");
exit(1);
}
else
{
while(p!=NULL)
{
fwrite(p,sizeof(score),1,fp1);
p=p->next;

}
fclose(fp1);
}
}

void traversal(Node_sc* phead)
{
Node_sc *p;
p=phead;
while(p!=NULL)

{
printf ("学号:%d 课程号:%d 成绩:%d\n",p->data.sno,p->data.cno,p->data.score);
p=p->next;

}
}
对于这样一个程序,我要怎么编写一个自定义函数求平均分不及格的学生数据呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

9条回答

  • did_you did_you 4年前

    声明一个数组,遍历这个链表,记录不及格学生所在链表的位置。
    这个代码结构混乱,还有很多错误,建议好好看一下数据结构

    点赞 5 评论 复制链接分享
  • qq_39645168 qq_39645168 4年前

    用排序法对链表phead按学号sno进行重新排序,然后循环遍历链表,对sno相同的求平均分,不及格的输出。

    点赞 评论 复制链接分享
  • tua666 tua666 4年前

    你可以遍历整个链表,对sno相同的求平均分,不及格的输出

    点赞 1 评论 复制链接分享
  • yhlwh_wxt be a young people 4年前

    你可以自己遍一个选择函数,然后遍历整个链表,对关键字进行遍历,需要的话也可以遍历的同时进行排序。最后再写个显示函数就可以啦

    数据结构先好好看看吧,感觉逻辑不是很清晰。
    其实也可以用数据库,觉得数据库还简单些,输进去数字以后直接划分筛选范围就可以直接得到筛选结果,及格不及格一目了然

    点赞 1 评论 复制链接分享
  • yhlwh_wxt be a young people 4年前

    你可以自己遍一个选择函数,然后遍历整个链表,对关键字进行遍历,需要的话也可以遍历的同时进行排序。最后再写个显示函数就可以啦

    数据结构先好好看看吧,感觉逻辑不是很清晰。
    其实也可以用数据库,觉得数据库还简单些,输进去数字以后直接划分筛选范围就可以直接得到筛选结果,及格不及格一目了然

    点赞 1 评论 复制链接分享
  • ckpckp 深情稻草人 4年前

    用排序法对链表phead按学号sno进行重新排序,然后循环遍历链表,对sno相同的求平均分,不及格的输出。

    点赞 1 评论 复制链接分享
  • qq_30125673 三天打鱼plus 4年前

    按照你定义的结构体,只能遍历整个链表去求

    点赞 1 评论 复制链接分享
  • happycandy1 happycandy1 4年前

    #include

    int shuXianHua(int num)
    {
    int a, b, c;
    a = num/100;
    b = (num/10)%10;
    c = num%10;
    if ((a*a*a+b*b*b+c*c*c) == num)
    {
    return 1;
    }

    return 0;
    

    }

    int main()
    {
    for (int i = 200; i<=400; i++)
    {
    if (1 == shuXianHua(i))
    {
    printf("%d ", i);
    }
    }

    printf("\n");
    return 0;
    

    }

    点赞 评论 复制链接分享
  • qq_41411811 qq_41411811 4年前

    #include
    #define MAXLINE 1000 //定义一个最大行
    int glefc(char line[], int max); //声明一个glefc函数,此函数可以接受两个值,一个是char类型,一个是int类型
    int strindex(char source[], char searchfor[]); //声明一个strindex函数,可以接受两个值,都是char类型
    char pattern[] = "culd"; //定义一个全局char变量,这个作为被find的字符串

    main() //主main函数
    {
    char line[MAXLINE];

    int found = 0;

    while (glefc(line, MAXLINE) > 0) //用while循环,调用glefc函数,此函数接受两个值,第一个line char类型,第二个定义的常量MAXLINE 为int类型 如果getchar函数获取的这个字符串不为空,则返回字符串长度的值,所以大于0
    if (strindex(line, pattern) >= 0) { //如果line char的长度大于0,则用strindex函数进行查找line字符串中包不包含全局变量pattern的字符串,如果包含,则返回pattern字符串在line字符串中的位置,如果不包含,则返回-1
    fprintf(stdout, "%s", line); //如果以上都成立,则打印此行
    found++;
    }
    return found;
    }

    int glefc(char s[], int lim) //声明glefc函数,这个函数返回一个int类型的值,接受两个值,第一char类型,第二个是int类型
    {
    int c, i = 0;
    while (--lim > 0 && (c = getchar()) != EOF && c != '\n')
    s[i++] = c;
    if (c == '\n')
    s[i++] = c;
    s[i] = '\0';
    return i;
    }

    int strindex(char s[], char t[]) //strindex函数返回一个int类型的值 接受两个char类型的值
    { //char s和char t只在当前函数中使用,别的函数中也可再次声明名字叫t或者s的变量
    int i, j, k;
    for (i = 0; s[i] != '\0'; i++) {
    for (j = i, k = 0; t[k] != '\0' && s[j] == t[k]; j++,k++)
    ;
    if (k > 0 && t[k] == '\0')
    return i;
    }
    return -1;
    }
    [root@CWG hc]# ./gep //执行结果如下
    culd
    culd
    ddddddddddculdddddddddddd
    ddddddddddculdddddddddddd
    bbbbbbbb
    eeeeeeee
    这个就是返回int类型值的函数,和函数的基本调用方法

    ################
    迷途小运维学习C程序语言笔记
    作者:john
    转载请注明出处

    点赞 评论 复制链接分享