linux系统下用C语言实现小学算术运算测试程序

合集下载

总结在Linux终端中进行算术运算的6种方式

总结在Linux终端中进行算术运算的6种方式
2、 使 用 let命 令
使用let命令后,可以直接跟表达式,不用加双括号。
let a=1+2 echo $a let b=$a*3 echo $b let c=$b/4 echo $c
3、 使 用 expr命 令
类似于let命令,expr命令除了计算表达式,还将提供的表达式的值打印到标准输出。以及使用expr进行比较,增加变量值和查找字符串长度。
-l 用于精确到小数(默认小数点也非常多,这里只介绍其用于算数运算。
awk 'BEGIN { a = 10; b = 3; print "(a + b) = ", (a + b) }' awk 'BEGIN { a = 10; b = 3; print "(a - b) = ", (a - b) }' awk 'BEGIN { a = 10; b = 3; print "(a * b) = ", (a * b) }' awk 'BEGIN { a = 10; b = 3; print "(a / b) = ", (a / b) }' awk 'BEGIN { a = 10; b = 3; print "(a % b) = ", (a % b) }'
expr 3 + 5 expr 15 % 3 expr 5 \* 3 expr 5 - 3 expr 20 / 4 NUM=$(( 1 + 2)) echo $NUM NUM=$(expr $NUM + 2) echo $NUM
需要注意的是使用expr命令时,数字与运算符之间要用空格隔开。并且”*“需用转义符“\”标注。 expr 还可以用来比较大小,当表达式求值为false时,expr将打印值0,否则打印1。

linux系统下用C语言实现小学算术运算测试程序

linux系统下用C语言实现小学算术运算测试程序

在linux系统下用C语言实现小学算术运算测试程序XX大学软件学院小学算术运算测试程序1、题目与要求我计划编写的题目是:小学算术运算测试程序。

制作一个可供小学数学运算的程序:10 以内加减法,能根据输入题数出题,判断题是否正确,最后计算分数。

并用 make 工程管理器编译,编写 makefile 文件。

2、内容及主要任务小学算术运算测试程序:要求完成 10 以内的加减运算。

能根据用户输入的想要练习的题目数自行出题。

用户输入答案后可以判断正误,并能给出算对及算错的题目数,最后计算出分数。

同时,对于用户算错的题目会发出报警声,提示用户注意,同时给出正确结果。

做完一次测试后用户可决定是否继续进行下一次测试。

3、题目设计意义通过本课题的毕业设计,熟悉了关于 linux 下 C 语言的系统软件程序设计,可以比较深入的了解和掌握 WINSOCK 控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法。

并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。

随着计算机网络技术的快速发展,人们的交流方式越来越多,传统的通信方式在速度和可靠性方面已经很难满足人们的需要,即时通信系统已成为人们的新宠。

同时,即时通信系统对现代企业也有着重大意义,它为诸企业开拓了网络应用的新领域。

自从它诞生以来,以实时交互、资费低廉等优点,受到广大个人用户的喜爱,已经成为网络生活中不可或缺的一部分。

本着学以致用的原则,本人开发了这套多点聊天系统,以满足网络用户的通讯需求。

该系统具有操作简单、界面友好、功能专一等特点。

本报告就系统的开发过程做了详细的介绍,并对系统的原理、总体设计等方面做了深入细致的讨论。

4、主要内容本程序共分为五个模块:出题模块、答题模块、检查计分模块、评分模块和评价模块;下面分别对这五个模块的算法做一下介绍。

(1)出题模块:一个答题系统自然而然首先就是要有题目且能够根据条件出题;在本模块中,首先设了一个含有 15 个指针的指针数组,指针数组里的每个指针都指向了相应题号的 1 选择题,这样就实现了对题目的储存;然后用 scanf 函数来实现从键盘上输入题号,用 if 语句控制输题的范围;题号不在 1--15 的范围内就提示选题出错;在输入题号的过程中输入相同题号是在所难免的;但是在答题系统中输入相同题号显然没有意义,所以另外设了一个静态一维数组来储存已输过的题号;且数组的第一个元素初始化为 0,然后每输入一个题号就赋给这个数组,同时用 for 语句来使当前的题号一一与储存在一维数组中已输过的题号进行比较,如题号有相同,就提示重答,重答的功能是通过对出题模块函数的递归调用来实现的,如题号没有相同,就通过输入的题号借助指针数组里的指针找到与题号对应的选择题, puts 函数来实现对选择题的输出;用最后用 return 语句将其他模块返回来每道题的小分数返回到主函数中(在主函数中调用出题模块函数)。

实验1:Linux下C语言编程实践

实验1:Linux下C语言编程实践

实验1 linux c语言编程实践一、实验目的1.掌握Linux环境下C程序的编辑、编译、运行等操作;2.掌握多文件的编译及连接;3.初步掌握gdb调试方法;二、实验任务与要求1.在Linux环境下C程序的编辑、编译与运行;2.多文件的编译及连接;3.应用gdb调试程序;三、实验工具与准备计算机PC机,Linux Ubuntu操作系统四、实验步骤与操作指导1.调试下列程序。

程序通过创建一个小型函数库,它包含两个函数,然后在一个示例程序中调用其中一个函数。

这两个函数分别是pro1和pro2。

按下面步骤生成函数库及测试函数库。

步骤1 为两个函数分别创建各自的源文件(将它们分别命名为pro1.c和pro2.c)。

[root@localhost root]# vi pro1.c#include <sdtio.h>void pro1(int arg){printf(“hello:%d\n”,arg) ;}[root@localhost root]# vi pro2.c#include <sdtio.h>void pro2(char *arg){printf(“您好:%s\n”,arg) ;}步骤2 分别编译这两个文件,生成要包含在库文件中的目标文件。

这通过调用带有-c 选项的gcc编译器来实现,-c选项的作用是阻止编译器创建一个完整的程序,gcc将把源程序编译成目标程序,文件名为以.o结尾。

如果此时试图创建一个完整的程序将不会成功,因为还未定义main函数。

[root@localhost root]# gcc -c pro1.c pro2.c[root@localhost root]# ls *.opro1.o pro2.o步骤3 现在编写一个调用pro2函数的程序。

首先,为库文件创建一个头文件lib.h。

这个头文件将声明库文件中的函数,它应该被所有希望使用库文件的应用程序所包含。

小学算术运算C语言课程设计报告

小学算术运算C语言课程设计报告

C语言课程设计报告题目:小学算术运算测试设计者:XXXX专业班级:13级通信2班学号:XXXX指导教师: XXXX2014年6 月14 日河南理工大学计算机学院目录1 题目与要求………………………………………………1.1 问题提出………………………………………………………1.2 本系统涉及的知识点…………………………………………1.3 功能要求………………………………………………………2 功能设计…………………………………………………2.1 算法设计………………………………………………………2.2 部分模块流程图………………………………………………3 程序代码设计……………………………………………………4 C程序设计总结……………………………………………………5 结束语………………………………………………………………参考文献………………………………………………………………附录……………………………………………………………………1 题目与要求1.1 问题提出本人计划制作一个可供小学数学运算程序:10以内加减法,能根据输入题数出题,判断做题是否正确。

正确的给鼓励,错误的发出警报,并给出正确答案,最后计算分数。

1.2 本系统涉及的知识点循环、函数、结构1.3 功能要求1、能根据输入要测试的题目数,输出相应数目的试题。

2、能判断正误,错误的报警,并给出正确答案。

3、能计算出得分。

2 功能设计2.1 算法设计1、本程序实现的功能要求:利用for循环和switch完成的主菜单。

2、进入第一步出现如下信息:用户输入要练习的题数。

第二步:输出算术式子用户输入结果进行测试。

第三步:输出测试结果屏幕显示出本次测试的基本情况。

2.2 部分模块流程图3 程序代码设计输入模块1)函数原形:switch(op)2)功能:利用结构体完成10以内的加减法的出题。

