程序设计基础C离线作业答案.docx
- 文档编号:18150686
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:62
- 大小:35.41KB
程序设计基础C离线作业答案.docx
《程序设计基础C离线作业答案.docx》由会员分享,可在线阅读,更多相关《程序设计基础C离线作业答案.docx(62页珍藏版)》请在冰点文库上搜索。
程序设计基础C离线作业答案
浙江大学远程教育学院
《程序设计基础(C)》课程作业
姓名:
学号:
年级:
学习中心:
—————————————————————————————
第1章C语言的基本构成
程序调试题
1.编辑、调试以下程序
步骤1:
在VisualC++环境下新建文件可用[开始]→[程序]→[MicrosoftVisualC++6.0]→[MicrosoftVisualC++6.0]→[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-1.c,程序代码如下:
#include
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由几个函数构成?
调用了那几个系统函数?
此程序中用到了哪几个保留字?
哪几个用户自定义标识符?
步骤3:
编译并运行程序,程序运行时输入两个整数,2040,观察程序运行的结果。
答:
4个函数,2个系统函数,4个保留字(int、return、scanf、printf),x,y,z,a,b,c,为用户自定义标示符。
输入20,40,20+40=60
2.编辑、调试以下程序
步骤1:
在VisualC++环境下新建文件可用[开始]→[程序]→[MicrosoftVisualC++6.0]→[MicrosoftVisualC++6.0]→[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2.c
步骤2:
在文本编辑器中输入以下C程序
#include
#include \DocumentsandSettings\Administrator\ex1-2-2.c> #include \DocumentsandSettings\Administrator\ex1-2-3.c> intmain() { 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; } 步骤4: [文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2-3.c,源程序代码为: intor(inta,intb) { intc; c=a||b; returnc; } 步骤5: 点击编译图标 ,编译程序1-2.c 步骤4: 点击执行图标 ,执行程序1-2.c,当程序运行时,键盘输入2040,按回车。 2040 20&&40=1 20||40=1 您可以输入其它的整数,观察程序的执行结果。 1030,10&&30=1,10||30=1 01,0&&1=0,0||1=1 第2章 输入输出程序设计 1.用printf输出一个中空的五角星。 解: #include main() { printf("*\n"); printf("**\n"); printf("**\n"); printf("**\n"); printf("**************\n"); printf("**\n"); printf("**\n"); printf("**\n"); printf("***\n"); printf("****\n"); printf("****\n"); printf("****\n"); printf("****\n"); printf("****\n"); printf("**\n"); } 2.仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。 解: #include intmain() { charstr[100]; printf("请输入字符串: "); gets(str); printf("输入的字符串是: %s\n",str); return0; } 3.从键盘输入十六进制整数,转化为八进制数输出。 解: #include intmain() { inta; printf("请输入一个十六进制整数: "); scanf("%x",&a); printf("八进制数输出: %o\n",a); return0; } 请输入一个十六进制整数: a 八进制数输出: 12 Pressanykeytocontinue 4.只定义两个整型数据并赋值,实现两个整型数的互换。 解: #include intmain() { inta,b,c; scanf("%d,%d/n",&a,&b); printf("a=%d,b=%d\n",a,b); c=b; b=a; a=c; printf("a=%d,b=%d\n",a,b); return0; } 123456,654321 a=123456,b=654321 a=654321,b=123456 Pressanykeytocontinue 5.从键盘上输入一个整数,分别输出8、16进制数的程序。 解: #include intmain() { inta; printf("请输入一个整数: "); scanf("%d",&a); printf("八进制数输出: %o\n",a); printf("十六进制数输出: %X\n",a); return0; } 请输入一个整数: 78 八进制数输出: 116 十六进制数输出: 4E Pressanykeytocontinue 6.从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。 解: #include #include intmain() { intn,i=0,j; printf("请输入一个整数: "); scanf("%d",&n); while(i<3) { j=abs(n)%10; n=n/10; printf("%d\n",j); i++; } return; } 7.以下程序输出结果是()。 #include voidmain() { inti=010,j=10; printf("%d,%d\n",++i,j--); } 解: 9,10 Pressanykeytocontinue 8.运行程序,屏幕提示“您是一个学生吗”,您输入’y’或’n’进行回答,屏幕输出您的选项。 解: #include intmain() { charch; printf("您是一个学生吗? (y/n)\n"); scanf("%c",&ch); if(ch=='y'||ch=='Y') printf("我是一个学生。 \n"); elseif(ch=='n'||ch=='N') printf("我不是一个学生。 \n"); else printf("输入错误! \n"); return; } 9.从键盘输入一个角度x,求10*sin(x)的值。 解: #include #include intmain() { doublex,y,z,pi=3.141592653; printf("输入一个角度: "); scanf("%lf",&x); y=(x*pi)/180; z=10*sin(y); printf("10*sin(x)的值: %lf\n",z); return; } 第3章 循环程序设计 1.以下for语句的循环次数是多少? inti,j=3; for(;i=j;i--,j--)printf("%d",i); 解: 3次 2.下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整: for(inti=0;i<6;i++) printf("%d",s[i][i]) 3.写出以下程序运行的结果,此程序实现了什么功能? #include voidmain() {inta[10]={2,4,0,-5,10,6,-8,9,6,7}; inti,count=0; for(i=0;i<10;i++) if(a[i]==0)count++; elsecontinue; printf("%d\n",count); } 解: 运行的结果: 1 对数组a中有几个0进行计数。 4.写出以下程序的功能。 #include voidmain() { inta[10]={2,4,0,-5,10,6,-8,9,6,7},tmp,k; for(k=0;k<10/2;k++) { tmp=a[k]; a[k]=a[10-k-1]; a[10-k-1]=tmp; } } 解: 把数组中的数据末尾的数据调到第一位,倒数第二调到第二位,以此类推5次。 数组倒序为: {7,6,9,-8,6,10,-5,0,4,2} 5.写出以下程序运行后的输出结果。 #include voidmain() { inti,j; for(i=0;i<6;i++) { for(j=0;j printf(""); for(j=0;j<2*(5-i)-1;j++) printf("*"); printf("\n"); } } 解: 运行结果: ********* ******* ***** *** * Pressanykeytocontinue 6.请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检验。 (1) #include voidmain() { inti,s; i=1;s=0; while(i<=100);while(i<=100){s=s+i: i++;} s=s+i;printf(“1+2+3+…+99+100=%d\n”,s); i++;return0; printf(“1+2+3+….+99+100=%d\n”,s); } (2) #include voidmain() { inti,s; i=1; s=0; while(i<=100)while(i<=100){s=s+i;i++;} s=s+i; i++; printf(“1+2+3+….+99+100=%d\n”,s); return0; } (3) #include voidmain() { inti=1,s;inti=1,s=0; while(i<=100); { s=s+i; i++; } printf(“1+2+3+….+99+100=%d\n”,s); return0; } 7.输入一个基数,例如输入9,输出为: 求1*3*……*9的值。 输出为: 1*3*5*7*9=945 #include intmain() { intn,i=1,sum=1; printf("输入一个基数: ",sum); scanf("%d",&n); if(n%2! =0) { for(;i<=n;i+=2) { sum*=i; if(i! =1) printf("*%d",i); else printf("%d",i); } printf("=%d\n",sum); } else printf("错误! ! ! %d不是基数! \n",n); return0; } 8.输入一个5~10之间的整数n,求1! +2! +3! +…+n! 。 例如输入5,输出为: 1! +2! +3! +…+5! =153 #include intmain() { intn,i=1; doublesum=1; intsun=1; printf("输入一个100以内的整数,输入0直接退出: "); scanf("%d",&n); if(n<=0) return0; if(n>15) { for(;i<=n;i++) { sum*=i; sum+=sum; if(i! =1) printf("+%d! ",i); else printf("%d! ",i); } printf("=%d\n",sum); } else { for(;i<=n;i+=1) { sun*=i; sun+=sun; if(i! =1) printf("+%d! ",i); else printf("%d! ",i); } printf("=%d\n",sun); } } 9.在屏幕上输出以下内容 #include intmain() { intn,j=1,i=1; printf("输入一个10以内的整数,输入0直接退出: "); scanf("%d",&n); if(n<=0) return0; for(;i<=n;i++) { for(;j<=i;j++) { printf("%d",j); } printf("\n"); } j=1; } } 1 12 123 1234 12345 123456 1234567 12345678 123456789 9.求2+4+6+……+98+100的和,用多种for表达式来完成。 解: 方式1: #include intmain() { inti,sum=0; for(i=2;i<101;i=i+2) sum=sum+i; printf("2+4+6+8...+100=%d\n",sum); } 方式2: #include intmain() { inti=2,sum=0; for(;i<=100;) { sum+=i; i+=2; } printf("2+4+6+......+98+100=%d\n",sum); return0; } 方式3: #include intmain() { inti=2,sum=0; for(;;) { sum+=i; i+=2; if(i>100) break; } printf("2+4+6+......+98+100=%d\n",sum); return0; } 11.输入一行字符,统计它有多少个字母? #include intmain() { charchr; intnum=0; while((chr=getchar())! ='\n') { if((chr>='a'&&chr<='z')||(chr>='A'&&chr<='Z')) num++; } printf("字符个数是: %d\n",num); } 第4章 分支程序设计 1.输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。 #include intmain() { intx; do { printf("输入一个数求绝对值为: "); scanf("%d",&x); if(x>=0) printf("%d的绝对值为: %d\n",x,x); elseif(x<0) printf("%d的绝对值为: %d\n",x,-x); } while(x! =0); } 2.输入一批数,输出比相邻数大的数,当输入0时结束。 解: #include intmain() { ints,tmp; printf("请输入一个整数(0结束): \n"); scanf("%d",&s); tmp=s; for(;s;scanf("%d",&s)) { if(s>tmp) printf("%d比相邻数大\n",s); tmp=s; } return0; } 3.将输入字符的大写字符转换成小写字符输出,小写字符原样输出。 解: #include intmain() { charc; printf("请输入字符: \n"); while((c=getchar())! ='\n') { if(c>='A'&&c<='Z') c+=32; printf("%c",c); } printf("\n"); return0; } 4.输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个数。 解: #include intmain() { charchr; intn1=0,n2=0,n3=0,n4=0; printf("请输入一批字符: "); for(;(chr=getchar())! ='\n';) { if(chr>='a'&&chr<='z') n1++; elseif(chr>='A'&&chr<='Z') n2++; elseif(chr>='0'&&chr<='9') n3++; else n4++; } printf("小写字符的个数: %d\n",n1); printf("大写字符的个数: %d\n",n2); printf("数字字符的个数: %d\n",n3); printf("其它字符的个数: %d\n",n4); return0; } 5.编写程序,计算分段函数: 解: #include intmain() { doublex,y; printf("请输入x: "); scanf("%lf",&x); if(x<=1) y=x+5; if(x>1&&x<10) y=2*x; if(x>10) y=3/(x-10); printf("y=%lf\n",y); return0; } 6.根据输入的百分制按五分制的成绩输出。 百分制与五分制之间的关系见下表。 百分制 五分制 90~100 5 80~89 4 70~79 3 60~69 2 <60 1 解: #include intmain() { intx; printf("请输入百分制数(0-100): "); scanf("%d",&x); if(x>100||x<0) { printf("你输入了大于100小于0的数! \n"); return0; } switch(x/10) { case10: case9: printf("五分制: 5\n");break; case8: printf("五分制: 4\n");break; case7: printf("五分制: 3\n");break; case6: printf("五分制: 2\n");break; default: printf("五分制: 1\n");break; } } 7、用switch完成: 读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。 解: #include #include intmain() { intn; doublex,y=0; printf("输入一个实数: "); scanf("%lf",&x); printf("\n"); printf("1.求sin()\n"); printf("2.求cos()\n"); printf("3.求tan()\n"); printf("\n"); printf("输入相应的数字选择对该实数求解: "); scanf("%d",&n); printf("\n"); switch(n) { case1: y=sin(x);printf("sin(x)=%lf\n",y);break; case2: y=cos(x);printf("cos(x)=%lf\n",y);break; case3: y=tan(x);printf("tan(x)=%lf\n",y);break; default: printf("没有这个选择! ! ! \n"); } return0; } 8、用switch完成: 输入星期1到星期5,输出它们对应的颜色 星期1: blue 星期2: red 星期3: white 星期4: yellow 星期5: green 解: #include<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 离线 作业 答案