C语言程序设计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言程序设计相关的知识,希望对你有一定的参考价值。
用C语言帮忙完成图片所要求的程序,急求!!万分感谢
急求!!!明天中午前,感谢各位大神了
#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语言程序设计的主要内容,如果未能解决你的问题,请参考以下文章