程序设计基础(C)离线作业.doc

上传人:飞****2 文档编号:60120937 上传时间:2022-11-13 格式:DOC 页数:37 大小:170.50KB
返回 下载 相关 举报
程序设计基础(C)离线作业.doc_第1页
第1页 / 共37页
程序设计基础(C)离线作业.doc_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《程序设计基础(C)离线作业.doc》由会员分享,可在线阅读,更多相关《程序设计基础(C)离线作业.doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、浙江大学远程教育学院程序设计基础(C)课程作业姓名:汪 海 洲学 号:6年级: 2013 秋学习中心:浙大西溪直属第章 语言的基本构成程序调试题1 编辑、调试以下程序步骤1:在Visual C+环境下新建文件可用开始程序Microsoft Visual C+6.0 Microsoft Visual C+6.0 文件 新建文件 C+ Sourse File,输入文件名ex1-1.c,程序代码如下:include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/int add(int x,int y) int z; z=x+y; return z; int main( ) int

2、add(int,int); /* 函数的说明,告诉系统在主函数中要调用add函数 */int a,b,c; /* 变量的定义*/scanf(%d %dn,&a,&b);c=add(a,b); /* 函数调用 */ printf(%d+%d=%dn,a,b,c); /* 调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出 */请思考文件ex1-1.c由几个函数构成?调用了那几个系统函数?此程序中用到了哪几个保留字?哪几个用户自定义标识符?答:ex1-1.c由2个函数构成。调用了2个系统函数:scanf,printf保留字:int,return用户自定义标识符:

3、a,b,c,x,y,z步骤3:编译并运行程序,程序运行时输入两个整数,20 40 ,观察程序运行的结果。因为输入scanf,输入整数型是判断回车,scanf内容里有“n”,所以需要增加输入其他的字符加回车,直接回车无效。2 编辑、调试以下程序步骤1:在Visual C+环境下新建文件可用开始程序Microsoft Visual C+6.0 Microsoft Visual C+6.0 文件 新建文件 C+ Sourse File,输入文件名ex1-2.c步骤2:在文本编辑器中输入以下C程序#include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/#includeint

