C语言实验题 求大神指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言实验题 求大神指点相关的知识,希望对你有一定的参考价值。

有10个学生,每个学生的数据包括学号、姓名、4门课成绩、总成绩和平均成绩。 从键盘输入10个学生的数据(包括学号、姓名及4门课的成绩),要
求打印出美味学生的学号、姓名、4门课的成绩、总成绩和平均成绩,最后再打印出最高分的学生数据(包括学号、姓名、4门课的成绩、总成绩和平均成绩)以及
四门课的平均成绩。具体要求:
(1)根据学生信息定义一个结构体类型,在定义一个该结构体类型的数组。
(2)定义一个input函数用于从键盘上输入10个学生的数据。
(3)定义一个average函数用于找出求每个学生总成绩、平均成绩、和所有学生的总平均成绩。
(4)定义一个maximun函数用于找出最高分的学生的数据。
(5)在主函数中输出每位学生的学号、姓名、4门课的成绩、总成绩和平均成绩,最后再输出最高分的学生的数据和总平均成绩。
大神帮下忙 最好有流程图

// 注意:你所指的最高学分,是指总成绩还是单科?下面我是按单科最高学分来求的。
#include<stdio.h>
#define  STU_NUMBER 2 // 假设只有2个学生(你可以把2改为10)
#define  SCORE_NUMBER 4


struct StudentInfo

int stu_id;
char name[10];
float score[4];
float average;
float score_sum;
;


// 函数原型声明
void input(StudentInfo *,int ),average(StudentInfo *,int );
int MaxScore(StudentInfo *,int);

int main()

struct StudentInfo stu[STU_NUMBER];
input(&stu[0],STU_NUMBER);
average(&stu[0],STU_NUMBER);
    
    /********输出学生信息*************/
    int i;
printf("学号\\t姓名\\t课程1\\t课程2\\t课程3\\t课程4\\t总成绩\\t平均成绩\\n");
for (i=0;i<STU_NUMBER;i++)

printf("%d\\t%s\\t%3.1f\\t%3.1f\\t%3.1f\\t%3.1f\\t%5.2f\\t%5.2f\\n",
stu[i].stu_id,stu[i].name,stu[i].score[0],
stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score_sum,
stu[i].average);

    printf("\\n\\n\\t\\t最高学分的学生:\\n");
i=MaxScore(&stu[0],STU_NUMBER);
printf("学号\\t姓名\\t课程1\\t课程2\\t课程3\\t课程4\\t总成绩\\t平均成绩\\n");
printf("%d\\t%s\\t%3.1f\\t%3.1f\\t%3.1f\\t%3.1f\\t%5.2f\\t\\%5.2f\\n",
stu[i].stu_id,stu[i].name,stu[i].score[0],
stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score_sum,
stu[i].average);
return 1;


void input(StudentInfo *si,int stu_number) // 输入学生数据

int i,j;
i=j=0;

while (i<stu_number)

printf("请输入学生学号:");
scanf("%d",&si->stu_id);
printf("请输入学生姓名:");
scanf("%s",si->name);
printf("请输入学生四门课成绩:");
fflush(stdin);
for (j=0;j<SCORE_NUMBER;j++)

           scanf("%f",&si->score[j]);


i++;
si++;
fflush(stdin);


void average(StudentInfo *si,int stu_number) // 统计学生总成绩\\平均成绩

   int i,j;
   i=j=0;
   

   while (i<stu_number)
   
   si->score_sum=0;
   for (j=0;j<SCORE_NUMBER;j++)
   
  si->score_sum+=si->score[j]; // 求总成绩
   
       si->average=si->score_sum/SCORE_NUMBER; // 求平均成绩
   i++;
   si++;
   


int  MaxScore(StudentInfo *si,int stu_number) // 找出最高学分的学生

int IsMax; // 假设零分为最大值
int i,j,k; // k用于保存最高学分的学生
    IsMax=i=j=k=0;
    
while (i<stu_number)

for (j=0;j<SCORE_NUMBER;j++)

if(si->score[j]>IsMax)

IsMax=si->score[j]; // 记住当前最高分
k=i;             // 记住当前最高学分的学生的下标


i++;
si++;

return k; // 返回最高学分的学生

 

参考技术A

随便写了写,看是否正确

// student.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

/*
有10个学生,每个学生的数据包括学号、姓名、4门课成绩、总成绩和平均成绩。 从键盘输入10个学生的数据(包括学号、姓名及4门课的成绩),要
求打印出美味学生的学号、姓名、4门课的成绩、总成绩和平均成绩,最后再打印出最高分的学生数据(包括学号、姓名、4门课的成绩、总成绩和平均成绩)以及
四门课的平均成绩。具体要求:
(1)根据学生信息定义一个结构体类型,在定义一个该结构体类型的数组。
(2)定义一个input函数用于从键盘上输入10个学生的数据。
(3)定义一个average函数用于找出求每个学生总成绩、平均成绩、和所有学生的总平均成绩。
(4)定义一个maximun函数用于找出最高分的学生的数据。
(5)在主函数中输出每位学生的学号、姓名、4门课的成绩、总成绩和平均成绩,最后再输出最高分的学生的数据和总平均成绩。
*/

