当前位置:文档之家› c语言程序设计考试系统

c语言程序设计考试系统

c语言程序设计考试系统
c语言程序设计考试系统

【摘要】:C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。

C语言考试系统采用Microsoft Visual C++和Microsoft SQL Server 2000相结合,很好的实现了登录验证功能。登录身份有管理员和学生。管理员是对整个考试系统的环境设置,其中包括对各个题型的题量设置、定义考试说明、考场要求和对学生的管理等。学生登录实现了让有考试权限的学生进入考试环境。在这个环境下,系统完全实现了随机抽题。C语言考试系统实现了嵌入turboc2.0编译器进行程序的编辑;采用了S数据库访问技术进行数据库的操作;完成了学生考试、管理员管理的功能。C语言考试系统提高网络教学质量的同时大大拓展了考试的灵活性,阅卷效率,以及保证了考试的公平性、答案的安全性。

【关键词】:C语言考试系统数据库编译器文件操作

目录

引言 (3)

第一章C语言程序概述 (4)

1.1 C语言的演变及特点 (4)

1.1.1 C语言的发展过程 (4)

1.1.2 C语言版本 (4)

1.1.3 C语言的特点 (5)

1.1.4 C语言与其他语言的差别 (5)

1.2 C语言的程序结构 (6)

1.2.1 C源程序的结构特点 (6)

1.2.2 C语言程序结构组成 (7)

第二章C语言考试系统 (8)

2.1 C语言考试系统发展背景 (8)

2.2 C语言考试系统的组成 (8)

2.2.1 Microsoft Visual C++ (8)

2.2.2 SQL SERVER 2000(结构化查询语言SQL) (10)

2.2.3 Turboc2.0编译器 (12)

第三章学生成绩管理模块系统 (14)

3.1 学生成绩管理系统的重要性 (14)

3.2 学生成绩管理系统设计 (14)

3.2.1 系统需求 (14)

3.2.2 总体设计 (14)

3.2.3 功能结构设计 (15)

3.2.4 学生成绩管理系统运行过程 (16)

第四章C语言考试系统发展前景展望 (25)

4.1 C语言考试系统与其他语言系统的对比 (25)

4.2 C语言考试系统能够解决的一些问题 (25)

4.3 发展C语言考试系统的目的与意义 (26)

总结 (27)

参考文献 (28)

引言

C语言是1972年由美国的Dennis Ritchie设计的,并首次在UNIX操作系统的DEC PDP-11计算机上使用。它由早期的编程语言BCPL发展演变而来的。在1970年,AT&T贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,随后C语言问世了。随着微型计算机的日益普及,C语言出现了许多版本。由于没有统一的标准,使得这些C语言版本之间出现了一些不一致的地方。为了改变这种情况,美国国家标准学会(ANSI)为C语言制定了一套ANSI标准,成为现行的C 语言标准。

C语言考试系统,是为了配合C语言的教学而设计的。它是C语言课件的一个重要组成部分。试卷可根据题库中的内容即时生成,可避免考试前的压题;而且可以采用大量标准化试题,从而使用计算机阅卷,大大提高阅卷效率;还可以直接把成绩送到数据库中,进行统计、排序等操作。试题内容放在服务器上,考生通过准考证号进行登录,考试答案也存放在服务器中,这样考试的公平性、答案的安全性可以得到有效的保证。因此,采用无纸化将是以后考试发展的必然趋势。

考试是网络教学的重要部分,日渐普及的网络教学呼唤着功能强大的网络考试系统的出现。网络考试系统方便了传统考试中的各个环节。提高了试题治理的自动化、标准化、便捷化,也提高了试题的安全性和保密性。试题的自动生成,使每个考生都有一套不同的试题,把固定在单一试卷中的试题发展到了可以自由组合的题库,随着题库的建立,组卷变得方便了,测试的形式也发生着变化,由所有学生同考一张试卷的大规模的集体测试发展到了同一场考试使用等同考查效力的不同试卷,而且可以跨地域的进行同一考试,除了在本地也可以在异地进行,打破了以前考试的局限性。在成绩统计方面,可以方便快捷地实现成绩统计,如各种均值,方差,分布等的计算,同时还可以方便地评判考试的信度和效度。通过使用试题自动生成系统完全摆脱了纸和笔,考生使用计算机答卷,然后通过网络提交试卷,系统自动阅卷。基于计算机网络的考试需要专门的较高水平的技术支持,网络考试已经发展成为一种产业。

发展网络教学有着非常深远的意义,网络教学在全世界范围内得到了迅速的发展。在国外,美国每年大约有近1700万人通过网络接受教育和培训;欧洲网络教育规模也很大,巨大的需求推动了网上教育业的快速发展。目前,在国际市场上比较闻名的网上教育软件产品有:Lotus公司LearningSpace,英属哥伦比亚大学计算机科学系开发的WebCT,WBTSystem公司的TopClass和加拿大SimonFraser大学开发的Virtual-U等。美国的NTU,英国的OpenCollege都是十分典型的网络教育示例。

第一章C语言程序概述

1.1 C语言的演变及特点

1.1.1 C语言的发展过程

