当前位置:首页 » 编程语言 » c语言综合实验设计系统报告
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言综合实验设计系统报告

发布时间: 2022-07-18 21:51:58

‘壹’ 求一篇c语言综合实验设计报告

不难啊,这个都网络

‘贰’ c语言综合设计报告,急急急!!!程序已经有了,报告该怎么写

实验名称:函数使用练习
一、预习准备
1. 实验目的:
(1) 掌握函数的定义方法;
(2) 掌握实参与形参“值传递”的意义和方法;
(3) 理解变量的作用域概念,学习在程序中正确定义和引用变量。
2. 实验仪器与设备:PC 机,Windows,Visual C++。
3. 程序流程图:
(1) 写一个函数,用于判断一个数是否为“水仙花数”。所谓“水仙花数”是指一个
3 位数,其各位数字的立方和等于该数本身。调用该数打印出所有的“水仙花数”。
函数:flower,用于判断一个三位数是否为“水仙花数”。
输入:x,三位整数。
输出:0,x 不是“水仙花数”;
1,x 是“水仙花数”。
流程:如图1 所示。
图 1 函数flower 流程图
主函数流程如图 2 所示。
http://blog.sciencenet.cn/u/wellwang
2
图 2 “水仙花数”程序主函数流程图
(2) 编写一个函数实现十进制整数到二进制数的转换,用非递归的方法实现该函数。
在主函数中,输入一个整数,调用该函数将这个整数转换为二进制数,输出二
进制数。
函数:D2B,用于将一个十进制整数转换为二进制数。
输入:d,十进制数;
b,整型数组。
输出:整型值,二进制数长度。
流程如图3 所示。
主函数流程如图 4 所示。
二、实验过程
程序一:
1. 实验步骤:
(1) 创建Win32 Console Application 工程,工程名:E5_1;
(2) 创建C++ Source File ,文件名:E5_1;
http://blog.sciencenet.cn/u/wellwang
3
图 3 函数D2B 流程图
图 4 “十进制整数转换二进制数”程序主函数流程图
http://blog.sciencenet.cn/u/wellwang
4
(3) 输入源程序:
#include <stdio.h>
int flower(int x);
void main()
{
int i;
for(i=100;i<1000;i++)
if(flower(i))
printf("%d\n",i);
}
int flower(int x)
{
int a,b,c;
a=x/100;
b=(x%100)/10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
return 1;
else
return 0;
}
(4) 编译,运行程序:
编译中未出现警告和错误。运行程序,程序输出结果。
2. 实验数据:
程序输出:
153
370
371
407
程序二:
1. 实验步骤:
(1) 创建Win32 Console Application 工程,工程名:E5_2;
(2) 创建C++ Source File ,文件名:E5_2;
(3) 输入源程序:
#include <stdio.h>
int D2B(int d,int b[]);
void main()
{
int i,d,l,b[10];
printf("请输入一个十进制数:");
scanf("%d",&d);
http://blog.sciencenet.cn/u/wellwang
5
l=D2B(d,b);
for(i=l-1;i>=0;i--)
printf("%d",b[i]);
printf("\n");
}
int D2B(int d,int b[])
{
int i=0;
do
{
b[i]=d%2;
d=d/2;
i++;
}while(d!=0);
return i;
}
(4) 编译,运行程序:
编译中未出现警告和错误。运行程序,程序输出结果。
2. 实验数据:
(1) 第一组数据:
输入:8
输出:1000
(2) 第二组数据:
输入:90
输出:1011010
(3) 第三组数据:
输入:0
输出:0
(4) 第四组数据:
输入:-10
输出:-10-10
三、实验总结
程序一输出数据正确。
程序二在输入的数为负整数(-10)时,输出结果不正确,这是因为负数在转换为
二进制的过程中,对2 取模的值可能为-1。对于负数,可以先取它们的绝对值进行转
换,转换完成后,再在二进制数前面加上负号即可。
通过本次实验,掌握了函数的原型说明、函数定义以及函数调用的方法;理解了
函数实参与形参“值传递”的意义;理解了变量作用域的概念;提高了编程水平和动
手能力。

‘叁’ C语言程序设计实验报告