struct  student 

public:
char sid[10];
char name[50];
float grades[4];
float sumG;
float avgG;
;
student students[10];
void input()

for (int i =0;i<10;i++)

printf("请输入第 %d 个学生信息(学号,姓名,成绩1,成绩2,成绩3,成绩4)......\\n",i+1);
/*测试代码
sprintf(students[i].sid, "%d", i);
sprintf(students[i].name, "test%d", i);

students[i].grades[0] = 100-i;
students[i].grades[1]= 100-i;
students[i].grades[2]= 100-i;
students[i].grades[3]= 100-i;
*/
scanf("%s,%s,%f,%f,%f,%f",
&students[i].sid,
&students[i].name,
&students[i].grades[0],
&students[i].grades[1],
&students[i].grades[2],
&students[i].grades[3]);





void average(float & sumg,float & avgg)

sumg = 0;
avgg = 0;
for (int i = 0;i<10;i++)

students[i].sumG = students[i].grades[0]+
students[i].grades[1]+
students[i].grades[2]+
students[i].grades[3];
students[i].avgG = students[i].sumG / 4;
sumg += students[i].sumG;


avgg = sumg /40;

void output()

printf("%10s%10s%10s%10s%10s%10s%10s%10s\\n","学号","姓名","成绩1","成绩2","成绩3","成绩4","总成绩","平均成绩");
for (int i = 0;i<10;i++)


printf("%s,%s,%f,%f,%f,%f,%f,%f\\n",
students[i].sid,
students[i].name,
students[i].grades[0],
students[i].grades[1],
students[i].grades[2],
students[i].grades[3],
students[i].sumG,
students[i].avgG);



int maximun()

int num = 0; //第1个学生的成绩
for (int i = 1;i<10;i++)

if (students[i].sumG > students[num].sumG)
num = i;


return num;



int _tmain(int argc, _TCHAR* argv[])

input();
float a,b;
average(a,b);

output();
printf("最高分学生信息\\n");
int i = maximun();
printf("%10s%10s%10s%10s%10s%10s%10s%10s\\n","学号","姓名","成绩1","成绩2","成绩3","成绩4","总成绩","平均成绩");
printf("%s,%s,%f,%f,%f,%f,%f,%f\\n",
students[i].sid,
students[i].name,
students[i].grades[0],
students[i].grades[1],
students[i].grades[2],
students[i].grades[3],
students[i].sumG,
students[i].avgG);

printf("总成绩 %f     总平均成绩 %f\\n",a,b);
getchar();
return 0;

参考技术B

占座占座占座

#include <stdio.h>
#include <string.h>

struct student

    int  id;
    char name[32];
    int score1;
    int score2;
    int score3;
    int score4;
    int sumscore;
    double avgscore;
;

struct student stu[10] = ;

void input()

    int i;
    char chTemp;
    char sTemp[64+1];
    for( i=0; i<10; i++ )
    
        printf( "按如下格式输入第 %d 个学生的数据: 学号 姓名 分数1 分数2 分数3 分数4\\n", i+1 );
        memset( sTemp, 0x00, sizeof(sTemp) );
        fgets( sTemp, 64, stdin );
        if ( strlen( sTemp) == 0 )
        
            printf( "输入为空,重新输入!\\n" );
            i--;
        
        sscanf( sTemp, "%d %s %d %d %d %d", &stu[i].id, stu[i].name, 
                &stu[i].score1, &stu[i].score2, &stu[i].score3, &stu[i].score4 );
    


void average()

    int i;
    for( i=0; i<10; i++ )
    
        stu[i].sumscore = stu[i].score1 + stu[i].score2 + stu[i].score3 + stu[i].score4;
        stu[i].avgscore = stu[i].sumscore / 4.0;
    


int maximun() /*** 返回最高分数学生在结构体中的index **/

    int i = 0;
    int max = 0;
    for( i=1; i<10; i++ )
    
        max = stu[i-1].sumscore > stu[i].sumscore ? i-1 : max;
     
    return max;


int main()

    int max;
    int i;
    input();
    average();
    max = maximun();
    printf( "学号     姓名  分数1  分数2  分数3  分数4   总分   平均分\\n" );
    
    for( i=0; i<10; i++ )
    
        printf( "%4d %8s %4d   %4d   %4d   %4d   %4d    %.2f\\n",
            stu[i].id, stu[i].name,
            stu[i].score1, stu[i].score2, stu[i].score3, stu[i].score4,
            stu[i].sumscore, stu[i].avgscore );
    
    printf( "最高分学生信息:\\n" );
    printf( "%4d %8s %4d   %4d   %4d   %4d   %4d    %.2f\\n",
            stu[max].id, stu[max].name,
            stu[max].score1, stu[max].score2, stu[max].score3, stu[max].score4,
            stu[max].sumscore, stu[max].avgscore );

参考技术C #include<stdio.h>
typedef struct student

char id[10];
char name[20];
float math;
float english;
float chinese;
float pe;
float sum;
float avg;
stu;
void input(stu st[])