3)变量及类型:int a:整形变量,存放产生10以内的随机数。

int number:整形变量,用来统计错误的题数。

用c语言编写加减乘除程序

用c语言编写加减乘除程序

用c语言编写加减乘除程序加减乘除是数学上最基本的四则运算,而用计算机语言实现这些运算则是计算机科学最基本的知识之一。

在c语言中,实现四则运算需要使用基本的算术运算符,并需要注意数据类型的匹配。

加法运算是最简单的四则运算之一,使用c语言执行加法运算的方法是,用“+”符号分隔两个运算数并用“=”符号赋值给结果变量。

例如,将两个整数相加并输出结果,代码如下:```#include <stdio.h>int main(){int a = 5, b = 7, sum;sum = a + b;printf("The sum of %d and %d is %d", a, b, sum);}```这段代码将输出结果:“The sum of 5 and 7 is 12”,其中sum 变量存储了a和b两个变量的和。

减法运算的实现方法与加法运算类似,只需将运算符改为“-”即可,例如:```#include <stdio.h>int main(){int a = 5, b = 7, diff;diff = a - b;printf("The difference between %d and %d is %d", a, b, diff);}```这段代码将输出结果:“The difference between 5 and 7 is -2”,其中diff变量存储了a和b两个变量的差。

乘法运算可以使用“*”符号来实现,例如:```#include <stdio.h>int main(){int a = 5, b = 7, prod;prod = a * b;printf("The product of %d and %d is %d", a, b, prod);return 0;```这段代码将输出结果:“The product of 5 and 7 is 35”,其中prod变量存储了a和b两个变量的积。

C课程设计:小学生测验程序

C课程设计:小学生测验程序

C课程设计:小学生测验程序面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。