4、main( ) int and(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */ int or(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */int a,b,c; /* 变量的定义*/scanf(%d %d,&a,&b);c=and(a,b); /* 函数调用 */ printf(%d & %d=%dn,a,b,c); /*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出 */c=or(a,b); /* 函数调用 */ printf(%d | %d=%dn,a,b,c); 步骤3:文件 新建文件

5、 C+ Sourse File,输入文件名ex1-2-2.c,源程序代码为:int and(int a,int b) int c; c=a&b; return c;步骤4:文件 新建文件 C+ Sourse File,输入文件名ex1-2-3.c,源程序代码为:int or(int a,int b) int c; c=a|b; return c;步骤5:点击编译图标,编译程序1-2.c 步骤6:点击执行图标 ,执行程序1-2.c ,当程序运行时,键盘输入20 40,按回车。20 4020 & 40=120 | 40=1您可以输入其它的整数,观察程序的执行结果。修改程序ex1-2.c:#incl

6、ude /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/#include1-2-2.c#include1-2-3.c int main( ) int and(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */ int or(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */int a,b,c; /* 变量的定义*/scanf(%d %d,&a,&b);c=and(a,b); /* 函数调用 */ printf(%d & %d=%dn,a,b,c); /*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充

7、,以整数形式输出 */c=or(a,b); /* 函数调用 */ printf(%d | %d=%dn,a,b,c); 章输入输出程序设计1 用printf输出一个中空的五角星。答:#includeint main()printf( *n);printf( * *n);printf( * * * * * *n);printf( * *n);printf( * *n);printf( * * * n);printf( * * n); return 0;2 仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。答:#includeint main()char name100;pri

8、ntf(请输入字符串:);gets(name);printf(输入的字符串是:%sn,name);return 0;3 从键盘输入十六进制整数,转化为八进制数输出。答:#includeint main()int n;printf(请输入一个十六进制整数:);scanf(%x,&n);printf(八进制数输出:%on,n);return 0;4 只定义两个整型数据并赋值,实现两个整型数的互换。答:#includeint main()int a=123,b=321;printf(a=%d,b=%dn,a,b);a=ab;b=ba;a=ab; printf(a=%d,b=%dn,a,b);retu

9、rn 0;5 从键盘上输入一个整数,分别输出8、16进制数的程序。答:#includeint main()int n;printf(请输入一个整数:);scanf(%d,&n);printf(8进制数:%on16进制数:%xn,n,n);return 0;6 从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。答:#include#includeint main()int n,i=0,j;printf(请输入一个整数:);scanf(%d,&n);while(i3)j=abs(n)%10;n=n/10;printf(%dn,j);i+;return 0;7 以下程序输出结果是( )。#i

10、ncludevoid main() int i=010,j=10; printf(%d,%dn,+i,j- ); 答:9,108 运行程序,屏幕提示“您是一个学生吗”,您输入y或n进行回答,屏幕输出您的选项。答:#includeint main()char ch;printf(您是一个学生吗(y/n)n);scanf(%c,&ch);if(ch=y|ch=Y)printf(我是一个学生。n);else if(ch=n|ch=N)printf(我不是一个学生。n);elseprintf(输入错误!n);return 0;9 从键盘输入一个角度x,求10*sin(x)的值。答:#include#i

11、ncludeint main()double x,y,z,pi=3.;printf(输入一个角度:);scanf(%lf,&x); y=x/180*pi;z=10*sin(y);printf(值:%lfn,z);return 0;第章循环程序设计1以下for语句的循环次数是多少?int i,j=3;for(;i=j;i-,j-) printf(%d,i);答:3次。2下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:for(int i=0;i 6 ; i+ )printf(%d, aii )3写出以下程序运行的结果,此程序实现了什么功能?#includevoid mai

12、n() int a10=2,4,0,-5,10,6,-8,9,6,7; int i, count=0; for(i=0;i10;i+) if(ai=0) count+; else continue;printf(%dn , count);答:运行的结果:1 统计数组a中有几个0。4写出以下程序的功能。#includevoid main()int a10=2,4,0,-5,10,6,-8,9,6,7,tmp,k;for (k=0;k10/2;k+) tmp=ak; ak=a10-k-1;a10-k-1=tmp;答:数组倒序。7,6,9,-8,6,10,-5,0,4,25写出以下程序运行后的输出结

13、果。#includevoid main() int i,j; for(i=0;i6;i+) for(j=0;ji;j+) printf( );for(j=0;j2*(5-i)-1;j+) printf(*);printf(n); 答:倒三角,如图* * * * * 6请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检验。(1)#include 修改的部分void main( ) int i,s;i=1; s=0;while(i=100); while(i=100) s=s+i; i+; i+; printf(“1+2+3+.+99+100=%dn”,s);(2)#includev

14、oid main( ) int i,s;i=1;s=0;while(i=100) s=s+i; s=s+i; i+; i+; printf(“1+2+3+.+99+100=%dn”,s);(3)#includevoid main( ) int i=1,s; int i=1,s=0;while(i=100) ; while(i=100) s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);7输入一个基数,例如输入9,输出为:求1*3*9的值。输出为:1*3*5*7*9=945答:#includevoid main( ) int i=1,t,s=1; printf(

15、input:);scanf(%d,&t); printf(%d,i);for(i=3;i=t;i+=2)s*=i;printf(*%d,i); printf(=%dn,s);8输入一个510之间的整数n,求1!+2!+3!+n!。例如输入5,输出为:1!+2!+3!+5!=153答:#includevoid main( ) int i=1,t,s=1,x=1; printf(input(510):);scanf(%d,&t);printf(%d!,i);for(i=2;i=t;i+)s*=i;x+=s;printf(+%d!,i); printf(=%dn,x);9在屏幕上输出以下内容1 12

16、 123 1234 12345 答:#includeint main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d,j); printf(n); return 0;10求2+4+6+98+100的和,用多种for表达式来完成。答:方法1:#includeint main() int i,sum=0; for(i=2;i=100;i+=2) sum+=i; printf(2+4+6+.+98+100=%dn,sum); return 0;方法2:#includeint main() int i=2,sum=0; for(;i=100;)

17、 sum+=i; i+=2; printf(2+4+6+.+98+100=%dn,sum); return 0;方法3:#includeint main() int i=2,sum=0; for(;) sum+=i; i+=2; if(i100) break; printf(2+4+6+.+98+100=%dn,sum); return 0;11输入一行字符,统计它有多少个字母?答:#includeint main() int sum=0; char c; printf(请输入一行字符:n); for(;(c=getchar()!=n;) if(c=A&c=a&c=z) sum+; print

18、f(一共有%d个字母n,sum); return 0;第章分支程序设计1输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。#includeint main() int n;printf(请输入一个整数(0结束):n); scanf(%d,&n); for(;n; scanf(%d,&n) if(n0) printf(绝对值是:%dn,n); else printf(绝对值是:%dn,-n); printf(请输入一个整数(0结束):n); return 0;2输入一批数,输出比相邻数大的数,当输入0时结束。答:#includeint main() double n,tmp; pri

19、ntf(请输入一个数(0结束):n); scanf(%lf,&n); tmp=n; for(;n; scanf(%lf,&n) if(ntmp) printf(%lf比相邻数大n,n); tmp=n; return 0;3将输入字符的大写字符转换成小写字符输出,小写字符原样输出。答:#include#includeint main() char c; printf(请输入字符:n); while(c=getchar()!=n) if(c=A&c=Z) c+=32;printf(%c,c);printf(n); return 0;4输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或

20、其它字符的个数。答:#includeint main()char c;int a1=0,a2=0,a3=0,a4=0;printf(请输入一批字符:);for(;(c=getchar()!=n;)if(c=a&c=A&c=0&c=9)a3+;elsea4+;printf(小写字符的个数:%dn,a1);printf(大写字符的个数:%dn,a2);printf(数字字符的个数:%dn,a3);printf(其它字符的个数:%dn,a4);return 0;5编写程序,计算分段函数:答:#includeint main()double x,y;printf(请输入x:);scanf(%lf,&x

21、);if(x1&x10)y=3/(x-10);printf(y=%lfn,y);return 0;6根据输入的百分制按五分制的成绩输出。百分制与五分制之间的关系见下表。百分制五分制90 100580 89470 79360 692601答:#include#includeint main()int x;printf(请输入百分制数(0-100):);scanf(%d,&x);if(x100)printf(输入的数无效。n);exit(0);switch(x/10) case 10: case 9:printf(五分制:5n);break; case 8:printf(五分制:4n);break

22、; case 7:printf(五分制:3n);break; case 6:printf(五分制:2n);break; default:printf(五分制:1n);break;return 0;7、用switch完成:读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。答:#include#include#define SIZE 100int main()int x;double y=0;printf(输入一个实数:n);scanf(%d,&x);switch(x)case 1:y=sin(x

23、);printf(sin(x)=%lfn,y);break;case 2:y=cos(x);printf(cos(x)=%lfn,y);break;case 3:y=tan(x);printf(tan(x)=%lfn,y);break;default :printf(输入信息错误n);return 0;8、用switch完成:输入星期1 到星期5,输出它们对应的颜色星期1:blue星期2:red星期3:white星期4:yellow星期5:green答:#include int main()int y=0;printf(请输入一个星期(12345):);scanf(%d, &y);switch