int i=0;
printf("please input 10 students information:\n");
printf("%15s%10s%8s%8s%8s%8s%8s%8s\n","id","name","math","chinese","english","pe","sum","average");
for(i=0; i<10; i++)

printf("student[%d]:",i+1);
scanf("%s%s%f%f%f%f",st[i].id,st[i].name,&st[i].math,&st[i].english,&st[i].chinese,&st[i].pe);


float average(stu st[],int n)

int i=0;
float avg_all=0.0;
if(n<=0)
return -1;
for(i=0; i<n; i++)

st[i].sum = st[i].math+st[i].english+st[i].chinese+st[i].pe;
st[i].avg = st[i].sum/4;
avg_all += st[i].avg;

return avg_all/10;

void maximum(stu st[],int n)

int i=0;
float max=st[0].sum;
if(n<=0)
return;
for(i=1; i<n; i++)

if(st[i].sum > max)

max = st[i].sum;


for(i=0; i<n; i++)

if(st[i].sum == max)

printf("student[%d]:\n",i+1);
printf("%10s%10s%8s%8s%8s%8s%8s%8s\n","id","name","math","chinese","english","pe","sum","average");
printf("%10s%10s%8.1f%8.1f%8.1f%8.1f%8.1f%8.1f\n",st[i].id,st[i].name,st[i].math,st[i].chinese,st[i].english,st[i].pe,st[i].sum,st[i].avg);



int main()

int i=0;
float avg_all=0.0;
stu st[10];
input(st);
avg_all = average(st,10);
printf("all the students' information is :\n");
printf("%10s%10s%8s%8s%8s%8s%8s%8s\n","id","name","math","chinese","english","pe","sum","average");
for(i=0; i<10; i++)

printf("%10s%10s%8.1f%8.1f%8.1f%8.1f%8.1f%8.1f\n",st[i].id,st[i].name,st[i].math,st[i].chinese,st[i].english,st[i].pe,st[i].sum,st[i].avg);

printf("the average of all students is: %4.1f\n",avg_all);
printf("the max score student :\n");
maximum(st,10);
return 0;


百分百正确,亲测本回答被提问者和网友采纳
参考技术D 100分啊,马上给你写..

Javaweb题目,求大神解答指点

请思考如何用过滤器Filter实现禁止浏览器缓存页面?简述基本思路、提供过滤器doFilter代码、以及相应配置脚本。

在 Java Web 开发中,你可以使用过滤器 (Filter) 来禁止浏览器缓存页面。这里是基本的实现步骤:

    创建一个新的过滤器类,实现 javax.servlet.Filter 接口。这个类应该包含一个实现了 doFilter 方法的代码块,该方法将在过滤器生效时被调用。

    在 doFilter 方法中,你可以使用 HttpServletResponse 对象的 setHeader 方法来设置一些响应头信息,以禁止浏览器缓存页面。例如,你可以使用以下代码来设置 "Cache-Control" 响应头:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

    在你的 Web 应用的部署描述符 (web.xml) 中,使用 <filter> 和 <filter-mapping> 元素配置过滤器。这样,你就可以在所有请求到达指定的资源之前,先将其过滤一遍。

    下面是一个示例过滤器的完整代码,它实现了上述步骤:

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletResponse;

public class NoCacheFilter implements Filter

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException

HttpServletResponse httpResponse = (HttpServletResponse) response;

httpResponse.

参考技术A

在 Java Web 中,可以使用过滤器 Filter 来禁止浏览器缓存页面。

基本思路:

    实现一个过滤器类,并实现 javax.servlet.Filter 接口。

    在过滤器的 doFilter() 方法中,设置响应头信息,以禁止浏览器缓存页面。

过滤器 doFilter 代码示例:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException

HttpServletResponse httpResponse = (HttpServletResponse) response;

// 设置响应头信息,禁止浏览器缓存页面

httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

httpResponse.setHeader("Pragma", "no-cache");

httpResponse.setDateHeader("Expires", 0);

chain.doFilter(request, response);

相应配置脚本:

在 web.xml 文件中,使用如下脚本配置过滤器:

<filter>

<filter-name>noCacheFilter</filter-name>

<filter-class>com.example.NoCacheFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>noCacheFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

这样,当浏览器请求页面时,过滤器就会自动设置响应头信息,以禁止浏览器缓存页面。

参考技术B 禁止浏览器缓存页面的基本思路是在过滤器Filter中添加响应头,以便在服务器端覆盖浏览器端缓存。过滤器doFilter代码如下:

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
chain.doFilter(request, response);


相应配置脚本为:
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.example.CacheFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

以上是关于C语言实验题 求大神指点的主要内容,如果未能解决你的问题,请参考以下文章

求c语言程序设计第二版(苏小红)课后第五章的本章实验题答案

VS2015编写C语言时显示stdio.h文件出错,求大神指点迷津

C语言结构体编程题,求大神!

C语言程序编程题,求大神帮帮忙

一道C语言编程题,求大神们帮帮忙,谢谢了。。

数据结构C语言版 图的遍历 DFS和BFS算法,用邻接矩阵储存 急阿在线等 求大神指点