[工学]c语言实验报告.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
15
积分
还剩页未读,继续阅读
关 键 词:c语言实验报告
实验报告.doc
资源描述:
江西师范大学计算机信息工程学院学生实验报告(一)
专业_计算机科学与技术(师范类) 姓名_梁骏_学号_0908061088_日期_2010-5-14_
课程名称
高级语言程序设计
实验室名称
X4313
实验名称
顺序与分支程序设计
指导教师
揭安全
成绩
1.实验目的
(1):通过设计程序实验来加深对顺序与分支结构的了解
(2):达到顺序与分支结构的熟练运用
2.实验原理和内容
原理:if、if-else、以及if、else的嵌套结构;开关语句switch的结构
内容:【题1】输出一个年,月,输出该月有几天。
【题2】输出三个正整数,将这三个数由小到大输出。
3.实验步骤
步骤:编辑、编译、链接、运行
4.程序及运行结果(或实验数据记录及分析)
原程序一结果:
程序结果二:
源程序代码一:
#include main()
{
int year, month ;
printf("please input two number year and month:");
scanf("%d%d",&year,&month);
switch (month)
{
case 1:
case 3 :
case 5:
case 7:
case 8:
case 10:
case 12:
printf("您所要查找的月份天数为31天\n:");
break;
case 4:
case 6:
case 9:
case 11:
printf("您所要查找的月份天数为30天\n:");
break;
case 2:
if((year%400==0)||((year%4==0)&&(year%100!=0)))
printf ("您所要查找的月份天数为28天\n:");
else
printf("您所要查找的月份天数为29天\n:");
}
}
源程序二代码:
//请输入三个正整数,由小到大排出//
#include main()
{
int a,b,c,t;
printf("please input three numbers a b c:");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}//如果a大于b,那么交换,使得a小于b//
if(a>c)
{t=a;a=c;c=b;}//如果a大于c,那么交换,使得a小于c,这样之后a为三个数中最大的//
if(b>c)
{t=b;b=c;c=t;}//如果b大于c,那么交换,使得b小于c//
printf("%4d%4d%4d",a,b,c);
}
江西师范大学计算机信息工程学院学生实验报告(二)
专业_计算机科学与技术 姓名_梁骏_ 学号_0908061088 日期 2010-5-14
课程名称
高级语言程序设计
实验室名称
X4313
实验名称
循环程序设计(迭代法与穷举法)
指导教师
揭安全
成绩
1.实验目的
(1):掌握循环结构的运行机理
(2):通过掌握循环结构来为以后大规模程序奠定基础
2.实验原理和内容
原理:while、do while、for语句结构的逻辑顺序
内容:【题1】打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
【题2】将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
【题3】利用泰勒级数e= 计算e的近似值。当最后一项的绝对值小于10-5时认为达到了精度要求,要求统计总共累加了多少项。
【题4】利用泰勒级数sinx=x-计算sinx的值。要求最后一项的绝对值小于10-5,并统计此时累加了多少项。
3.实验步骤
步骤:编辑、编译、链接、运行
4.程序及运行结果(或实验数据记录及分析)
题一的结果:
题二的结果:
题三结果
题四的结果
源程序一:#include main()
{
int x=100,b0,b1,b2,sum;
while(x>=100&&x<=1000)
{
b2=x/100;
b1=x%100/10;
b0=x%10;
sum=b0*b0*b0+b1*b1*b1+b2*b2*b2;
if(sum==x)
printf("%d",x);
x++;
}
}
源程序二
#include main()
{
int n,i,k;
printf("请输入一个数n:");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0).//如果n除以i的余数为零,则n为该数的一个质素
{
printf("%d*",i);
n=n/i;//将商赋给n,进入while下一次循环
}
else
break;//如果余数不为零,退出while循环,进入下一次for循环,i+1
}
}
printf("%d",n);
}
源程序三:
#include #include main()
{
float temp=1,sum=1,b=1.0;
int count=0,i=1;
while(fabs(temp)>=1e-5)
{
b=b*i;
temp=1.0/b; //定义每一项的内容
sum=sum+temp;
i++;
count++;
}
printf("e=%f,count=%d",sum,count);
}
源程序四:
#include #include main()
{
int n=1,count=0;
float x,sum,term;
printf("please input a number x:");
scanf("%f",&x);
sum=x;
term=x;
while(fabs(term)>=1e-5)
{
term=-term*x*x/((n+1)*(n+2));//定义后一项与前一项的关系
sum=sum+term;
n=n+2;
count++;
}
printf("sin(x)=%f,count=%d",sum,count);
}
江西师范大学计算机信息工程学院学生实验报告(三)
专业_计算机科学与技术师范 姓名_梁骏___学号_0908061088日期_2010-5-18_
课程名称
高级语言程序设计
实验室名称
X4313
实验名称
双重循环程序设计
指导教师
揭安全
成绩
1.实验目的
1) 了解双重循环的结构以及运行机理
2) 通过双重循环来为我们以后使用多重循环奠定基础
2.实验原理和内容
内容:【题2】采用循环程序中屏幕中央输出如下图形。
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
【题3】编程产生(显示)如下图所示的n阶菱形图案。N在0-9之间,若输入的n大于9,则取n的个位数作为阶数。将图案显示在屏幕中央。
0阶输出:
0
1阶输出:
0
000
11111
000
0
2阶输出:
0
000
11111
1111111
222222222
1111111
11111
000
0
【题4】输出1到999之的所有素数,并统计一共输出了多少素数,要求每行输出10个素数。
3.实验步骤
编辑、编译、链接、运行
4.程序及运行结果(或实验数据记录及分析)
结果一:
请输入一个数n:8
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
Press any key to continue...
结果二:
please input a number n:44
0
000
11111
1111111
222222222
22222222222
3333333333333
333333333333333
44444444444444444
333333333333333
3333333333333
22222222222
222222222
1111111
11111
000
0
Press any key to continue...
源程序一:
#include main()
{
int i,j,k,n;
char c;
printf("请输入一个数n:");//根据用户需求输入欲打印的图形上半部分行数
scanf("%d",&n);
for(i=0;i<=n;i++)//先打印上半部分的图形,上半部分的行数为n
{
for(j=0;j<=40-i;j++)//打印空格
printf(" ");
c='A';
for(k=0;k0;i--)//打印下半部分图形
{
for(j=0;j<40-i+1;j++)
printf(" ");
c='A';
for(k=0;k0;k--)
printf("%c",c--);
printf("\n");
}
}
源程序二:
//打印n阶金字塔数字
#include main()
{
int i,j,k,n;
printf("please input a number n:");
scanf("%d",&n);
n=n%10;//分离出数n的个位数
for(i=0;i<2*n+1;i++)//先打印图形的上半部分有2n+1行
{
for(j=0;j<40-i;j++)//打印空格
{
printf(" ");
}
for(k=0;k<2*i+1;k++)
{
printf("%d",i/2);//打印数字
}
printf("\n");//控制换行
}
for(i=2*n;i>0;i--)//打印下半部分图形
{
for(j=0;j<40-i+1;j++)//打印空格
{
printf(" ");
}
for(k=0;k<2*i-1;k++)//打印数字
{
printf("%d",(i-1)/2);//控制换行
}
printf("\n");
}
}
江西师范大学计算机信息工程学院学生实验报告( 4)
专业_计算机科学与技术 姓名_梁骏___ _ 学号_0908061088__ _ 日期_2010-5-26_
课程名称
高级语言程序设计
实验室名称
X4313
实验名称
函数
指导教师
揭安全
成绩
1. 实验目的
1) 通过对调用函数的使用理解程序各司其职的作用
2) 理解调用函数对于大规模程序的重要性
2. 实验原理和内容
【题1】编写函数isprime(int n)判断n是否为素数,如果是,则返回1,否则返回0。
【题2】编写函数gcd(int m,int n)返回m与n的最大公约数
【题3】写一个C程序创建一个日历,程序从键盘读入年份,接着计算这一年的第一天是星期几(SUN,MON,TUE,WEN,THU,FRI,SAT),并且打印这一年的年历。打印完之后,它应该询问用户是否继续,如果答案为是,那么打印后面一年的年历,直到用户选择结束。
程序提示用户输入,如下面例子所示:
Enter the year for your calendar:2000
输出是整个一年的日历(12个月)。一个月的输出如下所示。
JANUARY 2000
SUNMONTUEWENTHUFRISAT
1
2345678
9101112131415
16171819202122
23242526272829
3031
为了打印所求年份正确的日历,必须首先找到那一年的第一天是周几。首先计算上一年中12月31号是周几。计算公式如下:
Day=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+1)%7
公式根据以下数值决定周几:
Day0:Sunday
Day 1:Monday
Day2:Tuesday
Day3:Wednesday
Day4:Thursday
Day5:Friday
Day6:Saturday
(注意必须计算闰年)
运行程序一次,使用下面的数据进行测试:
SET1:2005
SET2:0
SET3:2000
SET4:123
三:实验步骤
:编辑,编译,链接,运行
4.程序及运行结果(或实验数据记录及分析)
题一得结果:
please input a number:56
56 isn't a prime!
Press any key to continue...
please input a number:33
33 isn't a prime!
Press any key to continue...
题二的结果:
please input two numbers a and b:23 45
1035 1
Press any key to continue...
please input two numbers a and b:23 67
1541 1
Press any key to continue...
题三的结果:(由于交报告之前匆忙检查,发现源程序闰年和平年的二月的天数写反了(//源程序经过重新将此处修改,结果是正确的//),所以造成了结果闰年的二月天数有29而平年的天数有28天,造成恶性循环,使得整个日历打印错误,由于马上就要交报告,所以在这报告上就没有改结果,因为又要把这报告上的图片剪贴,正确的复制,很花时间,并且等下就要实验考试,深感抱歉,请老师原谅。)
题一得源程序
#include#includeint isprime(int n);
main()
{
int flag,n;
printf("please input a number:");
scanf("%d",&n);
flag=isprime(n);
if(flag==1)
printf("%d is a prime\n",n);
else
printf("%d isn't a prime!\n",n);
}
int isprime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0) break;
if(i>sqrt(n))
return 1;
else
return 0;
}
题二的源程序
# include void gbgy(int *m,int *n,int a,int b);
main()
{
int m,n,a,b;
printf("please input two numbers a and b:");
scanf("%d%d",&a,&b);
gbgy( &m, &n, a, b);
printf("%4d%4d\n",m,n);
}
void gbgy(int *m,int *n,int a,int b)
{
int k,i,t;
k=a*b;
if(avoid ptitle(int year,int month)//定义函数打印日历年月
{
switch(month)
{
case 1:
printf("JANUARY %d\n",year); break;
case 2:
printf("\nFEBRUARY %d\n",year);break;
case 3:
printf("\nMARCH %d\n",year);break;
case 4:
printf("\nAPRIL %d\n",year);break;
case 5:
printf("\nMAY %d\n",year);break;
case 6:
printf("\nJUNE %d\n",year);break;
case 7:
printf("\nJULY %d\n",year);break;
case 8:
printf("\nAUGUST %d\n",year);break;
case 9:
printf("\nSEPTEMBER %d\n",year);break;
case 10:
printf("\nOCTOBER %d\n",year);break;
case 11:
printf("\nNOVEMBER %d\n",year);break;
case 12:
printf("\nDECEMBER %d\n",year);break;
}
}
void pcalendar(int year)
{
int lastday,i,j,k,D;
lastday=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+1)%7;
for(i=1;i<=12;i++)
{
ptitle(year, i);
printf("SUN\tMON\tTUE\tWEN\tTHU\tFRI\tSAT\n");
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
D=31;break;
case 2:
if(year%4==0&&year%100!=0 || year%400==0)
{D=29;break;}
else
{D=28;break;}
case 4:
case 6:
case 9:
case 11:
D=30;break;
}
for(j=0;j