2023年程序设计基础C离线作业答案浙江大学远程教育学院

上传人:豆*** 文档编号:166409668 上传时间:2022-10-31 格式:DOC 页数:47 大小:101KB
收藏 版权申诉 举报 下载
2023年程序设计基础C离线作业答案浙江大学远程教育学院_第1页
第1页 / 共47页
2023年程序设计基础C离线作业答案浙江大学远程教育学院_第2页
第2页 / 共47页
2023年程序设计基础C离线作业答案浙江大学远程教育学院_第3页
第3页 / 共47页
资源描述:

《2023年程序设计基础C离线作业答案浙江大学远程教育学院》由会员分享,可在线阅读,更多相关《2023年程序设计基础C离线作业答案浙江大学远程教育学院(47页珍藏版)》请在装配图网上搜索。

1、浙江大学远程教育学院程序设计基础(C)课程作业姓名:袁洋学 号:7年级:2023春学习中心:紫金港校区第章 语言的基本构成由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( * * n);pri

2、ntf( * * 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(请输入一个三个数:); sca

4、nf(%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进行回答,屏幕输出您的选项。#includevo

5、id 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=j;i-,j-) p

6、rintf(%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写出以下程序的功能。#includevoid m

7、ain()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请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检查。(1)#inclu

8、devoid 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);改正后:#includevoid main( )i

9、nt 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=945#includei

10、nt 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存放所以的阶乘和 dodoprintf(请输入一个5到10

11、之间的整数: ); 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 #include int main () char i,j; for(i=0;i9;i+) for(j=1;j=i+1;j+) printf(%d,j); putchar(n); return 0;

12、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(ccc=a&ccc=A&ccc=Z)num+

13、;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)break;if(xlast)printf(

14、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=9)shuz_char+;elseoth

15、ers+;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()intbaifen,wufen;printf(请输入

16、百分制成绩:);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,则计算tan(x),若输入其他值,则显示错误信

17、息。#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,输出它们相应的颜色星期1:blue星期2

18、: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、用switch完毕:从键盘输入A、B、C、D四

19、个等级中的一个,转化输出等级输出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,2,3,58,34,76,87,72,90

20、,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,20,58,72,76,78,87,90,

21、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;jSIZE-1;j+)aj=aj+1;第章函数及其

22、应用练习与实践一、阅读程序,写出程序运营的结果。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.运营的结果为:ave=81.0000002阅读程序,写出程序

23、的执行结果。#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(int b,int n,int x)int

24、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,即从大到小排序。程序运营的结果为:554441111111114写出

25、以下程序的执行结果。#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);return 0; 提醒:在函数f中,程

