程序设计基础(C)离线作业-答案-2017-浙江大学远程教育学院.doc

上传人:苏美尔 文档编号:7216094 上传时间:2020-11-06 格式:DOC 页数:31 大小:99.50KB
返回 下载 相关 举报
程序设计基础(C)离线作业-答案-2017-浙江大学远程教育学院.doc_第1页
第1页 / 共31页
程序设计基础(C)离线作业-答案-2017-浙江大学远程教育学院.doc_第2页
第2页 / 共31页
程序设计基础(C)离线作业-答案-2017-浙江大学远程教育学院.doc_第3页
第3页 / 共31页
程序设计基础(C)离线作业-答案-2017-浙江大学远程教育学院.doc_第4页
第4页 / 共31页
程序设计基础(C)离线作业-答案-2017-浙江大学远程教育学院.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《程序设计基础(C)离线作业-答案-2017-浙江大学远程教育学院.doc》由会员分享,可在线阅读,更多相关《程序设计基础(C)离线作业-答案-2017-浙江大学远程教育学院.doc(31页珍藏版)》请在三一文库上搜索。

1、浙江大学远程教育学院程序设计基础(C)课程作业姓名:袁洋学 号:717129012012年级:2017春学习中心:紫金港校区第章 语言的基本构成由add、main、scanf、printf函数组成,调用了scanf、printf两个系统函数。保留字:int、return。自定义标识符:add、a、b、c、x、y、z。第章输入输出程序设计1 用printf输出一个中空的五角星。#includevoid main()printf( * n);printf( * * n);printf( * * n);printf( * * n);printf( * * * * * * * *n); printf(

2、 * * n);printf( * * n);printf( * *n);printf( * * * n);printf( * * * * n);printf( * * * * n);printf( * * * * n);2 仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。#includevoid main()char charshuz20; puts(gets(charshuz); 3 从键盘输入十六进制整数,转化为八进制数输出。#includevoid main()int shiliu;scanf(%x,&shiliu);printf(%on,shiliu); 4 只

3、定义两个整型数据并赋值,实现两个整型数的互换。#includevoid main()int a,b,swap;scanf(%d,%d,&a,&b);printf(a=%d,b=%dn,a,b);swap=a;a=b;b=swap;printf(a=%d,b=%dn,a,b); 5 从键盘上输入一个整数,分别输出8、16进制数的程序。#includevoid main()int a;scanf(%d,&a);printf(%o %xn,a,a); 6 从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。#includevoid main()int integer;doprintf(请输入一

4、个三个数:); scanf(%d,&integer); if (integer=1000) printf(请重新输入,n);while(integer=1000);printf(输入的整数为:%d,百位为:%d,十位为:%d,个位为:%d。n,integer,integer/100,integer%100/10,integer%100%10); 7 以下程序输出结果是( )。#includevoid main() int i=010,j=10; printf(%d,%dn,+i,j- ); 程序输出结果为 9,108 运行程序,屏幕提示“您是一个学生吗”,您输入y或n进行回答,屏幕输出您的选项

5、。#includevoid main()char q;printf(Are you a student ? y/nn); scanf(%c,&q); if(q=y | q=Y) printf(Good good study!n); else if(q=n | q=N)printf(Work hard!n); 9 从键盘输入一个角度x,求10*sin(x)的值。#include#includeint main()float x; scanf(%f,&x); printf(sum is %fn,10*sin(x); 第章循环程序设计1以下for语句的循环次数是多少?int i,j=3;for(;i

6、=j;i-,j-) printf(%d,i);for语句的循环次数为 3 次2下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:for(int i=0;i6; i+)printf(%d, hij )3写出以下程序运行的结果,此程序实现了什么功能?#includevoid main() 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);统计数组a中元素为0的元素个数。4写出以下程序的功能。#in

7、cludevoid 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;把数组a里的元素位置倒置,第一个放在最后一个,第二个放在倒数第二个位置。5写出以下程序运行后的输出结果。#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请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检

8、验。(1)#includevoid main( ) int i,s;i=1; s=0;while(i=100); s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);改正后:#includevoid main( )int i,s;i=1; s=0;while(i=100)s=s+i;i+;printf(1+2+3+-.+99+100=%dn,s);(2)#includevoid main( ) int i,s;i=1;s=0;while(i=100) s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);改正后:#includevo

9、id main( )int i,s;i=1;s=0;while(i=100)s=s+i;i+;printf(1+2+3+-.+99+100=%dn,s); (3)#includevoid main( ) int i=1,s;while(i=100) ; s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);改正后:#includevoid main( )int i=1,s=0;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=9