题目2:
#include <stdio.h>
#include <stdlib.h>
main()
{
int a;
printf("ÇëÊäÈë³É¼¨£º\n");
scanf("%d",&a);
if(90<=a&&a<=100) printf("A");
if(80<=a&&a<=89) printf("B");
if(70<=a&&a<=79) printf("C");
if(60<=a&&a<=69) printf("D");
if(0<=a&&a<=59) printf("E");

if(a>100||a<0) printf("ÊäÈëÊý¾Ý³ö´í");

getch();
}
switch:

#include<stdio.h>
main2()
{
int a;
printf("ÇëÊäÈë³É¼¨:\n");
scanf("%d",&a);
switch(a/10)
{
case 10:printf("A!\n");
break;
case 9:printf("A!\n");
break;
case 8:printf("B!\n");
break;
case 7:printf("C!\n");
break;
case 6:printf("D!\n");
break;
case 5:printf("E!\n");
break;
case 4:printf("E!\n");
break;
case 3:printf("E!\n");
break;
case 2:printf("E!\n");
break;
case 1:printf("E!\n");
break;
case 0:printf("E!\n");
break;
default:
printf("ÊäÈëÊý¾ÝÓдí\n") ;
}
getch();
}
还有你第一题是什么意思呢

题目3 :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main
()
{
int a,g,s,b,q,w,x,p,x1,x2,x3,x4;
printf("ÇëÊäÈ룺\n");
scanf("%d",&a);
/*ÅжÏλÊý*/
if(a<0||100000<a) printf("Êý¾Ý³¬³ö·¶Î§£¡£¡£¡");
else if(a/10000!=0){ printf("5λÊý\n");p=5;}
else if(a/1000!=0){ printf("4λÊý\n");p=4;}
else if(a/100!=0) {printf("3λÊý\n"); p=3;}
else if(a/10!=0) {printf("2λÊý\n");p=2;}
else if(a/1!=0) {printf("1λÊý\n");p=1;}
/*·Ö±ð´òÓ¡³öÿһλÊý×Ö*/
w=a/10000;
printf("ÍòλΪ%d\n",w);
q=(a-w*10000)/1000;
printf("ǧλΪ%d\n",q);
b=(a-10000*w-1000*q)/100;
printf("°ÙλΪ%d\n",b);
s=(a-10000*w-1000*q-b*100)/10;
printf("ʮλΪ%d\n",s);
g=(a-w*10000-q*1000-b*100-10*s) ;
printf("¸÷λΪ%d\n",g);
/*°´ÄæÐò´òÓ¡³ö¸÷λÊý*/
if(p==5) {x=g*10000+s*1000+b*100+q*10+w; printf("µ¹ÐòÊýΪ%d\n:",x);}
else
if(p==4) {x1=g*1000+s*100+b*10+q; printf("µ¹ÐòÊýΪ%d\n:",x1); }
else
if(p==3) {x2=g*100+s*10+b; printf("µ¹ÐòÊýΪ%d\n:",x2);}
else
if(p==2) {x3=g*10+s; printf("µ¹ÐòÊýΪ%d\n:",x3);}
else
if(p==1) {x4=g; printf("µ¹ÐòÊýΪ%d\n:",x4);}

getch();
}

题目4:
#include <stdio.h>
#include <stdlib.h>
main()
{
int a[8],i,b,j,swap;
printf("ÇëÊäÈëÊý¾Ý£º\n");
for(i=0;i<8;i++) scanf("%d",&a[i]);
for(i=0;i<7;i++)
{
swap=0;
for(j=0;j<8-i-1;j++)
{
if(a[j]>a[j+1])
{
swap=1;
b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
}
if(!swap) break;
}
for(i=0;i<8;i++) printf(" %d ",a[i]);
printf("\n");
getch();
}

‘肆’ C语言实验报告

我写了个,不知道行不,有什么不妥的请指出哈,如要格式请加我,将之发给你
四 川 大 学 计 算 机 学 院、软 件 学 院
实 验 报 告
学号: 姓名: 专业:计算机科学与技术 班级:5 第 13 周
课程名称 c/C++ 实验课时 2
实验项目 字符串的复制与追加 实验时间 08.5. 16
实验目的 1.掌握字符串的基本操作和理解数据结构

实验环境 VC 6.0
实验内容(算法、程序、步骤和方法) 先计算出S1和S2的字符个数,为S3分配好空间,利用已有库函数先将S1复制到S3中,再将S2追加到S3中,当显示完后要记住收回空间,做好善后处理。
源代码如下:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char *s1="abcdef";
char *s2="123456f";
int n=strlen(s1)+strlen(s2);//计算s1,和s2的总长度n
char *s3=new char[n+1]; //定义S3并分配空间大小为n
strcpy(s3,s1); //将s1复制到s3中
strcat(s3,s2); //将s2追加到s3后面
cout<<"s3="<<s3<<endl;
delete []s3; //收回空间
s3=NULL; //将指针指向空
return 0;
}

