版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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+);中使用的是刚刚定
32、义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 = 0 ; j 2 ; j+ ) s = kk ( ); printf( s = % d n ,s );提示:虽然两次调用函数kk(),但变量定义语句static int y ;只执行一次,而变量赋值语句每次都要执行。程序的执行结果为:s=183写出以下程序的执行结果。#include int t(
33、 ) int x = 0 ; static 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
34、cx;if(fp=fopen( out.dat, 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(nu
35、m=%dn,num); fclose(fp); 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(
36、ch=getchar( )!=#) fputc( 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;
37、fp=fopen(file.dat,rb);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
38、()!=#)fputc(ch,fp);fclose(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中的数字字符复制到文本文件l2.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(f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钼铁冶炼工成果强化考核试卷含答案
- 2025年助理医师资格证考试之口腔助理医师通关试题库(有答案)
- 2023年全球市场超宽隔膜分切机 GIR3480中文总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 复合型网布贴合过滤棉行业深度研究报告
- 中国指纹辨识锁项目投资可行性研究报告
- 第21课 人民英雄永垂不朽-瞻仰首都人民英雄纪念碑 第2课时 公开课一等奖创新教学设计-【课堂无忧】新课标同步核心素养课堂
- 3-溴丙酸乙酯行业深度研究报告
- 灯头灯座插座行业深度研究报告
- 中国片状谐振器项目投资可行性研究报告
- 中国胶木螺丝项目投资可行性研究报告
- 安全员线上培训课件下载
- 9.2 文化发展的基本路径 课件-2025-2026学年高中政治统编版必修四哲学与文化
- 2025新疆伊宁县公安局面向社会招聘警务辅助人员260人笔试考试参考题库及答案解析
- 华能安全规程课件
- 中成药治疗良性前列腺增生临床应用指南(2024年)解读
- 2025年中医确有专长考试题(附答案)
- 2025-2026学年贵州省安顺市三年级道德与法治上册期中考试试卷及答案
- 青岛市人民医院肛肠术后疼痛管理考核
- 2025年全国交管12123驾驶证学法减分(学法免分)考试题含参考答案
- 2025-2026学年苏教版二年级上册数学期中测试卷(含参考答案)三套
- 学堂在线 经济学原理(微观部分) 章节测试答案
评论
0/150
提交评论