冬程序设计基础C离线作业含答案.docx

上传人:b****5 文档编号:12587750 上传时间:2023-04-20 格式:DOCX 页数:89 大小:1.44MB
下载 相关 举报
冬程序设计基础C离线作业含答案.docx_第1页
第1页 / 共89页
冬程序设计基础C离线作业含答案.docx_第2页
第2页 / 共89页
冬程序设计基础C离线作业含答案.docx_第3页
第3页 / 共89页
冬程序设计基础C离线作业含答案.docx_第4页
第4页 / 共89页
冬程序设计基础C离线作业含答案.docx_第5页
第5页 / 共89页
点击查看更多>>
下载资源
资源描述

冬程序设计基础C离线作业含答案.docx

《冬程序设计基础C离线作业含答案.docx》由会员分享,可在线阅读,更多相关《冬程序设计基础C离线作业含答案.docx(89页珍藏版)》请在冰豆网上搜索。

冬程序设计基础C离线作业含答案.docx

冬程序设计基础C离线作业含答案

浙江大学远程教育学院

《程序设计基础(C)》课程作业

姓名:

夏林

学号:

715099012001

年级:

2015年秋

学习中心:

洞头学习中心

—————————————————————————————

第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由几个函数构成?

调用了那几个系统函数?

此程序中用到了哪几个保留字?

哪几个用户自定义标识符?

答:

文件ex1-1.c由两个函数构成,分别是add()和主函数main()。

调用了两个系统函数,分别为scanf和printf。

程序中用到如下几个保留字:

int,return。

使用了如下几个用户自定义标示符:

x,y,z,a,b,c.

步骤3:

编译并运行程序,程序运行时输入两个整数,2040,观察程序运行的结果。

答:

问题出在main函数第5行这句:

scanf("%d%d\n",&a,&b);

对于scanf函数内有”\n”,直接回车是无效的,建议去掉“\n”:

变成:

scanf("%d%d",&a,&b);

重新运行再输入,回车,得出结果是60

程序运行结果,20+40=60

 

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

您可以输入其它的整数,观察程序的执行结果。

答:

按照上述步骤,执行后发现程序错误,检查程序,发现两个问题:

①步骤二中第2句#include错误,

正确形式应该用双引号:

#include"ex1-2-2.c"

②#include"ex1-2-2.c"后一行增加#include"ex1-2-3.c"

完整程序运作如下:

编译执行,输入2040回车,得到

输入0和15,回车得到

第2章 输入输出程序设计

1.用printf输出一个中空的五角星。

答:

#include

intmain()