(接上)
实验内容(算法、程序、步骤和方法)

结构是顺序存储结构,算法顺序链接法
数据记录
和计算 数据有:字符串S1 ,S2;和一未知字符串S3
只需计算前两个字符串长度之和

结 论
(结 果) 利用字符数组可以顺序存储字符数据,并且能够顺序处理数据;
算法复杂度O(n+m);处于中性
小 结 字符数组能够带来很好的存储结构,便于操作,但是算法不是很好,只能顺序遍历数组,故复杂度不是很小
指导老师评 议

成绩评定: 指导教师签名:

‘伍’ 怎么写c语言综合实验设计报告

举个楼主自己写的例子吧,仅供参考。
c语言作业报告书
题 目:二次探测再散列法解决冲突建立哈希表并查找
完成时间:2012年5月31号
学 号:2011013290 姓名:聂亮兵 专业班级:信管112班
1. 实习任务与目的
实验任务:独立写出哈希查找的相关代码并画出核心的算法流程图,记录相关实验数据,得出实验结果。
试验目的:通过两者运行时间的对比,加深对哈希查找和顺序查找各自优缺点的理解,并进一步熟悉哈希查找的原理和流程。
2. 实习内容及过程
实习内容:用除留余数法和二次探测再散列法解决冲突建立哈希表并查找,通过函数GetTickCount计算运行时间;再同样计算顺序查找的方法的查找时间。
实习过程:
查阅关于库函数<windows.h>的相关内容,并熟悉函数GetTickCount()的用法。
规划算法流程,画出主要函数的流程图。具体流程是:读入文件数据——顺序查找——输出结果——哈希查找——输出结果。
对应流程写出相关函数,完善主函数。
进行程序的运行和调试,修改一些不足和bug。
添上相关注释。
运行程序进行实验并得出实验结果,记录。
完成实验报告。
3. 实验结果分析
实验结果:由于所给数据Data.txt数据量过小,实验结果不明显,两种查找所耗时间均被系统默认为0;如图所示为编号为37、1294、4091的三个数据元素:
分析:哈希查找的方法适用于数据在区间内随机分布均并且量大的数据形式;而顺序查找原理简单,但是不适用于大量数据的查找。
4. 核心算法流程图

图1:主函数流程图

图2:哈希查找流程图
5. 实习总结及体会
这个实验难度不大,但是需要自己高质量的独立完成,对自己是一个总结归纳,能通过这个实验清楚自己哪些地方平时没有注意到,哪些地方是自己擅长并应该继续保持的。
此外,本实验的全过程能让自己了解正式的程序、任务和报告等的完成流程。通过自己独立完成这个实验,再和标准的数据结构代码比较,找出自己代码的亮点、不足以及欠缺,让自己明白哪些地方是自己想不到的,哪些方法是自己不能想到的,并以此学习好的编程思想和优秀的编程技巧和编程风格。
本次试验中:
正式的程序代码中,外部变量的使用要格外注意,不能随意使用外部变量。但是本程序具有独立性,不用与其他程序代码相衔接,采用外部变量的方法,减少函数调用的时候的复制传值的次数,提高效率。
正式的编程思想中,要有统一的命名方式。这包括两个方面。其一是自己的命名规则要统一,不能乱。其二是与合作小组之间的命名规则要统一,提高代码的可嵌入性。但是本实验由自己独立完成,命名规则按照自己的习惯而定,与课本命名规则有点出入。
二次探测再散列法解决冲突中,课本中没有提到如果H(a)-m^2<0时的处理方法。本程序中采用的方法是取绝对值。二次探测再散列法中,再散列需要在循环中进行,直到找到位置e为止。这个过程中m需要进行两种互斥变化:一种是 *-1 ;一种是 +1;再循环中不好实现。本程序中采用一个信号变量,每次循环自增1,奇偶数分别执行不同的变化。