26、序运营借助了堆栈,依次入栈的数据分别为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);printf(pleaseinputanum:

27、);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+)aij=i+j*2;printf(su

28、mis%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编写函数,删除字符串中,从指定位置m开始的

29、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; #includevoidmain()inti,j,n,s=0;char

30、sss30;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;doprintf(Pleaseinputanum

31、(=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

32、写出以下程序的执行结果。#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 = 0 ; j 2 ; j+ ) s = kk ( ); printf( s = % d n ,s );提醒:虽然两次调用函数kk(),但变量定义语句static int y ;只执行一次,而变量赋值语句每次都要执行。程序的执行结果为:s=183写出以下程序的执行结果。#include int t( ) int x = 0 ; static

33、 int y = 4 ; y += +x ; return x+y;void main( ) printf(%d n,( t( ), t( ) );提醒:语句printf(%d n,(t( ), t( );中(t( ),t( )属于“,”号表达式,即两次调用函数t( ),在函数t( )中,y为静态内部变量,因而语句static int y = 4 ;只执行一次。程序的执行结果为:7第章文献1下述程序从终端读入文本(用$作为文本结束标志)复制到一个名为out.dat的新文献中,请补全程序。#include int main()FILE *fp;char cx;if(fp=fopen( out.d

34、at, w )=NULL)return 0;while(cx=getchar( )!=$)fputc(cx,fp);fclose(fp) ;return 1;提醒:第1个空格是打开文献读,第2个空格是关闭文献。2下面的程序用来记录文献中字符的个数,请补全程序。#includeint main( ) FILE *fp; long num=0; if(fp=fopen(fname.dat,r)=NULL) printf(Cant open file!n);exit(0); while( feof(fp) fgetc(fp); num+; printf(num=%dn,num); fclose(fp

35、); return 1; 提醒:第1个空格表达文献没有结束,循环将连续。. 以下程序由终端键盘输入一个文献名,然后把从终端键盘输入的字符,依次存放到该文献中,用#作为结束输入的标志,请补全程序。#includevoid main( ) FILE *fp; char ch,fname10; printf(Input the name of filen); gets(fname); if(fp= fopen(fname10,w)=NULL) printf(Cannot openn); exit(0); printf(Enter datan); while(ch=getchar( )!=#) fpu

36、tc( ch ,fp); fclose(fp);提醒:文献名是从键盘读入的,因而文献名是用变量表达的,文献是打开写。4下述程序从一个二进制文献中读入结构体数据,并把读出的数据显示在屏幕上。请补全程序。#include struct rec int a;float b;void recout(FILE *fp)struct rec r;dofread( &r ,sizeof(struct rec), 1 ,fp);if( feof(fp) break;printf(%d,%f,r.a,r.b);while(1);void main() FILE *fp;fp=fopen(file.dat,rb)

37、;recout(fp);fclose(fp);提醒:在fread语句中,(1)中为存放所读出结构数据的内存地址,当然此数据是赋给变量r,(2)中是读出结构体变量数据的个数,(3)是与循环中止有关的判断,(4)为中止循环。.从键盘输入一个字符串,并逐个将字符串的每个字符传送到磁盘文献l1.txt中,字符串的结束标记为#。#include#includeintmain()FILE*fp;charch;if(fp=fopen(11.txt,w)=NULL)printf(cannotopenthisfilen);exit(0);while(ch=getchar()!=#)fputc(ch,fp);fc

38、lose(fp);return0; 有一文本文献l1.txt,请编写一个程序将文献中的英文字母及数字字符显示在屏幕上。#include#includeintmain()FILE*fp;charch;if(fp=fopen(11.txt,r)=NULL)printf(cannotopenthisfilen);exit(0);while(!feof(fp)if(ch=fgetc(fp)=a&(ch=fgetc(fp)=A&(ch=fgetc(fp)=0&(ch=fgetc(fp)=9)putchar(ch);fclose(fp);return0; 把文本文献l1.txt中的数字字符复制到文本文献l

39、2.txt中。#include#includeintmain()FILE*fp,*fp1;longnum=0;inti=0,t=0;charch;chardata1000;if(fp=fopen(l1.txt,r)=NULL)printf(Cantopenfile!n);while(!feof(fp)ch=fgetc(fp);datai=ch;i+;datai=0;fclose(fp);if(fp1=fopen(l2.txt,w)=NULL)printf(Cantopenfile!n);for(t=0;ti-1;t+)fputc(datat,fp1);fclose(fp1);return1;x

40、从0到360度的sin(x)值写入到文献l6.txt中,并将大于0的值显示在屏幕上。#include#include#includeintmain()floaty;intx;charch=;FILE*fp;if(fp=fopen(16.txt,w)=NULL)printf(filecantopenn);exit(0);for(x=0;x0)printf(%f,y);fclose(fp);return0;第章 指针与数组程序阅读与填空题1分析下列程序,输出结果是( 11,2.500000)。#includevoid main() int *p1,x=10; float *p2,y=2.5; p1

41、=&x; p2=&y; printf(%d, %fn,+(*p1), (*p2)+ ); 提醒:+都作用在内容上,前一项是先+再输出,后一项是先输出再+。2下列程序输出结果是( 1,4 )。#includevoid main() int a =1,2,3,4,5,6,*p=a; printf(%d,%dn,*p,*(p+3);提醒:语句*(p+3)+=2;指p+3的地址上的内容加2,然后输出p及p+3的地址上内容。3下列程序输出结果是( *p=1,x=3,y=5 )。#includevoid main() int a =1,2,3,4,5,6; int x,y,*p; p=&a0; x=*(p

42、+2); y=*(p+4); printf(*p=%d,x=%d,y= %dn,*p,x,y);提醒:p+2是指&a2。4下列程序输出结果是( )。#includevoid main()int a =10,20,30,40,50,60; int *p;p=a;printf(*%d,n,*p);printf(*%d,n,*(+p);printf(*%d,n,*+p);printf(*%d,n,*(p-);p+=3;printf(*%d,%d n,*p,*(a+3);提醒:*(+p)、*+p都表达指针p向大地址方向移动,然后再取内容,要注意的是后一语句的输出受前一语句的影响。程序输出结果为:*10

43、,*20,*30,*30,*50,405下列程序输出的结果是( str=abdef )。#include void del( char *str )int a, b ;for(a = b = 0 ; stra!=0; a+ )if(*(str+a)!=c)*(str+b+)=*(str+a);strb=0;void main( )char str =abcdef ;del(str);printf(str =%s , str );提醒:在函数del中str+a地址上的内容不为字符c时不复制,事实上是指删除指针str所指的字符串中的字符c。6以下程序输出的结果是( AGAAGAG )。#include#in

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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