当前位置:首页 » 编程语言 » c语言实验报告2

c语言实验报告2

发布时间: 2022-09-11 19:30:51

c语言先排序后折半查找程序的实验报告

1实验目的:熟练掌握一维数组,二维数组的定义,初始化和输入输出方法;熟练掌握与数组有关的常用算法(如查找,排序等)。
2实验内容:设定一个整形数组存放20个元素,用直接赋值的方法在程序中初始化该数组。先对这些无序的数据进行排序,然后采用折半查找,把要寻找的数的位置输出出来。
3算法描述流程图

源程序:#include<stdio.h>
void main()
{int k,s,b,i,j,m,n,a[20]={12,9,16,21,6,11,19,4,8,20,15,2,5,18,14,7,3,10,13,17};
for(s=0;s<20;s++)
{
for(i=s+1;i<20;i++)
{
if(a[s]>a[i])
{
j=a[s];
a[s]=a[i];
a[i]=j;
}
}
}
scanf("%d",&b);
m=0;
n=19;
while(m<=n)
{
k=(m+n)/2;
if(b==a[k])
{
printf("FOUND\n");
printf("%d\n",k+1);
break;
}
else
{
if(b<a[k])
n=k-1;
else
m=k+1;
}
if(m>n)
printf("NO FOUND");
}
}

5测试数据:3,5, 20,30

6运行结果:FOUND 2;FOUND 4;FOUND 19 ;NO FOUND

7出现问题及解决方法:编译时出错,修改源程序,直到没有错误为止

8实验心得:通过折半查找,可以实现对数组数据的处理,并且增加了查找速度

❷ 咋写C语言实验报告

c(c++)上机实验报告格式:

⒈ 实验目的

(1) 了解在具体的语言环境下如何编辑、编译、连接和运行一个 C 程序。

⑵ 通过运行简单的 C 程序,初步了解 C 源程序的特点。

⑶ 掌握 C 语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。

⑷ 掌握不同的类型数据之间赋值的规律。

⑸ 学会使用 C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

2.实验内容和步骤

⑴ 检查所用的计算机系统是否已安装了 C 编译系统并确定他所在的子目录。

⑵ 进入所用的集成环境。

⑶ 熟悉集成环境的界面和有关菜单的使用方法。

⑷ 输入并运行一个简单的、正确的程序。

⒊ 实验题目

⑴ 输入下面的程序

# include “stdio.h” void main()

{ printf(“This is a c program. ”); }

❸ c语言实验报告 求大神

1、

#include<stdio.h>
intmain(){
intyear;
scanf("%d",&year);
if(year%400==0||year%100!=0&&year%4==0)
printf("%d年是润年 ",year);
else
printf("%d年不是润年 ",year);
return0;
}

2、

#include<stdio.h>
intmain(){
intyear,month;
intmonthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d%d",&year,&month);
if(month!=2)
printf("该月一共%d天 ",monthOfDay[month]);
else{
if(year%400==0||year%100!=0&&year%4==0)
printf("该月一共%d天 ",monthOfDay[month]+1);
else
printf("该月一共%d天 ",monthOfDay[month]);
}
return0;
}

3、

#include<stdio.h>
intmain(){
intyear,month,op;
intmonthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("请选择: ");
printf("1、判断闰年 ");
printf("2、判断某月多少天 ");
printf("输入其他数字退出 ");
scanf("%d",&op);
if(op==1){
printf("请输入年份:");
scanf("%d",&year);
if(year%400==0||year%100!=0&&year%4==0)
printf("%d年是润年 ",year);
else
printf("%d年不是润年 ",year);
}
elseif(op==2){
printf("请输入年月,以空格分开(例如199311):");
scanf("%d%d",&year,&month);
if(month!=2)
printf("该月一共%d天 ",monthOfDay[month]);
else{
if(year%400==0||year%100!=0&&year%4==0)
printf("该月一共%d天 ",monthOfDay[month]+1);
else
printf("该月一共%d天 ",monthOfDay[month]);
}
}
else{
printf("退出啦! ");
}
return0;
}

4、我把上面几个功能转成函数了,否则代码量有点大了。。

#include<stdio.h>
intisLeapYear(intyear);
intgetDayOfMonth(intyear,intmonth);

intmain(){
intyear,month,day;
intans=0,i;
printf("请输入年月日,以空格分开(例如20151220):");
scanf("%d%d%d",&year,&month,&day);
ans+=day;
for(i=1;i<month;i++)
ans+=getDayOfMonth(year,i);
printf("这是%d年中的第%d天 ",year,ans);
return0;
}

intisLeapYear(intyear){
if(year%400==0||year%100!=0&&year%4==0)
return1;
return0;
}

intgetDayOfMonth(intyear,intmonth){
intmonthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(month!=2)
returnmonthOfDay[month];
returnmonthOfDay[month]+isLeapYear(year);
}

5、用函数跑还是比较方便的

