《程序设计基础》作业集答案高涛文档格式.docx
《《程序设计基础》作业集答案高涛文档格式.docx》由会员分享,可在线阅读,更多相关《《程序设计基础》作业集答案高涛文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
1.常量、整型常量、实型常量、字符型常量
2.变量、先定义
3.单精度、双精度
4.+、-、*、/、%
5.关系表达式、“0”、“1”
1C2B3B4D5B
字符常量是一个字符,在程序中字符是用单引号括起来的。
字符串变量由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<
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*100-tens*10;
b=100*units+tens*10+hundreds;
afterchange,thenumberis:
%d\n"
b);
}
#include<
inta,b,c;
%d%d%d"
a,b,c);
if(a>
b)if(b>
c)printf("
mid=%d\n"
elseif(a>
c);
elseprintf("
a);
elseif(b>
math.h>
doublea,b,c;
/*方程系数*/
doubledisc;
/*判别式*/
doublere,im;
/*方程实部虚部*/
Entera,b,c:
%lf%lf%lf"
a,&
b,&
c);
if(a==0.0)
if(b==0.0)
Theequationhasnotsoluble!
\n"
else
Singlerootis%f\n"
-c/b);
elseif(c==0.0)
Tworoots:
x1=%lf\tx2=%lf\n"
-b/a,0);
disc=b*b-4*a*c;
re=-b/(2*a);
im=sqrt(fabs(disc))/(2*a);
if(disc>
=0.0)
x1=%f\tx2=%f"
re+im,re-im);
Twocomplexroots:
x1=%f+i*%f\tx2=%f-i*%f\n"
re,im,re,im);
inti,j,result;
for(i=1;
i<
10;
i++)
for(j=1;
j<
j++)
result=i*j;
%d*%d=%-3d"
i,j,result);
floata,b;
charoptor;
Pleaseinputthevalueofa,b:
%f%f"
b);
Enteroperator:
getchar();
%c"
optor);
switch(optor)
case'
+'
:
printf("
%f+%f=%f\n"
a,b,a+b);
break;
-'
%f-%f=%f\n"
a,b,a-b);
*'
%f*%f=%f\n"
a,b,a*b);
/'
if(b==0)printf("
cannotadividedby0!
%f/%f=%f\n"
a,b,a/b);
default:
Inputerror!
}
第四章
1.[0,N-1]
2.1022
3.a[4][5]
4.“string.h”
5.0、‘\0’
1D2A3D4B5C
inta[15];
inti,j;
a[0]=0;
a[1]=1;
%-4d%-4d"
a[0],a[1]);
for(i=2;
15;
a[i]=a[i-1]+a[i-2];
%-4d"
a[i]);
inta[10];
inti,min,k,temp;
Pleaseinput10integernumbers:
for(i=0;
a[i]);
min=i;
for(k=i+1;
k<
k++)
if(a[k]<
=a[min])min=k;
temp=a[i];
a[i]=a[min];
a[min]=temp;
inta[10],i,j,temp;
9;
for(j=0;
9-i;
if(a[j]>
a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
inta[3][3],sum=0;
enterdata:
3;
a[i][j]);
sum=sum+a[i][i];
sum=%6d\n"
sum);
charstring[81];
inti,num=1;
charc;
gets(string);
(c=string[i]!
='
\0'
if(string[i]=='
'
)num++;
Thereare%dwordsintheline\n"
num);
第五章
1.函数
2.fun(intx,inty,intz)
3.main()
4.局部静态存储变量、全局静态存储变量
5.内部函数、外部函数
1B2B3C4C5B
语法错误有:
(1)主函数中第4行漏写了分号。
(2)形参与实参个数不相等,形参没有定义类型
(3)子函数中n没有定义。
语义错误有:
(1)主函数中x和n没有赋值。
(2)函数调用时,既没有返回值也不是地址调用;
程序中没有输出语句,目的
不明确。
正确的程序是:
main()
intpower(intx,intn);
intx=2,n=4;
\ns=%d"
power(x,n));
intpower(intx,intn)
inti,p=1;
=n;
++i)
p=p*x*i;
return(p);
#include"
stdio.h"
floatvolume(a,b,c)
floata,b,c;
floatv;
v=a*b*c;
return(v);
floata,b,c,v;
%f%f%f"
v=volume(a,b,c);
v=%f"
v);
floatsum(intn)
inti;
floats;
s=0;
s+=1/(float)i;
};
returns;
intn;
floats;
Pleaseinputthevalueofn:
n);
if(n<
=0)
Pleaseinputapositivenumber!
s=sum(n);
sum=%f"
s);
Thevalueofiinmain()beforcallingsqr(x)is25
Callingsqr(x):
sqr(25)=625
Thevalueofiinmain()aftercallingsqr(x)is25
doublexpower(floatx,intn)
return
(1);
return(x*xpower(x,n-1));
floatx;
doubler;
%f%d"
x,&
r=xpower(x,n);
Result=%f"
r);
第六章
1.“指针变量”、空指针
2.s所指向的变量内容加1、取指针变量s加1后的内容、取s的内容后,s再加1
3.a[3]
4.指针
5.指针首地址
6.“单级间址”、“二级间址”
1B2D3D4D
intstrlen(s)
char*s;
char*p=s;
while(*p!
)
p++;
return(p-s);
swap(int*p,int*q)
inttemp;
temp=*p;
*p=*q;
*q=temp;
inta,b,*pa,*pb;
Pleaseinput2integernumbers:
%d%d"
pa=&
a;
pb=&
b;
swap(pa,pb);
%d%d"
a,b);
不行。
C语言规定数组名称代表数组的首地址,也就是说第一个元素的地址是常量,所以在程序中a的值是不能改变的。
修改程序如下:
inta[10]={1,2,3,4,5,6,7,8,9,10},i;
%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答:
intlen(char*p)
intn=0;
n++;
return(n);
intlength;
char*str[20];
Pleaseinputastring:
%s"
str);
length=len(str);
thelengthofthestringis%d"
length);
6.答:
双重指针指的是指向指针型数据的指针类型。
程序如下:
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];
6;
**p);
getch();
135246
第七章
1.结构体
2.pstu->
score
3.地址
4.数据、链指针、下一个结点
5.stdlib.h
6.一个一个的输入各结点数据,并建立其前后相链的关系
7.将链表中各结点的数据依次输出
1D2D3B4D5B
三问答题
3,a
structperson
charname[20];
intcount;
}leader[3]={"
Li"
0,"
Zhang"
Wang"
0};
inti,j;
charleader_name[20];
=4;
leader_name);
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
%s:
leader[i].name,leader[i].count);
stdlib.h"
structlist
intdata;
structlist*next;
};
typedefstructlistnode;
typedefnode*link;
linkptr,head;
intnum,i;
ptr=(link)malloc(sizeof(node));
ptr=head;
Pleaseinput5numbers===>
num);
ptr->
data=num;
next=(link)malloc(sizeof(node));
if(i==4)ptr->
next=NULL;
elseptr=ptr->
next;
while(ptr!
=NULL)
Thevalueis===>
ptr->
data);
ptr=ptr->
structstudent
intnum;
floatscore;
structstudentstu[4];
structstudent*p;
inti,temp=0;
floatmax;
for(p=stu;
p<
stu+4;
p++)
%d%s%f"
p->
num,p->
name,&
score);
for(max=stu[0].score,i=1;
4;
if(stu[i].score>
max)
max=stu[i].score;
temp=i;
p=stu+temp;
\nThemaximumscore:
No.%d\nname:
%s\nscore:
%4.1f\n"
p->
name,p->
模拟试题一
一.选择题
1C2B3D4D5C6D7A8D9A10B
二.程序填空题
1.①:
stdio.h
②:
i=1;
5;
i++
③:
i!
=k&
&
i!
=j&
j!
=k
2.①:
n=1;
n<
=20;
n++
t*=n;
③:
s+=t;
三.程序设计题
inti,j,k,n;
waterflower'
snumberis:
for(n=100;
1000;
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)
%-5d"
n);
#include"
inta[5]={9,6,5,4,1},i,temp;
\noriginalarray:
%4d"
5/2;
a[i]=a[5-i-1];
a[5-i-1]=temp;
\nsortedarray:
swap(int*p1,int*p2)
temp=*p1;
*p1=*p2;
*p2=temp;
intn1,n2,n3;
int*pointer1,*pointer2,*pointer3;
Pleaseinput3number:
n1,n2,n3:
n1,&
n2,&
n3);
pointer1=&
n1;
pointer2=&
n2;
pointer3=&
n3;
if(n1>
n2)swap(pointer1,pointer2);
n3)s