‘陆’ c语言综合实验报告 帮我弄一个

姓名 ***
**学 院 ** 专业 052 班
2007 年 11 月 24 日
实验内容实验五 指导老师 陈老师
一、实验内容及要求:
编译运行习题5-3,观察x、y变量的值。
实现客户机类(类名为CLIENT),其中包含的成员有:字符型静态数据成员ServerName,用来保存服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;静态函数ChangeServerName(),用来改变服务器名称。在头文件client.h中声明这个类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。二、实验目的:
1、复习类的声明和使用、掌握对象的声明和使用;
2、学习构造函数和析构函数的使用,观察构造函数和析构函数的执行过程。
三、程序:
//client.h
class Client
{
public:
Client();
~Client();
static ChangeServerName(char *); //改变服务器名称
char * GetServerName(); //返回服务器名称
int GetClientNum (); //返回客户机数量
protected:
static char ServerName[20]; //服务器名称
static int ClientNum; //存放服务器数量
};
/////////////////////////////////////////////////////
//client.cpp
# include <iostream>
# include <cstring>
# include "client.h"
using namespace std;
static char *ServerName = "";
int Client::ClientNum = 0;
Client::Client()
{ClientNum ++;}

Client::~Client(){}

void Client::ChangeServerName(char * names) //改变服务器名称
{strcpy(ServerName,names);}

char * GetServerName() //返回服务器名称
{return ServerName;}

int GetClientNum () //返回服务器数量
{return ClientNum;}
////////////////////////////////////////////////////////
//test.cpp
# include <iostream>
# include "client.cpp"
using namespace std;
void main() //用于测试的主函数
{
Client threeclient[3];
char namestr[20]; //临时存放服务器名称
cout<<"定义了3个客户"<<endl;
cout<<"请输入新服务器名称:"<<endl;
cin>> namestr;
CC.ChangeServerName(namestr);
cout<<"服务器的名称是"<<Client::GetServerName()<<endl;
cout<<"客户数量为"<<CC.GetClientNum ();

}

思考题:
(1)C语言有五种基本数据类型:字符、整型、单精度实型、双精度实型和空类型。结构体可以定义自己所需特殊类型.其他类型是已经定义好,不可修改的,而结构体是根据自己的需要定义的特殊的类型.
(3)采用了循环,复合语句.

‘柒’ C语言综合实验设计报告


题目: C语言输出万年历

学院:

专业:

班级:

姓名:

设计日期:总分:

一、设计题目:

C语言输出万年历

二、题目阐述及设计思路:

C语言输出万年历,输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天 。本程序运用的万年历的计算公式: d=a-1+(a-1)/4-(a-1)/100+(a-1)/400+c; 其中a为年c为该日期在本年中的天数,d取整数,当d/7余数0时是星期天,余数1时是星期一依此类推。

三、主要知识点:

运用函数调用,if,else函数switch语句。for,while,循环语句。

四、程序清单:

#include <stdio.h>

int m_day(int year,int month)/*此函数是给定年,月,计算此月有多少天.*/

{

if ((year%4==0 &&year%100!=0) ?? (year%400==0))

switch(month)

{

case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;

case 4: case 6: case 9: case 11: return 30;

case 2: return 29;

}

else

switch(month)

{

case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;

case 4: case 6: case 9: case 11: return 30;

case 2: return 28;

}

}

int main()

{

int year,month;

int i, days=0, d, day=0;

printf ("Enter the year and month:\n");

scanf ("%d %d ", &year, &month );

for (i=1;i<month; i++)

days+=m_day (year,i);

d=year-1+(year-1)/4-(year-1)/100+(year-1)/400+days+1;

printf("%d-%d\n",year,month);

printf(" Sun Mon Tue Wed Thu Fri Sat\n");

for (i=0;i<d%7;i++)

printf(" ");

for (i=1;i<=7-d%7;i++)

{

day++;

printf("%5d",day);

}

printf("\n");

while(1)

{

for (i=1;i<=7;i++)

{

day++;

if (day>m_day(year,month))

printf("%5d",day);

}

printf("\n");

}

}

