《程序设计基础》作业集答案高涛.docx

上传人:b****6 文档编号:4358927 上传时间:2022-11-30 格式:DOCX 页数:24 大小:75.02KB
下载 相关 举报
《程序设计基础》作业集答案高涛.docx_第1页
第1页 / 共24页
《程序设计基础》作业集答案高涛.docx_第2页
第2页 / 共24页
《程序设计基础》作业集答案高涛.docx_第3页
第3页 / 共24页
《程序设计基础》作业集答案高涛.docx_第4页
第4页 / 共24页
《程序设计基础》作业集答案高涛.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

《程序设计基础》作业集答案高涛.docx

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

《程序设计基础》作业集答案高涛.docx

《程序设计基础》作业集答案高涛

参考答案

第一章

一.填空题

1.硬件系统、软件系统

2.中央处理器、存储器、输入设备、输出设备

3.系统软件、应用软件

4.说明语句、表达式语句、分支语句、循环语句、控制流程语句

5.数据结构、算法

二.选择题

1C2B3ABCD4AB5C

三.问答题

1.答:

(1)由三种基本控制结构:

顺序结构、选择结构和循环结构。

(2)有限制的使用goto语句。

(3)籍助于结构化程序设计语言来书写。

(4)采用自顶向下,逐步求精或自底向上,逐步积累的程序设计策略。

2.答:

(1)对于变量,先定义其数据类型,再使用。

(2)C程序由函数构成,一个程序至少要有一个以上的函数。

(3)C程序总是从main()函数开始执行。

(4)书写格式自由,在一行可以有若干语句。

(5)数据的输入与输出是通过输入输出函数实现,例如:

scanf(),printf()函数等。

(6)C程序用/**/进行注释。

3.答:

(1)由键盘输入源程序;

(2)经过编辑后生成f.c磁盘文件;

(3)经过编译后生成f.obj文件;

(4)经过连接后形成f.exe文件;

(5)执行。

4.答:

用伪代码描述如下:

开始

for(n=3;n<=100;n++)

{

for(m=2;m<=

;m++)

{n/m的余数=>r;

if(r==0)break;

}

if(m>=

+1)输出n;

}结束

5.答:

描述如下:

第二章

一.填空题

1.常量、整型常量、实型常量、字符型常量

2.变量、先定义

3.单精度、双精度

4.+、-、*、/、%

5.关系表达式、“0”、“1”

二.选择题

1C2B3B4D5B

三.问答题

1.答:

字符常量是一个字符,在程序中字符是用单引号括起来的。

字符串变量由0个或若干个字符组合而成,在程序中字符串是用双引号括起来的,在存储时系统自动在字符串最后面加一个结束符号‘\0’。

2.解:

(1)2.5

(2)3.5

3.解:

运行结果为:

(1)9,11,9,10

(2)

(1)b=2

(2)a=3

(3)c=2

(4)b=4

(5)c=9

4.解:

(1)0

(2)0(3)0(4)1(5)1

5.解:

(1)24

(2)10(3)60

(4)0(5)0(6)0

第三章

一.填空题

1.顺序语句、选择语句、循环语句、转移语句

2.#include“stdio.h”

3.break

4.z=(x>y)?

x:

y;

5.将给定的一个字符常量或字符变量的内容输出到显示器屏幕上

二.选择题

1B2B3B4B5C

三.问答题

1.解:

#include

voidmain()