功能要求:(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”。

题目3 运动会比赛计分系统要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有如下几种:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:(1)系统以菜单方式工作(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。

(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩(4)查看参赛学校信息和比赛项目信息等。

#include<stdio.h>#include<time.h>#include<stdlib.h>main(){int i,j,a,b,c,score[10],trueV alue,sum=0;srand((unsigned)time(NULL));for(i=0;i<10;i++){for(a=rand()%51,b=rand()%51;a+b>50 || a+b<0 || a-b>50 || a-b<0; a=rand()%51,b=rand()%51)/*表示运算数的范围不超过50*/c=rand()%3;for(j=0;j<3;j++){ /*表示输入答案的3次机会*/if(c==1){printf("%d:%d+%d=",i+1,a,b);trueValue=a+b;scanf("%d",&score[i]);if(score[i]!=trueValue){printf("答案错误,请重新输入.\n");score[i]=0;}else{if(j==0){score[i]=10;}else if(j==1){score[i]=7;}else{score[i]=5;}break;}}else{printf("%d:%d-%d=",i+1,a,b);trueValue=a-b;scanf("%d",&score[i]);if(score[i]!=trueValue){printf("答案错误,请重新输入.\n");score[i]=0;}else{if(j==0){score[i]=10;}else if(j==1){score[i]=7;}else{score[i]=5;}break;}}}if(score[i]==0){printf("正确答案是:%d\n",trueValue);}sum=sum+score[i];}printf("你的成绩是:%d\n",sum); if(sum>90){printf("SMART.\n");}else if(sum>=80){printf("GOOD.\n");}else if(sum>=70){printf("OK.\n");}else if(sum>=60){printf("PASS.\n");}else{printf("TRY AGAIN\n");}return 0;}。

C语言课程设计-小学生数学测试

C语言课程设计-小学生数学测试

C语言课程设计报告《c语言课程设计报告》学院:物理与电子信息学院年级专业:09级电子信息工程2班学号:姓名:安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University同组人员:指导老师:完成日期:2010年6月21日目录一、所选课题二、设计要求三、程序具体分工四、课题分析与设计五、程序介绍六、源程序代码七、程序调试八、流程图九、实验总结2C语言课程设计报告安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University 3十、参考文献一、所选课题小学生数学测试二、设计要求1、可选择题型(加,减,乘,除);2、两个数随机产生,若选择加减运算,则产生两位数,且被减数大于减数,若选择乘法运算,则产生一位数,若选择除法运算则被除数能被整除,且除数不能为零。

3、每次在输入答案后应判断对错,并给出是否继续测试的提示,若答案错误,应给出正确答案;4、最后给出评分。

三、程序具体分工乘除部分由我完成,界面和加减测试部分由徐磊完成。

四、课题分析与设计本程序是非数值计算型算法设计,我们设计出了小学生数学测试软件的基本功能,并设计了简单的界面。

本程序主要考察针对小学生该怎样设计程序:例如小学生只进行两位数之间的加减法,只进行一位数与两位数之间的乘法,除法只能是整除等。

课题要求我们设计个可以进行加、减、乘法的程序,但我们设计的这个小学生数学测试软件也不仅实现了加、减、乘法的测试,还实现了除法的测试。

五、程序介绍程序应包括<stdio.h>和<stdlib.h>两个头文件,其中存放库函数,而产生随机数的函数则存放在头文件中。

另外程序有五个函数,分别为void menu(); /*主菜单函数*/ void add() ;/*加法函数*/ void sub();/*减法函数*/ void mul();/*乘法函数*/ void div1();/*除法函数*/,还有产生随机数函数在程序中直接调用。

C语言课程设计-小学生算术四则运算测试系统

C语言课程设计-小学生算术四则运算测试系统

武汉理工大学华夏学院课程设计报告书课程名称: C语言程序设计题目:小学生算术四则运算测试系统系名:信息工程系专业班级:计算机1102班*名:**学号:***********指导教师:2011年6月24 日课程设计任务书学生姓名:徐立专业班级:计算机1102指导教师:工作单位:信息工程系设计题目:小学生算术四则运算测试系统初始条件:选择结构(if语句),变量的定义,输入.输出函数,产生随机函数,goto语句要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)主要任务:1.为小学生出题(分别进行+、-、*、÷等不同运算)2.学生做题后,进行评阅;3.学生每做一题后,评阅时给出“答题正确,很好”或“答题错误,重做”等字样;4.加、减、乘、除运算功能可以自由选择实现;5.运算数值可以控制在两位(或三位)数的四则运算范围内。

设计报告撰写格式要求:论文需要有以下必须章节:第一章需求分析(包含系统主要完成具体任务、系统模块设计)第二章系统实现(包含开发环境、模块流程图)第三章系统调试与测试第四章结束语(包含总结、心得)附录(源代码)标题编号要统一,例如:第三章编目为:3、3.1 、3.1.1 最多使用三级标题项目编号统一为先是1 然后是(1)再其次是①。

章节一级标题使用2号、黑体加粗、居中对齐,二级标题使用小2,黑体,三级标题使用小3,黑体,正文统一使用小4,宋体。

论文必须要有目录论文装订顺序:封面->任务书->正文->封底时间安排:6月20日上午布置题目、宣讲课程设计要求6月20日下午学生选题、查阅资料和参考资料6月21日---6月23日上午完成课程设计6月23日下午验收学生程序6月24日验收学生报告指导教师签字:年月日系主任签字:年月日目录1.需求分析 (4)1.1系统主要完成具体任务 (4)1.2系统模块设计 (4)1.3模块具体说明 (4)2.系统实现 (5)2.1开发环境 (5)2.2模块流程图 (5)3.系统调试与测试 (6)3.1启用界面 (6)3.2加法界面 (6)3.3减法界面 (7)3.4乘法界面 (7)3.5除法界面 (8)3.6推出界面 (8)4.结束语 (9)5.总结 (9)附件:主要源程序代码 (9)1.需求分析1.1系统主要完成具体任务编写小学算术运算测试系统,要求完成两位数的加,减,乘,除四则预算。

Linux操作系统下C语言编程入门

Linux操作系统下C语言编程入门

1)Linux程序设计入门--基础知识Linux下C语言编程基础知识前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写程序库的链接程序的调试头文件和系统求助--------------------------------------------------------------------------------1.源程序的编译在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,char **argv) { printf("Hello Linux\n"); } 要编译这个程序,我们只要在命令行下执行: gcc -o hello hello.c gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程序的输出结果了.命令行中 gcc表示我们是用gcc来编译我们的源程序,-o 选项表示我们要求编译器给我们输出的可执行文件名为hello 而hello.c是我们的源程序文件. gcc编译器有许多选项,一般来说我们只要知道其中的几个就够了. -o选项我们已经知道了,表示我们要求输出的可执行文件名. -c选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件. -g选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息. 知道了这三个选项,我们就可以编译我们自己所写的简单的源程序了,如果你想要知道更多的选项,可以查看gcc的帮助文档,那里有着许多对其它选项的详细说明.2.Makefile的编写假设我们有下面这样的一个程序,源代码如下:main.c#include "mytool1.h"#include "mytool2.h"int main(int argc,char **argv){mytool1_print("hello");mytool2_print("hello");}/* mytool1.h */#ifndef _MYTOOL_1_H#define _MYTOOL_1_Hvoid mytool1_print(char *print_str);#endif/* mytool1.c */#include "mytool1.h"void mytool1_print(char *print_str){printf("This is mytool1 print %s\n",print_str); }/* mytool2.h */#ifndef _MYTOOL_2_H#define _MYTOOL_2_Hvoid mytool2_print(char *print_str);#endif/* mytool2.c */#include "mytool2.h"void mytool2_print(char *print_str){printf("This is mytool2 print %s\n",print_str); }当然由于这个程序是很短的我们可以这样来编译 gcc -c main.c gcc -c mytool1.c gcc -c mytool2.c gcc -o main main.o mytool1.o mytool2.o 这样的话我们也可以产生main 程序,而且也不时很麻烦.但是如果我们考虑一下如果有一天我们修改了其中的一个文件(比如说mytool1.c)那么我们难道还要重新输入上面的命令?也许你会说,这个很容易解决啊,我写一个SHELL脚本,让她帮我去完成不就可以了.是的对于这个程序来说,是可以起到作用的.但是当我们把事情想的更复杂一点,如果我们的程序有几百个源程序的时候,难道也要编译器重新一个一个的去编译? 为此,聪明的程序员们想出了一个很好的工具来做这件事情,这就是make.我们只要执行一下make,就可以把上面的问题解决掉.在我们执行make之前,我们要先编写一个非常重要的文件.--Makefile.对于上面的那个程序来说,可能的一个Makefile的文件是: # 这是上面那个程序的Makefile文件main:main.o mytool1.o mytool2.ogcc -o main main.o mytool1.o mytool2.omain.o:main.c mytool1.h mytool2.hgcc -c main.cmytool1.o:mytool1.c mytool1.hgcc -c mytool1.cmytool2.o:mytool2.c mytool2.hgcc -c mytool2.c有了这个Makefile文件,不过我们什么时候修改了源程序当中的什么文件,我们只要执行 make命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其它的文件她连理都不想去理的.下面我们学习Makefile是如何编写的. 在Makefile中#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说明.一般的格式是:target: componentsTAB rule第一行表示的是依赖关系.第二行是规则. 比如说我们上面的那个Makefile文件的第二行 main:main.o mytool1.o mytool2.o 表示我们的目标(target)main的依赖对象(components)是main.o mytool1.o mytool2.o 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.就象我们的上面那个Makefile第三行所说的一样要执行gcc -o main main.o mytool1.o mytool2.o 注意规则一行中的TAB表示那里是一个TAB键Makefile有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是: $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件. 如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为: # 这是简化后的Makefilemain:main.o mytool1.o mytool2.ogcc -o $@ $^main.o:main.c mytool1.h mytool2.hgcc -c $<mytool1.o:mytool1.c mytool1.hgcc -c $<mytool2.o:mytool2.c mytool2.hgcc -c $<经过简化后我们的Makefile是简单了一点,不过人们有时候还想简单一点.这里我们学习一个Makefile的缺省规则 ..c.o: gcc -c $< 这个规则表示所有的 .o文件都是依赖于相应的.c文件的.例如mytool.o依赖于mytool.c 这样Makefile还可以变为: # 这是再一次简化后的Makefilemain:main.o mytool1.o mytool2.ogcc -o $@ $^..c.o:gcc -c $<好了,我们的Makefile 也差不多了,如果想知道更多的关于Makefile规则可以查看相应的文档.3.程序库的链接试着编译下面这个程序/* temp.c */#include <math.h>int main(int argc,char **argv){double value;printf("Value:%f\n",value);}这个程序相当简单,但是当我们用 gcc -o temp temp.c 编译时会出现下面所示的错误. /tmp/cc33Kydu.o: In function `main': /tmp/cc33Kydu.o(.text+0xe): undefined reference to `log' collect2: ld returned 1 exit status 出现这个错误是因为编译器找不到log的具体实现.虽然我们包括了正确的头文件,但是我们在编译的时候还是要连接确定的库.在Linux下,为了使用数学函数,我们必须和数学库连接,为此我们要加入 -lm 选项. gcc -o temp temp.c -lm这样才能够正确的编译.也许有人要问,前面我们用printf函数的时候怎么没有连接库呢?是这样的,对于一些常用的函数的实现,gcc编译器会自动去连接一些常用库,这样我们就没有必要自己去指定了. 有时候我们在编译程序的时候还要指定库的路径,这个时候我们要用到编译器的 -L选项指定路径.比如说我们有一个库在/home/hoyt/mylib下,这样我们编译的时候还要加上 -L/h ome/hoyt/mylib.对于一些标准库来说,我们没有必要指出路径.只要它们在其缺省库的路径下就可以了.系统的缺省库的路径/lib /usr/lib /usr/local/lib 在这三个路径下面的库,我们可以不指定路径. 还有一个问题,有时候我们使用了某个函数,但是我们不知道库的名字,这个时候怎么办呢 ?很抱歉,对于这个问题我也不知道答案,我只有一个傻办法.首先,我到标准库路径下面去找看看有没有和我用的函数相关的库,我就这样找到了线程(thread)函数的库文件(libp thread.a). 当然,如果找不到,只有一个笨方法.比如我要找sin这个函数所在的库. 就只好用 nm -o /lib/*.so|grep sin>;~/sin 命令,然后看~/sin文件,到那里面去找了. 在sin文件当中,我会找到这样的一行libm-2.1.2.so:00009fa0 W sin 这样我就知道了sin在libm-2.1.2.so库里面,我用 -lm选项就可以了(去掉前面的lib和后面的版本标志,就剩下m了所以是 -lm). 如果你知道怎么找,请赶快告诉我,我回非常感激的.谢谢!4.程序的调试我们编写的程序不太可能一次性就会成功的,在我们的程序当中,会出现许许多多我们想不到的错误,这个时候我们就要对我们的程序进行调试了. 最常用的调试软件是gdb.如果你想在图形界面下调试程序,那么你现在可以选择xxgdb.记得要在编译的时候加入 -g 选项.关于gdb的使用可以看gdb的帮助文件.由于我没有用过这个软件,所以我也不能够说出如何使用. 不过我不喜欢用gdb.跟踪一个程序是很烦的事情,我一般用在程序当中输出中间变量的值来调试程序的.当然你可以选择自己的办法,没有必要去学别人的.现在有了许多IDE环境,里面已经自己带了调试器了.你可以选择几个试一试找出自己喜欢的一个用.5.头文件和系统求助有时候我们只知道一个函数的大概形式,不记得确切的表达式,或者是不记得这函数在那个头文件进行了说明.这个时候我们可以求助系统. 比如说我们想知道fread这个函数的确切形式,我们只要执行 man fread 系统就会输出这函数的详细解释的.和这个函数所在的头文件<stdio.h>说明了. 如果我们要write这个函数的说明,当我们执行man write时,输出的结果却不是我们所需要的. 因为我们要的是w rite这个函数的说明,可是出来的却是write这个命令的说明.为了得到write的函数说明我们要用 man 2 write. 2表示我们用的write这个函数是系统调用函数,还有一个我们常用的是3表示函数是C的库函数. 记住不管什么时候,man都是我们的最好助手.------------------------------------------------------------------------好了,这一章就讲这么多了,有了这些知识我们就可以进入激动人心的Linux下的C程序探险活动.2)Linux程序设计入门--进程介绍Linux下进程的创建前言: 这篇文章是用来介绍在Linux下和进程相关的各个概念.我们将会学到: 进程的概念进程的身份进程的创建守护进程的创建----------------------------------------------------------------------------1.进程的概念Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢? 在现代的操作系统里面,都有程序和进程的概念.那么什么是程序,什么是进程呢? 通俗的讲程序是一个包含可以执行代码的文件,是一个静态的文件.而进程是一个开始执行但是还没有结束的程序的实例.就是可执行文件的具体实现. 一个程序可能有许多进程,而每一个进程又可以有许多子进程.依次循环下去,而产生子孙进程. 当程序被系统调用到内存以后,系统会给程序分配一定的资源(内存,设备等等)然后进行一系列的复杂操作,使程序变成进程以供系统调用.在系统里面只有进程没有程序,为了区分各个不同的进程,系统给每一个进程分配了一个ID(就象我们的身份证)以便识别. 为了充分的利用资源,系统还对进程区分了不同的状态.将进程分为新建,运行,阻塞,就绪和完成五个状态. 新建表示进程正在被创建,运行是进程正在运行,阻塞是进程正在等待某一个事件发生,就绪是表示系统正在等待CPU来执行命令,而完成表示进程已经结束了系统正在回收资源. 关于进程五个状态的详细解说我们可以看《操作系统》上面有详细的解说。