#include<stdio.h>
#include<windows.h>
intisLeapYear(intyear);
intgetDayOfMonth(intyear,intmonth);
intgetDayOdYearFormData(intyear,intmonth,intday);
intmain(){
intyear,month,day,op;
intans=0,i;
while(1){
printf("请选择: ");
printf("1、判断闰年 ");
printf("2、计算某月多少天 ");
printf("3、计算某日是一年中的第几天 ");
printf("输入其他数字退出 ");
scanf("%d",&op);
if(op==1){
printf("请输入年份:");
scanf("%d",&year);
if(isLeapYear(year)==1)
printf("%d年是润年 ",year);
else
printf("%d年不是润年 ",year);
}
elseif(op==2){
printf("请输入年月,以空格分开(例如199311):");
scanf("%d%d",&year,&month);
printf("该月一共%d天 ",getDayOfMonth(year,month));
}
elseif(op==3){
printf("请输入年月日,以空格分开(例如20151220):");
scanf("%d%d%d",&year,&month,&day);
printf("这是%d年中的第%d天 ",year,getDayOdYearFormData(year,month,day));
}
else{
printf("退出啦! ");
system("pause");
break;
}
system("pause");
}
return0;
}

intisLeapYear(intyear){
if(year%400==0||year%100!=0&&year%4==0)
return1;
return0;
}

intgetDayOfMonth(intyear,intmonth){
intmonthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(month!=2)
returnmonthOfDay[month];
returnmonthOfDay[month]+isLeapYear(year);
}

intgetDayOdYearFormData(intyear,intmonth,intday){
inti,ans=0;
ans+=day;
for(i=1;i<month;i++)
ans+=getDayOfMonth(year,i);
returnans;
}

6、

#include<stdio.h>
intmain(){
inti,j;
for(i=0;i<5;i++){
for(j=0;j<4-i;j++)
printf("");
for(j=0;j<2*i+1;j++)
printf("*");
printf(" ");
}
return0;
}

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

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

❺ 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语言实验报告怎么写

#include <stdio.h>


int main()

{

unsigned long a;

char c;

printf("Input a binary number: ");

for(a=0;(c=getchar())!=' ';)

a=a*2+c-'0';

printf("The number is %lu in decimal ",a);

printf("The number is %lo in octal ",a);

printf("The number is %lX in Hexadecimal ",a);

return 0;

}

❼ C语言实验报告总结

你只需要按那个模版就行,那些内容就改成你的作业
班级: 学号: 姓名:
实验9 指针

一、实验目的

(1)掌握指针概念,并定义与使用它。

(2)使用数组的指针和指向数组的指针变量。

(3)使用字符串的指针和指向字符串的指针变量。

二、实验内容

1. 将一个3*3的矩阵转置,用函数实现。

2. 有n个人围成一圈,顺序排号。从第一个人开始报数(1~3),凡报到3的人退出,问第几号的人能留下。

三、实验环境

硬件:(1)学生用微机

(2)多媒体实验教室

软件:(1)Windows XP 中文操作系统

(2)VC++ 6.0

四、实验结果

程序1:

#include<stdio.h>

void main()

{

void move(int *pointer);

int a[3][3],*p,i;

printf("input marix:\n");

for(i=0;i<3;i++)

scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);

p=&a[0][0];

move(p);

printf("matrix:\n");

for(i=0;i<3;i++)

printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);

}

void move(int *pointer)

{

int i,j,t;

for(i=0;i<3;i++)

for(j=i;j<3;j++)

{

t=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

}

}

程序2:

#include<stdio.h>

void main()

{

int i,k,m,n,num[50],*p;

printf("input num of person:");

scanf("%d",&n);

p=num;

for(i=0;i<n;i++)

*(p+i)=i+1;

i=0;

k=0;

m=0;

while(m<n-1)

{

if(*(p+i)!=0)k++;

if(k==3)

{

*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n)i=0;

}

while(*p==0)p++;

printf("the last num is %d\n",*p);

}

结果1:(就是程序运行之后出现的框,截图后粘贴这里)

结果2:

五、总结:

通过这个实验的学习, 基本掌握了指针的基本用法。

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

热点内容
手机手势密码忘了怎么办 发布:2025-01-12 17:14:51 浏览:485
这手机配置有什么颜色的电视机 发布:2025-01-12 17:02:19 浏览:932
阁源码 发布:2025-01-12 16:48:08 浏览:130
组装机箱搭建服务器 发布:2025-01-12 16:46:58 浏览:511
风险资产配置理论有哪些 发布:2025-01-12 16:46:13 浏览:981
小程序分销源码 发布:2025-01-12 16:42:41 浏览:47
linux查看系统硬件 发布:2025-01-12 16:34:26 浏览:968
安卓手机怎么设置独享标志 发布:2025-01-12 16:27:56 浏览:932
我的世界如何把材质包放进服务器 发布:2025-01-12 16:11:14 浏览:56
使用hmailserver搭建邮件服务器 发布:2025-01-12 16:05:43 浏览:809