C语言的原型ALGOL 60语言(也称为A语言)。1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言。为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。1987年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3.C语言的主要特点,即经典的87 ANSI C。C语言发展迅速, 而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ都是由C语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。1990年,国际化标准组织ISO(Intrernational StandardOrganization)接受了87 ANSI C为ISO C的标准(ISO9899-1990)。1994年,ISO修订了C语言的标准。目前流行的C语言编译系统大多是以ANSI C为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则略有差别。

1.1.2 C语言版本

1983年,美国国家标准协会(American National Standards Institute)在标准C基础上制定了C语言新标准,于1983年发表,称为ANSI C,它比标准C有了更大的发展。目前广泛流行的C语言版本有Microsoft C 或称 MS C 。Borland Turbo C 或称 Turbo C。AT&T C ,Quick C等。

1.1.3 C语言的特点

(1)C是中级语言

它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

(2)C是结构式语言

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

(3)C语言功能齐全。

C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并且引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。

(4) C语言适用范围大。

虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。

1.1.4 C语言与其他语言的差别

1. C语言吸取了汇编语言的精华

汇编语言是一种面向机器的低级语言,尽管它的编程要比高级语言麻烦得多,但目标程序质量高,运行快,所以在工业自动化控制系统等领域仍然被广泛使用,显现出强大的生命力。

(1)C语言提供了对位、字节及地址的操作,使程序可以直接访问硬件。

(2)C语言吸取了宏汇编技术中的一些灵活处理方式,提供了宏替换命令#define和

文件包含的预处理命令#include。

(3)C语言程序能与汇编语言程序实现无缝连接,可以在C语言程序中方便地引用汇编语言程序。

(4)C语言编译生成的目标程序代码质量高,执行效率高,运行速度快。与汇编程序生成的目标程序代码执行效率相比,只低10%~20%,这是其他高级语言所无法达到的。

2. C语言继承和发扬了高级语言的优势

(1)继承了Pascal语言具有丰富数据类型的特点,并具有完备的数据结构。

(2)吸取了FORTRAN语言中模块结构的思想,C语言中每个函数都是独立的,允许单独进行编译。这有利于大程序的分工协作和调试。

(3)允许递归调用,使有些算法的实现简明、清晰。

(4)发扬了高级语言面向用户、可读性强、容易编程和维护等特点,使C语言易学、易读、易懂、易编程、易维护。

(5)具有良好的可移植性,它没有依赖于硬件的输入输出语句,便于在不同硬件结构的计算机之间移植。

1.2 C语言的程序结构

1.2.1 C源程序的结构特点

一个实现某种特点功能的C语言程序(一个或多个文件)应包含若干个函数,每个函数又是由若干条语句组成的。同其他的高级语言一样,C语言的语句用来向计算机系统发出操作指令。一条语句经编译后会产生若干条机器指令。因此,C语言程序的结构形式如图所示。

说明:

(1)一个C语言源程序可以由一个或多个源文件组成。

(2)每个源文件可由一个或多个函数组成。

