什么是C语言?C语言的简介。
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
语言特点:C是中级语言/C是结构式语言/C语言功能齐全/C语言适用范围大/简洁紧凑、灵活方便/运算符丰富/数据类型丰富/C是结构式语言/语法限制不太严格,程序设计自由度大/适用范围大,可移植性好。
#include <stdioh>
#include <stdlibh>
#include <stringh>
#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 = "studenttxt";
const char grade_file = "gradetxt";
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) / 30;
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);
}
}
首先,你要先明白,这个程序有两部分组成:函数fun()和主函数main();main()调用fun()函数实现算法运算。
首先介绍主函数main():主要负责打印输出结果,for循环由k控制,连着调用fun()函数两次,并打印。
fun()函数:实现算法运算。
第一次调用:x == 1(参数a的值), z == 4(在z++后), y==1(在y++后),所以此时返回值(x + y + z) = 6
第二次调用:x == 1(参数a的值), z == 5(在第一次z++后,本次有执行了一次z++), y==2(在第一次y++后,本次有执行了一次y++),所以此时返回值(x + y + z) = 8
直接运行了一次你的代码,输出结果如下:
注意事项以及建议:
1、这个道题目我觉得是对static的考察。
2、static 修改的变量在整个程序生命周期内只会被定义一次,并且在程序生命周期结束前,其上次的运行结果会被保存,供下次使用。
3、在fun()函数中, y,z是static类型。
如果以上问题对你有帮助,请采纳一下,谢谢。
以上就是关于什么是c语言程序设计全部的内容,包括:什么是c语言程序设计、C语言程序设计、C语言程序设计求详解过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)