




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浙江大学远程教育学院程序设计基础(C)课程作业姓名:王春强学 号:年级:2016春学习中心:桐庐学习中心第章 语言的基本构成程序调试题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(i
2、nt,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由几个函数构成?调用了那几个系统函数?此程序中用到了哪几个保留字?哪几个用户自定义标识符?答:1. 有2个函数构成,主函数main()及自定义函数add()2 调用的系统函数有输入函数scanf()及输出函数printf()
3、3 保留字有:int, return4 自定义标识符有:a,b,c,z,x,y步骤3:编译并运行程序,程序运行时输入两个整数,20 40 ,观察程序运行的结果。答: 结果是 20+40=60截图如下:2.编辑、调试以下程序步骤1:在Visual C+环境下新建文件可用开始程序Microsoft Visual C+6.0 Microsoft Visual C+6.0 文件 新建文件 C+ Sourse File,输入文件名ex1-2.c步骤2:在文本编辑器中输入以下C程序#include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/#includeint main( ) in
4、t 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
5、 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您可以输入其它的整数,观察程序的执行结果。答:(增加语句:#include)输入20 40; 2
6、0 20;30 60 如下:第章输入输出程序设计1 用printf输出一个中空的五角星。答:#includevoid main()printf(n);截图如下:2 仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。答:#includevoid main()char str80;printf(请输入您的名字n);scanf(%s,str);printf(学生:%s,正在就读计算机专业n,str);截图:3 从键盘输入十六进制整数,转化为八进制数输出。答:#includevoid main()int a;printf(请输入十六进制整数n);scanf(%x,&a);print
7、f(转换成的八进制数为:%on,a);截图如下:4 只定义两个整型数据并赋值,实现两个整型数的互换。答:#include void main( ) int a=13,b=25; printf(原定义的数是:a=%d,b=%dn,a,b); a = ab; b = ba; a = ab; printf(互换后的数是:a=%d,b=%dn,a,b);截图:5 从键盘上输入一个整数,分别输出8、16进制数的程序。答:#include void main( ) int a; printf(请输入一个整数n); scanf(%d,&a); printf(转换成的十六进制数是%x,转换成的八进制数是%on
8、,a,a);截图如下:6 从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。答:#include void main( ) int a,b,c,d; scanf(%d,&a); b=a%10; c=(a/10)%10; d=(a/100)%10); printf(个位数是:%d,十位数是:%d,百位数是:%dn,b,c,d);截图如下:7 以下程序输出结果是(9,10 )。#includevoid main() int i=010,j=10; printf(%d,%dn,+i,j- ); 8 运行程序,屏幕提示“您是一个学生吗”,您输入y或n进行回答,屏幕输出您的选项。答:#inclu
9、devoid main() char a; printf(您是一个学生吗?请输入y或n进行回答n); scanf(%c,&a); if(a=y) printf(您是学生n); else if(a=n) printf(您不是学生n); else printf(请重新输入n); 截图:9 从键盘输入一个角度x,求10*sin(x)的值。答:#include#includevoid main() double x; scanf(%lf,&x); printf(10*sin(x)的值为:%lfn,10*sin(x);截图:第章循环程序设计1以下for语句的循环次数是多少?int i,j=3;for(;
10、i=j;i-,j-) printf(%d,i);答:循环次数3次2下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:for(int i=0;i 6 ; i+ )printf(%d, hii )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);结果是1,功能是输出数字“0”的数量4写出以下程序的功能。#inc
11、ludevoid 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)#inc
12、ludevoid 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);答:改正如下:#incl
13、udevoid 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*
14、3*9的值。输出为:1*3*5*7*9=945答:#include void main( ) long int s=1,i=1,a; printf(请输入一个整数:n); scanf(%d,&a); while(i=a) s=s*i; i=i+2; printf(1*3*.*%d=%dn,a,s);截图如下:8输入一个510之间的整数n,求1!+2!+3!+n!。例如输入5,输出为:1!+2!+3!+5!=153答:#include void main( ) long int s=0,i=1,t=1,a; printf(请输入一个5-10的整数:n); scanf(%d,&a); while(
15、i=a) t=t*i; s=s+t; i+; printf(1!+2!+3!+%d=%dn,a,s);截图:9在屏幕上输出以下内容1 12 123 1234 12345 答:#includevoid main( ) int i=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#includevoid main( ) int i,s=0; for(i=2;i=100;i+=2) s=s+i; printf(2+4+.+100=%dn,s); 方法
16、2#include void main( ) int i=0,s=0; for(;i=100;) s+=i; i+=2; printf(2+4+.+100=%dn,s);方法3#include void main( ) int i,s; for(i=2,s=0;i=100;s+=i,i+=2); printf(2+4+.+100=%dn,s);截图10 输入一行字符,统计它有多少个字母?答:#includevoid main( ) char string100,c; int total = 99,count=0,scount=0; while(count=a & c=A & c=Z) scou
17、nt+; count+; printf(%s, count=%dn,string,scount);第章分支程序设计1输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。答:#include#includevoid main( ) double x; printf(输入若干整数(0表示结束):n); scanf(%lf,&x); while(1) if(x!=0) printf(%lf的绝对值为%lfn,x,fabs(x); scanf(%lf,&x); else break; 截图:2输入一批数,输出比相邻数大的数,当输入0时结束。答:#include#includevoid mai
18、n()int a,b,c;printf(请输入整数:n);scanf(%d,&a);while(a)scanf(%d,&b);if(b=0)break;if(ab)a=b;printf(最大整数为:%dn,a);截图:3将输入字符的大写字符转换成小写字符输出,小写字符原样输出。答:#include void main( ) char a; scanf(%c,&a);if(a=A & a=Z)printf(转换后的字母为:%cn,a+32);elseprintf(转换后的字母为:%cn,a); 截图:4输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个数。答:#incl
19、udevoid main( ) char c;int a=0,b=0,m=0,n=0;while(1)scanf(%c,&c); if(c=n) break; if(c=A & c=a & c=0 & c=9) m+; else n+; printf(小写字符有%d个,大写字符有%d个,数字字符有%d个,其它字符有%d个n,a,b,m,n);截图:5编写程序,计算分段函数:答:#includevoid main( ) double x,y; scanf(%lf,&x); if(x10) y=3/(x-10); else y=2*x; printf(y=%lfn,y);截图:6根据输入的百分制按
20、五分制的成绩输出。百分制与五分制之间的关系见下表。百分制五分制90 100580 89470 79360 692601答:#includevoid main( ) int x,y; printf(请输入分数:); scanf(%d,&x); if(x100 & x0)printf(成绩输入错误=%d); else if(x=90) y=5; else if(x=80) y=4; else if(x=70) y=3; else if(x=60) y=2; else if(x=0) y=1; printf(五分制成绩=%dn,y);截图:7、用switch完成:读入一个实数x,再输入一整数,若输入
21、是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。答:#include#includevoid main( ) double x; int s; printf(请输入一个实数,一个整数n); scanf(%lf,&x);scanf(%d,&s); switch(s) case 1: printf(sin(x)=%lfn,sin(x); break; case 2: printf(cos(x)=%lfn,cos(x); break; case 3: printf(tan(x)=%lfn,tan(x); break; default
22、: printf(输入错误); break; 截图:8、用switch完成:输入星期1 到星期5,输出它们对应的颜色星期1:blue星期2:red星期3:white星期4:yellow星期5:green答:#include void main( ) int s; printf(输入星期1 到星期5n); scanf(%d,&s); switch(s) case 1: printf(今天的颜色是:bluen); break; case 2: printf(今天的颜色是:redn); break; case 3: printf(今天的颜色是:whiten); break; case 4: prin
23、tf(今天的颜色是:yellown); break; case 5: printf(今天的颜色是:greenn); break; default: printf(输入错误); break; 截图:9、用switch完成:从键盘输入A、B、C、D四个等级中的一个,转化输出等级输出A优秀B良好C中等D及格E不及格答:#include void main( ) printf(从键盘输入A、B、C、D四个等级中的一个!n); switch(getchar() case A: printf(优秀n); break; case B: printf(良好n); break; case C: printf(中
24、等n); break; case D: printf(及格n); break; case E: printf(不及格n); break; default: printf(输入错误); break; 截图第章数组及其应用.从键盘输入12个数,分别为:900,2,3,58,34,76,87,72,90,20,78,30,找出最大和最小数。答:#includevoid main() int a12; int max,min; int i,m; printf(请输入12个整数n); for(i=0;i12;i+) scanf(%d,&ai); max=a0,min=a0; for(i=1;i12;i+
25、) if(maxai) min = ai; printf(最大数为:%d,最小数为:%dn,max,min);截图:.采用遍历查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找出偶数。答:#include #define SIZE 10void main( ) int aSIZE=2, 3,20,58, 72, 76,78,87,90,900; int i; printf(aSIZE=2, 3,20,58, 72, 76,78,87,90,900中偶数为:n); for(i=1;i10;i+) if(ai%2=0) printf(%-4d ,ai);
26、截图.采用折半查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找到87,然后进行删除。答:#include #define SIZE 10void main( ) int aSIZE=2, 3,20,58, 72, 76,78,78,90,900; int i,j=0,k,newSize; newSize=SIZE; k=newSize; printf(原来的数组:); for(i=0;inewSize;i+) if(i=newSize-1) printf(%dn,ai); else printf(%d,ai); i=(j+k)/2; while(j7
27、8) k=i-1; else if(ai78) j=i+1; else for(j=i;jnewSize-1;j+) aj=aj+1; newSize-; k=newSize; j=0; i=(j+k)/2; printf(新的数组:); for(i=0;inewSize;i+) if(i=newSize-1) printf(%dn,ai); else printf(%d,ai); 截图第章函数及其应用练习与实践一、阅读程序,写出程序运行的结果。1写出以下程序的执行结果。#includefloat aver(int a) int k,sum=0;float ave;for(k=0;k10;k+
28、) 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.答:这是求平均数,结果为:81.000002阅读程序,写出程序的执行结果。#include void abc( char str )int a, b ;for(a = b = 0 ; stra!=0; a+ )if(stra!= c)strb+ = stra
29、;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 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
30、,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,即从大到小排序。答:结果是:5 5 4 4 4 1 1 1 11 1 1 1 1 4写出以下程序的执行结果。#includeint fun(int x) int p; if(x=0|x=1) return 3; else p=x-fun(x-2); return p;i
31、nt 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中,程序运行借助了堆栈,依次入栈的数据分别为1234、123、12,最后n=1,n对8取余输出,然后数据依次出栈对8取余输出。答:结果是:1432二、程序设计1编写一个函数,计算x的n次的平方。
32、 提示:for(y=1,i=0;in;i+) y=y*x;答:#includedouble ss(double x,int n)double y=1;int i;for(i=1;i=n;i+)y=y*x;return(y);int main( )double a;int b;printf(请输入x和次数n:);scanf(%lf %d,&a,&b);printf(%lf的%d次方为:%lfn,a,b,ss(a,b);return 0; 截图:2编写一个函数,计算对角线上元素之和。提示:for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; 答:#i
33、nclude int main( )int s,i,j,n=3;int a33 = 1,2,3,4,5,6,7,8,9; for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; printf(对角线元素之和为s=%dn,s); 截图:3编写一个函数int invert(char str ),将一个字符串的内容颠倒过来。提示:先求字符串str的长度n,for(i=0;in/2;i+)ai与an-1-i交换答:#include int invert(char str)int n =strlen(str); int i; char temp; for(i
34、=0;in/2;i+) temp = stri; stri=strn-i-1; strn-i-1=temp; void main() char a12=abcdefg123; printf(颠倒前:%sn,a); invert(a); printf(颠倒后:%sn,a);截图4编写函数,删除字符串中,从指定位置m开始的n个字符。删除成功,函数返回被删除字符串;否则返回空的值。提示:for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i=0;答:#includeint cutstring(int m,int n,char str) int l =st
35、rlen(str); if(m+n-1=l) return 0; int k,i; char nstrn; for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i=0; return 0; void main()int m,n;char str11 = ddksosekci; printf(%sn,str); printf(Please input m and n:n); scanf(%d %d,&m,&n); cutstring(m,n,str); printf(%sn,str); 5编写一个程序,从键盘输入的字符串,删去非数字字符,转换成整型数
36、输出。 提示:for(s=0 , i=0 , j=0 ; stri;i+) if(stri=0&stri=9) s=s*10+stri-0; 答:#include void main() char str11; int s,i,j; for(i=0;i=0&stri=9) s=s*10+stri-0; printf(%dn,s);截图:6用递归的方法编写一个函数sum(int n),求1至n的累加和。 提示:f(n)=n+f(n-1) 答:#include int sum(int n)int s=0,i;for(i=1;i=n;i+)s=s+i;return(s);void main()int
37、 a;printf(请输入整数n:);scanf(%d,&a);printf(1+2+.+%d=%dn,a,sum(a);截图:第章变量存储类型与多文件系统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写出以
38、下程序的执行结果。#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 = 283写出以下程序的执行结果。#include int t( ) int x = 0 ; static int
39、 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( (1) )=NULL)r
40、eturn 0;while(cx=getchar( )!=$)fputc(cx,fp); (2) ;return 1;提示:第1个空格是打开文件读,第2个空格是关闭文件。答:1.”out.txt”,”r+” 2.fclose(fp)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); fcl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福利经济学试题及答案
- 精耕细作助力乐理考试成功试题及答案
- 2024年钦州市北部湾大学招聘真题
- 小学教师反思与课堂管理的有效连接试题及答案
- 张家口市图书馆招聘考试真题2024
- 2023届浙江省杭州市高三二模生物试题 含解析
- 理解2025年商务英语考试框架试题及答案
- 2025年社交电商项目建议书
- 脉象中医考试题及答案
- 聊城美术考编试题及答案
- 房屋抵押个人借款标准合同
- 云南省昆明市2022-2023学年二年级下学期语文期中试卷(含答案)
- 国家职业技术技能标准 4-07-02-05 商务数据分析师S 2024年版
- 口腔预防保健课件 英文
- 读后续写-制作稻草人(T8联考)课件-高考英语作文复习专项
- 研发成果商业化转化(资料)
- 高速铁路关键技术
- 丁丽娟《数值计算方法》五章课后实验题答案(源程序很详细-且运行无误)
- 情境学习理论在教育中的应用
- 血糖监测操作流程及考核标准(100分)
- 部编版语文二年级下册第6单元奇妙的大自然大单元整体作业设计
评论
0/150
提交评论