C语言入门代码大学实验报告2.docx
《C语言入门代码大学实验报告2.docx》由会员分享,可在线阅读,更多相关《C语言入门代码大学实验报告2.docx(15页珍藏版)》请在冰豆网上搜索。
![C语言入门代码大学实验报告2.docx](https://file1.bdocx.com/fileroot1/2023-2/3/81c31342-9b87-44fb-b247-993a382711c5/81c31342-9b87-44fb-b247-993a382711c51.gif)
C语言入门代码大学实验报告2
这是本人当年做实验亲手码的代码,结合许多的课后及实验课题目,并附上代码及执行结果。
适合初学者。
(第二部分)-----------DavidYu
计算机程序设计基础(C语言)实验报告
实验编号:
5实验名称:
善用指针
(一)
实验设备:
微型计算机
软件环境:
WINDOWS7,C语言
学院:
班级:
姓名:
学号:
指导教师:
实验日期:
信息与计算机科学技术实验中心
一、实验目的
掌握指针和间接访问的概念,会定义和使用指针变量;
能正确使用数组的指针和指向数组的指针变量。
能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容
习题7.1输入3个整数,按由小到大的顺序输出。
习题7.2输入3个字符串,按由小到大的顺序输出。
习题7.6写一个函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
三、实验记录
习题7.1输入3个整数,按由小到大的顺序输出。
#include
intmain()
{
inti,j,t,*p,a[3];
printf("请输入三个数字(回车输入):
\n");
for(i=0;i<3;i++)
scanf("%d",&a[i]);
for(i=0;i<2;i++)
for(j=0;j<2-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("数字由小到大排序:
\n");
for(p=a;p<(a+3);p++)
printf("%4d",*p);
printf("\n");
return0;
}
习题7.2输入3个字符串,按由小到大的顺序输出。
#include
intmain()
{
chara[3][100],*t;
char*p[3]={a[0],a[1],a[2]};
inti;
printf("请输入三个字符串(回车输入):
\n");
for(i=0;i<3;i++)
scanf("%s",p[i]);
if(*p[0]>*p[1])
{t=p[0];p[0]=p[1];p[1]=t;}
if(*p[1]>*p[2])
{t=p[1];p[1]=p[2];p[2]=t;}
if(*p[0]>*p[1])
{t=p[0];p[0]=p[1];p[1]=t;}
printf("字符串由小到大排序:
\n");
for(i=0;i<3;i++)
printf("%s",p[i]);
printf("\n");
return0;
}
习题7.6写一个函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
#include
intlenstr(char*str)
{
inti=-1;
while(str[++i]);
returni;
}
intmain()
{
charp[100];
printf("请输入一个字符串:
\n");
gets(p);
printf("字符串长度为:
%d\n",lenstr(p));
return0;
}
四、心得体会
通过此次实验,对利用指针间接访问数据这个方法,有了更深的认识。
活用了while语句,使算法更加简单,提高了执行效率。
当然,也灵活运用了冒泡排序算法,二维数组等等,巩固了所学知识,收获挺大。
五、指导教师意见
100
签名:
2017年5月20日
计算机程序设计基础(C语言)实验报告
实验编号:
6实验名称:
善用指针
(二)
实验设备:
微型计算机
软件环境:
WINDOWS7,C语言
学院:
班级:
姓名:
学号:
指导教师:
实验日期:
信息与计算机科学技术实验中心
一、实验目的
(1)进一步掌握指针的应用;
(2)能正确使用数组的指针和指向数组的指针变量;
(3)能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容
1.整型数组a有10个元素,从键盘输入10个元素,然后按逆序输出数组中的全部元素(要求使用指针法)。
2.将数组a中n个整数按相反顺序存放(要求指针法)。
3.编定用选择法对10个整数排序(由小到大顺序)的函数,在主函数中调用此函数时,用指针变量作实参。
三、实验记录
题目1.
#include
intmain()
{
int*p,i,a[10];
printf("请输入10个数字:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("逆序输出结果为:
\n");
for(p=(a+9);p>=a;p--)
printf("%5d",*p);
printf("\n");
return0;
}
题目2.
#include
intmain()
{
voidinv(int*x,intn);
inti,a[10]={3,4,12,6,25,15,8,37,9,1};
printf("原顺序的数组为:
\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
inv(a,10);
printf("逆序后的数组为:
\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
return0;
}
voidinv(int*x,intn)
{
int*p,*i,*j,t,m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{t=*i;*i=*j;*j=t;}
}
题目3.
#include
voidsort(int*x,intn)
{inti,j,min,t;
for(i=0;i{min=i;
for(j=i+1;jif(*(x+j)<*(x+min))
min=j;
t=*(x+i);*(x+i)=*(x+min);*(x+min)=t;
}
}
intmain()
{
int*p,i,a[10];
printf("请输入数字:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=a;
sort(p,10);
printf("数字由小到大排序结果:
\n");
for(i=0;i<10;i++)
printf("%5d",*(p+i));
printf("\n");
return0;
}
四、心得体会
通过此次试验,我对函数定义以及函数的调用掌握更加熟练,对指针的认识与理解也提高了不少,能正确使用数组的指针和指向数组的指针变量以及字符串的指针和指向字符串的指针变量。
同时也发现对以前的知识掌握的有些欠缺,对代码不够熟练,争取多加练习,掌握熟练。
五、指导教师意见
100
签名:
2017年5月25日
计算机程序设计基础(C语言)实验报告
实验编号:
7实验名称:
使用结构体
实验设备:
微型计算机
软件环境:
WINDOWS7,C语言
学院:
班级:
姓名:
学号:
2
指导教师:
实验日期:
2017年6月5日
信息与计算机科学技术实验中心
一、实验目的
1.掌握结构体类型变量的定义和使用;
2.掌握结构体类型数组的概念和应用。
二、实验内容
1.输入两个学生的学号、姓名和成绩,输出成绩较高成绩者的全部信息,如果两学生成绩相同,则输出两人的全部信息。
2.有3名候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。
三、实验记录
题目1.
#include
intmain()
{structStudent
{intnum;
charname[20];
floatscore;
}student1,student2;
scanf("%d%s%f",&student1.num,student1.name,&student1.score);
scanf("%d%s%f",&student2.num,student2.name,&student2.score);
printf("成绩较高的学生信息:
\n");
if(student1.score>student2.score)
printf("%d%s%6.2f\n",student1.num,student1.name,student1.score);
elseif(student1.scoreprintf("%d%s%6.2f\n",student2.num,student2.name,student2.score);
else
{printf("%d%s%6.2f\n",student1.num,student1.name,student1.score);
printf("%d%s%6.2f\n",student2.num,student2.name,student2.score);
}
return0;
}
题目2.
#include
#include
structperson
{
charname[20];
intcount;
}leader[3]={"Li",0,"Zhang",0,"Fun",0};
intmain()
{
inti,j;
charleader_name[20];
for(i=1;i<=10;i++)
{
scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
}
printf("\n投票结果为:
\n");
for(i=0;i<3;i++)
printf("%5s:
%d\n",leader[i].name,leader[i].count);
return0;
}
四、心得体会
通过此次实验,更加深刻理解结构体:
结构体是由一系列相同类型或不同类型的数据构成的集合,可以将结构体定义成想要的数据类型。
也就是说,结构体将几种数据封装起来,使它们有一个共同的外壳,便于计算。
五、指导教师意见
100
签名:
2017年6月8日
计算机程序设计基础(C语言)实验报告
实验编号:
8实验名称:
文件操作
实验设备:
微型计算机
软件环境:
WINDOWS7,C语言
学院:
班级:
)
姓名:
学号:
指导教师:
实验日期:
信息与计算机科学技术实验中心
一、实验目的
(1)掌握文件以及缓冲文件系统、文件指针的概念。
(2)学会使用文件打开、关闭、读、写等文件操作函数。
(3)学会对文件进行简单的操作。
二、实验内容
1.从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“!
”为止。
2.将一个磁盘文件中的信息复制到另一个磁盘文件中。
今要求将上题建立的file1.dat文件中的内容复制到另一个磁盘文件file2.dat中。
三、实验记录
题目1.
#include
#include
intmain()
{
FILE*fp;
charch,filename[20];
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
ch=getchar();
ch=getchar();
while(ch!
='!
')
{
fputc(ch,fp);
putchar(ch);
ch=getchar();
}
fclose(fp);
putchar(10);
return0;
}
题目2.
#include
#include
#defineMAX_SIZE_READ128
intmain()
{
FILE*fp1=fopen("file1.dat","r");
FILE*fp2=fopen("file2.dat","w")
charszRead[MAX_SIZE_READ]={'0'};
size_tiNumOfRead=0;
if(!
fp1)
{printf("Failedtoopenfile:
file1.dat.\n");
exit(0);
}
if(!
fp2)
{printf("Failedtoopenfile:
file2.dat.\n");
exit(0);
}
while(fread(szRead,sizeof(char),MAX_SIZE_READ,fp1))
{fwrite(szRead,sizeof(char),MAX_SIZE_READ,fp2);
}
fclose(fp1);
fclose(fp2);
return0;
}
四、心得体会
通过本次实验学会使用文件打开、关闭、读、写等文件操作函数,
第一个实验没有问题,但是第二个实验用书上的方法显示结果为cannotopeninfile,故使用其他方法。
五、指导教师意见
100
签名:
2017年6月15日