Linux下c语言编程实验讲义

Linux下c语言编程实验讲义

课程名:Linux下c语言编程专业:08嵌入式系统工程专试验1:Linux系统基本shell指令试验2:gcc编译器与多文件交叉包含试验3:库文件的创建与使用试验4:linux系统程序调试-行列式求值程序试验5:进程与线程程序调试试验6:TCP程序与试验7:UDP程序试验1 Linux系统基本shell指令实验一Linux系统基本文件操作试验目的:掌握Linux系统常见的文件操作指令;掌握Linux系统常见的文件形式;试验设备PC机、虚拟机、redhat9,桌面环境KDE试验原理一、Linux系统常见的文件形式(一)为便于用户识别文件形式,操作系统一般使用扩展名来标示文件类型。

文件扩展名是文件名的最后一个点之后的部分(在文件sneakers.txt中,“txt”是文件的扩展名)。

下面简单列出了一些文件扩展名和它们的含义:1. 压缩的和归档的文件.bz2 —使用bzip2 压缩的文件.gz —使用gzip 压缩的文件.tar —使用tar(tape archive,磁带归档的简写)压缩的文件,又称tar 文件.tbz —用tar 和bzip 压缩的文件.tgz —用tar 和gzip 压缩的文件.zip —使用ZIP 压缩的文件,在MS-DOS 应用程序中常见。

多数为Linux 压缩的文件使用gzip 压缩,因此Linux 文件中的.zip 归档较少见。

2. 文件格式.au —音频文件.gif —GIF 图像文件.html/.htm —HTML 文件.jpg —JPEG 图像文件.pdf —文档的电子映像;PDF 代表Portable Document Format(可移植文档格式).png —PNG 图像文件(Portable Network Graphic 的简写,可移植网络图形).ps —PostScript 文件,为打印而格式化过的文件.txt —纯ASCII 文本文件.wav —音频文件.xpm —图像文件3. 系统文件.conf —一种配置文件。

基于Linux的C语言程序设计题的动态评阅技术

基于Linux的C语言程序设计题的动态评阅技术

基于Linux的C语言程序设计题的动态评阅技术动态评阅技术是指利用自动化的方法对学生的作业进行评阅和反馈。

在传统的编程作业中,学生需要编写一段C语言代码来解决特定的问题,然后提交给老师进行评分。

而基于Linux的动态评阅技术可以通过模拟执行学生的代码,并对其进行严格的评估,从而为学生提供及时合理的反馈。

下面将详细介绍基于Linux的C语言程序设计题的动态评阅技术的实现和应用。

一、实现方式1. 构建虚拟环境为了能够模拟执行学生的C语言代码,首先需要在Linux系统上构建一个虚拟的编程环境。

可以使用虚拟机或容器技术,如VirtualBox、Docker等,搭建一个包含C编译器和执行器的环境。

这个环境应当能够接收学生提交的代码,并能够模拟执行和输出结果。

2. 设计评分规则针对每一个编程题目,需要设计一套完整的评分规则。

这些规则应当覆盖代码的正确性、效率、可读性等方面,以便全面评估学生的编程能力。

在设计评分规则时,需要结合具体的编程题目特点,充分考虑到学生可能出现的常见错误和可能的解题思路。

3. 自动化评分工具在虚拟环境中,还需要开发一套自动化评分工具,用来执行学生提交的代码,并根据设计的评分规则进行评估和打分。

这个工具可以通过调用编译器和执行器来模拟执行学生的代码,并捕获执行结果进行比对,进而生成评分报告。

二、应用场景1. 课堂作业在课堂作业中,学生可以在教师指导下完成一些简单的编程练习。

通过动态评阅技术,教师可以快速地对学生的作业进行评分,并即时地给予反馈。

这样可以激发学生的学习积极性,提高他们的编程能力。

2. 作业批改对于大规模的编程作业,如期末大作业或课程设计,动态评阅技术也能够大大提高批改效率。

教师可以通过自动化工具一次性地对众多学生的作业进行评估,并得到详细的评分报告。

这样不仅节省了大量的人力成本,还能够减少评分误差,提高评分公平性。

3. 自主学习除了在课堂和作业批改中的应用,动态评阅技术也可以用于学生自主学习的辅助工具。

C语言课程设计小学算术运算测试

C语言课程设计小学算术运算测试

C语言课程设计小学算术运算测试学号武汉理工大学华夏学院课程设计课程名称c语言课程设计题目小学算术运算测试专业电子商务班级电商1111姓名成绩_________________指导教师王绪梅2021年6月25日至2021年6月29日课程设计任务书学生姓名:专业班级:电商1111指导教师:王绪梅工作单位:汽车工程系设计题目:小学算术运算测试建议顺利完成的主要任务:1.任务描述我计划撰写小学算术运算测试程序。

建议顺利完成10以内的加减乘除运算。

能根据用户输入的想要练习的题目数自行出题。

用户输入答案后可以判断正误,并能给出算对及算错的题目数,最后计算出分数。

同时,对于用户算错的题目发出报警声,提示用户注意,同时给出正确结果。

做完一次测试后用户可决定是否继续进行下一次测试。

2.本课程牵涉的知识点变量的定义、输入和输出函数、产生随机数函数、if语句、goto语句、转义字符的采用等等。

