C语言程序设计

Posted

tags:

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

用C语言帮忙完成图片所要求的程序,急求!!万分感谢
急求!!!明天中午前,感谢各位大神了

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

#define MAX_NUM 50
#define MAX_LINE 256

struct student 
    char name[10];
    float math;
    float chinese;
    float eng;
    float aver;
    char  grade;
;

const char * student_file = "student.txt";
const char * grade_file   = "grade.txt";

int init(struct student * s, int n);
int fun(struct student s[], int n);
void sort(struct student * s, int n);
void display(struct student * s, int n);
void save_student(struct student * s, int n, const char * file);
void load_student(const char * file);

int main(int argc, char *argv[])

    int num = 0;
    struct student st[MAX_NUM];
    num = init(st, MAX_NUM);
    printf("\\n等级为D的人数: %d\\n", fun(st, num));
    save_student(st, num, student_file);
    sort(st, num);
    save_student(st, num, grade_file);
    display(st, num);

    printf("\\n所有学生信息\\n");
    load_student(student_file);
    printf("\\n排序后的学生信息\\n");
    load_student(grade_file);


    return 0;


/* 初始化 */
int init(struct student * s, int n)

    int num = 0, i = 0;
    if (0 == s || 0 >= n || MAX_NUM < n)
        return 0;
    printf("请输入学生数量[不大于50]: ");
    fflush(stdout);
    scanf("%d", &num);
    while (0 >= num || n < num)
    
        fflush(stdin);
        printf("无效的参数,请输入学生数量[不大于50]: ");
        fflush(stdout);
        scanf("%d", &num);
    

    for (i = 0; i < num; ++i)
    
        printf("请输入第%d个学生的信息: ", i + 1);
        fflush(stdout);
        scanf("%9s %f %f %f", s[i].name, &s[i].math, &s[i].chinese, &s[i].eng);
        fflush(stdin);
    

    return num;


/* 计算平均成绩并统计等级为D的人数 */
int fun(struct student s[], int n)

    int i = 0, cnt = 0;
    if (0 == s || 0 >= n || MAX_NUM < n)
        return 0;

    for (i = 0; i < n; ++i)
    
        s[i].aver = (s[i].math + s[i].chinese + s[i].eng) / 3.0;
        if (70 <= s[i].aver && 85 > s[i].aver)
            s[i].grade = 'B';
        else if (60 <= s[i].aver && 70 > s[i].aver)
            s[i].grade = 'C';
        else if (60 > s[i].aver)
            s[i].grade = 'D';
        else
            s[i].grade = 'A';

        if ('D' == s[i].grade)
            ++cnt;
    

    return cnt;


/* 降序排列 */
void sort(struct student * s, int n)

    int i = 0, j = 0;
    struct student tmp;
    if (0 == s || 0 >= n || MAX_NUM < n)
        return 0;

    for (i = 0; i < n - 1; ++i)
    
        for (j = 0; j < n - 1 - i; ++j)
        
            if (s[j].aver < s[j + 1].aver)
            
                tmp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = tmp;
            
        
    


void display(struct student * s, int n)

    int i = 0;
    if (0 == s || 0 >= n || MAX_NUM < n)
        return 0;

    printf("所有学生的信息如下: \\n");
    for (i = 0; i != n; ++i)
    
        printf("%d. name[%s] math[%.1f] chinese[%.1f] eng[%.1f] aver[%.1f] grade[%c]\\n",
               i + 1, s[i].name, s[i].math, s[i].chinese, s[i].eng, s[i].aver, s[i].grade);
    


/* 保存学生信息到指定文件 */
void save_student(struct student * s, int n, const char * file)

    int i = 0;
    FILE * fp = 0;
    char buf[MAX_LINE] = 0;
    if (0 == s || 0 >= n || MAX_NUM < n || 0 == file)
        return 0;

    if (fp = fopen(file, "w"))
    
        for (i = 0; i != n; ++i)
        
            sprintf(buf, "%s %.1f %.1f %.1f %.1f %c\\r\\n",
                    s[i].name, s[i].math, s[i].chinese, s[i].eng, s[i].aver, s[i].grade);
            fwrite(buf, 1, strlen(buf), fp);
            memset(buf, 0x00, MAX_LINE);
        

        fclose(fp);
    


