C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
C语言实验报告
实验报告册
课程名称:
C语言程序设计
指导老师:
xxx
班级:
xxx
姓名:
xxx
学号:
xxx
学期:
2016—2017学第1学期
南京农业大学工学院教务处印
装订线(内容不要写到装订线外)
实验目录
实验一:
选择结构程序设计
实验二:
循环结构程序设计
实验三:
数组
实验四:
函数
实验五:
指针与结构体
装订线(内容不要写到装订线外)
姓名:
成绩:
实验内容(题目及源代码)
一、选择结构程序设计
1)输入年月日,用SWICH语句判断其是该年的第几天。
#include
intmain()
{intyear,month,day,sum,i=0;
printf("请输入年月日,以逗号分隔:
");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
{case12:
i=i+30;
case11:
i=i+31;
case10:
i=i+30;
case9:
i=i+31;
case8:
i=i+31;
case7:
i=i+30;
case6:
i=i+31;
case5:
i=i+30;
case4:
i=i+31;
case3:
i=i+28;
case2:
i=i+31;
case1:
i=i;break;
default:
printf("error\n");
}
sum=i+day;
if(((year%4==0&&year%100!
=0)||(year%400==0))&&(month>2))
{sum=sum+1;printf("thedayisthe%dday",sum);}
elseprintf("thedayisthe%dday",sum);
return0;
}
2)输入整数,判断其是否为质数。
#include
intmain()
{intn,i,flag=1;
装订线(内容不要写到装订线外)
printf("输入一个整数:
");
scanf("%d",&n);
for(i=2;iif(n%i==0){flag=0;break;}
if(flag==0)printf("不是质数");
elseprintf("是质数");
return0;
}
实验结果分析及思考总结:
在用SWICH语句求第几天和判断质数的两个程序中,实验结果都是正确的,能够完美的完成题目的任务(结果截图已附在源程序后面)。
通过此次关于选择结构的实验,我了解并掌握了运算符的运算法则以及逻辑表达式的使用。
在此基础上,我还熟练的掌握了IF语句及其嵌套形式的使用以及SWICH语句的使用,收获颇丰。
二、循环结构程序设计
1)求1+1/2+1/3+······1/n的值,其中(1/n)>=0.0001。
#include
intmain()
{floatn,i,sum=0;
装订线(内容不要写到装订线外)
printf("请输入整数:
");
scanf("%f",&n);
if(1/n<=0.0001)printf("error");
else
{for(i=1;i<=n;i++)
sum=sum+1/i;
printf("%f",sum);}
return0;
}
2)输出9*9口诀表。
#include
intmain()
{inti,j,k=1;
for(j=1;j<=9;j++)
for(i=1;i<=j;i++)
{printf("%d*%d=%d",i,j,i*j);
if(j==i)printf("\n");
}
return0;
}
实验结果分析及思考总结:
此次实验学习了C语言的循环结构,在两个题目的要求中实现了用循环语句编写程序,使得程序的结构更加简洁明了,实验结果也很好的完成了题目的要求,分别求了前1/n项的和以及输出九九乘法口诀表,而在输出口诀表中用了双重循环(结果截图已附在源程序后面)。
通过此次实验,我熟练的掌握了WHILE、DO-WHILE和FOR语句及其嵌套形式的使用;同时,在实验中我逐渐熟悉了循环结构程序段中语句的执行过程。
装订线(内容不要写到装订线外)
三、数组
1)在一个程序中完成以下功能:
A、从文件中输入十个成绩,放在数组中,输出。
B、找出最高成绩,并输出最高值及其所在的位置。
C、将成绩从大到小排序、输出。
D、输入一个成绩,查找是否在其中,若在,删除之;若不在,请插入后有序输
出。
#include
intmain()
{FILE*fp;
inti,j,k,ad,temp,max,flag=0,a[20];
if((fp=fopen("d:
\data.txt","r"))==NULL)
{printf("fileerror");
return0;
}
for(i=0;i<10;i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
printf("学生成绩为:
");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
max=a[0];
for(i=1;i<10;i++)
if(a[i]>max){max=a[i];ad=i;}
printf("最高成绩为a[%d]=%d\n",ad,max);
for(i=0;i<9;i++)
for(j=9;j>i;j--)
if(a[j]>a[j-1])
{temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;}
printf("成绩从大到小为:
");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
printf("请输入一个成绩:
");
scanf("%d",&i);
for(j=9;j>=0;j--)
if(i==a[j]){flag=1;break;}
if(flag==1)
{for(k=j;k<9;k++)
a[k]=a[k+1];
printf("该成绩在其中,现已删除:
");
for(k=0;k<9;k++)
printf("%d",a[k]);}
else
装订线(内容不要写到装订线外)
{ad=10;
for(j=0;j<10;j++)
if(a[j]
for(j=10;j>ad;j--)
a[j]=a[j-1];
a[ad]=i;
printf("该成绩不在其中,现已添加:
");
for(i=0;i<=10;i++)
printf("%d",a[i]);}
return0;
}
2)输入一个字符串,判断是否为回文。
#include
#include
intmain()
{charc[100];
装订线(内容不要写到装订线外)
inti,j,flag=1;
gets(c);
for(i=0,j=strlen(c)-1;iif(c[i]!
=c[j]){flag=0;break;}
if(flag==1)printf("该字符串是回文");
elseprintf("该字符串不是回文");
Return0;
}
3)输入一个二维数组,找鞍点。
#include
intmain()
{inta[3][3]={23,32,12,45,4,2,7,9,4};
inti,j,m,n=0,minj,flag;
for(i=0;i<3;i++)
{minj=0;flag=1;
for(j=1;j<3;j++)
if(a[i][minj]>a[i][j])minj=j;
for(m=0;m<3;m++)
if(a[m][minj]>a[i][minj]){flag=0;n++;break;}
if(flag==1)
printf("该数组的鞍点为a[%d][%d]=%d\n",i,minj,a[i][minj]);}
if(n==3)
printf("该数组没有鞍点");
装订线(内容不要写到装订线外)
Return0;
}
实验结果分析及思考总结:
此次实验我在程序中加入了数组,刚开始的时候一直编写有错,在经过不断的练习之后才使得编写的程序成功地完成题目的要求(结果截图已附在源程序后面)。
通过此次实验,我了解并且掌握了一维数组与二维数组的定义方法和其初始化以及元素引用的方法。
在实验的三个题目中分别使用了数组、字符型数组和字符串,并且掌握了字符串、字符串数组的使用方法,进一步提升了自己的C语言编程能力。
四、函数
1)用函数求2数之和。
#include
intpr(intx,inty)
{ints;
s=x+y;
return(s);
}
intmain()
{inta,b,sum;
printf("请输入2个数,以逗号分隔:
");
装订线(内容不要写到装订线外)
scanf("%d,%d",&a,&b);
sum=pr(a,b);
printf("%d",sum);
return0;
}
2)用函数对数组进行排序并输出。
#include
intpr(inta[])
{inti,j,temp;
for(i=0;i<9;i++)
for(j=9;j>i;j--)
if(a[j]{temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;}
printf("该数组从小到大排序为:
");
装订线(内容不要写到装订线外)
for(i=0;i<10;i++)
printf("%d",a[i]);
}
intmain()
{intb[10]={98,87,76,65,54,43,32,21,11,10};
pr(b);
return0;
}
实验结果分析及思考总结:
此实验中编写的程序都很好的完成了题目的要求,利用函数对要求进行操作,极大的简化了主函数的结构,使得其看起来更加简洁明了(结果截图已附在源程序后面)。
通过此次实验,我了解并掌握了函数的定义方法及其调用方法,并且实现了函数的递归调用,又掌握了一种实现循环的方法。
对函数的学习使得我能够把复杂的程序拆分为若干个小函数,这为我以后编写更加复杂的程序打下了很好的基础。
五、指针与结构体
1)用指针操作数组,输入,排序,输出
#include
intmain()
{FILE*fp;
inttemp,a[10];
int*p=a,*q;
printf("输入十个