[工学]c语言实验报告.doc_第1页
[工学]c语言实验报告.doc_第2页
[工学]c语言实验报告.doc_第3页
[工学]c语言实验报告.doc_第4页
[工学]c语言实验报告.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江西师范大学计算机信息工程学院学生实验报告(一)专业_计算机科学与技术(师范类) 姓名_梁骏_学号_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(ab) t=a;a=b;b=t;/如果a大于b,那么交换,使得a小于b/ if(ac) t=a;a=c;c=b;/如果a大于c,那么交换,使得a小于c,这样之后a为三个数中最大的/ if(bc) 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】采用循环程序中屏幕中央输出如下图形。AABAABCBAABCDCBAABCDEDCBAABCDEFEDCBAABCDEDCBAABCDCBAABCBAABAA【题3】编程产生(显示)如下图所示的n阶菱形图案。N在0-9之间,若输入的n大于9,则取n的个位数作为阶数。将图案显示在屏幕中央。0阶输出:01阶输出:00001111100002阶输出:00001111111111112222222221111111111110000【题4】输出1到999之的所有素数,并统计一共输出了多少素数,要求每行输出10个素数。3实验步骤 编辑、编译、链接、运行4程序及运行结果(或实验数据记录及分析)结果一: 请输入一个数n:8 A ABA ABCBA ABCDCBA ABCDEDCBA ABCDEFEDCBA ABCDEFGFEDCBA ABCDEFGHGFEDCBA ABCDEFGFEDCBA ABCDEFEDCBA ABCDEDCBA ABCDCBA ABCBA ABA APress 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 0Press 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;ki;k+)/打印每行的前半部分的字母 printf(%c,c); c+; c=c-2; for(k=0;k0;i-)/打印下半部分图形 for(j=0;j40-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;i2*n+1;i+)/先打印图形的上半部分有2n+1行 for(j=0;j40-i;j+)/打印空格 printf( ); for(k=0;k0;i-)/打印下半部分图形 for(j=0;j40-i+1;j+)/打印空格 printf( ); for(k=0;k2*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 2000SUNMONTUEWENTHUFRISAT12345678910111213141516171819202122232425262728293031为了打印所求年份正确的日历,必须首先找到那一年的第一天是周几。首先计算上一年中12月31号是周几。计算公式如下:Day=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+1)%7公式根据以下数值决定周几:Day0:SundayDay 1:MondayDay2:TuesdayDay3:WednesdayDay4:ThursdayDay5:FridayDay6:Saturday(注意必须计算闰年)运行程序一次,使用下面的数据进行测试:SET1:2005SET2:0SET3:2000SET4:123三:实验步骤:编辑,编译,链接,运行 4程序及运行结果(或实验数据记录及分析) 题一得结果: please input a number:5656 isnt a prime!Press any key to continue. please input a number:3333 isnt a prime!Press any key to continue.题二的结果: please input two numbers a and b:23 451035 1Press any key to continue.please input two numbers a and b:23 671541 1Press 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 primen,n); else printf(%d isnt a prime!n,n);int isprime(int n) int i; for(i=2;isqrt(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%4dn,m,n);void gbgy(int *m,int *n,int a,int b) int k,i,t; k=a*b; if(ab) t=a;a=b;b=t; i=a%b; while(i!=0) a=b;b=i;i=a%b; *m=k/b; *n=b; 题三源程序:#includevoid ptitle(int year,int month)/定义函数打印日历年月 switch(month) case 1: printf(JANUARY %dn,year); break; case 2: printf(nFEBRUARY %dn,year);break; case 3: printf(nMARCH %dn,year);break; case 4: printf(nAPRIL %dn,year);break; case 5: printf(nMAY %dn,year);break; case 6: printf(nJUNE %dn,year);break; case 7: printf(nJULY %dn,year);break; case 8: printf(nAUGUST %dn,year);break; case 9: printf(nSEPTEMBER %dn,year);break; case 10: printf(nOCTOBER %dn,year);break; case 11: printf(nNOVEMBER %dn,year);break; case 12: printf(nDECEMBER %dn,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(SUNtMONtTUEtWENtTHUtFRItSATn); 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;jlastday;j+) /变量j控制每月第一天前应留出的空格数 printf(t); for(k=1;k=D;k+) printf(%dt,k); if(k+lastday)%7=0) printf(n); lastday=(D+lastday)%7; main() int year; char c; do printf(Enter the year for your calendar:); scanf(%d,&year); pcalendar(year); printf(nDo you want to continue?input your answer(y/Y or n/N):); scanf(%1s,&c); while(c=y|c=Y);江西师范大学计算机信息工程学院学生实验报告( 5)专业_计算机科学与技术_ 姓名_梁骏_学号_0908061088_ 日期_2010-05-27 课程名称高级语言程序设计实验室名称X4313实验名称数组指导教师揭安全成绩1实验目的1) 通过对数组的应用,来了解对大规模对象研究的方法 2实验原理和内容【题1】编写一个函数perm(int a,int n)将一个长度为n的整型数组进行重排,使所有的奇数集中在左边,所有的偶数集中在数组的右边。【题2】编写一个函数删除数组中的所有x,函数返回数组的长度。利用随机函数产生100000个数,测试程序效率。【题3】编写一个函数DelAll(int a, int n)删除数组中的所有重复出现的元素,使得每个元素中数组中只出现一次。例如,删除前数组内容为:10 30 10 50 30 20 60 20 70 ,删除后数组的内容应为:10 30 50 20 60 70。请测试自己所写算法的效率。【题4】编写一个函数InsertSort(int a,int n),采用直接插入排序法对长度为n的数组a进行升序排列。【题5】编写一个函数BubbleSort(int a,int n),采用冒泡排序法对长度为n的数组a进行升序排列。【题6】实现双向冒泡的程序3实验步骤编辑、编译、链接、运行4程序及运行结果(或实验数据记录及分析) 题一的结果: 请输入数组最大长度n:1004450 ,18581 , 4 ,10513 ,19592 ,8252 ,23818 ,26701 ,1326 ,10111 ,30425 ,16984 ,24041 ,20728 ,9908 ,22581 ,11588 ,11344 ,17326 ,21120 ,12283 ,8104 ,1656 ,1524 ,11114 ,20535 ,24439 ,16689 ,5188 ,32308 ,29465 ,10172 ,3464 ,22518 ,12394 ,15944 ,21425 ,2138 ,13794 ,3124 ,26670 ,1125 ,30849 ,30292 ,4369 ,23594 ,24863 ,14068 , 267 ,4846 ,21501 ,5914 ,15256 ,17035 ,22175 ,19724 ,2423 ,3602 ,18398 ,9234 ,4445 ,10164 ,24121 ,20861 ,26858 ,28131 ,24684 ,6888 ,12764 ,25524 ,19524 ,12734 ,6019 ,2184 ,24497 ,26621 ,16501 ,21227 ,14365 ,8761 ,2178 ,21180 ,31740 ,10979 ,5866 ,16015 ,17060 ,19147 ,9422 ,28751 ,11871 ,19172 ,2021 ,5416 ,27839 ,17223 ,21872 ,5283 ,4402 ,23419 ,奇偶左右分后的结果:4450 ,4402 , 4 ,21872 ,19592 ,8252 ,23818 ,5416 ,1326 ,19172 ,9422 ,16984 ,17060 ,20728 ,9908 ,5866 ,11588 ,11344 ,17326 ,21120 ,31740 ,8104 ,1656 ,1524 ,11114 ,21180 ,2178 ,2184 ,5188 ,32308 ,12734 ,10172 ,3464 ,22518 ,12394 ,15944 ,19524 ,2138 ,13794 ,3124 ,26670 ,25524 ,12764 ,30292 ,6888 ,23594 ,24684 ,14068 ,26858 ,4846 ,10164 ,5914 ,15256 ,9234 ,18398 ,19724 ,3602 ,2423 ,22175 ,4445 ,17035 ,24121 ,20861 ,21501 ,28131 , 267 ,24863 ,4369 ,30849 ,1125 ,21425 ,6019 ,29465 ,24497 ,26621 ,16501 ,21227 ,14365 ,8761 ,16689 ,24439 ,20535 ,10979 ,12283 ,16015 ,22581 ,19147 ,24041 ,28751 ,11871 ,30425 ,2021 ,10111 ,27839 ,17223 ,26701,5283 ,10513 ,23419 ,18581 ,Press any key to continue. 题二的结果:请输入数组的最大长度n:10请输入数组的内容:1 2 3 4 5 6 6 6 6 6请输入你所要删除的数x:6数组还剩余5个数Press any key to continue.请输入数组的最大长度n:15请输入数组的内容:10 11 12 13 14 15 16 17 18 19 20 20 20 20 20请输入你所要删除的数x:20数组还剩余10个数Press any key to continue.题三的结果请输入该数组的最大长度n:8请输入该数组的内容:10 30 10 50 30 20 60 20 70删除所有重复元素(只保留一个)后的数组为: 10 30 50 20 60Press any key to continue.题四的结果:请输入该数组最大长度n:10该随机数组的内容为: 44 44 18 53 53 46 29 72 27 41经插入排序后数组为: 18 27 29 41 44 44 46 53 53 72Press any key to continue.请输入该数组最大长度n:12该随机数组的内容为: 38 61 61 95 61 4 38 61 42 71 61 89经插入排序后数组为: 4 38 38 42 61 61 61 61 61 71 89 95Press any key to continue.题五的结果:请输入数组的最大长度n:10随机产生数组: 8 32 2 59 2 57 23 69 44 57单向冒泡排序后的数组为: 2 2 8 23 32 44 57 57 59 69Press any key to continue.请输入数组的最大长度n:12随机产生数组: 11 73 69 56 45 38 87 86 54 93 91 8单向冒泡排序后的数组为: 8 11 38 45 54 56 69 73 86 87 91 93Press any key to continue.题六的结果:请输入数组的最大长度n:10请输入数组的内容:62 53 41 25 15 96 85 98 79 96双向冒泡排序后数组内容为: 15 25 41 53 62 79 85 96 96 98Press any key to cOntinue.请输入数组的最大长度n:8请输入数组的内容:52 41 20 26 96 85 59 99双向冒泡排序后数组内容为: 20 26 41 52 59 85 96 99Press any key to continue. 题一的源程序: /奇数在左边,偶数在右边,奇偶分边#include #include #include #define num 100000void perm (int anum,int n);main() int anum; int i,j,m,h,temp,n; printf(请输入数组最大长度n:); scanf(%d,&n); srand(time(NULL); for(i=0;in;i+) ai=rand();/产生随机数 for(i=0;i100;i+) printf(%4d ,ai);/打印产生的随机数 printf(n); perm(a,n);/调用奇偶左右分的函数 printf(奇偶左右分后的结果:n); for(i=0;i100;i+) printf(%4d ,ai); void perm (int anum,int n)/定义奇偶左右分的函数 int m,h,i,j,temp; m=0; h=n-1; do for(i=m;ii;j-)/从右边开始找,找到第一个奇数时,并和前面所找到的偶数交换位置,然后跳出循环,进入大循环的下一次 if(ai%2!=0) h=j-1;temp=ai;ai=aj;aj=temp; Break; while(ij);题二的源程序:/删除数组中所有你要删除的一个重复的数#include #define num 1000main() int anum,x,n,i, count=0,k=0; printf(请输入数组的最大长度n:); scanf(%d,&n); printf(请输入数组的内容:n); for(i=0;in;i+) scanf(%d,&ai); printf(请输入你所要删除的数x:); scanf(%d,&x); for(i=0;in;i+) if(ai=x) k=i; count+; for(i=k;in;i+) ai=ai+1; /将后面数依次往前移,这样既可删除啊ai i=k-1;/将下次寻找的数定位至i位置,注意if语句结尾时不得加break:否则跳出整个循环 /结束if语句,进入i+进入下一次循环 printf(数组还剩余%d个数n,n-count);题三的源程序:/删除该数组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论