/* 加载指定文件中的信息 */
void load_student(const char * file)

    char buf[MAX_LINE] = 0;
    FILE * fp = 0;
    if (0 == file)
        return ;

    if (fp = fopen(file, "r"))
    
        while (fgets(buf, MAX_LINE, fp))
            printf("%s", buf);

        fclose(fp);
    

参考技术A 回答

算法结构:一、顺序结构、选择结构、循环结构;二、循环结构又分为while型、until型、for循环结构;程序流程图;结构化程序设计方法:(1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码。数据类型:常量:常量包括字面常量、直接常量和符号常量;变量:C语言规定标志符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或者下划线;必须压迫先定义后使用;每一个变量被定义以确定类型后,在编译时就能为其分配相应的存储单元;整数类型:整数常量有十进制、八进制和十六进制;“%d”

整形变量:数据在内存中存放形式是以二进制形式存放;有int型、short int型和long int型,无符号整型变量的范围是-32768—32767,有符号型为0~65535.通常把long定义为32位,把short定义为16位,int可以是32位也可以为16位,这都主要取决于机器字长。实型常量的表示方法:(1)十进制,0.0;(2)指数形式,123e3实型变量:实数型数据在内存中的存放形式,一般在内存中占4个字节,分成整数部分和小数部分存放。实型变量分为float型、double型long double型。实型数据会存在舍入误差。实型常量的类型:C编译系统将实型常量作为双精度来处理。字符型数组:(一)字符常量:转义字符(\\n——换行,\\t——tab,\\r——回车,\\f——换页,\\b——退格,\\ddd——1到3位8进制的数代表的字符)(二)字符变量:字符数据存储形式实际是以ASCII码存储。“%c”字符串常量:双撇号括起来的一系列字符序列。C的运算符有以下几种:1、算术运算符(+ - * / %)结合方向自左向右2、关系运算符(> == >=3、逻辑运算符(! && ||)4、位运算符(> ~ | ^ &)5、赋值运算符(=及符号扩展赋值运算符)6、条件运算符(? : )7、逗号运算符( , )8、指针运算符(* &)9、求字节运算符(sizeof)10、强制类型转换运算符((类型))11、分量运算符( . ->)12、下标运算符([])13、其他控制语句:完成一定的控制功能。1、if()~else~2、for()~3、while()~4、do~while()5、continue6、break7、switch8、goto9、return字符数据的输入输出:1、putchar()输入字符变量2、getchar()只能接受一个字符格式输入输出:1、printf(%d—整型,%c—字符型,%ld,%md,%o,%u,%s,%-m.nf,%e,%g)2、scanf(格式控制,地址列表)数组一维数组的定义:类型说明符 数组名【常量表达式】;先定义后引用;一维数组初始化时可以只对一部分元素初始化,在对全部数组元素初始

提问

软件工程2020级某班一共有L人,2020-2021学年第一学期有M门课考试。为了对软件工程2020级某班班级学生学习效果进行分析,需要对学生的考试成绩进行处理,分别用函数实现下列功能。(L和M分别用scanf函数输入,a[0][0]可以代表第1位学生的第1门课成绩,所有要求均在一个程序内实现。)

1.输入每个学生每门课的分数,计算每个学生的平均分。

2.计算每门课的平均分。

3.找出每门课程的最高分和最低分所对应的学生。

4.计算平均分方差:

   

第三问

回答

#include void main() int a[200],sum,max,min,i,n; printf("请输入成绩的个数:"); scanf("%d",&n); for(i=0;i

以上是关于C语言程序设计的主要内容,如果未能解决你的问题,请参考以下文章

c语言程序设计窗体

C语言程序设计:现代方法:第2版的目录

C语言程序设计

C语言程序代码的125个建议

C语言的发展及其特点

vb语言和c语言有啥区别?