3.要求完成的任务⑴顺利完成整个规定任务的设计及调试,且一定必须图画出来程序流程图,最后得出结论恰当结果,并经教师检查及面试;⑵写出规范的课程设计说明书;⑶课程设计结束后交设计说明书等文档和设计内容:⑷从6月25日起,学生每天至少要到设计教室半天以上;设计报告编写格式建议:设计报告的主要内容是详细写出在设计过程中所用到的主要技术或方法;课程设计报告按国际通用格式书写,具体格式要求请见资料:“课程设计说明书的书写内容与格式”时间精心安排:第一天:学生先在实验室集中,由指导教师介绍课程设计的目的、布置任务后选题;第二天-第四天:学生在实验室完成设计,经教师检查并回答提问,确认设计完成;第五天:教师在计算机上先检查设计报告、学生修改后打印提交指导教师盖章:2021年6月23日系主任签字:2021年6月23日设计过程中现场回答(或面试)记述:指导教师评语:成绩评定等级:指导教师(签名):2021年2月17日1设计题目小学算术运算测试2研发环境硬件环境:微机系列,内存在1g以上软件环境:microsoftwindowsxp3开发工具tc、win-tc或者visualc++6.04顺利完成时间2021-6-25----2021-6-295设计过程及设计步骤5.1功能设计5.1.1算法设计1、本程序实现的功能建议:利用if语句顺利完成右图的主菜单。

实验二《Linux平台下C语言实验》

实验二《Linux平台下C语言实验》
指导教师批阅及成绩:
查看变量值
在gdb中输入“p变量名”可以查看该变量的值。
gdb在显示变量值时都会在对应值前加“$n”标记,它是当前变量值的引用标记,以后想再用此变量,可以直接使用“$n”,提高调试效率。
继续运行程序
继续运行结果
变量y的值为1,但是最后输出的结果却为0,说明错误出在“%d”上,查看源代码,发现y为float型,而%d对应得是int型。
a.实验步骤
步骤1:编辑源程序代码
步骤2:输入程序代码
步骤3:编译程序
步骤4:运行程序
b.查看执行结果
程序的执行结果。
2.程序错误查找及调试
例6.用递归方法求n!。
a.实验步骤
步骤1:编辑源程序代码
步骤2:输入程序代码
步骤3:编译程序
步骤4:运行程序
程序执行结果
很明显,以上运行结果是不正确的。
步骤5:用gdb进行调试
步骤3:编译程序
编译结果:
步骤4:加“-lm”参数编译程序
步骤5:运行程序
b.查看执行结果
程序的执行结果
例3.输入学生成绩,要求输出成绩等级。90分以上为‘A’,80~90为‘B’,70~79为‘C’,60~69为‘D’,60以下为‘E’。
a.实验步骤
步骤1:编辑源程序代码
步骤2:输入程序代码
步骤3:编译程序
2.学会用vi编辑器在创建的文件里写程序源代码,感觉不足之处是编辑环境不是很好,比较复杂。在编辑源代码无错误后用GCC命令进行编译,生成可执行文件。在编译没有出错后,用./+文件名,运行该程序。
3.虽然在Linux下编程没有一些IDE开发环境,但也有其优势,那就是你不必学会使用很多的IDE,用Vi编辑器可以完成基本所有的程序编辑。另外一个优势也是最重要的优势:Linux内核是开源的,你可以看到程序在运行时的任何信息,这是其他平台所不具有的。使用Linux,你手中的整个操作系统,包括支持你运行C语言的一切工具的源代码,都是对你公开的。

利用C语言开发一个“小学生算术四则运算测试系统”

利用C语言开发一个“小学生算术四则运算测试系统”

武汉理工大学华夏学院课程设计课程名称C语言程序设计题目利用C语言开发一个“小学生算术四则运算测试系统”专业____电子商务_____班级______1091_______学号_____20510809105_____姓名______张宇_______成绩_________________指导教师杨沙、王绪梅2010年6月28日至2010年7月2日课程设计任务书设计题目:利用C语言开发一个“小学生算术四则运算测试系统”设计目的1.加深对《C语言程序设计》课程所学知识的理解;2.掌握结构化程序设计的基本方法;3.学会编制结构清晰、风格良好、数据结构选择恰当的C语言程序;4.掌握多模块的C语言程序的调试方法。

设计任务(在规定的时间内完成下列任务)任务描述:利用C语言开发一个“小学生算术四则运算测试系统”该系统是让计算机充当一位给小学生布置作业的算术老师,为学生出题、阅卷该系统应具备以下功能:1.为小学生出题(分别进行+、-、*、÷等不同运算)2.学生做题后,进行评阅;学生每做一题后,评阅时给出“答题正确,很好”或“答题错误,重做”等字样;3.加、减、乘、除运算功能可以自由选择实现;4.运算数值可以控制在两位(或三位)数的四则运算范围内。

具体要完成的任务是:1 完成整个规定任务的设计及调试,得出正确结果,并经教师检查及答辩;2. 写出规范的课程设计说明书;3. 课程设计结束后交设计说明书等文档和设计内容。

设计说明书的主要内容是详细写出在设计过程中所用到的主要技术或方法;4. 从6月28日起,学生每天至少要到设计教室半天以上;5.课程设计报告按国际通用格式书写,具体格式要求请在网络上查阅时间安排6月28日上午1-103教室动员全体学生,给学生下任务书;下午查阅相关资料;6月29日~7月1日完成选题的设计及报告的书写;7月2日上午提交课程设计报告并答辩。

指导教师签名:2010年 6 月27 日教研室主任(或责任教师)签名:2010年 6 月27 日1、问题描述1.1在最开始设计此程序过程中,我定义的变量flag为字符型,当把原程序段中对应于下面的程序段的程序段改为:……scanf("%d",&temp);while(temp!=answer){printf("\n答案错误,重做\n");printf("\n请输入正确的答案:\n");scanf("%d",&temp);}printf("\n继续请按y,退出测试请按n \n");scanf("%c",&flag);while(flag!=y&&flag!=n){printf("\n继续请按1,退出测试请按0 \n");scanf("%d",&flag);}……我将会发现当我做完一题且做对了的时候,无论我输入的是y还是n或者是其他的字符,printf("\n继续请按1,退出测试请按0 \n")这个提示在屏幕上出现两次,说明了在第一个scanf("%c",&flag)语句中无论什么,flag!=y&&flag!=n都是成立的,这说明了在第一个scanf("%c",&flag)中输入的字符并没有赋给flag。

通过C语言编写小学生数学测试软件C语言课程设计

通过C语言编写小学生数学测试软件C语言课程设计

C语言课程设计设计期限2013年 6 月 17 开始至 2013 年 6 月 21 结束系别信息管理与信息系统专业 36 班级 112030601学生姓名邓茂华学号11203060106指导教师纪钢金艳重庆理工大学[主要内容有]:问题描述、基本设计要求、系统分析、流程图、程序代码、测试数据、小结。

[问题描述]:通过C语言编写小学生数学测试软件:1) 可选择题型(+,-,*,/);2) 可选择每次答题的个数;3) 随机生成两个数进行运算;4) 每次在输入答案后应判断对错,若答案错误,应给出正确答案;5) 给出统计结果。

[基本设计要求]:利用C语言中函数的嵌套调用、全局变量、循环控制等来实现数据之间的运算,最终实现小学生数学测试软件的运行。