24、(y)case 1:printf(星期1:bluen);break;case 2:printf(星期2:redn);break;case 3:printf(星期3:whiten);break;case 4:printf(星期4:yellown);break;case 5:printf(星期5:greenn);break;default:printf(你输入了错误的星期数(不属于15)!n);break;return 0;9、用switch完成:从键盘输入A、B、C、D四个等级中的一个,转化输出答:#include int main()char y=0;printf(请输入等级(ABCD):);

25、scanf(%c, &y);switch(y)case A:printf(优秀n);break;case B:printf(良好n);break;case C:printf(中等n);break;case D:printf(及格n);break;case E:printf(不及格n);break;default:printf(你输入了错误的等级n);break;return 0;等级输出A优秀B良好C中等D及格E不及格第章数组及其应用.从键盘输入12个数,分别为:900,2,3,58,34,76,87,72,90,20,78,30,找出最大和最小数。答:#includeint main()in

26、t s12,max,min,i;printf(请输入12个数:n);for(i=0;i12;i+)scanf(%d,&si);max=s0;min=s0;for(i=1;imax) max=si;if(simin)min=si;printf(最大数:%dn最小数:%dn,max,min);return 0;.采用遍历查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找出偶数。答:#include#define SIZE 100int main()int sSIZE=2,3,20,58,72,76,78,87,90,900,i;printf(偶数是:);f