10、45#includeint main()int jishu,sum=1,i; do printf(请输入一个奇数: ); scanf(%d,&jishu); while(jishu%2=0); for(i=1;i=jishu;i=i+2) sum=sum*i; printf(n1*3*5*.*%d= %dn,jishu,sum); 8 输入一个510之间的整数n,求1!+2!+3!+n!。例如输入5,输出为:1!+2!+3!+5!=153#includeint main()int i,j,num,sum=0,jiec=1; /jiec存放单个阶乘的值,sum存放所以的阶乘和 dodoprint

11、f(请输入一个5到10之间的整数: ); scanf(%d,&num); while(num 10); for(i=1;i=num;i+) for(j=1;j=i;j+) jiec=jiec*j;sum=sum+jiec; jiec=1; printf(n1!+2!+3!+.+%d!=%d,num,sum); 9在屏幕上输出以下内容1 12 123 1234 12345 123456 1234567 12345678 123456789 #include int main () char i,j; for(i=0;i9;i+) for(j=1;j=i+1;j+) printf(%d,j); p

12、utchar(n); return 0; 10 求2+4+6+98+100的和,用多种for表达式来完成。#includevoidmain()inti,sum=0;for(i=2;i101;i=i+2)sum=sum+i;printf(sumis%dn,sum);或者#includevoidmain()inti,sum=0;for(i=2;i101;i+)if(i%2=0)sum=sum+i;printf(sumis%dn,sum);11输入一行字符,统计它有多少个字母?#includevoidmain()charccc;intnum=0;while(ccc=getchar()!=n)if(c

13、cc=a&ccc=A&ccc=Z)num+;printf(numis%dn,num);第章分支程序设计1输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。#includevoidmain()intx;doscanf(%d,&x);if(x0)printf(%d的绝对值为:%dn,x,x);elseif(x0)printf(%d的绝对值为:%dn,x,-x);while(x!=0);2 输入一批数,输出比相邻数大的数,当输入0时结束。#includevoidmain()intx=0,last=0;while(1)printf(请输入x值:);scanf(%d,&x);if(x=0)b

14、reak;if(xlast)printf(x比相邻数大:%d,x);last=x;3 将输入字符的大写字符转换成小写字符输出,小写字符原样输出。#includevoidmain()chars;while(s=getchar()!=n)if(s=A&s=Z)s+=32;putchar(s);4 输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个数。#includevoidmain()chars;intxiaoxie_char=0,daxie_char=0,shuz_char=0,others=0;while(s=getchar()!=n)if(s=A&s=a&s=0&s

15、=9)shuz_char+;elseothers+;printf(这些字符中小写字符为%d,大写字符为%d,数字字符为%d,其他字符为%dn,xiaoxie_char,daxie_char,shuz_char,others);5编写程序,计算分段函数:#includevoidmain()intx,y;scanf(%d,&x);if(x1&x10)y=3/(x-10);printf(x=%d,y=%dn,x,y);6根据输入的百分制按五分制的成绩输出。百分制与五分制之间的关系见下表。百分制五分制90 100580 89470 79360 692601#includevoidmain()intba

16、ifen,wufen;printf(请输入百分制成绩:);scanf(%d,&baifen);wufen=baifen/10;switch(wufen)case10:case9:printf(相对应的5分制:5n);break;case8:printf(相对应的5分制:4n);break;case7:printf(相对应的5分制:3n);break;case6:printf(相对应的5分制:2n);break;default:printf(相对应的5分制:1n);7、 用switch完成:读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计

17、算tan(x),若输入其他值,则显示错误信息。#include#includevoidmain()floatx;intz;printf(pleaseinputarealnumber:);scanf(%f,&x);printf(pleaseinputainteger:);scanf(%d,&z);switch(z)case1:printf(%5fn,sin(x);break;case2:printf(%5fn,cos(x);break;case3:printf(%5fn,tan(x);break;default:printf(dateerror!n);8、用switch完成:输入星期1 到星期5

18、,输出它们对应的颜色星期1:blue星期2:red星期3:white星期4:yellow星期5:green#includevoidmain()inti;printf(Pleaseinputadate:n);scanf(%d,&i);switch(i)case1:printf(星期一:bluen);break;case2:printf(星期二:redn);break;case3:printf(星期三:whiten);break;case4:printf(星期四:yellown);break;case5:printf(星期五:greenn);break;default:printf(n);9、用s

19、witch完成:从键盘输入A、B、C、D四个等级中的一个,转化输出等级输出A优秀B良好C中等D及格E不及格#includevoidmain()chari;printf(Pleaseinputachar:n);scanf(%c,&i);switch(i)caseA:printf(优秀n);break;caseB:printf(良好n);break;caseC:printf(中等n);break;caseD:printf(及格n);break;caseE:printf(不及格n);break;default:printf(deteerror);第章数组及其应用.从键盘输入12个数,分别为:900,