(3)一个源程序不论由多少个文件组成,都有且只能有一个main函数,即主函数。(4)源程序中可以有预处理命令(#include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

(5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

1.2.2 C语言程序结构组成

(1)数组。数组是一种非常重要的线性结构的数据类型,在程序设计中常常使用。同时,C语言中,“字符串”可以通过字符数组来实现。数组的定义和使用在C语言中具有相当重要的位置。在介绍数组的应用时,可结合《数据结构》课程中排序与检索的常用算法,通过实例说明数组的具体应用。

(2)指针。指针是C语言中最灵活,最活跃的数据类型,是C语言的核心。要学习好C语言,必须掌握指针的概念极其应用。C语言指针应用,在数据链式存储中,指针是数据中不可分割的一个部分,既使在顺序存储的数据中,指针也是数据扫描(遍历)、查找定位、插入、删除、统计等各种数据加工处理的重要手段和工具。同时必须指出,指针应用不当也会带来意想不到的后果。

(3)函数。C语言是一种函数式语言,函数是C语言程序的基本组成部分。在教学中,可以通过一些实际例子说明,使学生掌握C语言函数定义、函数调用、参数传递等内容,树立程序模块的基本思想。

(4)变量存贮属性。存贮属性关系到变量的作用范围,函数(模块)间的程序接口,对树立程序设计的全局观念,变量存贮属性起重要作用。

(5)文件。在实际应用中,我们一般通过文件的形式与外设进行交流,“文件”是C语言实际应用的主要方式,应介绍文件的打开、读、写、关闭等基本操作。

(6)结构体。在实际应用中,数据结构类型往往以结构体形式出现。只有掌握结构体类型的定义和使用,才能在实际应用中发挥C语言作用。

第二章 C语言考试系统

2.1 C语言考试系统发展背景

在线考试系统就是人们经常谈论中的一个例子,在我国,不论是机关单位还是大中小学校,考试频率堪称世界之最,而传统的考试一般要经过出题,印试卷,安排考场,监考,收集试卷,评改试卷,讲评试卷和分析试卷。

不仅如此,在线考试系统还打破了考场的时空局限性,考生可以自由选择考试的时间和地点,而条件是只要具有一台能上互联网的电脑就行了,考生考试结束后,即可产即查询自己的考试分数,名次等信息,还可以对照标准答案对答错的试题进行适当的分析,全部科目考试结束后,考生还可以打印自己的成绩单,与传统考试不同的是,在线考试系统需要管理员添加足够多的题库来保证每个考生随机抽出来的题目是不一样的,保证了考试的公证性。

C语言是各大学所有理工科学生的必修课,是计算机专业编程语言的入门课程,C语言考试系统,是为了配合C语言的教学而设计的。它是C语言课件的一个重要组成部分。试卷可根据题库中的内容即时生成,可避免考试前的压题;而且可以采用大量标准化试题,从而使用计算机阅卷,大大提高阅卷效率;还可以直接把成绩送到数据库中,进行统计、排序等操作。试题内容放在服务器上,考生通过准考证号进行登录,考试答案也存放在服务器中,这样考试的公平性、答案的安全性可以得到有效的保证。因此,采用无纸化将是以后考试发展的必然趋势。

2.2 C语言考试系统的组成

完整的C语言考试系统应具有题库、自动组卷模块、学生考试模块、考试成绩管理模块,用以实现计算机自动出卷、答卷、批卷流程的全程管理。而我下面所介绍的就是这4个模块的核心元件。

2.2.1 Microsoft Visual C++

VC是微软公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows 操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样我们就可以从一个较高的起点编程,节省了大量时间。另外,它提供了大量的代码,指导用户编程是实现某些技术和功能。因此VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

C++

(1)C++的组成

1、C子语言。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别。

2、面向对象的C++。C++首先作为一门面向对象的语言而闻名,这个特点在这里不再详述。

3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。

4、STL(C++标准模板库)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的naive代码低些,但是其安全性与规范性使它大受欢迎。

(2)C++的优势

传统上认为,C++相对于目前一些新潮的语言,如Java、C#,优势在于程序的运行性能。这种观念并不完全。一般认为,使用Java或C#的开发成本比C++低。但是,如果能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。在Java和C#大谈软件工程的时候,C++实际上已经悄悄地将软件工程性提升到一个前所未有的高度。

MFC

MFC,微软基础类(Microsoft Foundation Classes),同VCL类似,是一种Application Framework,随微软Visual C++ 开发工具发布。MFC 应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。VC是WinDOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinDOS(用MFC编写的程序绝大部分都在WinDOS中运行)中实现内部处理的类,如数据库的管理类等。

(1)一些重要的MFC

CWnd:窗口,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了。

CDocument文档:负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读

入),OnSaveDocument(写盘),Serialize(读写)。

CView视图:负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。

(2)MFC编程的优势

随着编程语言的推陈出新,MFC一些缺点日益突出。最重要的就是入门门槛相对其他语言要高,而且同样完成一个任务代码量相对较多。但是MFC真的没有任何优势了吗?不是,面对底层程序,它能很轻松的与Windows API或驱动程序结合,就是在自己的代码中直接使用API函数,而API和驱动程序的资料都是以C语言为基础的,这使得VC程序员能够更轻松的使用Windows API。这样造成了一个很有意思的现象,即入门时VC程序员要付出更多的努力来学习,但是一旦掌握后,开发其他领域的程序或使用第三方软件时,如工业控制类的程序,由于底层的程序都是用C语言编写,反倒是VC程序员能够更快的掌握该领域的编程技术。而很多其他的编程语言甚至找不到相关的资料。这就说明VC(MFC)实际上是一种入门困难,但是扩展学习却很轻松的语言框架。如果既限于某一领域的话VC毫无优势可言,但是如果开发一个新的领域的应用程序或者该程序涉及多个应用领域的话,可减少重复学习的频率和难度,VC(MFC)的优势会立刻显现出来。

2.2.2 SQL SERVER 2000(结构化查询语言 SQL)

1986年,ANSI把SQL作为关系数据库语言的美国标准,同年公布了标准SQL文本。目前SQL标准有3个版本。基本SQL定义是ANSIX3135-89,“Database Language - SQL with Integrity Enhancement”[ANS89],一般叫做SQL-89。SQL-89定义了模式定义、数据操作和事务处理。SQL- 89和随后的ANSIX3168-1989,“Database Language-Embedded SQL”构成了第一代SQL标准。ANSIX3135-1992[ANS92]描述了一种增强功能的SQL,现在叫做SQL-92标准。SQL-92包括模式操作,动态创建和SQL 语句动态执行、网络环境支持等增强特性。在完成SQL-92标准后,ANSI和ISO即开始合作开发SQL3标准。SQL3的主要特点在于抽象数据类型的支持,为新一代对象关系数据库提供了标准。

(1)SQL Server 2000特点

1.完全的Web支持:

SQL Server 2000提供了以 Web 标准为基础的扩展数据库编程功能。丰富的 XML 和 Internet 标准支持允许使用内置的存储过程以 XML 格式轻松存储和检索数据。还可以使用XML 更新程序容易地插入、更新和删除数据。通过 Web 轻松访问数据。也可以使用 HTTP 来向数据库发送查询、对数据库中存储的文档执行全文搜索、以及通过 Web 进行自然语言查询。SQL Server 2000分析服务功能被扩展到了 Internet。通过 Web 浏览器来访问和控制多维数据。

2.高度的可伸缩性和可靠性

使用 SQL Server 2000 可以获得非凡的可伸缩性和可靠性。通过向上伸缩和向外扩展的能力,SQL Server 满足了苛刻的电子商务和企业应用程序要求。SQL Server 2000 利用了对称多处理器 (SMP) 系统。SQL Server Enterprise Edition 最多可以使用 32 个处理器和 64 GB RAM。向外扩展可以将数据库和数据负载分配给多台服务器。通过增强的故障转移群集、日志传送和新增的备份策略,SQL Server 2000 达到了最大的可用性。

(2)SQL数据库的数据结构

数据结构分为数据的逻辑结构和数据的物理结构。数据的逻辑结构是从逻辑的角度(即数据间的联系和组织方式)来观察数据,分析数据,与数据的存储位置无关。数据的物理结构是指数据在计算机中存放的结构,即数据的逻辑结构在计算机中的实现形式,所以物理结构也被称为存储结构。这里只研究数据的逻辑结构,并将反映和实现数据联系的方法称为数据模型。

(3)SQL数据库中常用的几个系统表

1、sysobjects

系统对象表。保存当前数据库的对象,如约束、默认值、日志、规则、存储过程等sysobjects 重要字段解释:

sysObjects (

Name sysname, --object 名称

id int, --object id

xtype char(2), -- object 类型

type char(2), -- Object 类型

uid smallint, -- object 所有者的ID

... --其他的字段不常用到。

)

该表中包含该数据库中的所有对象,如有那些表存储过程视图等信息

2、sysColumns 数据库字段表。当前数据库的所有字段都保留在里面。

重要字段解释:

sysColumns (

name sysname, --字段名称

id int, --该字段所属的表的ID

xtype tinyInt, --该字段类型,关联systypes表

length smallint, --该字段物理存储长度

...

)

比如要查询某一个张表的有那些字段和这些字段的长度

3、sysusers

当前数据库的系统组,以及用户。

sysusers(

uid smallint, --用户id

name smallint , --名称

uid varbinary(85) , --属于一个登陆

....

)

对数据库的用户进行管理

2.2.3 Turboc2.0编译器

(1)编译器的工作原理与总体结构

编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。一个现代编译器的主要工作流程如下图:

源代码 (source code) →预处理器 (preprocessor) →编译器 (compiler) →汇编程序 (assembler) →目标代码 (object code) →链接器 (Linker) →可执行程序 (executables)

(2)编译参数的设置

主要通过IDE的菜单项Project-Settings-C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下:

1)General:一些总体设置。Warning level用来控制警告,其中Level 1是最严重的级别;Warnings as errors将警告当作错误处理;Optimizations是代码优化,可以在Category的Optimizations项中进行更细的设置;Generate browse info用以生成.sbr文件,记录类、变量等符号,可以在Category的Listing Files项中进行更多的设置。Debug info,生成调试:None,不产生任何调试;Line Numbers Only,仅生成全局的和外部符号的调试到.OBJ文件或.EXE文件,减小目标文件的尺寸;

