AI Studio下C语言编程:一道简单的C语言作业题目
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AI Studio下C语言编程:一道简单的C语言作业题目相关的知识,希望对你有一定的参考价值。
简 介: 本文测试了在 AI Studio中进行C语言编程的过程。使用与 搭建AI Studio 中Python开发环境 同样的 “AIS” python文件,可以在Windows 与AI Studio之间进行C,Python文件传输、编写与运行。
关键词
: AI,Studio
§01 问题来源
我是名大二的学生,这边有问题,有个简单编程作业想问下你,价钱好说 :
一、题目要求
1、成绩处理
▲ 图1.1 作业要求
▲ 图1.2 作业要求
2、结果要求
c语言,文件没啥要求,有程序代码就行了。
类似于这种:
▲ 图1.1.3 作业结果要求
3、提交时间
明天就要交了,麻烦你了
§02 作业分析
一、程序要求
1、编程语言
编程语言是C语言。可以看到这是一个大学一年级 C语言课程的作业题目;
2、编程环境
前面同学显示的变换环境为 VS。
因此只要是基本的C语言,他都可以进行调试。
3、程序输入、输出
(1)程序输入
程序中没有给出学生的成绩表格的要求。因此可以采用最简单的 CSV 格式来表示学生的成绩。
- 每一行表示一个学生的信息。有两个字段:学号,成绩;
- 学号采用字符串:“202109nnn”,其中nnn从 101 ~ 299,表示由199 位同学;
- 成绩采用浮点数: nn.m: 采用平均值为85,方差为30的正态分布;
(2)程序的输出
可以看到只需要屏幕输出即可。
二、产生学生成绩单CSV文件
使用AI Studio的终端环境,通过Python语言产生。由于这只是用于测试主程序,所以使用Python语言产生。
1、Python代码
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# SCORESVS.PY -- by Dr. ZhuoQing 2021-12-08
#
# Note:
#============================================================
from headm import *
from numpy import *
outfilename = 'score.txt'
student_number = 199
score_average = 85
score_variance = 35
score = random.normal(score_average,
score_variance,
student_number)
score = [s if s < 100 else 99 for s in score]
score = [s if s > 0 else 0 for s in score]
score = [floor(s*10)/10 for s in score]
with open(outfilename, 'w') as f:
for i in range(student_number):
student_id = '202109%03d'%(101+i)
f.write('%s,%3.1f\\n'%(student_id, score[i]))
printf(score)
plt.hist(score)
plt.xlabel("分数段")
plt.ylabel("人数")
plt.title('成绩分布')
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : SCORESVS.PY
#============================================================
2、结果:
(1)成绩数值
[99.0, 13.5, 99.0, 45.7, 99.0, 88.5, 99.0, 99.0, 93.1, 99.0, 66.9, 99.0, 99.0, 35.2, 95.3, 95.5, 92.9, 0.0, 74.8, 99.0, 99.0, 88.6, 76.4, 99.0, 99.0, 89.9, 99.0, 78.5, 40.2, 99.0, 77.2, 40.4, 99.0, 69.4, 50.1, 74.2, 99.0, 99.0, 98.2, 82.3, 99.0, 32.1, 99.0, 92.5, 99.0, 55.0, 99.0, 75.5, 74.2, 24.4, 71.7, 0.0, 47.3, 34.7, 96.2, 99.0, 93.6, 52.3, 99.0, 87.9, 87.7, 96.3, 29.1, 99.0, 99.0, 56.4, 58.3, 99.0, 51.6, 27.0, 54.7, 99.0, 36.6, 97.0, 34.4, 29.4, 83.5, 27.9, 99.0, 99.0, 99.0, 55.2, 96.0, 45.7, 97.8, 3.8, 22.6, 89.0, 90.8, 99.0, 99.0, 99.0, 92.9, 99.0, 64.6, 99.0, 75.3, 60.8, 93.2, 40.2, 99.0, 89.2, 56.4, 93.7, 80.1, 87.9, 85.0, 99.0, 72.6, 69.6, 49.7, 80.8, 55.9, 48.3, 67.3, 22.7, 41.6, 45.4, 99.0, 99.0, 72.3, 99.0, 72.5, 49.5, 82.5, 99.0, 92.2, 49.3, 79.1, 99.0, 44.9, 99.0, 99.0, 88.0, 47.4, 99.0, 57.1, 50.6, 99.0, 49.3, 68.7, 99.0, 99.0, 58.3, 99.0, 53.7, 93.5, 48.4, 99.0, 44.3, 15.9, 70.0, 71.2, 99.0, 65.5, 55.9, 99.0, 92.4, 99.0, 87.7, 99.9, 99.0, 81.8, 82.1, 68.2, 99.0, 71.7, 97.2, 66.8, 67.7, 98.1, 99.0, 99.0, 83.2, 99.0, 57.9, 65.2, 99.0, 99.0, 78.3, 99.0, 29.9, 69.4, 47.4, 94.3, 52.4, 67.8, 99.0, 62.4, 99.0, 81.3, 25.1, 85.7, 99.0, 99.0, 99.0, 99.0, 80.5, 75.7]
(2)成绩分布
▲ 图2.2.1 成绩分布
(3)打开score.txt中的内容
▲ 图2.2.2 成绩CSV格式
§03 C语言程序
下面编写作业所需要的C语言程序。
一、程序代码
1、C文件
/*
**==============================================================================
** SCORESTA.C: -- by Dr. ZhuoQing, 2021-12-08
**
**==============================================================================
*/
//------------------------------------------------------------------------------
#define SCORESTA_GLOBALS 1 // Define the global variables
#include "SCORESTA.H"
#include "stdio.h"
#include "string.h"
//------------------------------------------------------------------------------
#define LINE_LENGTH 0x1000
#define MAX_STUDENT 0x1000
#define STUDENT_ID_LENGTH 0x20
//------------------------------------------------------------------------------
char g_szStudentID[MAX_STUDENT][STUDENT_ID_LENGTH];
float g_fStudentScore[MAX_STUDENT];
int g_nStudentNumber;
int SegmentInfor(float fBegin, float fEnd) // Show every segment student infor
int nNumber = 0;
int i;
for(i = 0; i < g_nStudentNumber; i ++)
if(g_fStudentScore[i] >= fBegin && g_fStudentScore[i] < fEnd)
nNumber ++;
if(fBegin >= 60)
printf("%d - %d 分数的人数为:%d。他们的学号、成绩为:\\n", (int)fBegin, (int)fEnd, nNumber);
else
printf("不及格的人数为:%d。他们的学号、成绩为:\\n", nNumber);
nNumber = 0;
for(i = 0; i < g_nStudentNumber; i ++)
if(g_fStudentScore[i] >= fBegin && g_fStudentScore[i] < fEnd)
nNumber ++;
printf("%02d. %s, %3.1f\\n", nNumber, g_szStudentID[i], g_fStudentScore[i]);
printf("\\n");
return 0;
//------------------------------------------------------------------------------
int main(void)
FILE * pInputFile;
char szLine[LINE_LENGTH];
int nStudentNumber;
//--------------------------------------------------------------------------
// Open the score file.
//
pInputFile = fopen(SCORE_FILE_NAME, 一道简单的C语言题。有关double的溢出