[系统分析]:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>int type;//定义全局变量;int j;void main(){int yunsuan();//在主函数中嵌套一个子函数,实现子后面主函数调用子函数的运行结果;int answer;int temp;int score=0,right=0;int k,i;printf("\n\n 制作人:邓茂华学号:11203060106\n\n\n");//制作系统的封面;printf("***********************************************\n");printf("**------------小学生数学测试系统-------------**\n");printf("***********************************************\n");for(;;)//设置死循环,实现测试结束后返回;{printf("\n请你选择测试题目的种类(只需输入数字代号):\n");//选择测试题目的种类;printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);while(type!=1&&type!=2&&type!=3&&type!=4)//输入错误时实现循环,直到输入正确时跳出循环;{printf("你输入错误,请重新输入\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);}printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);while(j!=1&&j!=2&&j!=3){printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);}printf("\n请输入你要答题的个数:\n");scanf("%d",&k);for(i=0;i<k;i++){answer=yunsuan();//调用子函数的结果;printf("\n请输入你的答案:\n");scanf("\n%d",&temp);if(answer==temp)//将测试者输入的结果与计算机算出的结果比较,并判断正误;printf("\n答对了,很好!\n"),right++;else printf("\n**********答错了,正确答案是%d,继续努力!\n\n",answer);}printf("\n\n--------------------------------------------------------------\n\n");score=(100*right)/k;//实现对测试者的评分;printf("**********你答对了%d道题!\n",right);if(score<60){printf("**********只考了%d分,成绩不是很理想哦!继续努力!!\n",score);continue;}if(score>=60&&score<80){printf("**********你考了%d分,成绩一般!\n",score);continue;}else if(score>=80&&score<100){printf("**********你考了%d分,不错哟!再接再励!\n",score);continue;}else{printf("**********哇,你真是太棒啦,居然考了%d分,说不定是未来的数学家哦!\n",score);printf("\n");continue;}}}int yunsuan()//在子函数中实现加减乘除的运算并返回结果;{int a,b,c,m;m=(int)pow(10,j);if(type==1)//加法运算;{srand(time(0));a=rand()%m;b=rand()%m;printf("%d+%d=",a,b);return(a+b);}else if(type==2)//减法运算;{srand(time(0));a=rand()%m;c=m-a;c=rand()%c;printf("%d-%d",a+c,a);return(c);}else if(type==3)//乘法运算;{srand(time(0));a=rand()%m;b=rand()%100;printf("%d*%d=?",a,b);return(a*b);}else //除法运算;{srand(time(0));a=rand()%(m-1)+1;c=rand()%(m-1)+1;printf("%d/%d",a*c,a);return(c);}}[流程图]:[程序代码]:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>int type;int j;void main(){int yunsuan();int answer;int temp;int score=0,right=0;int k,i;printf("\n\n 制作人:邓茂华学号:11203060106\n\n\n");printf("***********************************************\n");printf("**------------小学生数学测试系统-------------**\n");printf("***********************************************\n");for(;;){printf("\n请你选择测试题目的种类(只需输入数字代号):\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);while(type!=1&&type!=2&&type!=3&&type!=4){printf("你输入错误,请重新输入\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);}printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);while(j!=1&&j!=2&&j!=3){printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);}printf("\n请输入你要答题的个数:\n");scanf("%d",&k);for(i=0;i<k;i++){answer=yunsuan();printf("\n请输入你的答案:\n");scanf("\n%d",&temp);if(answer==temp)printf("\n答对了,很好!\n"),right++;else printf("\n**********答错了,正确答案是%d,继续努力!\n\n",answer);}printf("\n\n--------------------------------------------------------------\n\n");score=(100*right)/k;printf("**********你答对了%d道题!\n",right);if(score<60){printf("**********只考了%d分,成绩不是很理想哦!继续努力!!\n",score);continue;}if(score>=60&&score<80){printf("**********你考了%d分,成绩一般!\n",score);continue;}else if(score>=80&&score<100){printf("**********你考了%d分,不错哟!再接再励!\n",score);continue;}else{printf("**********哇,你真是太棒啦,居然考了%d分,说不定是未来的数学家哦!\n",score);printf("\n");continue;}}}int yunsuan(){int a,b,c,m;m=(int)pow(10,j);if(type==1){srand(time(0));a=rand()%m;b=rand()%m;printf("%d+%d=",a,b);return(a+b);}else if(type==2){srand(time(0));a=rand()%m;c=m-a;c=rand()%c;printf("%d-%d",a+c,a);return(c);}else if(type==3){srand(time(0));a=rand()%m;b=rand()%100;printf("%d*%d=?",a,b);return(a*b);}else{srand(time(0));a=rand()%(m-1)+1;c=rand()%(m-1)+1;printf("%d/%d",a*c,a);return(c);}}[测试数据]:界面:加法:减法:乘法:除法:评分并返回:[小结]:原以为自己把书上的东西都弄明白了就行了,在做这次课程设计的时候就发现有些不是那么回事了,但也并不是完全没用,做这个还是需要很多的理论基础。

linux编写c程序

linux编写c程序

linux编写c程序【实用版】目录1.Linux 系统概述2.C 语言编程基础3.Linux 下 C 语言编程环境搭建4.Linux 下 C 语言编程实例5.总结正文1.Linux 系统概述Linux 是一个基于 UNIX 的开源操作系统,广泛应用于服务器、嵌入式设备和超级计算机等领域。

Linux 系统具有高度的可定制性和可扩展性,吸引了大量开发者和用户。

在 Linux 系统中,C 语言是一种常用的编程语言,很多系统级别的功能都是由 C 语言编写的。

2.C 语言编程基础C 语言是一种高级编程语言,具有跨平台、易于学习、性能优越等特点。

C 语言的基本语法包括变量、数据类型、运算符、条件语句、循环语句、函数等。

C 语言编程涉及多个方面的知识,如内存管理、文件操作、进程管理等。

3.Linux 下 C 语言编程环境搭建要在 Linux 下编写 C 程序,首先需要搭建一个适合的编程环境。

常用的 C 语言编译器是 GCC(GNU Compiler Collection),它包含了 C、C++和 Fortran 等编程语言的编译器。

在 Linux 系统中,可以通过安装GCC 来搭建 C 语言编程环境。

此外,还需要一个文本编辑器,如 Vim 或Emacs,用于编写和修改 C 语言源代码。