2) C++ Language:pointer_to_member representation用来设置类定义/引用的先后关系,一般为Best-Case Always表示在引用类之前该类肯定已经定义了;Enable Exception Handling,进行同步的异常处理;Enable Run-Time Type Information迫使编译器增加代码在运行时进行对象类型检查;Disable Construction Displacements,设置类构造/析构函数调用虚函数问题。

3) Code Generation:Processor表示代码指令优化,可以为80386、80486、Pentium、Pentium Pro,或者Blend表示混合以上各种优化。Use run-time library用以指定程序运行时使用的运行时库,有一个原则就是,一个进程不要同时使用几个版本的运行时库。连接了单线程库就不支持多线程调用,连接了多线程库就要求创建多线程的应用程序。

4) Customize:Disable Language Extensions,表示不使用微软为标准C做的语言扩展;Eliminate Duplicate Strings,主要用于字符串优化,使用这个参数,使得char sBuffer = "This is a character buffer";

char tBuffer = "This is a character buffer";

sBuffer和tBuffer指向的是同一块内存空间;Enable Function-Level Linking ,告诉编译器将各个函数按打包格式编译;Enables minimal rebuild,通过保存关联到.IDB文件,使编译器只对最新类定义改动过的源文件进行重编译,提高编译速度;

5)Listing Files:Generate browse info的功能上面已经提到过。这里可以进行更多的设置。Exclude Local Variables from Browse Info表示是否将局部变量的放到.SBR文件中。Listing file type可以设置生成的列表文件的内容:Assembly-Only Listing仅生成汇编代码文件;Assembly With Machine Code生成机器代码和汇编代码文件;Machine Code,and Source生成机器码、源代码和汇编代码文件。

6)Optimizations:代码优化设置。可以选择Maximize Speed生成最快速的代码,或Minimize Size生成最小尺寸的程序,或者Customize定制优化。

第三章学生成绩管理模块系统

3.1 学生成绩管理系统的重要性

C语言考试中需要考虑到计算机死机、异常重启、突然断电等一些意外事故的发生,所以我们有必要对每一位考生的试卷(包括试题和考生的答案以及考试剩余时间)进行保存,以便在适当的时候进行恢复,由于每一份试卷上的信息量很大,而且类型也不一样,如果按传统方法保存的话,将会是件相当复杂的事情,还好学生成绩管理系统为我们提供了对象序列化功能,我们可以新建了一个RandPaper类,上面包括了随机生成的试卷的所有信息,当考生登录后,生成一个RandPaper对象,然后将这个对象序列化后保存到数据库中,以后需要恢复试卷时,从数据库中读取后将其反序列化后即可得到原来对象的所有属性值。这个保存函数每隔一定时间要执行一次,这里可以采用JavaScritp来控制。

