浙大远程程序设计基础C离线作业.docx
- 文档编号:23166447
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:62
- 大小:32.13KB
浙大远程程序设计基础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由几个函数构成?
调用了那几个系统函数?
此程序中用到了哪几个保留字?
哪几个用户自定义标识符?
答:
1.由add、main、scanf、printf四个函数构成。
2.调用了scanf、printf系统函数。
3.用到了include、int、return保留字。
4.用户自定义的标示符是add、x、y、z、a、b、c。
步骤3:
编译并运行程序,程序运行时输入两个整数,2040,观察程序运行的结果。
输出结果如下:
在输入2040后,程序仍然在等待输入,应该是在scanf中加了个\n参数的关系,造成只有再输入一个非(空格、制表符、回车)的输入后才认为结束。
2.编辑、调试以下程序
步骤1:
在VisualC++环境下新建文件可用[开始]→[程序]→[MicrosoftVisualC++6.0]→[MicrosoftVisualC++6.0]→[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2.c
步骤2:
在文本编辑器中输入以下C程序
#include
#include
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
您可以输入其它的整数,观察程序的执行结果。
答:
程序1-2.c直接编译会报错,需要将
#include
更改为
#include"ex1-2-2.c"
并增加
#include"ex1-2-3.c"
才能正常编译通过。
不同输入情况的执行结果如下:
第2章 输入输出程序设计
1.用printf输出一个中空的五角星。
#include
intmain()
{
printf("*\n");
printf("**\n");
printf("**\n");
printf("********\n");
printf("**\n");
printf("**\n");
printf("***\n");
printf("****\n");
printf("**\n");
return0;
}
2.仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。
#include
intmain()
{
charstring[100];
printf("请输入您的学号\n");
scanf("%s",string);
printf("您输入的学号是%s\n",string);
return0;
}
3.从键盘输入十六进制整数,转化为八进制数输出。
#include
intmain()
{
inta;
printf("请输入十六进制数\n");
scanf("%x",&a);
printf("十六进制%x对应的八进制数为%o\n",a,a);
return0;
}
4.只定义两个整型数据并赋值,实现两个整型数的互换。
#include
intmain()
{
inta=100,b=2,a1,b1;
printf("a的值为%d,b的值为%d\n",a,b);
a1=b,b1=a;
a=a1;
b=b1;
printf("a互换后的值为%d,b互换后的值为%d\n",a,b);
return0;
}
5.从键盘上输入一个整数,分别输出8、16进制数的程序。
#include
intmain()
{
inta;
printf("请输入一个十进制数\n");
scanf("%d",&a);
printf("十进制数%d转换为八进制数是%o转化为十六进制数是%x\n",a,a,a);
return0;
}
6.从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。
#include
intmain()
{
intx,y1,y2,y3,x1,x2;
printf("请输入一个整数\n");
scanf("%d",&x);
y1=x%10;
x1=x/10;
y2=x1%10;
x2=x1/10;
y3=x2%10;
printf("%d的个位数是%d,十位数是%d,百位数是%d\n",x,y1,y2,y3);
return0;
}
7.以下程序输出结果是(9,10)。
#include
voidmain()
{
inti=010,j=10;
printf("%d,%d\n",++i,j--);
}
8.运行程序,屏幕提示“您是一个学生吗”,您输入’y’或’n’进行回答,屏幕输出您的选项。
#include
intmain()
{
intx;
printf("您是一个学生吗?
请输入y或者n回答\n");
scanf("%c",&x);
printf("您输入的是%c\n",x);
return0;
}
9.从键盘输入一个角度x,求10*sin(x)的值。
#include
#include
intmain()
{
doublex,y;
constdoublepi=3.1415926;
printf("请输入一个角度x\n");
scanf("%lf",&x);
x=x*pi/180;
y=10*sin(x);
printf("10*sin(x)的值为%lf\n",y);
return0;
}
第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",h[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.写出以下程序运行后的输出结果。
#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");
}
}
答:
输出结果是一个由*组成的倒三角。
6.请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检验。
(1)
#include
voidmain()
{
inti,s;
i=1;s=0;
while(i<=100);
s=s+i;
i++;
printf(“1+2+3+….+99+100=%d\n”,s);
}
改正后如下:
#include
voidmain()
{
inti,s;
i=1;s=0;
while(i<=100){
s=s+i;
i++;
}
printf("1+2+3+….+99+100=%d\n",s);
}
(2)
#include
voidmain()
{
inti,s;
i=1;
s=0;
while(i<=100)
s=s+i;
i++;
printf(“1+2+3+….+99+100=%d\n”,s);
}
改正后如下:
#include
voidmain()
{
inti,s;
i=1;
s=0;
while(i<=100){
s=s+i;
i++;
}
printf("1+2+3+¡.+99+100=%d\n",s);
}
(3)
#include
voidmain()
{
inti=1,s;
while(i<=100);
{
s=s+i;
i++;
}
printf(“1+2+3+….+99+100=%d\n”,s);
}
改正后如下:
#include
voidmain()
{
inti=1,s;
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
代码如下:
#include
intmain()
{
intx;
scanf("%d",&x);
inty=1,m=1;
while(y<=x){
m=m*y;
if(y==1)
printf("%d",y);
else
printf("*%d",y);
y=y+2;
}
printf("=%d\n",m);
return0;
}
8.输入一个5~10之间的整数n,求1!
+2!
+3!
+…+n!
。
例如输入5,输出为:
1!
+2!
+3!
+…+5!
=153
代码如下:
#include
intmain(){
intn;
scanf("%d",&n);
inti,s=0,m;
for(i=1;i<=n;i++){
intm=1;
for(intj=1;j<=i;j++)
m=m*j;
s=s+m;
if(i==1)
printf("%d!
",i);
else
printf("+%d!
",i);
}
printf("=%d\n",s);
return0;
}
9.在屏幕上输出以下内容
1
12
123
1234
12345
123456
1234567
12345678
123456789
代码如下:
#include
intmain()
{
for(inti=1;i<=9;i++){
for(intj=1;j<=i;j++)
printf("%d",j);
printf("\n");
}
return0;
}
10.求2+4+6+……+98+100的和,用多种for表达式来完成。
代码如下:
#include
intmain(){
intsum=0;
for(inti=2;i<=100;i=i+2){
sum=sum+i;
}
printf("1,sum=%d\n",sum);
inti=2;
sum=0;
for(;;){
sum=sum+i;
i=i+2;
if(i>100)
break;
}
printf("2,sum=%d\n",sum);
return0;
}
11.输入一行字符,统计它有多少个字母?
代码如下:
#include
#include
intmain(){
charstr[100];
scanf("%s",str);
intlen=strlen(str);
printf("strlengthis%d\n",len);
return0;
}
第4章 分支程序设计
1.输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。
代码如下:
#include
#include
intmain()
{
intx;
printf("请输入x值\n");
scanf("%d",&x);
for(;;){
if(x==0){
break;
}else{
printf("x的绝对值为%d\n",abs(x));
scanf("%d",&x);
}
};
return0;
}
2.输入一批数,输出比相邻数大的数,当输入0时结束。
代码如下:
#include
#defineN1000
voidmain()
{
intnum[N];
inti=0;
intj=1;
printf("请输入一批整数,以数字0结尾:
\n");
scanf("%d",&num[i]);
while(num[i]!
=0)
{
scanf("%d",&num[++i]);
}
printf("比相邻数大的数字为:
\n");
if(i==1)
printf("%d",num[0]);
if(i>1&&num[0]>num[1])
printf("%d",num[0]);
for(;j { if(num[j]>num[j-1]&&num[j]>num[j+1]) printf("%d",num[j]); } if(i>1&&num[i-1]>num[i-2]) { printf("%d",num[i-1]); } printf("\n"); } 3.将输入字符的大写字符转换成小写字符输出,小写字符原样输出。 代码如下: #include intmain() { chars; printf("请输入一串包含大小写的字符: \n"); while((s=getchar())! ='\n') { if(s>='A'&&s<='Z') s=s+32; putchar(s); } printf("\n"); return0; } 4.输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个数。 代码如下: #include intmain() { chars; intdx=0,xx=0,sz=0,qt=0; printf("请输入一串字符: \n"); while((s=getchar())! ='\n') { if(s>='A'&&s<='Z') dx++; elseif(s>='a'&&s<='z') xx++; elseif(s>='0'&&s<='9') sz++; else qt++; } printf("小写字符有%d个,大写字符有%d个,数字字符有%d个,其他字符有%d个\n",xx,dx,sz,qt); return0; } 5.编写程序,计算分段函数: 代码如下: #include intmain() { doublex,y; while (1) { printf("请输入x的值\n"); scanf("%lf",&x); if(x<=1) y=x+5; elseif(x<10) y=2*x; else y=3/(x-10); printf("当x=%lf时,y=%lf\n",x,y); } return0; } 6.根据输入的百分制按五分制的成绩输出。 百分制与五分制之间的关系见下表。 百分制 五分制 90~100 5 80~89 4 70~79 3 60~69 2 <60 1 代码如下: #include intmain() { intn; while (1) { printf("请输入百分制成绩: "); scanf("%d",&n); while(n<0||n>100) { printf("非法输入,请重新输入分数(0~100之间): "); scanf("%d",&n); } if(n>=90) printf("%d对应的五分制成绩为: 5\n",n); elseif(n>=80) printf("%d对应的五分制成绩为: 4\n",n); elseif(n>=70) printf("%d对应的五分制成绩为: 3\n",n); elseif(n>=60) printf("%d对应的五分制成绩为: 2\n",n); else printf("%d对应的五分制成绩为: 1\n",n); } return0; } 7、用switch完成: 读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。 代码如下: #include #include intmain() { floatx; intn; do { printf("请输入一个实数x\n"); scanf("%f",&x); printf("请输入一个整数,选择运算方式(1.sinx,2.cosx,3.tanx)\n"); scanf("%d",&n); switch(n) { case1: printf("x=%f,sinx=%f\n",x,sin(x));break; case2: printf("x=%f,cosx=%f\n",x,cos(x));break; case3: printf("x=%f,tanx=%f\n",x,tan(x));break; default: printf("输入错误! ! \n");break; } }while (1); return0; } 8、用switch完成: 输入星期1到星期5,输出它们对应的颜色 星期1: blue 星期2: red 星期3: white 星期4: yellow 星期5: green 代码如下: #include #include intmain(){ intx; printf("请输入数字1~5,表示星期1到星期5: "); scanf("%d",&x); charstr[80]; switch(x){ case1: strcpy(str,"blue"); break; case2: strcpy(str,"red"); break; case3: strcpy(str,"white"); break; case4: strcpy(str,"yellow"); break; case5: strcpy(str,"green"); break; default: printf("输入无效数字\n"); return0; } printf("星期%d: %s\n",x,str); return0; } 9、用switch完成: 从键盘输入A、B、C、D四个等级中的一个,转化输出 等级 输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙大 远程 程序设计 基础 离线 作业