20、2,3,58,34,76,87,72,90,20,78,30,找出最大和最小数。#includevoidmain()intshuzu12=900,2,3,58,34,76,87,72,90,20,78,30,i,max=shuzu0,min=shuzu0;for(i=0;imax)max=shuzui;elseif(shuzuimin)min=shuzui;printf(maxis%d,minis%dn,max,min);. 采用遍历查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找出偶数。#includevoidmain()inti,a10=2,3,

21、20,58,72,76,78,87,90,900;for(i=0;i10;i+)if(ai%2=0)printf(%3d,ai);.采用折半查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找到87,然后进行删除。#include#defineSIZE10voidmain()intaSIZE=2,3,20,58,72,76,78,87,90,900,i,j,low=0,high=SIZE-1;i=(low+high)/2;while(high=low)if(ai87)high=i;i=(low+high)/2;elsebreak;for(j=i;jSIZ

22、E-1;j+)aj=aj+1;第章函数及其应用练习与实践一、阅读程序,写出程序运行的结果。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( ) float 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.运行的结果为:av

23、e=81.0000002阅读程序,写出程序的执行结果。#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 );return 0;提示:数组str的首地址传递给形参str,stra就是实参中的数组元素stra,当数组元素不为c时进行复制。程序运行的结果为:str=abdef3写出以下程序的执行结果。#includeint sort(i

24、nt 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);printf(n);return 0; 提示:循环体中if(bkx)bk+1=bk;elsebreak;如果bkx成立,执行语句bk+1=bk;表示数组元素b向后移,不满足时插入x,即从大到小排序。程序运行的

25、结果为:554441111111114写出以下程序的执行结果。#includeint fun(int x) int p; if(x=0|x=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)

26、;return 0; 提示:在函数f中,程序运行借助了堆栈,依次入栈的数据分别为1234、123、12,最后n=1,n对8取余输出,然后数据依次出栈对8取余输出。程序运行的结果为:1432作用:10进制转换为8进制.二、程序设计1编写一个函数,计算x的n次的平方。 提示:for(y=1,i=0;in;i+) y=y*x;#includeintf(intx,intz)intsum=1,i;for(i=0;iz;i+)sum=sum*x;returnsum;voidmain()intjishu,num,y;printf(pleaseinputajishu:);scanf(%d,&jishu);pr

27、intf(pleaseinputanum:);scanf(%d,&num);y=f(jishu,num);printf(%d,y);2编写一个函数,计算对角线上元素之和。提示:for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; #includeintsum(inta6,intx,inty)intsum=0,i,j;for(i=0;ix;i+)for(j=0;jy;j+)if(i=j)sum=sum+aij;elsecontinue;returnsum;voidmain()inti,j,a66;for(i=0;i6;i+)for(j=0;j6;j

28、+)aij=i+j*2;printf(sumis%dn,sum(a,6,6);3编写一个函数int invert(char str ),将一个字符串的内容颠倒过来。提示:先求字符串str的长度n,for(i=0;in/2;i+)ai与an-1-i交换#include#includeintinvert(charstr)intn,i;chartemp;n=strlen(str);for(i=0;in/2;i+)temp=stri;stri=strn-1-i;strn-1-i=temp;voidmain()charstr20;scanf(%s,str);invert(str);puts(str);4

29、编写函数,删除字符串中,从指定位置m开始的n个字符。删除成功,函数返回被删除字符串;否则返回空的值。提示:for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i=0;#include#include#includechar*func(charstr,intm,intn)if(strlen(str)m+n)returnNULL;char*buffer=newcharn+1;memset(buffer,0,n+1);intk,i;for(k=m,i=0strii+)if(i=0&stri=9) s=s*10+stri-0; #includevoidma

30、in()inti,j,n,s=0;charsss30;scanf(%s,sss);for(i=0,j=0;sssi;i+)if(sssi=0&sssi=9)s=s*10+sssi-0;sssj=sssi;j+;sssj=0;puts(sss);putchar(n);printf(Thesis%dn,s);6用递归的方法编写一个函数sum(int n),求1至n的累加和。 提示:f(n)=n+f(n-1) #includeintsum(intn)int_sum;if(n=1)_sum=1;else_sum=n+sum(n-1);return_sum;voidmain()int_sum,n;dop

31、rintf(Pleaseinputanum(=1):);scanf(%d,&n);while(n1);_sum=sum(n);printf(Sumis%dn,_sum);第章变量存储类型与多文件系统1写出以下程序的执行结果。#includeint x;void fun( )printf(%d ,x+);void main( )int x=1;extern int x;printf(%d,+x);fun( );提示:在函数fun中及语句块extern int x;printf(%d,+x);中使用的x是外部变量,在语句块:if(x=1)int x=2;printf(%d,x+);中使用的是刚刚定义x=2的变量。程序的执行结果为:1,12写出以下程序的执行结果。#include int kk( ) int x = 4 ; static int y ; y = 5 ; x*= 2 ; y*= 2; return(x+y);void main() int j , s = 0 ; for ( j =

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1