3.2 学生成绩管理系统设计

3.2.1 系统需求

1.当前学生信息:通过结构体struct student 来保存学生的姓名、学号、性别、语文、数学、英语和计算机等等相关信息,并且通过cin函数来给当前学生输入初始信息。

2.学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。同时也可以全部把各科的平均成绩,最高和最低分输出。

3.新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,然后将该生的信息保存下来。

4.输出全部学生信息和全部学生成绩。

5.退出系统。

6.附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓氏先进行模糊查询,以便后面精确查找。

3.2.2 总体设计

1.仔细阅读系统要求,首先将此系统化分为如下几个部分(即如下几个函数)

(1)输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。

(2)查询模块:可用stu *lookdata(stu *p1)来实现。找到就输出此学生全部信息,

包括学生的语文、数学、英语和计算机等的成绩。

(3)插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。

(4)输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage()来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

(5)退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

3.2.3 功能结构设计

1. 界面设计:

此系统界面采用图形和数字化菜单设计。主界面初步设计如下:

学生成绩管理系统

请选择相应的数字执行相应的功能:

1:是否输入其他数据

2:查看数据

3:插入数据

4:查找数据

5:更新数据

6:保留数据

7:显示或打印数据

8:语文成绩状况

9:数学成绩状况

10:英语成绩状况

11:计算机成绩状况

12:帮助

13:退出系统

2. 数据结构设计:

程序设计中用到的结构体类型:

学生信息结构体类型:

typedef struct student{

char name[MAX];

int num[MAX];

char sex[MAX];

int chinese;

int mathematic;

int english;

int computer;

struct student *next;

}

3.2.4 学生成绩管理系统运行过程

#include"stdio.h"

#include"stddef.h"

#include"stddef.h"

#include"string.h"

#define MAX 10

typedef struct student{ /*定义结构体*/

char name[MAX]; /*姓名*/

int num[MAX]; /* 学号*/

char sex[MAX]; /*性别*/

int chinese; /*语文*/

int mathematic; /* 数学*/

int english; /*英语*/

int computer; /*计算机*/

struct student *next; /*结构体指针*/

}stu;

stu *head; /*头指针*/

void print() /*显示或打印函数*/

{

system("cls");

printf("\t\t\tScore Manage System\n"); /*成绩管理系统*/ printf("<1>Enter Record\t"); /*输入数据*/

printf("<2>Display\t"); /*显示*/

printf("<3>Insert\t"); /*插入数据*/

printf("<4>Quest\t"); /*访问数据*/

printf("<5>Update\t"); /*以前数据*/

printf("<6>Save\t"); /*保留数据*/

printf("<7>Fresh\t"); /*更新数据*/

printf("<8>Chinese Average\t"); /*语文平均成绩*/

printf("<9>Math Average\t"); /*数学平均成绩*/

printf("<10>English Average\t"); /*英语平均成绩*/

printf("<11>Computer Average\t"); /*计算机平均成绩*/

printf("<12>Quit\t\n"); /*退出*/

}

void cin(stu *p1) /*输入相关数据的函数*/

{ printf("Enter name:\n");

scanf("%s",&p1->name);

printf("Enter num:\n");

scanf("%d",&p1->num);

printf("Enter sex:\n");

scanf("%s",&p1->sex);

printf("Enter score:\n");

printf("Enter chinese:\n");

scanf("%d",&p1->chinese);

printf("Enter math:\n");

scanf("%d",&p1->mathematic);

printf("Enter English:\n");

scanf("%d",&p1->english);

printf("Enter Computer:\n");

scanf("%d",&p1->computer);

}

stu *cindata() /*其他数据是否继续输入的函数*/ { stu *p1,*p2;

int i=1;

char ch;

p1=(stu *)malloc(sizeof(stu));

head=p1;

while(i)

{

cin(p1);

printf("Do you Want to Continue?yes or no"); /*是否继续输入数据*/ ch=getchar();

ch=getchar();

if(ch=='n'||ch=='N')

{ i=0;

p1->next=NULL;

}

else

{ p2=p1;

p1=(stu *)malloc(sizeof(stu));

p2->next=p1;

}

}

return(p1->next);

}

stu *lookdata(stu *p1) /*查看数据的函数*/ {

while(p1!=NULL)

{ printf("Num:%d\t",p1->num);

printf("Name:%s\t",p1->name);

printf("Sex:%s\t",p1->sex);

printf("\n");

printf("Chinese:%d\t",p1->chinese);

printf("Math:%d\t",p1->mathematic);

printf("English:%d\t",p1->english);

printf("Computer:%d\t",p1->computer);

printf("\n");

p1=p1->next;

}

return p1;

}

void insert() /*通过比较学号来插入数据的函数*/ { stu *p1,*p3,*p2;

char ch;

p1=head;

p3=(stu *)malloc(sizeof(stu));

p3->next=NULL;

if(head==NULL){ head=p3; return;}

cin(p3);

while(p1!=NULL&&(p1->numnum)) /*通过学号的比较来插入*/

{ p2=p1;p1=p1->next;}

if(p2==head) {p3->next=head; head=p3; return;}

p3->next=p1;

p2->next=p3;

}