4.Linux 下 C 语言编程实例以下是一个简单的 Linux 下 C 语言编程实例,用于打印“Hello, World!”:```c#include <stdio.h>int main() {printf("Hello, World!");return 0;}```在 Linux 系统中,可以使用以下命令编译和运行该程序:```bashgcc hello.c -o hello./hello```其中,`gcc`是 GCC 编译器,`hello.c`是 C 语言源代码文件,`-o`选项用于指定编译后程序的输出文件名,` `./`选项用于运行编译后的程序。

Linux C语言实验指导书

Linux C语言实验指导书
(7)退出保存,在shell中键入make,查看结果。 (8)用Vi 编辑Makefile1,如下所示:
hello:hello.o Gcc hello.o -o hello
hello.o:hello.c hello.h Gcc -c hello.c -o hello.o
(9)退出保存,在shell中键入:make -f Makefile1,查看结果。 (10)再次用Vi 编辑Makefile1,如下所示:
实验目的通过指定指令的vi操作练习使读者能够熟练使用vi中的常见操作并且熟悉vi的3种模式如果读者能够熟练掌握实验内容中所要求的内容则表明对vi的操作已经很熟练了
Linux C 语言实验指导书
一、Vi 使用练习
1.实验目的 通过指定指令的Vi操作练习,使读者能够熟练使用Vi中的常见操作,并且熟悉Vi 的3 种模式,如果读者能够熟练掌握实验内容中所要求的内容,则表明对Vi的操作已经很熟练 了。 2.实验内容 (1)在“/root”目录下建一个名为“/Vi”的目录。 (2)进入“/Vi”目录。 (3)将文件“/etc/inittab”复制到“/Vi”目录下。 (4)使用Vi 打开“/Vi”目录下的inittab。 (5)设定行号,指出设定initdefault(类似于“id:5:initdefault”)的所在行号。 (6)将光标移到该行。 (7)复制该行内容。 (8)将光标移到最后一行行首。 (9)粘贴复制行的内容。 (10)撤销第9 步的动作。 (11)将光标移动到最后一行的行尾。 (12)粘贴复制行的内容。 (13)光标移到“si::sysinit:/etc/rc.d/rc.sysinit”。 (14)删除该行。 (15)存盘但不退出。 (16)将光标移到首行。 (17)插入模式下输入“Hello,this is Vi world!”。 (18)返回命令行模式。 (19)向下查找字符串“0:wait”。 (20)再向上查找字符串“halt”。 (21)强制退出Vi,不存盘。 分别指出每个命令处于何种模式下? 3.实验步骤 (1)mkdir /root/Vi (2)cd /root/Vi (3)cp /etc/inittab ./ (4)Vi ./inittab (5):set nu(底行模式) (6)17<enter>(命令行模式) (7)yy (8)G (9)p (10)u (11)$ (12)p

C语言课程设计-小学生算术四则运算测试系统

C语言课程设计-小学生算术四则运算测试系统

C语言课程设计-小学生算术四则运算测试系统#ifndef H_STUDENT_HH#define H_STUDENT_HH#include "stdio.h"#include "string.h"#include "malloc.h"#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/ #define numsubs 5 /*学科数目*/typedef struct message_student /*结构体定义*/{char number[6];char name[20];char sex[4];float subject[numsubs];float score;float average;int index;}student;extern int numstus; /*学生数目*/extern student *pointer; /*指向结构体数组*/extern int lens;int menu_select(); /*函数声明*/int openfile(student stu[]);int findrecord(student stud[]);int writetotext(student stud[]);void welcome();void display1();void showtable();void sort(student stu[]);void deleterecord(student stu[],int i); void addrecord(student stud[]);void display(student stud[],int n1,int n2); void amendrecord(student stud[]);void count(student stud[]);void sortnum(student stud[]);void sortnum2(student stud[]);void sortname(student stud[]);void sortname2(student stud[]);void sortcount(student stud[]);void sortcount2(student stud[]);void statistic(student stud[]);void display1();#endif//#include "head.h"int menu_select(){char c;printf("\\");printf(" | 1. 增加学生记录 5.统计信息 |\"); printf(" | 2. 查询学生记录 6.打开文件 |\"); printf(" | 3. 修改学生记录 7.保存文件 |\"); printf(" | 4. 学生纪录排序 8.显示记录 |\"); printf(" | 0. 退出系统 |\");printf("\\");printf("请选择(0-8):");c=getchar();getchar();return (c-'0');}//#include "head.h"int findrecord(student stud[]) /*查找信息*/{char str[2];int i,num;if(numstus==0){printf("没有可被查找的记录\");return -1;}else{printf("以何种方式查找?\1.学号\2.姓名\3.名次\"); gets(str); if(str[0]=='1') /*按学号查找*/{printf("请输入学号:");gets(str);for(i=0;i<=numstus;i++)if(strcmp(str,stud[i].number)==0) {display(stud,i,i);break;}else continue;}else if(str[0]=='2') /*按姓名查找*/ {printf("请输入姓名:");gets(str);for(i=0;i<=numstus;i++)if(strcmp(str,stud[i].name)==0) {display(stud,i,i);break;}else continue;}else if(str[0]=='3') /*按名次查找*/ {printf("请输入名次:");scanf("%d",&num);getchar();for(i=0;i<=numstus;i++)if(num==stud[i].index){display(stud,i,i);break;}else continue;}if(i>numstus){printf("没有查找所要的信息。

小学数学测试系统C课程设计报告及源程序代码

小学数学测试系统C课程设计报告及源程序代码
数学测试的需求。
用户界面友好
系统界面简洁明了,易于操作 ,适合小学生使用。
稳定性与可靠性
经过多次测试,系统运行稳定 ,评分准确,达到了预期的设
计目标。
经验教训分享
需求分析重要性
在项目开始之前,充分进行需求分析,明确系统需要实现 的功能和性能要求,有助于避免后期开发过程中的需求变 更和返工。
团队协作与沟通
成绩管理
系统需要提供成绩的录入、修改、删除和查询功能,以 便教师可以方便地管理学生成绩。
数据分析
系统需要提供数据分析功能,包括学生成绩统计、试题 难度分析、知识点掌握情况等,以帮助教师更好地了解 学生的学习情况。
性能需求
01
02
03
响应时间
系统响应时间应小于2秒 ,以确保用户可以流畅地 使用系统。
小学数学测试系统C课 程设计报告及源程序代 码
2024-01-04
目录
• 引言 • 需求分析 • 系统设计 • 系统实现 • 系统测试与评估 • 源程序代码展示与解析 • 课程设计总结与展望
引言
01
目的和背景
01 02
教育信息化改革
随着教育信息化的推进,传统纸质测试方式已逐渐被计算机化测试所取 代。小学数学测试系统C课程设计的目的是适应这一趋势,提供一个高 效、准确的数学测试平台。
THANKS.
统计用户成绩,提供成绩查询 、导出等功能。
系统测试与调试
单元测试
对关键函数进行单元测试,确 保函数功能正确。
集成测试
对所有模块进行集成测试,确 保模块间接口一致,数据传输 无误。
系统测试
对整个系统进行测试,包括用 户登录、试题管理、组卷、测 试和成绩统计等功能,确保系 统稳定可靠。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在linux系统下用C语言实现小学算术运算测试程序XX大学软件学院小学算术运算测试程序1、题目与要求我计划编写的题目是:小学算术运算测试程序。

制作一个可供小学数学运算的程序:10 以内加减法,能根据输入题数出题,判断题是否正确,最后计算分数。

并用 make 工程管理器编译,编写 makefile 文件。

2、内容及主要任务小学算术运算测试程序:要求完成 10 以内的加减运算。

能根据用户输入的想要练习的题目数自行出题。

用户输入答案后可以判断正误,并能给出算对及算错的题目数,最后计算出分数。

同时,对于用户算错的题目会发出报警声,提示用户注意,同时给出正确结果。

做完一次测试后用户可决定是否继续进行下一次测试。

3、题目设计意义通过本课题的毕业设计,熟悉了关于 linux 下 C 语言的系统软件程序设计,可以比较深入的了解和掌握 WINSOCK 控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法。

并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。

随着计算机网络技术的快速发展,人们的交流方式越来越多,传统的通信方式在速度和可靠性方面已经很难满足人们的需要,即时通信系统已成为人们的新宠。

同时,即时通信系统对现代企业也有着重大意义,它为诸企业开拓了网络应用的新领域。

自从它诞生以来,以实时交互、资费低廉等优点,受到广大个人用户的喜爱,已经成为网络生活中不可或缺的一部分。

本着学以致用的原则,本人开发了这套多点聊天系统,以满足网络用户的通讯需求。

该系统具有操作简单、界面友好、功能专一等特点。

本报告就系统的开发过程做了详细的介绍,并对系统的原理、总体设计等方面做了深入细致的讨论。

4、主要内容本程序共分为五个模块:出题模块、答题模块、检查计分模块、评分模块和评价模块;下面分别对这五个模块的算法做一下介绍。

(1)出题模块:一个答题系统自然而然首先就是要有题目且能够根据条件出题;在本模块中,首先设了一个含有 15 个指针的指针数组,指针数组里的每个指针都指向了相应题号的 1 选择题,这样就实现了对题目的储存;然后用 scanf 函数来实现从键盘上输入题号,用 if 语句控制输题的范围;题号不在 1--15 的范围内就提示选题出错;在输入题号的过程中输入相同题号是在所难免的;但是在答题系统中输入相同题号显然没有意义,所以另外设了一个静态一维数组来储存已输过的题号;且数组的第一个元素初始化为 0,然后每输入一个题号就赋给这个数组,同时用 for 语句来使当前的题号一一与储存在一维数组中已输过的题号进行比较,如题号有相同,就提示重答,重答的功能是通过对出题模块函数的递归调用来实现的,如题号没有相同,就通过输入的题号借助指针数组里的指针找到与题号对应的选择题, puts 函数来实现对选择题的输出;用最后用 return 语句将其他模块返回来每道题的小分数返回到主函数中(在主函数中调用出题模块函数)。

(2)答题模块:出完题后自然是从键盘上输入答案了,在本模块中,提示输入答案后,用scanf 函数来实现使从键盘上输入的一个答案选项(A、B、C、D) 赋给一个用来记录答案的字符变量;用 return 语句将这个变量返回到出题模块中。

(3)检查计分模块:输入答案选项后,就要判断答案的正确性和计分了,在本模块中,要设一个字符数组来储存每道题的正确答案; if 语句来控制在答题模块中输入的答案是否为用 A、B、C、D 中的某一个;若不是,就提示选的答案不在答案范围内,若是,根据在出题模块中输的题号使在答题模块中输入的答案选项与储存正确答案数组中的相应答案选项相比较,若相同,就提示答案正确,与此同时用变量记录下这道题所得的小分,否则,就提示答案错误并给出当前题目的正确答案,不计分; return 语句将得分返回到出题系统中(在出题模用块函数中调用检查计分模块函数)。

(4)评分模块:做完题后,就要根据做题的对错个数来评分;在本模块中,首先就要提示题目全做完, switch 语句根据总小分来选择性地选出 11 个不同的分数中的一个分数,用并且打印出该分数 (在主函数中调用评分模块函数) 。

(5)评价模块:最后一步就是要根据不同的总得分段来给出不同的评语,在本模块中用 if 语句根据不同的总分数段来打印出不同的评语(在主函数中调用评价模块函数) 。

主函数将这五个模块直接地或间接地联系在一起,使它们构成本程序,现在就来介绍主函数的算法。

主函数对出题模块函数、评价模块函数进行了调用;首先提示开始答题,为了要答 10 次题,就要设一个 for 语句来控制对出题模块函数调用的次数,即需要答一定次数的题,与此同时用一个变量来累加由出题模块函数返回来每道题的小分数;接下来分别对评分模块函数和评价模块函数进行调用。

以上就是对本程序算法的介绍。

5、程序结构及主要过程(1)本程序共包含了顺序结构、选择结构、循环结构三种在 C 程序中的主要结构,其中穿插了数组(一维数组、字符数组)、指针 (指针数组)、函数调用(递归调用)等知识,该程序覆盖了本学期所学的除结构体外的大部分知识。

(2)本程序结构和过程思路如下:为了要答题,首先要有题目,设一个指针数组来实现;把相应的题目调出,应用指针的功能实现;调出题目后,就要给用户答题了,用一个输入函数实现;再经过系统的判断,用一个字符数组储存正确答案结合判断语句实现;最后累加计分,用循环结构实现。

(3)总之,该程序的总体结构和过程很好的体现了现在所提倡的对一个程序结构模块化的思想。

6、程序模块功能说明本程序一共有五个模块,它们分别是:出题模块(question_out()),答题模块 (answer()),检查计分模块(check()),评分模块(count()),评价模块(assessment()),现在就来分别介绍这五个模块的功能。

(1)出题模块(question_out()):这一模块主要负责对题目的储存和调出这两个功能。

(2)答题模块(answer()):这一模块主要负责将用户端的答案通过键盘输入到系统。

(3)检查计分模块(check()):这一模块主要负责检查判断用户所提供的答案是否正确并根据它来记录每题所的总分。

(4)评分模块(count()):这一模块主要负责统计总得分并打印。

(5)评价模块(assessment()) :这一模块主要负责根据给出的总得分打印相应的评语。

总之这五个模块都有着各自的功能且互相联系,五者在程序中缺一不可。

7、makefile 介绍(1)Makefile 文件介绍 Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile 就像一个Shell 脚本一样,其中也可以执行操作系统的命令。

(2)makefile 主要功能 Make 工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。

而makefile文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。

makefile 文件是许多编译器--包括 Windows NT下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改makefil 文件而已。

(3)自动化编译 Makefile 带来的好处就是——“自动化编译” ,一旦写好,只需要一个make 命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make 是一个命令工具,是一个解释 makefile 中指令的命令工具,一般来说,大多数的IDE 都有这个命令,比如:Delphi的make,Visual C++的 nmake,Linux下GNU 的make。

可见,makefile 都成为了一种在工程方面的编译方法。

8、makefile 规则makefile 中的规则是这样的:TARGET … : DEPENDENCIES … COMMAND … 目标(TARGET)程序产生的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean” 。

依赖(DEPENDENCIES)是用来产生目标的输入文件,一个目标通常依赖于多个文件。

命令(COMMAND)是 make 执行的动作,一个可以有多个命令,每个占一行。

注意:每个命令行的起始字符必须为 TAB 字符!有依赖关系规则中的命令通常在依赖文件变化时负责产生 target 文件,make 执行这些命令更新或产生target。

规则可以没有依赖关系,如包含target “clean”的规则。

规则解释如何和何时重做该规则中的文件,make 根据依赖关系执行产生或更新目标;规则也说明如何和何时执行动作。

有的规则看起来很复杂,但都符合上述模式。

makefile 中的规则描述如何生成特定的文件,即规则的目标。

规则列出了目标的依赖文件,指定生成或更新目标的命令。

规则的次序是不重要的,除非是确定缺省目标:缺省目标是第一个 makefile 中的第一个规则;如果第一个规则有多个目标,第一个目标是缺省的。

有两个例外:以’.’开头的目标不是缺省目标;模式规则对缺省目标没有影响。

通常我们所写的地一个规则是编译整个或 makefile 中指定的所有程序。

9、Makefile 文件main:main.o input.o chuti.ogcc main.o input.o chuti.o -o mainmain.o:main.c myhead.hgcc -c main.cinput.o:main.cgcc -c input.cchuti.o:main.cgcc -c chuti.c10、源程序#include <stdio.h>#include <math.h>void function( ){int index,itest_total,N=200;intiflag,num1,num2,itotal,iarrsum[200],iarranswer[200],iarrop[4];itotal=0;printf("请输入题数:\n");scanf("%d",&itest_total);for(index=0;index<itest_total;index++){iflag=rand()%4+1;switch(iflag){case 1:num1=rand()%10;num2=rand()%10;iarrsum[index]=num1+num2;printf("%d+%d=\n",num1,num2);break;case 2:num1=rand()%10;num2=rand()%10;iarrsum[index]=num1-num2;printf("%d-%d=\n",num1,num2);break;case 3:num1=rand()%10;num2=rand()%10;iarrsum[index]=num1*num2;printf("%d*%d=\n",num1,num2);break;case 4:num1=rand()%10;num2=rand()%10;4 iarrsum[index]=num1/num2;printf("%d/%d=\n",num1,num2);break;default:break;}}printf("依次输入每题的答案:\n");for(index=0;index<itest_total;index++){scanf("%d",&iarranswer[index]);getchar();if(iarranswer[index]==iarrsum[index])itotal++;}}printf("正确率:%f%%\n",100.0*((itotal*1.0)/itest_total));}int main(){char flag; //开始有一轮测试,以后根据用户的输入开始新一轮测试或结束测试;do{function();printf("请输入'Y'表示开始新一轮测试,其他字母表示结束测试:\n");scanf("%c",&flag);}while(flag!= 'Y');return 0; }11、结果分析这是一个小学数学运算测试程序,要求完成 10 以内的加减运算。

相关文档
最新文档