五、设计结果说明:

1、设计优点:

程序充分利用所学的C语言知识,运用了函数的调用、循环语句、以及return语句,使得编程更加有条理。简单易懂,结构清晰,也使得程序的使用更加方便。

2、设计不足:

在编程序时,由于考虑到时间和受所学知识的限制,只能输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天 。而并不能输入公历的年月日,输出农历年月日以及输入农历节气,输出当年农历的年月日及公历年月日。

‘捌’ C语言程序设计实验报告完整版(可追加分)

举手之劳,帮你写了。
这里设定姓名长度不超过20字符。每个项目结束时,将其编号、类型符(区分取前3名还是前5名)输入,并按名次顺序输入运动员姓名、学校和成绩。程序已做改动,增加了一些代码以提高程序的健壮性。本题完整的c程序如下,在win-tc和Dev-c++下调试通过,运行正确。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>
#define n 5 /*设定,可更改*/
#define m 3 /*设定,可更改*/
#define w 2 /*设定,可更改*/

struct achievement /* 定义表示成绩的结构体 */
{int schoolnumber;/* 学校编号 */
char name[20]; /* 姓名 */
int mark; /* 分数 */
int result;};

struct pro /* 表示项目的结构体 */
{int tag;/* 项目编号 */
struct achievement ach[m+w];
int number;
};

struct Node
{struct pro date;
struct Node *next;
};

main()
{
int i,j,t;
int x[n]={0};int y[n]={0}; /* x[n]和y[n]分别表示男子和女子团体总分 */
struct Node *head;
struct Node *p;
struct Node *q;
if((head=(struct Node*)malloc(sizeof(struct Node)))==NULL) exit(1);
head->next=NULL; /* 初始化单链表 */
p=head;
for(i=0;i<m+w;i++) /* 输入成绩 */
{
j=i+1;
printf("请输入第%d个项目的信息\n",j);
p->date.number=j;
printf("所取的名次数为:");
scanf("%d",&p->date.tag);
while(p->date.tag!=3&&p->date.tag!=5)
{ printf("输入有误,请重新输入!");
getchar(); /*加入此函数避免输入错误时程序进入无限循环*/
getchar();
printf("所取的名次数为:");
scanf("%d",&p->date.tag);
}
t=1;
while(t<=p->date.tag)
{
printf("第%d名的名字:",t);
scanf("%s",p->date.ach[t-1].name);
printf("第%d名的学校:",t);
scanf("%d",&p->date.ach[t-1].schoolnumber);
printf("第%d名的分数:",t);
scanf("%d",&p->date.ach[t-1].mark);
p->date.ach[t-1].result=t;
t++;
}
if(j!=m+w)/* 注意这里 */
{q=(struct Node*)malloc(sizeof(struct Node)); /* 生成新结点 */
p->next=q;
p=q;
p->next=NULL;
}
}
for(i=0;i<n;i++) /* 产生成绩单 */
{
j=i+1;
printf("\n学校%d成绩单:\n",j);
p=head;
while(p!=NULL)
{
t=1;
while(t<=p->date.tag)
{
if(p->date.ach[t-1].schoolnumber==j)
{
printf("获奖项目:%d ",p->date.number);
printf("名次:%d ",p->date.ach[t-1].result);
printf("获奖人姓名:%s ",p->date.ach[t-1].name);
printf("所得分数:%d \n",p->date.ach[t-1].mark);
if(p->date.number<=m)
x[i]=x[i]+p->date.ach[t-1].mark;
else
y[i]=y[i]+p->date.ach[t-1].mark;
}
t++;
}
p=p->next;
}
printf("\n男子团体总分:%d ",x[i]);
printf("女子团体总分:%d \n",y[i]);
printf("团体总分:%d\n",x[i]+y[i]);
}
for(i=0;i<m+w;i++) /*释放申请的内存空间*/
{p=head->next;
free(head);
head=p;
}
getch();
}

‘玖’ c语言程序设计实验报告

五、 课程设计小结心得体会
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)中,学号与姓名同时表示一个人,但在函数使用了“共用体”,从而程序的简单可以便于纠错,查找问题,避免了代码的重复,这样就给编译时带来了一定的难度与“量”的繁杂。一般不采取这样的做法,力求“简单、明了、清晰”。