find(stu *p2) /*通过姓名查找查看数据的函数*/ { char name[20];

int b=0;

printf("Enter the name of the student you want to find:"); /*通过姓名查看*/

scanf("%s",name);

while(p2!=NULL)

{if(strcmp(name,p2->name)==0)

{

printf("The data you want has be found\n");

printf(" Name:%s\t",p2->name);

printf("Num:%d\t",p2->num);

printf("sex%s\t",p2->sex);

printf("\n");

printf("Chinese:%d\t",p2->chinese);

printf("Math:%d\t",p2->mathematic);

printf("English:%d\t",p2->english);

printf("Computer:%d\t",p2->computer);

printf("\n");

b=1;

}

else if(b==0)

printf("sorry not find data!");

p2=p2->next;

}

if(b==1)

{

print();

printf("Find one\n");}

else

{print();

printf("Not find\n");

}

}

void caverage() /*求各学生语文平均分、最高和最低分成绩的函数*/ { stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("not data!");

else

{for(i=0;p1!=NULL;i++,p1=p1->next)

sum+=p1->chinese;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1->next)

{if(maxchinese)

max=p1->chinese;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1->next)

if(min>p1->chinese)

min=p1->chinese;

}

printf("Chinese Average:%f",aver);

printf("Chinese Max:%f",max);

printf("Chinese Min:%f",min);

}

/*各学生数学、英语、计算机的平均分、最高和最低分成绩函数参照语文成绩的函数运行程序*/

update(stu *p2) /*通过姓名查找来更新数据*/ {

C语言程序设计试题及答案

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是(D) A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是(B) A、abc B、12AC C、sun D、A 3、设有语句inta=4;则执行了语句a+=a-=a*a后,变量a的值是(A) A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是(B) A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是(A) A、% B、/ C、%和/ D、+ 6、以下关于运算符的优先顺序的描述正确的是(C) A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是(C) sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)

A、INPUTx、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456<回车>,下面程序的输出结果是:(C)voidmain() {intm,n; scanf(“%2d%3d”,&m,&n); printf(“m=%dn=%d\n”,m,n); } A、m=23n=45 B、m=234n=56 C、m=23n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是(A)main() {intx,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A、0B、22C、12D、10 11、C语言中while和do-while循环的主要区别(A) A、do-while的循环体至少执行一次 B、while的循环控制条件比do-while的循环控制条件严格 C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句 12、以下对二维数组的正确说明的语句是(C) A、inta[3][] B、floata(3,4) C、doublea[3][4] D、floata(3)(4) 13、以下程序的输出结果是(C) main()

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言程序设计模拟试题1(附答案)

《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”; D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 x = 9; while (x > 7)

C语言程序设计试题集

第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。

程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言教学网站及网上考试系统的设计与实现

目录 1. 引言 (1) 1.1 课题研究背景与意义 (1) 1.1.1 网上教学系统 (1) 1.1.2 网上考试系统 (1) 1.2 问题定义内容简介 (1) 1.2.1 问题定义 (1) 1.2.2 内容简介 (2) 1.3 课题调研与可行性分析 (2) 1.3.1课题调研 (2) 1.3.2 可行性分析 (2) 1.4 论文各章内容介绍 (3) 2. 系统的需求分析 (4) 2.1系统功能需求 (4) 2.2 业务流和数据流图 (4) 2.2.1业务流 (4) 2.2.2数据流图 (5) 2.3 数据字典 (6) 2.3.1 数据流分量 (6) 2.3.2 数据流 (8) 2.3.3 数据存储 (8) 2.3.4 数据处理 (8) 3. 系统设计 (10) 3.1系统总体系结构设计 (10) 3.2 系统数据模型设计 (11) 3.2.1 数据概念结构设计——E-R图 (11) 3.2.2 数据库逻辑结构设计(关系模型) (13) 3.2.3 数据表 (14) 3.3 系统开发与运行环境确定 (16) 3.3.1 开发工具的确定 (16) 3.3.2 运行环境 (17) 3.3.3系统实现的若干关键技术 (17) 4. 用户管理模块设计 (19) 4.1用户管理模块的体系结构设计 (19) 4.1.1 用户管理模块功能简介 (19) 4.1.2 用户管理模块功能图 (19) 4.2 用户管理模块的详细设计 (19) 4.2.1 用户登录和注册界面设计 (19) 4.2.2 用户登录 (20) 4.2.3 用户注册 (21) 4.2.4 用户及其权限管理 (23) 5. 试题管理模块设计 (26) 5.1 试题管理模块体系结构设计 (26)

C语言程序设计习题集(3)

指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的是_B__。 A 在程序中凡是以“#”开始的语句行都是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX是合法的宏定义命令行 D C程序对预处理命令行的处理是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果是_C__。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_是对指针变量p的正确说明和初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值是_A__。 A 6 B 2 C 4 D 8 8 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

C语言程序设计模拟试题A附答案

《C语言程序设计》模拟试卷A 一、单项选择题(每题2分,共20分) 1、下列有关C语言的叙述中错误的就是(D)。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被瞧作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的就是(C)。 A) MAIN B) _HJ C) 2ong D) LINE1 3、以下能正确定义一维数组的就是(C)。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 4、执行下列程序段后输出的结果就是(C)。 x = 9; while (x > 7) { printf(“*”); x- -; } A) **** B) *** C) ** D) * 5、设char str1[10] = “ABCDE”, str2[10] = “xyz”; 则执行语句 printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果就是(D)。 解析: strcpy(str1,str2); 后,str1[] 里就是"XYZ", Z 后面有字符串结束符 strcpy(str1,str2); 执行后,函数返回的就是str1, 因为str1[] 里就是新值"XYZ", 而 strlen(strcpy(str1,str2)) 就就是strlen(str1的新值),所以得3。 strlen 统计到字符串结束符以前,即,不计入字符串结束符。 A) 9 B) 8 C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的就是(A)。

