




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学远程教育学院程序设计基础(C)课程作业第章 语言的基本构成程序调试题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 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由两个函数构成,分别是add()和主函数main()。调用了两个系统函数,分别为scanf和printf。程序中用到如下几个保留字:int, return。使用了如下几个用户自定义标示符:x, y, z, a, b, c.步骤3:编译并运行程序,程序运行时输入两个整数,20 40 ,观察程序运行的结果。答:程序运行结果,20+40=602 编辑、调试以下程序步骤1:在Visual C+环境下新建文件可用开始程序Microsoft Visual C+6.0 Microsoft Visual C+6.0 文件 新建文件 C+ Sourse File,输入文件名ex1-2.c步骤2:在文本编辑器中输入以下C程序#include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/#includeint 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:文件 新建文件 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 步骤4:点击执行图标 ,执行程序1-2.c ,当程序运行时,键盘输入20 40,按回车。20 4020 & 40=120 | 40=1您可以输入其它的整数,观察程序的执行结果。第章输入输出程序设计1 用printf输出一个中空的五角星。2 仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。3 从键盘输入十六进制整数,转化为八进制数输出。4 只定义两个整型数据并赋值,实现两个整型数的互换。5 从键盘上输入一个整数,分别输出8、16进制数的程序。6 从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。7 以下程序输出结果是( )。#includevoid main() int i=010,j=10; printf(%d,%dn,+i,j- ); 8 运行程序,屏幕提示“您是一个学生吗”,您输入y或n进行回答,屏幕输出您的选项。9 从键盘输入一个角度x,求10*sin(x)的值。第章循环程序设计1以下for语句的循环次数是多少?int i,j=3;for(;i=j;i-,j-) printf(%d,i);2下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:for(int i=0;i ; )printf(%d, )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);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;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)#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);(3)#includevoid main( ) int i=1,s;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=9458输入一个510之间的整数n,求1!+2!+3!+n!。例如输入5,输出为:1!+2!+3!+5!=1539在屏幕上输出以下内容1 12 123 1234 12345 10求2+4+6+98+100的和,用多种for表达式来完成。11输入一行字符,统计它有多少个字母?第章分支程序设计1输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。2输入一批数,输出比相邻数大的数,当输入0时结束。3将输入字符的大写字符转换成小写字符输出,小写字符原样输出。4输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个数。5编写程序,计算分段函数:6根据输入的百分制按五分制的成绩输出。百分制与五分制之间的关系见下表。百分制五分制90 100580 89470 79360 6926017、用switch完成:读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。8、用switch完成:输入星期1 到星期5,输出它们对应的颜色星期1:blue星期2:red星期3:white星期4:yellow星期5:green9、用switch完成:从键盘输入A、B、C、D四个等级中的一个,转化输出等级输出A优秀B良好C中等D及格E不及格第章数组及其应用.从键盘输入12个数,分别为:900,2,3,58,34,76,87,72,90,20,78,30,找出最大和最小数。.采用遍历查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找出偶数。.采用折半查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找到87,然后进行删除。第章函数及其应用练习与实践一、阅读程序,写出程序运行的结果。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.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 );return 0;提示:数组str的首地址传递给形参str,stra就是实参中的数组元素stra,当数组元素不为c时进行复制。3写出以下程序的执行结果。#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);printf(n);return 0; 提示:循环体中if(bkx)bk+1=bk;elsebreak;如果bkx成立,执行语句bk+1=bk;表示数组元素b向后移,不满足时插入x,即从大到小排序。4写出以下程序的执行结果。#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)=35写出以下程序的执行结果,并说明其作用是什么?#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中,程序运行借助了堆栈,依次入栈的数据分别为1234、123、12,最后n=1,n对8取余输出,然后数据依次出栈对8取余输出。二、程序设计1编写一个函数,计算x的n次的平方。 提示:for(y=1,i=0;in;i+) y=y*x;2编写一个函数,计算对角线上元素之和。提示:for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; 3编写一个函数int invert(char str ),将一个字符串的内容颠倒过来。提示:先求字符串str的长度n,for(i=0;i=0&stri=9) s=s*10+stri-0; 6用递归的方法编写一个函数sum(int n),求1至n的累加和。 提示:f(n)=n+f(n-1) 第章变量存储类型与多文件系统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的变量。2写出以下程序的执行结果。#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 ;只执行一次,而变量赋值语句每次都要执行。3写出以下程序的执行结果。#include int t( ) 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 ;只执行一次。第章文件1下述程序从终端读入文本(用$作为文本结束标志)复制到一个名为out.dat的新文件中,请补全程序。#include int main()FILE *fp;char cx;if(fp=fopen( (1) )=NULL)return 0;while(cx=getchar( )!=$)fputc(cx,fp); (2) ;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( (1) ) fgetc(fp); num+; printf(num=%dn,num); fclose(fp); return 1; 提示:第1个空格表示文件没有结束,循环将持续。. 以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符,依次存放到该文件中,用#作为结束输入的标志,请补全程序。#includevoid main( ) FILE *fp; char ch,fname10; printf(Input the name of filen); gets(fname); if(fp= )=NULL) printf(Cannot openn); exit(0); printf(Enter datan); while(ch=getchar( )!=#) fputc( ,fp); fclose(fp);提示:文件名是从键盘读入的,因而文件名是用变量表示的,文件是打开写。4下述程序从一个二进制文件中读入结构体数据,并把读出的数据显示在屏幕上。请补全程序。#include struct rec int a;float b;void recout(FILE *fp)struct rec r;dofread( (1) ,sizeof(struct rec), (2) ,fp);if( (3) ) (4) ;printf(%d,%f,r.a,r.b);while(1);void main() FILE *fp;fp=fopen(file.dat,rb);recout(fp);fclose(fp);提示:在fread语句中,(1)中为存放所读出结构数据的内存地址,当然此数据是赋给变量r,(2)中是读出结构体变量数据的个数,(3)是与循环中止有关的判断,(4)为中止循环。.从键盘输入一个字符串,并逐个将字符串的每个字符传送到磁盘文件l1.txt中,字符串的结束标记为#。有一文本文件l1.txt,请编写一个程序将文件中的英文字母及数字字符显示在屏幕上。提示:把文本文件l1.txt中的数字字符复制到文本文件l2.txt中。x从0到360度的sin(x)值写入到文件l6.txt中,并将大于0的值显示在屏幕上。第章 指针与数组程序阅读与填空题1分析下列程序,输出结果是( )。#includevoid main() int *p1,x=10; float *p2,y=2.5; p1=&x; p2=&y; printf(%d, %fn,+(*p1), (*p2)+ ); 提示:+都作用在内容上,前一项是先+再输出,后一项是先输出再+。2下列程序输出结果是( )。#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下列程序输出结果是( )。#includevoid main() int a =1,2,3,4,5,6; int x,y,*p; p=&a0; x=*(p+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向大地址方向移动,然后再取内容,要注意的是后一语句的输出受前一语句的影响。5下列程序输出的结果是( )。#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以下程序输出的结果是( )。#include#includevoid fun( char *w ,int m) char s, *p1 , *p2; p1 = w; p2= w+m-1; while(p1p2) s = *p1+; *p1= *p2- ; *p2 = s ;void main( ) char a = ABCDEFG; fun(a ,strlen(a); puts(a); 提示:当执行s=*p1+;语句时,指针p1所指的地址上内容赋给s时,指针p1后移,语句*p1= *p2-;指针p2所指的内容赋给p1所指的地址上后,p2前移后再执行*p2 = s语句。7以下程序输出的结果是( )。#include void main( ) int a33 = 2,0,8,4,6; int i,*p = &a00; for(i = 0;i3;i+) if (i = 0) aii+1=*p+1; else +p; printf(%d,*p); printf(n);提示:当i=0时,把*p+1值3赋给a01,然后输出2,当i=1时,+p后p指向a01,输出a01,当i=2时,+p,指针p指向a02。 8阅读以下程序,把应填的内容写入空格处。本函数是应用二分法查找key值,数组中元素值按递增排序,若找到key则返回对应的下标,否则返回-1。int binary(double a, int n, double key) int low,high,mid;low=0;high=n-1;while (1) mid=(low+high)/2; if(keyamid) (3) ;else (4) ;return(-1); 提示:用low、high、mid分别表示数组a低地址端、高地址端、中间元素的下标,只要低地址端下标小于高地址端下标循环一直持续,如果中间元素大于所查找的数,表示所查找的数在以low、high为边界的左侧,如果中间元素小于所查找的数,表示所查找的数在以low、high为边界的右侧,如都不是表示已找到。9下述函数从一个数组v中删除值为key的元素。数组的元素个数由指针n指明,请填空。void delnode(double v,int *n)int i,j,k=-1; for(i= (1) ; (2) ;i-) if(vi=key) k+; for(j=i; (3) ;j+) vj=vj+1; if(k=0) *n= (4) 提示:由于在第1个for循环中为i-,因而循环一定是从数组下标最大的元素*n-1开始,循环的条件是i=0,如果找到要删除的元素,后面的元素依次向前移,一直移到最后v*n-1,k标记删除的次数,*n存放最后数组中元素的个数。二、编程题 1用指针的方法编写一函数,交换从键盘读入的两个整型数a,b。提示:void swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=temp;2编写一函数void invert(char str )将一个字符串的内容颠倒过来。提示:定义两个字符指针,测试字符串的长度,一个指针p1指向字符串的首地址,另一个指针p2指向字符串最后一个字符,当while(p2p1)满足时交换两个指针所指的内容。3编写一函数int index(char *s,char *t)检查字符串s中是否包含字符串t,若包含则返回t在s中的开始位置(下标值),否则返回-1。提示:先计算t的长度n for(i=0 ; si ; i+) for(j=0;si+j=tj;j+) if(j+1=n) return i ;4编写函数,判断一字符串是否回文。若是回文,函数返回值为1;否则返回值为0。(回文是按顺序读和倒读都一样的字符串)。提示:设字符指针p1、p2分别指向字符串的第1个字符与最后一个字符,考虑下列程序段:while(p2p1) if(*p1=*p2) p1+; p2-; else return 0;if(p1p2) return 1; and performance test copies of the record. If necessary, review should be carried out; 4) for spring hangers (included simple spring, hangers and constant support hangers) it should also be recognized as setting and locking of loads. 5) check the surface quality, folded layering and without cracks, rust and other defects. 5) after completion of the test and control drawing number one by one, by series baled. Color alloy steel parts, the parts marking installation location and rotation about the direction you want. 7.3.14. hangers installation 7.3.14.1 hanger layout a. a clear design of hanger should be installed strictly in accordance with the drawings and designs shall not be installed wrong, missing, etc. B. own arrangement of piping support and hanger set and selection should be based on comprehensive analysis o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46051-2025节流压井软管及软管组合件
- 内部管理培训课件
- 汽车账号营销方案范文(3篇)
- 中餐营销方案及案例(3篇)
- 数字营销策划方案(3篇)
- 化学老师安全培训课件
- 内训师课件改进措施
- 化学岗班组安全培训计划课件
- 化学实验室安全培训会课件
- 内蒙古安全生产培训题库课件
- 《生物技术在环境保护中的应用》课件
- 2025年华能上海电力检修有限责任公司招聘笔试参考题库含答案解析
- 保洁日常标准培训
- 人教版八年级物理上册《第一章机械运动》单元测试卷(含答案)
- 全国第三届职业技能大赛(工业机器人系统操作项目)选拔赛理论考试题及答案
- 高一 人教A版 数学 第三章《幂函数》课件
- 氩气瓶的安全使用要求
- 《大模型原理与技术》全套教学课件
- 糖尿病足的影像学鉴别诊断
- 象棋入门课件教学
- 第47届世界技能大赛江苏省选拔赛精细木工项目技术文件(初稿)
评论
0/150
提交评论