27、or(i=0;i10;i+)if(si%2=0)printf(%-4d,si);printf(n);return 0;.采用折半查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找到87,然后进行删除。答:#include#define SIZE 100int main()int sSIZE=2,3,20,58,72,76,78,87,90,900;int i,m,max=9,min=0,mid,found=0;printf(输入要找的数:);scanf(%d,&m);while(min=max)&(found=0)mid=(max+min)/2;if(

28、smidm)max=mid-1;elsefound=1;if(found=1)for(;mid9;mid+) smid=smid+1;for(i=0;i9;i+)printf(%-4d,si);printf(n);elseprintf(没找到!n);return 0;第章函数及其应用练习与实践一、阅读程序,写出程序运行的结果。1写出以下程序的执行结果。#includefloat aver(int a) int k,sum=0;float ave;for(k=0;k10;k+) sum+=*(a+k); ave=(float)sum/10;return (ave);int main( ) flo

29、at ave;static b=78,89,98,76,78,45,88,81,92,85;ave=aver(b);printf(ave=%fn,ave);提示:数组b的首地址传递给形参a,*(a+k)就是数组元素bk.答:ave=81.2阅读程序,写出程序的执行结果。#include void abc( char str )int a, b ;for(a = b = 0 ; stra!=0; a+ )if(stra!= c)strb+ = stra;strb=0;int main( )char str =abcdef ;abc(str);printf(str =%s , str );retu

30、rn 0;提示:数组str的首地址传递给形参str,stra就是实参中的数组元素stra,当数组元素不为c时进行复制。答:str =abdef3写出以下程序的执行结果。#includeint sort(int b,int n,int x)int k;for(k=n-1;k=0;k-)if(bkx)bk+1=bk;elsebreak;bk+1=x;return 0; int main( )int i,j;static int a5=8,5,4,1,6;int b8;b0=a0;for(i=1;i5;i+)sort(b,i,ai);for(j=0;j=i;j+) printf(%d ,bi);pr

31、intf(n);return 0; 提示:循环体中if(bkx)bk+1=bk;elsebreak;如果bkx成立,执行语句bk+1=bk;表示数组元素b向后移,不满足时插入x,即从大到小排序。答:按程序,该结果无任何意思,输出为: 5 5 4 4 4 1 1 1 1 1 1 1 1 1可能是题目输入有误,在最后打印即时b数组时,后面的参数错了,应该为:printf(“%d ”,bj);这样修改后输出的结果,就是每次排序后的b数据元素。结果为:8 58 5 48 5 4 18 6 5 4 14写出以下程序的执行结果。#includeint fun(int x) int p; if(x=0|x=

32、1) return 3; else p=x-fun(x-2); return p;int main( )printf(n%d,fun(9);return 0; 提示:fun(9)=9-fun(7),.,fun(1)=3答: 75写出以下程序的执行结果,并说明其作用是什么?#includeint f(int n)if(n=10)f(n/10);printf(%d,n%8);return 0;int main( )f(1234);printf(n);return 0; 答:1432一个数从高位取1位,取2位,取3位一直到取完整的数,然后对8取余数,依次输出。如if(n=10) f(n/10);改为

33、if(n=8) f(n/8);那么这个程序就是10进制数转化为8进制数。提示:在函数f中,程序运行借助了堆栈,依次入栈的数据分别为1234、123、12,最后n=1,n对8取余输出,然后数据依次出栈对8取余输出。二、程序设计1编写一个函数,计算x的n次的平方。 提示:for(y=1,i=0;in;i+) y=y*x;答:int fun(int x,int n) int i,y=1; for(i=0;in;i+)y=y*x; return y;2编写一个函数,计算对角线上元素之和。提示:for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; 答:int fun(int a,m)int sum,i,j;for(i=0;im;i+)for(j=0;jm;j+)if(i=j)|(i+j)=(m-1)sum=sum+aij;return sum;3编写一个函数int invert(char str ),将一个字符串的内容颠倒过来。提示:先求字符串str的长度n,for(i=0;in/2;i+)ai与an-1-i交换答:int invert(char str)int i,len;char tmp;len=strlen(str);for(i=0;ilen

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