《C语言程序设计》网上考试系统的设计与实现

毕业设计任务书 题目:《C语言程序设计》网上考试系统的设计与实现 学生姓名:李志旭班级:软件工程一班学号:13740113 题目类型:软件开发(R)指导教师:贾娟娟 一、毕业设计题目 《C语言程序设计》网上考试系统的设计与实现。 二、题目简介 该设计要求学生以《C语言程序设计》课程的考核形式为背景,对“《C语言程序设计》网上考试系统”进行设计和实现。 通过该题目的分析和设计,使学生初步得到软件工程的训练,全面培养软件开发过程中的分析、设计、编码、测试及文档规范书写的能力,得到软件工程的综合训练,提高解决实际问题的能力。 三、设计任务 1. 查阅文献资料,一般在5篇以上; 2. 针对《C语言程序设计》网上考试系统,锻炼学生的分析、设计能力,培养学生对软件文档规范的书写能力; 3. 以《C语言程序设计》课程的考核形式为背景,通过调研、分析现有的考试模式和已有的考试系统,建立系统模型; 4. 完成《C语言程序设计》网上考试系统的软件可行性分析、项目开发计划、需求规格说明、概要设计和详细设计(结构化设计方法和面向对象设计方法可任选一种); 5. 在分析和设计的基础上编码完成一个可演示的版本并进行测试; 6. 撰写设计说明书; 7. 做好答辩工作。 四、主要内容、功能及技术指标 《C语言程序设计》网上考试系统的总体目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,分析和设计一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的网上考试系统,为普通用户和管理者提供充足的信息、快捷的查询和有效的管理方式,减少不必要的损失和浪费,提高考试信息管理和出卷、阅卷的效率。

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言在线考试系统前言

前言 在网络技术逐渐渗入社会生活各个层面的今天,传统的考试方式也面临着变革,而考试管理则是一个很重要的方向。基于Web技术的网络<>可以借助于遍布全球的Internet进行,相对于传统的白纸黑字考试模式来说,考试管理一方面可以突破时空的界限,使考生可以足不出户进行考核,这就减除了组织考场和考生奔波于考场所造成的资源消耗和环境污染,符合现代人的绿色生活理念。另一方面,考生在自己熟悉的环境中考试也会更自在,能更好地发挥自己的真实水平。而且由于考试管理利用了现代化技术,还由其自身属性衍生出一些有利于考试的功能作用。考试管理的试卷可以根据题库中的内容即时生成,可避免考试前的压题;而且可以采用大量标准化试题,从而使用计算机阅卷,大大提高阅卷效率;还可以直接把成绩送到数据库中,进行统计、排序等操作。这样考试的公平性、答案的安全性可以得到有效的保证。因此,采用网络考试方式将是以后考试发展的趋势。 在线考试系统可以实现教考分离以及考务工作的全自动化管理,可以有效利用校园网的软硬件资源,使其发挥最大效力,更好地服务于各个院校的教学、科研、管理,可以大规模的实施考试,实现考试的客观性、公平性,自动组卷、评卷大大可以减轻教师的工作强度。可以利用无限广阔的网络空间,借助于遍布世界的因特网,随时随地的对学生进行考试,再利用Web数据库技术快速读取和即时储存考试数据,大大简化了传统考试的过程,大大拓展了考试的灵活性。 一个在线的考试系统是建立在全球Internet上的应用系统,客户端的配置可以较为简单,使考试不受地点的限制。一个完备的在线考试系统可以让用户在网上学习后及时检验自己的学习效果,发现自己的不足之处,让学习效率得到很大提高。题目的生成、试卷的提交、成绩的批阅等在在线考试系统中都可以在网络上自动完成。只要录入一套成熟的试题库就可以实现考试的自动化。这样,老师所要做的仅仅只是精心设计题目、维护题库,而不是去费力费时地组织考试,从而大大减轻了老师的负担,降低了考试所需的成本,即经济又环保。 为了适应新形势的发展,更好地提高在线考试的效率,系统应在自动化组卷和自动评分方面给予更好地优化,组成的试卷应更加多样化,尽量避免类似试卷的出现,可以对新组成的试卷的难易度作及时的调整;在评分方面要更具理性化,主观题评分

C语言程序设计模拟试题2(附答案)

《C语言程序设计》模拟试卷二 一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2; 则执行下述printf语句的输出结果是___1.000000___ _____。 printf("%f\n",1.0+x/y); 2.执行下述程序 #include main() { int x,y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入 12345671 则程序的输出结果是__17______。 3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include main() {

