《程序设计基础》作业集答案_第1页
《程序设计基础》作业集答案_第2页
《程序设计基础》作业集答案_第3页
《程序设计基础》作业集答案_第4页
《程序设计基础》作业集答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

参考答案

第一章

一.填空题

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==O)break;

}

if(m>=+l)输出n;

}结束

5.答:描述如下:

第二章

一.填空题

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

2.变量、先定义

3.单精度、双精度

4.+、一、*、/、%

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

-.选择题

1C2B3B4D5B

三•问答题

1.答:字符常量是一个字符,在程序中字符是用单引号括起来的。字符串变量由0个或若干个字

符组合而成,在程序中字符串是用双引号括起来的,在存储时系统自动在字符串最后面加一个结束

符号'\0‘。

2.解:⑴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<stdio.h>

voidmain()

{

intunits,tens,hundreds,a,b;

printf(,,Pleaseinputanumber(100~999):");

SCanf(”%d”,&a);

hundreds=a∕100;

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

units=a-hundreds*1OO-tens*10;

b=1OO*units+tens*10+hundreds;

printf(,'afterchange,thenumberis:%d\n'\b);

}

2.解:#include<stdio.h>

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<stdio.h>

#include<math.h>

voidmain()

{

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

doubledisc;∕*判别式*/

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

printf("Entera,b,c:");

scanf(,'%lf%lf%lf',AaΛbΛc);

if(a==0.0)

if(b==O.O)

printf(',Theequationhasnotsoluble!∖nu);

else

printf(,,Singlerootis%f∖n',,-c∕b);

elseif(c==0.0)

printf(,'Tworoots:xl=%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>=O.O)

printf(',Tworoots:xl=%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<stdio.h>

#include<math.h>

voidmain()

{

inti,j,result;

printf(',∖nπ);

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

{

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

{

result=i*j;

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

}

printf("∖n,');

}

}

5.答:#include<stdio.h>

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;

case7':if(b==0)printf(,,cannotadividedby0!∖n");

elseprintf("%f∕%f=%f∖n",a,b,a∕b);

break;

default:Printf("Inputerror!");

}

}

第四章

一.填空题

1.[O,N-1]

2.1022

3.a⑷⑸

4∙“string.h”

5.0、'∖0'

二.选择题

1D2A3D4B5C

三.问答题

1.解:#include<stdio.h>

voidmain()

{

inta[15];

inti,j;

aLO]=O;

a[l]=l;

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

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

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

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

}

}

2.解:#include<stdio.h>

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+l;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<stdio.h>

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(aU]>a[j+l])

{

temp=a[j];

a[j]=a[j+l];

a[j+l]=temp;

}

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

printf(,'%-4d,,,a[ij);

}

4.解:#include<stdio.h>

voidmain()

{

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

intij;

printf("enterdata:\n");

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

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

scanf(π%d',,Aa∣i][j]);

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

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

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

5.解:#include<stdio.h>

voidmain()

{

charstring[81J;

inti,num=l;

charc;

gets(string);

for(i=0;(C=String[i]!='∖0')j++)

{

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

)

ρrintf(,'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)函数调用时I既没有返回值也不是地址调用;程序中没有输出语句,目的

不明确。

正确的程序是:

main()

{

intpower(intX,intn);

intX=2,n=4;

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

}

intpower(intX,intn)

{

inti,p=1;

for(i=l;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=l;i<=n;i++)

{

s+=l∕(float)i;

returns;

1

voidmain()

{

intn;

floats;

printf("Pleaseinputthevalueofn:”);

scanf(,,%d,,Λn);

if(n<=0)

printf(,,Pleaseinputapositivenumber!");

else

{

s=sum(n);

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

)

}

4.答:运行结果为:

Thevalueofiinmain()befbrcallingsqr(x)is25

Callingsqr(x):sqr(25)=625

Thevalueofiinmain()aftercallingsqr(x)is25

5.答:#include',stdio.hu

doublexpower(floatx,intn)

{

if(n<=0)

return(l);

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所指向的变量内容加I、取指针变量S加1后的内容、取S的内容后,S再加1

3.a[3]

4.指针

5.指针首地址

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

-.选择题

1B2D3D4D

三.问答题

I.答:intstrlen(s)

char*s;

char*p=s;

WhiIe(*p!='∖0')

ρ++;

return(p-s);

}

2.答:#include<stdio.h>

swap(int*p,int*q)

{

inttemp;

temp=*p;

*p=*q;

*q=temp;

}

voidmain()

{

inta,b,*pa,*pb;

printf(πPleaseinput2integernumbers:0);

scanf("%d%d,'ΛaΛb);

pa=&a;

pb=&b;

swap(pa,pb);

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

}

3.答:不行。C语言规定数组名称代表数组的首地址,也就是说第一个元素的地址是常量,所以

在程序中a的值是不能改变的。修改程序如下:

#include<stdio.h>

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-l

0022FF4C-4

0022FF58-7

0022FF40-l0022FF44-20022FF48-3

0022FF4C-40022FF50-50022FF54-6

OO22FF58-70022FF5C-80022FF60-9

5答:#include<stdio.h>

intlen(char*p)

intn=O;

while(*p!-∖0,)

n++;

P÷+;

}

return(n);

}

voidmain()

{

intlength;

char*str[20];

printf("Pleaseinputastring:\n");

scanf("%s",str);

Iength=Ien(Str);

printf("thelengthofthestringis%d",length);

}

6.答:双重指针指的是指向指针型数据的指针类型。

程序如下:

⅛include<stdio.h>

voidmain()

{

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

int*add[2][3]={*a,*a+l,*a+2,*(a+l),*(a+l)+l,*(a+l)+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,,'Zhangu,0,',Wang",0};

main()

{

inti,j;

charleader_name[20J;

for(i=l;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(,,∖nn);

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.答:#includeustdio.h"

voidmain()

structstudent

{

intnum;

charname[20];

floatscore;

structstudentstu[4];

structstudent*p;

inti,temp=0;

floatmax;

for(p=stu;p<stu+4;p++)

scanf(π%d%s%F',&p->num,p・>name,&p->score);

for(max=stu[0].score,i=l;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);

}

模拟试题一

-.选择题

1C2B3D4D5C6D7A8D9AIOB

二•程序填空题

1.①:stdio.h

②:i=l;i<5;i++

③:i!=k&&i!=j&&j!=k

2.①:n=l;n<=20;n++

②:t*=n;

③:s+=t;

三.程序设计题

1.答:#includeustdio.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(,,∖nn);

}

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-l];

a[5-i-l]=temp;

}

printf("∖nsortedarrayΛnκ);

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

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

}

3.答:#include"stdio.hu

swap(int*pl,int*p2)

{

inttemp;

temp=*pl;

*pl=*p2;

*p2=temp;

}

voidmain()

{

intnI,n2,n3;

int"pointer1,*pointer2,*pointer3;

printf(,,Pleaseinput3number:nl,n2,n3:n);

scanf(,'%d%d%d"ΛnI,&n2,&n3);

pointeri=&nl;

pointer2=&n2;

pointer3=&n3;

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

if(n1>n3)swap(pointerl,pointer3);

if(n2>n3)swap(pointer2,pointer3);

printf(,'thesortednumbersare:%d,%d,%d∖n',,nl,n2,n3);

getch();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论