{

intunits,tens,hundreds,a,b;

printf("Pleaseinputanumber(100~999):

");

scanf("%d",&a);

hundreds=a/100;

tens=(a-hundreds*100)/10;

units=a-hundreds*100-tens*10;

b=100*units+tens*10+hundreds;

printf("afterchange,thenumberis:

%d\n",b);

}

2.解:

#include

voidmain()

{

inta,b,c;

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

if(a>b)if(b>c)printf("mid=%d\n",b);

elseif(a>c)printf("mid=%d\n",c);

elseprintf("mid=%d\n",a);

elseif(a>c)printf("mid=%d\n",a);

elseif(b>c)printf("mid=%d\n",c);

elseprintf("mid=%d\n",b);

}

3.解:

#include

#include

voidmain()

{

doublea,b,c;/*方程系数*/

doubledisc;/*判别式*/

doublere,im;/*方程实部虚部*/

printf("Entera,b,c:

");

scanf("%lf%lf%lf",&a,&b,&c);

if(a==0.0)

if(b==0.0)

printf("Theequationhasnotsoluble!

\n");

else

printf("Singlerootis%f\n",-c/b);

elseif(c==0.0)

printf("Tworoots:

x1=%lf\tx2=%lf\n",-b/a,0);

else

{

disc=b*b-4*a*c;

re=-b/(2*a);

im=sqrt(fabs(disc))/(2*a);

if(disc>=0.0)

printf("Tworoots:

x1=%f\tx2=%f",re+im,re-im);

else

printf("Twocomplexroots:

x1=%f+i*%f\tx2=%f-i*%f\n",re,im,re,im);

}

}

4.解:

#include

#include

voidmain()

{

inti,j,result;

printf("\n");

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

{

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

{

result=i*j;

printf("%d*%d=%-3d",i,j,result);

}

printf("\n");

}

}

5.答:

#include

voidmain()

{

floata,b;

charoptor;

printf("Pleaseinputthevalueofa,b:

");

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

printf("Enteroperator:

");

getchar();

scanf("%c",&optor);

switch(optor)

{

case'+':

printf("%f+%f=%f\n",a,b,a+b);

break;

case'-':

printf("%f-%f=%f\n",a,b,a-b);

break;

case'*':

printf("%f*%f=%f\n",a,b,a*b);

break;

case'/':

if(b==0)printf("cannotadividedby0!

\n");

elseprintf("%f/%f=%f\n",a,b,a/b);

break;

default:

printf("Inputerror!

");

}

}

第四章

一.填空题

1.[0,N-1]

2.1022

3.a[4][5]

4.“string.h”

5.0、‘\0’

二.选择题

1D2A3D4B5C

三.问答题

1.解:

#include

voidmain()

{

inta[15];

inti,j;

a[0]=0;

a[1]=1;

printf("%-4d%-4d",a[0],a[1]);

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

{

a[i]=a[i-1]+a[i-2];

printf("%-4d",a[i]);

}

}

2.解:

#include

voidmain()

{

inta[10];

inti,min,k,temp;

printf("Pleaseinput10integernumbers:

\n");

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

scanf("%d",&a[i]);

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

{

min=i;

for(k=i+1;k<10;k++)

{

if(a[k]<=a[min])min=k;

}

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

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

printf("%-4d",a[i]);

}

3.解:

#include

voidmain()

{

inta[10],i,j,temp;

printf("Pleaseinput10integernumbers:

\n");

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

scanf("%d",&a[i]);

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

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

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

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

printf("%-4d",a[i]);

}

4.解:

#include

voidmain()

{

inta[3][3],sum=0;

inti,j;

printf("enterdata:

\n");

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

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

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

sum=sum+a[i][i];

printf("sum=%6d\n",sum);

}

5.解:

#include

voidmain()

{

charstring[81];

inti,num=1;

charc;

gets(string);

for(i=0;(c=string[i]!

='\0');i++)

{

if(string[i]=='')num++;

}

printf("Thereare%dwordsintheline\n",num);

}

第五章

一.填空题

1.函数

2.fun(intx,inty,intz)

3.main()

4.局部静态存储变量、全局静态存储变量

5.内部函数、外部函数

二.选择题

1B2B3C4C5B

三.问答题

1.解:

语法错误有:

(1)主函数中第4行漏写了分号。

(2)形参与实参个数不相等,形参没有定义类型

(3)子函数中n没有定义。

语义错误有:

(1)主函数中x和n没有赋值。

(2)函数调用时,既没有返回值也不是地址调用;程序中没有输出语句,目的

不明确。

正确的程序是:

main()

{

intpower(intx,intn);

intx=2,n=4;

printf("\ns=%d",power(x,n));

}

intpower(intx,intn)

{

inti,p=1;

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

p=p*x*i;

return(p);

}

2.答:

#include"stdio.h"

floatvolume(a,b,c)

floata,b,c;

{

floatv;

v=a*b*c;

return(v);

}

voidmain()

{

floata,b,c,v;

scanf("%f%f%f",&a,&b,&c);

v=volume(a,b,c);

printf("v=%f",v);

}

3.答:

#include"stdio.h"

floatsum(intn)

{

inti;

floats;

s=0;

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

{

s+=1/(float)i;

};

returns;

}

voidmain()

{

intn;

floats;

printf("Pleaseinputthevalueofn:

");

scanf("%d",&n);

if(n<=0)

printf("Pleaseinputapositivenumber!

");

else

{

s=sum(n);

printf("sum=%f",s);

}

}

4.答:

运行结果为:

Thevalueofiinmain()beforcallingsqr(x)is25

Callingsqr(x):

sqr(25)=625

Thevalueofiinmain()aftercallingsqr(x)is25

5.答:

#include"stdio.h"

doublexpower(floatx,intn)

{

if(n<=0)

return

(1);

else

return(x*xpower(x,n-1));

}

voidmain()

{

floatx;

intn;

doubler;

scanf("%f%d",&x,&n);

r=xpower(x,n);

printf("Result=%f",r);

}

第六章

一.填空题

1.“指针变量”、空指针

2.s所指向的变量内容加1、取指针变量s加1后的内容、取s的内容后,s再加1

3.a[3]

4.指针

5.指针首地址

6.“单级间址”、“二级间址”

二.选择题

1B2D3D4D

三.问答题

1.答:

intstrlen(s)

char*s;

{

char*p=s;

while(*p!

='\0')

p++;

return(p-s);

}

2.答:

#include

swap(int*p,int*q)

{

inttemp;

temp=*p;

*p=*q;

*q=temp;

}

voidmain()

{

inta,b,*pa,*pb;

printf("Pleaseinput2integernumbers:

");

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

pa=&a;

pb=&b;

swap(pa,pb);

printf("%d%d",a,b);

}

3.答:

不行。

C语言规定数组名称代表数组的首地址,也就是说第一个元素的地址是常量,所以在程序中a的值是不能改变的。

修改程序如下:

#include

voidmain()

{

inta[10]={1,2,3,4,5,6,7,8,9,10},i;

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

{

printf("%d",*(a+i));

}

}

4答:

运行结果:

(1)12

(2)book

(3)

0022FF40--1

0022FF4C--4

0022FF58--7

0022FF40--10022FF44--20022FF48--3

0022FF4C--40022FF50--50022FF54--6

0022FF58--70022FF5C--80022FF60--9

5答:

#include

intlen(char*p)

{

intn=0;

while(*p!

='\0')

{

n++;

p++;

}

return(n);

}

voidmain()

{

intlength;

char*str[20];

printf("Pleaseinputastring:

\n");

scanf("%s",str);

length=len(str);

printf("thelengthofthestringis%d",length);

}

6.答:

双重指针指的是指向指针型数据的指针类型。

程序如下:

#include

voidmain()

{

inta[2][3]={1,3,5,2,4,6};

int*add[2][3]={*a,*a+1,*a+2,*(a+1),*(a+1)+1,*(a+1)+2};

int**p,i;

p=add[0];

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

{

printf("%d",**p);

p++;

}

getch();

}

运行结果:

135246

第七章

一.填空题

1.结构体

2.pstu->score

3.地址

4.数据、链指针、下一个结点

5.stdlib.h

6.一个一个的输入各结点数据,并建立其前后相链的关系

7.将链表中各结点的数据依次输出

二.选择题

1D2D3B4D5B

三问答题

1.答:

运行结果:

3,a

2.答:

#include"stdio.h"

structperson

{

charname[20];

intcount;

}leader[3]={"Li",0,"Zhang",0,"Wang",0};

main()

{

inti,j;

charleader_name[20];

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

{

scanf("%s",leader_name);

for(j=0;j<3;j++)

if(strcmp(leader_name,leader[j].name)==0)

leader[j].count++;

}

printf("\n");

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

printf("%s:

%d\n",leader[i].name,leader[i].count);

}

3.答:

#include"stdlib.h"

#include"stdio.h"

structlist

{

intdata;

structlist*next;

};

typedefstructlistnode;

typedefnode*link;

voidmain()

{

linkptr,head;

intnum,i;

ptr=(link)malloc(sizeof(node));

ptr=head;

printf("Pleaseinput5numbers===>\n");

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

{

scanf("%d",&num);

ptr->data=num;

ptr->next=(link)malloc(sizeof(node));

if(i==4)ptr->next=NULL;

elseptr=ptr->next;

}

ptr=head;

while(ptr!

=NULL)

{

printf("Thevalueis===>%d\n",ptr->data);

ptr=ptr->next;

}

}

4.答:

#include"stdio.h"

voidmain()

{

structstudent

{

intnum;

charname[20];

floatscore;

};

structstudentstu[4];

structstudent*p;

inti,temp=0;

floatmax;

for(p=stu;p

scanf("%d%s%f",&p->num,p->name,&p->score);

for(max=stu[0].score,i=1;i<4;i++)

if(stu[i].score>max)

{

max=stu[i].score;

temp=i;

}

p=stu+temp;

printf("\nThemaximumscore:

\n");

printf("No.%d\nname:

%s\nscore:

%4.1f\n",p->num,p->name,p->score);

}

模拟试题一

一.选择题

1C2B3D4D5C6D7A8D9A10B

二.程序填空题

1.①:

stdio.h

②:

i=1;i<5;i++

③:

i!

=k&&i!

=j&&j!

=k

2.①:

n=1;n<=20;n++

②:

t*=n;

③:

s+=t;

三.程序设计题

1.答:

#include"stdio.h"

main()

{

inti,j,k,n;

printf("waterflower'snumberis:

\n");

for(n=100;n<1000;n++)

{

i=n/100;//分解出百位

j=n/10%10;//分解出十位

k=n%10;//分解出个位

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf("%-5d",n);

}

}

printf("\n");

}

2.答:

#include"stdio.h"

main()

{

inta[5]={9,6,5,4,1},i,temp;

printf("\noriginalarray:

\n");

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

printf("%4d",a[i]);

for(i=0;i<5/2;i++)

{

temp=a[i];

a[i]=a[5-i-1];

a[5-i-1]=temp;

}

printf("\nsortedarray:

\n");

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

printf("%4d",a[i]);

}

3.答:

#include"stdio.h"

swap(int*p1,int*p2)

{

inttemp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

voidmain()

{

intn1,n2,n3;

int*pointer1,*pointer2,*pointer3;

printf("Pleaseinput3number:

n1,n2,n3:

");

scanf("%d%d%d",&n1,&n2,&n3);

pointer1=&n1;

pointer2=&n2;

pointer3=&n3;

if(n1>n2)swap(pointer1,pointer2);

if(n1>n3)s

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

当前位置:首页 > 小学教育 > 英语

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

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