{

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()

{

charxm[80];

printf("请输入您的姓名:

\n");

scanf("%s",xm);

printf("您好,%s同学,欢迎来到浙江大学。

\n",xm);

return0;

}

3.从键盘输入十六进制整数,转化为八进制数输出。

#include

intmain()

{

inta;

printf("请输入一个十六进制整数:

");

scanf("%x",&a);

printf("转换成八进制输出为:

%o\n",a);

return0;

}

4.只定义两个整型数据并赋值,实现两个整型数的互换。

#include

intmain()

{

intx,x1=158,x2=476;

printf("交换前x1=%d,x2=%d\n",x1,x2);

x=x1;

x1=x2;

x2=x;

printf("交换后x1=%d,x2=%d\n",x1,x2);

return0;

}

5.从键盘上输入一个整数,分别输出8、16进制数的程序。

6.从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。

#include

intmain()

{

intx,x0,y1,y2,y3;

printf("请输入一个三位整数:

");

scanf("%d",&x);

x0=x;

y1=x%10;

x=x/10;

y2=x%10;

x=x/10;

y3=x%10;

printf("%d的个位数为%d,十位数为%d,百位数为%d。

\n",x0,y1,y2,y3);

return0;

}

7.以下程序输出结果是()。

#include

voidmain()

{

inti=010,j=10;

printf("%d,%d\n",++i,j--);

}

答:

结果是9,10

8.运行程序,屏幕提示“您是一个学生吗”,您输入’y’或’n’进行回答,屏幕输出您的选项。

#include

intmain()

{

charx;

printf("您是一个学生吗?

(请输入y/n):

");

scanf("%c",&x);

if(x=='y')

printf("您是一个学生。

\n");

else

printf("您不是一个学生。

\n");

return0;

}

9.从键盘输入一个角度x,求10*sin(x)的值。

#include

#include

intmain()

{

doublex,y,z,pi=3.14159265358;

printf("请输入一个角度x:

");

scanf("%lf",&x);

y=x*pi/180;

z=10*sin(y);

printf("10*sin(x)值为%lf。

\n",z);

return0;

}

第3章 循环程序设计

1.以下for语句的循环次数是多少?

inti,j=3;

for(;i=j;i--,j--)printf("%d",i);

答:

循环了3次

#include

intmain()

{

inti,j=3;

for(;i=j;i--,j--)printf("%d",i);

return0;

}

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);while(i<=100){

s=s+i;

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;{s=s+i;

i++;i++;}

printf(“1+2+3+….+99+100=%d\n”,s);

}

(3)

#include

voidmain()

{

inti=1,s;inti=1,s=0;

while(i<=100);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,i=1,s=1;

printf("请输入一个基数:

");

scanf("%d",&x);

printf("%d",i);

for(i=3;i<=x;i+=2)

{

s*=i;

printf("*%d",i);

}

printf("=%d\n",s);

return0;

}

8.输入一个5~10之间的整数n,求1!

+2!

+3!

+…+n!

例如输入5,输出为:

1!

+2!

+3!

+…+5!

=153

#include

voidmain()

{inti,n;

longinta=1,sum=0;

printf("请输入一个5~10之间的整数n:

\n");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

a*=i;

sum=sum+a;

}

printf("1!

+2!

+3!

+……+n!

=%ld\n",sum);

}

9.在屏幕上输出以下内容

1

12

123

1234

12345

123456

1234567

12345678

123456789

#include

voidmain()

{

inti,j;

for(i=0;i<=9;i++)

{

for(j=1;j<=i;j++)

printf("%d",j);

printf("\n");

}

}

10.求2+4+6+……+98+100的和,用多种for表达式来完成。

方法一:

#include

voidmain()

{

inti,sum=0;

for(i=2;i<=100;i+=2)

sum=sum+i;

printf("2+4+6+……+98+100=%d\n",sum);

}

方法二:

#include

voidmain()

{

inti,sum=0;

for(i=1;i<=100;i++)

if(i%2==0)

sum=sum+i;

printf("2+4+6+……+98+100=%d\n",sum);

}

11.输入一行字符,统计它有多少个字母?

#include

voidmain()

{

charstr[100];

inti,j,s=0;

printf("请输入一行字符:

\n");

for(i=1;i<100;i++)

{

str[i]=getchar();

if(str[i]=='\n')

break;

}

for(j=1;j

{

if((str[j]>='a'&&str[j]<='z')||(str[j]>='A'&&str[j]<='Z'))

s++;

}

printf("字符中有%d个字母。

\n",s);

}

第4章 分支程序设计

1.输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。

#include

intmain()

{

intx;

printf("请输入x值:

");

scanf("%d",&x);

while(x)

{

if(x>0)

printf("%d的绝对值是%d。

\n",x,x);

else

printf("%d的绝对值是%d。

\n",x,-x);

printf("请输入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的值:

");

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:

");

scanf("%f",&x);

printf("请输入一个整数,选择运算方式(1.sinx,2.cosx,3.tanx):

");

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

intmain()

{

intx;

do

{

printf("请输入星期几(用数字1~5表示):

");

scanf("%d",&x);

switch(x)

{

case1:

printf("星期1:

blue\n");break;

case2:

printf("星期2:

red\n");break;

case3:

printf("星期3:

white\n");break;

case4:

printf("星期4:

yellow\n");break;

case5:

printf("星期5:

green\n");break;

default:

printf("输入错误!

\n");break;

}

}while

(1);

return0;

}

9、用switch完成:

从键盘输入A、B、C、D四个等级中的一个,转化输出

等级

输出

A

优秀

B

良好

C

中等

D

及格

E

不及

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1