1浙江大学远程教育学院《程序设计基础(C)》课程作业姓名:王春强学号:年级:2016春学习中心:桐庐学习中心—————————————————————————————第1章C语言的基本构成程序调试题1.编辑、调试以下程序步骤1:在VisualC++环境下新建文件可用[开始]→[程序]→[MicrosoftVisualC++6.0]→[MicrosoftVisualC++6.0]→[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-1.c,程序代码如下:#includestdio.h/*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/intadd(intx,inty){intz;z=x+y;returnz;}intmain(){intadd(int,int);/*函数的说明,告诉系统在主函数中要调用add函数*/inta,b,c;/*变量的定义*/scanf(%d%d\n,&a,&b);c=add(a,b);/*函数调用*/printf(%d+%d=%d\n,a,b,c);/*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出*/}请思考文件ex1-1.c由几个函数构成?调用了那几个系统函数?此程序中用到了哪几个保留字?哪几个用户自定义标识符?答:1.有2个函数构成,主函数main()及自定义函数add()2.调用的系统函数有输入函数scanf()及输出函数printf()3.保留字有:int,return24.自定义标识符有:a,b,c,z,x,y步骤3:编译并运行程序,程序运行时输入两个整数,2040,观察程序运行的结果。答:结果是20+40=60截图如下:2.编辑、调试以下程序步骤1:在VisualC++环境下新建文件可用[开始]→[程序]→[MicrosoftVisualC++6.0]→[MicrosoftVisualC++6.0]→[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2.c步骤2:在文本编辑器中输入以下C程序#includestdio.h/*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/#includeex1-2-2.cintmain(){intand(int,int);/*函数的说明,告诉系统在主函数中要调用and函数*/intor(int,int);/*函数的说明,告诉系统在主函数中要调用and函数*/inta,b,c;/*变量的定义*/scanf(%d%d,&a,&b);c=and(a,b);/*函数调用*/printf(%d&&%d=%d\n,a,b,c);/*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出*/c=or(a,b);/*函数调用*/printf(%d||%d=%d\n,a,b,c);}步骤3:[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2-2.c,源程序代码为:intand(inta,intb){intc;c=a&&b;returnc;3}步骤4:[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2-3.c,源程序代码为:intor(inta,intb){intc;c=a||b;returnc;}步骤5:点击编译图标,编译程序1-2.c步骤4:点击执行图标,执行程序1-2.c,当程序运行时,键盘输入2040,按回车。204020&&40=120||40=1您可以输入其它的整数,观察程序的执行结果。答:(增加语句:#includeex1-2-3.c)输入2040;2020;3060如下:第2章输入输出程序设计1.用printf输出一个中空的五角星。答:4#includestdio.hvoidmain(){printf(☆\n);}截图如下:2.仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。答:#includestdio.hvoidmain(){charstr[80];printf(请输入您的名字\n);scanf(%s,str);printf(学生:%s,正在就读计算机专业\n,str);}截图:3.从键盘输入十六进制整数,转化为八进制数输出。答:#includestdio.hvoidmain(){inta;printf(请输入十六进制整数\n);scanf(%x,&a);printf(转换成的八进制数为:%o\n,a);}截图如下:54.只定义两个整型数据并赋值,实现两个整型数的互换。答:#includestdio.hvoidmain(){inta=13,b=25;printf(原定义的数是:a=%d,b=%d\n,a,b);a=a^b;b=b^a;a=a^b;printf(互换后的数是:a=%d,b=%d\n,a,b);}截图:5.从键盘上输入一个整数,分别输出8、16进制数的程序。答:#includestdio.hvoidmain(){inta;printf(请输入一个整数\n);scanf(%d,&a);printf(转换成的十六进制数是%x,转换成的八进制数是%o\n,a,a);}截图如下:66.从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。答:#includestdio.hvoidmain(){inta,b,c,d;scanf(%d,&a);b=a%10;c=(a/10)%10;d=((a/100)%10);printf(个位数是:%d,十位数是:%d,百位数是:%d\n,b,c,d);}截图如下:7.以下程序输出结果是(9,10)。#includestdio.hvoidmain(){inti=010,j=10;printf(%d,%d\n,++i,j--);}8.运行程序,屏幕提示“您是一个学生吗”,您输入’y’或’n’进行回答,屏幕输出您的选项。答:#includestdio.hvoidmain(){chara;printf(您是一个学生吗?请输入'y'或'n'进行回答\n);scanf(%c,&a);if(a=='y')printf(您是学生\n);elseif(a=='n')printf(您不是学生\n);elseprintf(请重新输入\n);}截图:79.从键盘输入一个角度x,求10*sin(x)的值。答:#includestdio.h#includemath.hvoidmain(){doublex;scanf(%lf,&x);printf(10*sin(x)的值为:%lf\n,10*sin(x));}截图:第3章循环程序设计1.以下for语句的循环次数是多少?inti,j=3;for(;i=j;i--,j--)printf(%d,i);答:循环次数3次2.下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:for(inti=0;i6;i++)printf(%d,h[i][i])3.写出以下程序运行的结果,此程序实现了什么功能?#includestdio.hvoidmain(){inta[10]={2,4,0,-5,10,6,-8,9,6,7};inti,count=0;for(i=0;i10;i++)if(a[i]==0)count++;elsecontinue;printf(%d\n,count);}8结果是1,功能是输出数字“0”的数量4.写出以下程序的功能。#includestdio.hvoidmain(){inta[10]={2,4,0,-5,10,6,-8,9,6,7},tmp,k;for(k=0;k10/2;k++){tmp=a[k];a[k]=a[10-k-1];a[10-k-1]=tmp;}}答:功能是倒置数组5.写出以下程序运行后的输出结果。#includestdio.hvoidmain(){inti,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)#includestdio.hvoidmain(){inti,s;i=1;s=0;while(i=100);s=s+i;i++;printf(“1+2+3+….+99+100=%d\n”,s);9}答:改正后为:#includestdio.hvoidmain(){inti,s;i=1;s=0;while(i=100){s=s+i;i++;}printf(1+2+3+….+99+100=%d\n,s);}截图如下:(2)#includestdio.hvoidmain(){inti,s;i=1;s=0;while(i=100)s=s+i;i++;printf(“1+2+3+….+99+100=%d\n”,s);}答:改正如下:#includestdio.hvoidmain(){inti,s;i=1;s=0;while(i=100){s=s+i;i++;10}printf(1+2+3+….+99+100=%d\n,s);}截图如下:(3)#includestdio.hvoidmain(){inti=1,s;while(i=100);{s=s+i;i++;}printf(“1+2+3+….+99+100=%d\n”,s);}答:改正如下:#includestdio.hvoidmain(){inti=1,s=0;while(i=100){s=s+i;i++;}printf(1+2+3+….+99+100=%d\n,s);}截图如下:7.输入一个基数,例如输入9,输出为:求1*3*……*9的值。输出为:1*3*5*7*9=945答:#includestdio.hvoidmain(){longints=1,i=1,a;11printf(请输入一个整数:\n);scanf(%d,&a);while(i=a){s=s*i;i=i+2;}printf(1*3*...*%d=%d\n,a,s);}截图如下:8.输入一个5~10之间的整数n,求1!+2!+3!+…+n!。例如输入5,输出为:1!+2!+3!+…+5!=153答:#includestdio.hvoidmain(){longints=0,i=1,t=1,a;printf(请输入一个5-10的整数:\n);scanf(%d,&a);while(i=a){t=t*i;s=s+t;i++;}printf(1!+2!+3!+…+%d=%d\n,a,s);}截图:9.在屏幕上输出以下内容11212312341234512345612123456712345678123456789答:#includestdio.hvoidmain(){inti=1,s;while(i=9){for(s=1;s=i;s++)printf(%d,s);printf(\n);i++;}}截图:10.求2+4+6+……+98+100的和,用多种for表达式来完成。答:方法1#includestdio.hvoidmain(){inti,s=0;for(i=2;i=100;i+=2){13s=s+i;}printf(2+4+...+100=%d\n,s);}方法2#includestdio.hvoidmain(){inti=0,s=0;for(;i=100;){s+=i;i+=2;}printf(2+4+...+100=%d\n,s);}方法3#includestdio.hvoidmain(){inti,s;for(i=2,s=0;i=100;s+=i,i+=2);printf