建材秒知道
登录
建材号 > 设计 > 正文

C语言程序设计实验报告怎么写

疯狂的冬日
痴情的万宝路
2022-12-21 20:00:10

C语言程序设计实验报告怎么写?

最佳答案
如意的小笼包
甜美的路灯
2026-05-03 04:03:25

通过本试验初步培养计算机逻辑解题能力。熟练掌握赋值语句和if语句的应用;掌握switch多路分支语句和if嵌套语句的使用

实验原理和设计方案:

1、函数头的选则,while循环语句,switch(case)语句,条件表达式,if  else条件语句,自增运算符,设置复杂变量,输出随机操作数。

2、变量要有分数变量和等级变量,要有选择算法题数的变量和计算正确与否的变量,要有随机输出的两个操作数变量和自己按运算符号输入结果的变量,最后还有判断是否要进行的变量字符。中间结果有选择运算符的switch()和分数等级的switch()和错题对题的自增和选择运算符计算的自增。

3、问题的分析方法:先考虑设置整形变量和字符变量,考虑到要不断循环计算,选择用while语句来循环。在循环体中,将前面的输出提示运算符,和自行选择运算符、答案及输出随机操作数完成。再用switch语句对选择的运算符进行判断,并用变量进行自增运算,计算出错题于对题个数和选择了那种运算符号。在循环体最后用if else语句来判断是否继续执行还是跳出循环。最后根据自增计算的结果和公式进行分数计算,并用switch语句来是想等级的制定。

最新回答
丰富的高山
隐形的小松鼠
2026-05-03 04:03:25

五、 课程设计小结心得体会

1设计思想

1)、设定一个一维数组,可先按员工序号设定每位员工的工资

2)、利用While语句和Prinft语句完成用户菜单的设计

功能为:第1项 设为员工编号和工资数据

第2项 设为修改员工工资数据

第3项 设为查询员工工资数据

第4项 设为结束系统

3)、当用户选择1、2项时,需输入员工编号,所以需要设计编号校正功能,如果出错可输出“The error employe number”

4)、当选择2时,进行工资数据的修改,并将新数据存回该员工的工资数组中

5)、利用for循环中判断语句,将用户工资数与数组中的工资数进行比较,如相同则输出,将计数器加1,如此下去,直到把整个数组遍历一遍

6)、判断计数器是否为0, 是0表示找不到相符的工资,如果不为0,则输出共查出几比相符的工资

以上当然里面也涉及了“函数的模块化”理念,可以避免但需要重复打印头文件时重复编写打印信头的语句。像这样的程序是多见的,这样不但降低了程序还发效率,而且耗时浪费资源“共用体”的使用简化了程序的“复杂”性,正如(4)中,学号与姓名同时表示一个人,但在函数使用了“共用体”,从而程序的简单可以便于纠错,查找问题,避免了代码的重复,这样就给编译时带来了一定的难度与“量”的繁杂。一般不采取这样的做法,力求“简单、明了、清晰”。

迅速的秋天
虚拟的往事
2026-05-03 04:03:25
C语言课程设计报告--学生成绩管理系

C语言课程设计报告:

学生成绩管理系统

系统需求

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

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

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

四、输出全部学生信息和全部学生成绩。

五、退出系统.

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

总体设计

一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)

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

2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。

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

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

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

二、系统主模块结构图:

详细设计

一、 界面设计

此系统界面采用图形和数字化菜单设计。

主界面设计如下:

学生成绩管理系统

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

1:是否输入其他数据

2:查看数据

3:插入数据

4:查找数据

5:更新数据

6:保留数据

7:显示或打印数据

8:语文成绩状况

9:数学成绩状况

10:英语成绩状况

11:计算机成绩状况

12:?

13:退出系统

二、 数据结构设计:

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

学生信息结构体类型:

typedef struct student{

char name[MAX]

int num[MAX]

char sex[MAX]

int chinese

int mathematic

int english

int computer

struct student *next

}

程序代码:

//原始密码是123456

#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=p3return}

cin(p3)

while(p1!=NULL&&(p1->num<p3->num))

{ p2=p1p1=p1->next}

if(p2==head) {p3->next=headhead=p3return}

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=0p1!=NULLi++,p1=p1->next)

sum+=p1->chinese

aver=sum/i

p1=head

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

{if(max<p1->chinese)

max=p1->chinese

}

p1=head

for(i=0p1!=NULLi++,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)

}

void maverage()

{ 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=0p1!=NULLi++,p1=p1->next)

sum+=p1->mathematic

aver=sum/i

p1=head

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

{if(max<p1->mathematic)

max=p1->mathematic

}

p1=head

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

if(min>p1->mathematic)

min=p1->mathematic

}

printf("Mathe Average:%f",aver)