float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( X>0&&X<=100 ) { if (x>amax) amax=x; else if (x

_k++ _________; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是_-3 -4 0 4 4 3___ ____。 #inclued main() { int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 6.执行下述程序时的输出结果是____6_____ ________。 #include main() { int a[]={2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)

计算机二级C语言上机考试操作步骤及流程

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入准考证号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3

在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮, 三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试内容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”程序文件,

点击左下角的“打开”按钮,如图4所示。 图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。例如下图所示。 原“blank1.c ”程序图: 打开

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

石油大学C语言在线考试附答案

《C语言》综合复习资料 一、单选题 1. C语言中基本数据类型有( ) A)整型、实型、逻辑型B)整型、字符型、逻辑型 C)整型、实型、字符型D)整型、实型、字符型、逻辑型 2. 在C语言中,数字029是一个( ) A)八进制数B)十进制数C)十六进制数D)非法数 3. 在以下关于C语言的不严格的叙述中,错误的说法是( ) A)在标识符中,大写字母和小些字母的意义相同 B)有些不同类型的变量可以在一个表达式中运算 C)在赋值表达式中等号“=”左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义 4. 已知int a=4,b=5; ,这执行表达式a=a>b 后,变量a的值为( ) A)0 B)1 C) 4 D) 5 5. 设有定义int a=3,b=4,c=5; ,则以下表达式中,值为0的表达式是( ) A)a&&b B)a<=b C)a||b+c&&b-c D)!((a

C语言程序设计复习题

《C语言程序设计》复习题 一、判断题(本大题共60个小题) 1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 3.注释内容太多会影响程序的执行效率。 4.变量要“先定义,后使用”。 5.字符常量'a'与字符串常量"a"没有区别。 6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。 7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。 8.表达式5/2+5.0/2+7%6 的值为5.5。 9.设int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。 10.设int a=12; 则表达式a/=a+a的值是0.5。 11.在C语言中,运算符!比&&的优先级高。 12.在C语言中,运算符的优先级最小的是逗号运算符。 13.scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。 14.以下程序运行结果是:1,7,0 void main() { int x=1,y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15.该程序运行结果是:BCother void main()

{ char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); default: printf(“other”); } } 16.下面程序段运行时输出结果是a=2,b=8 void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17.下面程序,当输入为:"abc?" 时,执行结果是:abc void main() { char c; c=getchar(); while (c!='?' ) { putchar(c); c=getchar();} }

C语言教学网站及网上考试系统的设计与实现

毕业设计(论文)说明书 题目:C语言教学网站及网上考试系统的 设计与实现

毕业设计(论文)中文摘要

毕业设计(论文)外文摘要

目录 1. 引言 (1) 1.1 课题研究背景与意义 (1) 1.1.1 网上教学系统 (1) 1.1.2 网上考试系统 (1) 1.2 问题定义内容简介 (1) 1.2.1 问题定义 (1) 1.2.2 内容简介 (2) 1.3 课题调研与可行性分析 (2) 1.3.1课题调研 (2) 1.3.2 可行性分析 (2) 1.4 论文各章内容介绍 (3) 2. 系统的需求分析 (4) 2.1系统功能需求 (4) 2.2 业务流和数据流图 (4) 2.2.1业务流 (4) 2.2.2数据流图 (5) 2.3 数据字典 (6) 2.3.1 数据流分量 (6) 2.3.2 数据流 (8) 2.3.3 数据存储 (8) 2.3.4 数据处理 (8) 3. 系统设计 (10) 3.1系统总体系结构设计 (10) 3.2 系统数据模型设计 (11) 3.2.1 数据概念结构设计——E-R图 (11) 3.2.2 数据库逻辑结构设计(关系模型) (13) 3.2.3 数据表 (14) 3.3 系统开发与运行环境确定 (16) 3.3.1 开发工具的确定 (16) 3.3.2 运行环境 (17) 3.3.3系统实现的若干关键技术 (17) 4. 用户管理模块设计 (19) 4.1用户管理模块的体系结构设计 (19) 4.1.1 用户管理模块功能简介 (19) 4.1.2 用户管理模块功能图 (19) 4.2 用户管理模块的详细设计 (19) 4.2.1 用户登录和注册界面设计 (19) 4.2.2 用户登录 (20) 4.2.3 用户注册 (21) 4.2.4 用户及其权限管理 (23)

C语言程序设计模拟试题1

C语言程序设计模拟试题. 一、填空题. 1. C语言程序的三种基本结构是顺序结构,选择结构,循环结构。 2.if语句控制表达式只有其值为非0表示逻辑值“真”,其值为0表示逻辑值“假”。 3.说明语句:int b[10]; 定义了数组b有10个整型元素,这些数组元素的下标是从0开始,最大为9。 4. 有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]=0,a[2][1]=6. 5. 设x,y,z均为int 型变量,C语言描述”x或y中有一个小于z”的表达式是x

8. 在C语言中,十进制数30的八进制表示形式是036 ,十六进制表示形式是0x1e 9. C程序是由函数组成的。一个C程序由一个main()函数和若干个子函数构成。函数的构成可分为两部分:函数说明(或函数头) 和函数体。 10.标识符是指程序中的符号常量、变量、函数等对象的名称。在C语言中,标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。 11.在C语言中整型常量有十进制、八进制和十进制三种表示方法。实型常量有小数形式和指数两种表示方法。 12.C语言中语句的作用是向计算机系统发出操作命令,从而完成一定的操作任务。C语句可以分为:表达式语句、函数调用语句、控制语句、复合语句和空语句等五种类型。 二、单项选择题) 1.一个C语言的执行是从 A (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的 最后一个函数结束

相关主题
文本预览
相关文档 最新文档