printf("Mathe Max:%f",max)

printf("Mathe Min:%f",min)

}

void eaverage()

{ 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=0p1!=NULLi++,p1=p1->next)

sum+=p1->english

aver=sum/i

p1=head

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

{if(max<p1->english)

max=p1->english

}

p1=head

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

if(min>p1->english)

min=p1->english

}

printf("English Average:%f",aver)

printf("English Max:%f",max)

printf("English Min:%f",min)

}

void comaverage()

{ 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=0p1!=NULLi++,p1=p1->next)

sum+=p1->computer

aver=sum/i

p1=head

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

{if(max<p1->computer)

max=p1->computer

}

p1=head

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

if(min>p1->computer)

min=p1->computer

}

printf("Computer Average:%f",aver)

printf("Computer Max:%f",max)

printf("Computer Min:%f",min)

}

update(stu *p2)

{

char name[10]

int b=0

printf("Enter The Name")

scanf("%s",name)

while(p2!=NULL)

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

{

printf("Find you data\n")

scanf("Name:%s",p2->name)

scanf("Num:%s",p2->num)

scanf("Sex:%s",p2->sex)

scanf("Chinese:%d",p2->chinese)

scanf("Math:%d",p2->mathematic)

scanf("english:%d",p2->english)

scanf("Computer:%d",p2->computer)

printf("Success!")

b=1}

else if(b==0)

printf("Sorry not Find data!")

p2=p2->next}

if(b==0)

{print()

printf("Sorry not Find data!")

}

else

{

print()

printf("Finish!")

}

}

save(stu *p2)

{

FILE *fp

char file[10]

printf("Enter file name")

scanf("%s",file)

fp=fopen(file,"w")

while(p2!=NULL)

{

fprintf(fp,"%s",p2->name)

fprintf(fp,"%s",p2->num)

fprintf(fp,"%s",p2->sex)

fprintf(fp,"%d",p2->chinese)

fprintf(fp,"%d",p2->mathematic)

fprintf(fp,"%d",p2->english)

fprintf(fp,"%d",p2->computer)

p2=p2->next

}

fclose(fp)

}

char password[7]="123456"

void main()

{ int choice

stu *p2

char s[8]

int flag=0,i

int n=3

do{ printf("Enter password:\n")

scanf("%s",s)

if(!strcmp(s,password))

{ printf("PASS\n\n\n")

flag=1

break

}

else{

printf("Error Enter again:\n")

n--

}

}

while(n>0)

if(!flag)

{printf("you have Enter 3 times!")

exit(0)

}

printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n")

printf("\t\tWelcom to the Mis\n")

printf("Author:-----\tClass:------\tNum:------\n")

printf("Adress:HG\n")

printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n")

printf("\t\tEnter OP:\n")

printf("\n\n\n\n")

printf("==============\t\t==============\n")

printf("==============\t\t==============\n")

printf("\t\tEnter the MIS yes or no\n")

scanf("%d",&choice)

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

exit(1)

print()

while(1)

{

printf("Enter choice:")

scanf("%d",&i)

if(i<1||i>13)

{

printf("Enter num from 1 to 13:\n")

exit(1)

}

switch(i)

{case 1:

p2=cindata()

break

case 2:

p2=lookdata(head)

break

case 3:

insert()

break

case 4:

find(head)

break

case 5:

update(head)

break

case 6:

save(head)

break

case 7:

print()

break

case 8:

caverage()

break

case 9:

maverage()

break

case 10:

eaverage()

break

case 11:

comaverage()

break

case 12:

case 13:

exit(1)

break

}

scanf("%d",&i)

}

}

程序中出现的问题及解决方法

问题一、学生初始信息模块:

其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。

解决办法及步骤:

1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。

2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错

3、输出用于循环检查语句中的学生信息,发现乱码

4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。

问题二、查询模块:

可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。

解决办法及步骤:

1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。

2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。

问题三、插入模块:

可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。当我们输入插入信息时,系统却提示插入不进数据。

解决办法及步骤:

1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。

2、检查当我们在输入插入信息时,看是否我们输入的插入信息有

稳重的香烟
友好的世界
2026-05-03 04:03:25
C/C++程序设计

课程设计报告[注意:文件名的格式为:

学号_中文姓名_版本_时间.doc

不符合文件名要求的实验报告为不合格报告!

如:学号为200800800999的李一同学上交的第一版的文件名为:

200800800999_姓名_1_20100719.doc

注意:

(1)连字符是下划线

(2)日期的格式为YYYYMMDD

(3)上传的文件必须是Word2003版的,不可以是其他类型或Word其他版本的文件。文件后缀名不可以是“.doc.doc”

本文中所有批注内容,在课程设计报告上交时必须删除!!!]

专 业:

班 级:班

学 号:

姓 名:

版本号:

时 间:2010-xx-xx

目 录

1 概述 2

1.1 目的 2

1.2 计划 2

2 课程设计过程及结果 2

2.1 编程环境及工具 2

2.2 排序与简单分析 2

2.3 综合设计 2

2.3.1 功能实现 2

2.3.2 程序异常处理 2

2.3.3 特色功能 2

3 课程设计总结 2

3.1 课程设计计划执行情况 2

3.2 我理解的C++ 3

3.3 改进设想 3

附录 关键代码 3

原创声明:本课程设计报告及相应的软件程序的全部内容均为本人独立完成,如有抄袭,愿承担相应后果。[完全独立完成(参考API及与同学讨论是可以的,需要自己一点一点录入并调试代码、编写报告)的同学,仅声明此一句即可。删除下面的非原创说明。

本文中所有批注内容,在课程设计报告上交时必须删除!!!]

非原创说明:[非独立完成的同学,上传上面的原创声明,并详细描述自己所做部分和拷贝同学部分。

本文中所有批注内容,在课程设计报告上交时必须删除!!!]

本课程设计本人完成的内容包括:

1、

2、

3、

拷贝同学的内容包括:

1、

2、

3、

本人独立完成部分约占总工作量的百分比为:___________

声明人:_______________________

学 号:_______________________

概述

目的

计划

课程设计过程及结果

编程环境及工具

排序与简单分析

综合设计

功能实现

文件读入

数据录入

信息显示

……[可自行扩展标题,以将实验报告材料组织得有条理为目标

本文中所有批注内容,在课程设计报告上交时需删除!!!]

程序异常处理

特色功能

课程设计总结

课程设计计划执行情况

我理解的C++

改进设想

附录 关键代码

刻苦的西装
无私的煎饼
2026-05-03 04:03:25
#include <math.h>

int primeNum(int p)

{

int i, q

if (p <0)

return 0

q = (int) sqrt(p)

for (i = 2i <qi++)

if ((p % i) == 0)

return 0

return 1

}

动人的手链
爱笑的雪碧
2026-05-03 04:03:25

package MyShape

public class Test {

public static void main(String[] args) {

Circle c = new Circle(2,4,3)

c.printItMyWay()

}

}

abstract class Shape{

public abstract float getCir()

public abstract float getArea()

}

class Point extends Shape implements Printable{

public int x

public int y

public Point(int x, int y){

this.x= x

this.y=y

}

public Point (){

}

@Override

public float getCir() {

// TODO Auto-generated method stub

return 0

}

@Override

public float getArea() {

// TODO Auto-generated method stub

return 0

}

public int getX() {

return x

}

public void setX(int x) {

this.x = x

}

public int getY() {

return y

}

public void setY(int y) {

this.y = y

}

@Override

public void printItMyWay() {

System.out.println(" Point ("+x+","+y+")")

System.out.println(" Point Area:"+this.getArea())

System.out.println(" Point Circle:"+this.getCir())

}

}

class Circle extends Point implements Printable{

public float r

public Circle(){

}

public Circle(float r,int x, int y ){

      if(r>0){

      this.r =r

      this.x =x

      this.y=y

}

}

public float getR() {

return r

}

public void setR(float r) {

this.r = r

}

@Override

public float getArea() {

return (float) (r*r*3.14/2)

}

@Override

public float getCir() {

return (float) (3.14*r*2)

}

@Override

public void printItMyWay() {

System.out.println(" Circle ("+x+","+y+")")

System.out.println(" Circle R:"+r)

System.out.println(" Circle Area:"+this.getArea())

System.out.println(" Circle Circle:"+this.getCir())

}

}

interface Printable {

public void printItMyWay()

}

激情的爆米花
怕黑的美女
2026-05-03 04:03:25
通过对这一课题的设计和实现,我对Micosoft Visual C++环境进行了深一步的了解,并逐渐开始熟练Micosoft Visual C++环境的工作界面,以及对每一个快捷键的熟悉。并认识到,熟悉这些快捷键,极为便捷编写程序,但是还要更加熟悉。 编程时要养成良好的风格,注意相同内容的缩进和对齐。这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。 通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。 这个程序设计主要涉及到了C语言中的结构体、指针及文件操作等内容,只有充分掌握了C语言中的结构体、指针及文件操作等内容,才有可能组织好这些代码,使之符合运算逻辑,得到理想的结果。 善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。对我们而言,知识上的收获重要,精神上的丰收是可喜的。挫折是一份财富,经历是一份拥有。这次实际操作必将成为我们人生旅途上一个非常美好的回忆! 回顾起此次课程设计,至今仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,我把前面所学过的知识又重新温故了一遍。 同时,在*老师的身上我学得到很多实用的知识,在此表示感谢!同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!