文档库 最新最全的文档下载
当前位置:文档库 › C程序设计第五章课后习题答案

C程序设计第五章课后习题答案

C程序设计第五章课后习题答案
C程序设计第五章课后习题答案

循环结构程序设计

P115 5.1 用while计算1至100的合.

#include

int main()

{

int i=1,sum=0;

while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.

{

sum=sum+i;

i++;

}

printf("The sum is %d .\n",sum);

return 0;

}

P117 5.2 用do-while来做1至100的合.

#include

int main()

{

int i=1,sum=0;

do// do-while可以做的事,用while都可以做到.

{ //do-while先做一次执行,再判断条件,而while却是先做一个条件,再执行.

sum=sum+i;

i++;

}while(i<=100);

printf("The sum is %d .\n",sum);

return 0;

}

P118 5.3 比较do-while与while的差别.

#include

{

int i,sum=0;

printf("Please input a number :");

scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0.

while(i<=10)

{

sum=sum+i;

i++;

}

printf("The sum of 1-10 is %d .\n",sum);

return 0;

}

#include

int main()

{

int i,sum=0;

printf("Please input a number :");

scanf("%d",&i); //输入10以内,结果一样.输入11的话,先做操作,所以sum=11.

do

{

sum=sum+i;

i++;

}while(i<=10); //此重点在于理解二者的差别.

printf("The sum of 1-10 is %d .\n",sum);

return 0;

}

P126 5.4 break的例子.

#include

int main()

{

int i,b=0,a,c;

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

{

printf("Please input amount :"); //循环体内套有输出语句以及跳出语句.

scanf("%d",&a);

b=b+a;

if(b>=100)

break; //break是用于跳出循环,对if无效,对while for switch 这一类.

}

}

c=b/i;

printf("conut is %d , aver is %d ",i+1,c); //注意%号后的形式,否则可能输出错误.

return 0;

}

P127 5.5 continue的例子.

#include

int main()

{

int i;

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

{

if(i%3!=0)

{

continue; //跳过本次I,执行下一个i.

}

printf("%d ",i);

}

printf("\n");

return 0;

}

P128 5.6 形成一个4*5的矩阵.

#include

int main()

{

int i,j,a=0; //没有给初值,会出现警告: 使用了未初始化的局部变量“a”.

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

{

for(j=1;j<=5;j++,a++) // a用来控制换行.

{

if(a%5==0)

{

printf("\n");

}

printf("%d\t",i*j);

}

}

printf("\n");

return 0;

}

P131 5.7 用一个交错的式子求哌的近似值.

#include

#include

int main() //四分之哌等于(1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11).

{

float s=1,n=1,m,sum=0,t;

for(m=1;;m=m+2) //不确定哪项才会小于等于十的负六次方,所以不指定,无限下去.

{ //不指定第二项,执行语句中应该有控制跳出的句子,否则死循环.

t=(s)*(n/m); //这是第一项,s是符号,

if(fabs(t)<=1e-6) //应该写在这里,题目要求这一项不累加进去.

{

break;

}

sum=sum+t; //因为累加项在这里,所以,一旦跳出就不会累加进来了.

s=s*(-1); //变号一次.

}

printf("四分之一哌的值是%f.\n",sum);

printf("一个完整哌的值是%f.\n",sum*4);

return 0;

}

//下面这段小代码用来验证关于数值型数据类型的关系.去掉注释,可运行.

//如果出现类似值为全1或是全零的话,一般可以考虑数据类型赋值或是定义错了的问题.

//#include //这是关于int float double三者关复杂关系的,乱啊,如果看不懂,可以通过实验自己明白来.

//

//int main() //在C语言中,1.0认为是实数,即是double型,所以,如果你把它用float输出的话,会有警告:警告 1 warning C4305: “=”: 从“double”到“float”截断.

//{

// float m,a,b,c; //一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,不能变成int型啦.而且后面的赋值会跟着它变成相应的类型.比如下面的m=1,其实得到的是m=1.0.

// int d,e,f;

// m=1;

// a=1.0/3;

// b=1/3;

// c=m/3;

// d=1.0;

// e=1/4;

// f=1.0/4;

// printf("%lf(float用double的%lf来输出是可以的.)\n%f\n%f\n%f\n",m,a,b,c); //不管上面定义什么,这边写的输出类型是什么,就按相应的类型输出,有可能会出错,所以建议按定义的类型来输出.当然扩展的是不会错的,截断的是会错的,比如float可以用%lf来输出,而不能用%d来输出.

// printf("%d\n%d\n%d\n",d,e,f); //但是,不相应的int型不可以用%f来输出的.因为int float就不同种类,一个是整数,一个是小数,float double同样是有小数点的!!!!

// return 0;

//}

P133 5.8 著名的Fibonacci(费波那契数列问题)

#include

int main() //这个就是著名的Fibonacci(费波那契数列问题)

{

int f1=1,f2=1,f3,i;

printf("%12d\n%12d\n",f1,f2);

for(i=1;i<=38;i++) //注意,这是个基础问题,(i=1;i<=5;i++)这里其实进行了次运算,因为有f1,f2,要求有个,所以要有个.要么写<=38,要么写<39,边界问题一定要注意,不可以太随意!!!!

{

f3=f1+f2;

printf("%12d\n",f3); //这个问题同样适用于"一对兔子一个月生一对"的问题.,

f1=f2; //f1=f1+f2;此时它们各是,所以,现在的f1是.

f2=f3; //f2=f2+f1;此时的f1已经是最先二者之和了.可以不用到f3.

}

return 0;

}

P135 5.9 还是求素数,方法不一样.

#include

#include

int main()

{

double num;

int i;

printf("Please input a number :");

scanf("%lf",&num); //因为sqrt要求是浮点型,那就给它浮点型,需要时再强制转换.

for(i=2;i<=sqrt(num);i++) //这边是<=号没错.

{

if((int)num%i==0) //如果在这期间有任何一个可以为零的话,则不是素数.

{

break; //当然跳出.

}

} //执行到这里的时候,i=5,已经变成了!!

if(i<=sqrt(num))

{

printf("Not %d",(int)num);

}

else//如上所述,i=5,超出了求根的值,所以是素数.

{

printf("Yes %d",(int)num);

}

return 0;

}

P137 5.10 求100至200间的素数.

#include//不解释,HOHO>>>>...

#include

int main()

{

double j;

int i,k=0;

for(j=100;j<=200;j++)

{

for(i=2;i<=sqrt(j);i++)

{

if((int)j%i==0)

{

break;

}

}

k=k+1; //这里是布局的开头.学习一下,有助逻辑.

if(i<=sqrt(j))

{

printf("Not %d ",(int)j);

if(k%5==0) //5个换一次行.

{

printf("\n");

}

}

else

{

printf("Yes %d ",(int)j);

if(k%5==0)

{

printf("\n");

}

}

}

return 0;

}

P139 5.11 密码转换.

#include

int main()

{

char c;

c=getchar();

while(c!='\n') //这也可以用数组来实现.

{

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

{

if((c>='w'&&c<='z')||(c>='W'&&c<='Z'))

{

c=c-22;

}

else

{

c=c+4;

}

printf("%c",c);

c=getchar(); //套在循环里,依次得到字母,而while中判断回车为结束.

}

}

printf("\n"); //这是布局问题.

return 0;

}

P140 0.3 最大公约数和最小公倍数.

#include//最大公约数用累除法,除到无余数时的被除数是最大公约数.

main ()

{

int m, n, c, d;

int gcd(); //这是最大公约数的缩写,此处调用函数,可以不写里面的实参.

int lcm(); //这是最小公倍数的缩写,此处调用函数,可以不写里面的实参.

printf("Please input two number :\n");

scanf("%d %d",&m,&n);

c=gcd(m,n); //c获取最大公约数

d=lcm(m,n); //d获取最小公倍数

printf("The GCD of %d and %d is : %d !\n", m, n, c);

printf("The LCM of %d and %d is : %d !\n", m, n, d);

return 0;

}

int gcd(int x, int y) //最大公约数Greatest Common Divisor

{

int temp;

while(x%y!=0)

{

temp=y; //y在下一轮中作为除数,即是下一轮中的X,所以先闪一边去.

y=x%y; //x,y的余数作为下一轮中的Y,由x%y来取得.

x=temp; //刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用.

}

return y; //这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理. }

int lcm(int x, int y) //最小公倍数Lowest Common Multiple

{

int i, temp;

if(x

{ //以下为经典三行码,实现两个数的互换.

temp=x;

x=y;

y=temp;

}

for(i=1; i<=y; i++) //设定一个区间,从1至大的数之间的循环.

{

if(!((x*i)%y)) //此式子如有余数,加上"!"号,会是假,则不返回,进行下一轮.

{ //如此往复,直到取模无余数,那么小的数X乘以区间当前的I值,就是最小公倍数.

return x*i;

}

}

}

P140 0.4 判断一串输入的字符.

#include

int main()

{

char ch;

int a=0,b=0,c=0,d=0,e=0;

printf("Please input the string\n");

while((ch=getchar())!='\n') //直到回车.

{

if(ch<='z'&&ch>='a')

{

a++;

}

else if(ch==' ')

{

c++;

}

else if(ch<58&&ch>47)

{

d++;

}

else if(ch<='Z'&&ch>='A')

{

b++;

}

else

{

e++;

}

}

printf("大写%d 小写%d 空格%d 数字%d 其它%d\n",a,b,c,d,e);

}

P140 0.5 2+22+222+2222系列的和. #include//不理解时可以百度或是谷歌更多的信息.

int main() //想办法既快速做完,又要消化理解!!!

{

int temp,i,a,n,sum=0; //主逻辑,友好性暂时放松.

scanf("%d %d",&a,&n); //a是数字,n是要乘的个数.

temp=a; //先把第一阶的值存起来.

for(i=0;i

{

sum=sum+a;

printf("%d + ",a); //事关布局.

a=a*10+temp; //重点是每次乘,然后加上上一个数.

}

printf("= %d .",sum);

return 0;

}

P140 0.6 1!+2!+3!+4!.....的值.

#include

int main() //1!+2!+3!+4!.....

{

int i,j,k,sum=0,m=1;

scanf("%d",&k); //比如设定为,值为.

for(i=1;i<=k;i++) //第一层循环,指定到.

{

for(j=1;j<=i;j++) //第二层循环,指定至当前数.

{

m=m*j;

} //到此是阶乘的结构.

sum=sum+m;

m=1;

}

printf("%d",sum); //完全不理解时,搜索并参考.

return 0; //尝试自己做,第一次做出来就是自己的东西了. }

P140 0.7 1至100,1至50平方,1至10倒数的总和. #include

int main()

{

int a,b;

double c,asum=0,bsum=0,csum=0;

for(a=1;a<=100;a++) //三个块分别注释验证结果.

{

asum=asum+a;

}

for(b=1;b<=50;b++) //在VS运行中,注意*.cpp为C++语言.

{

bsum=bsum+b*b; //为了避免语言差别,请注意文件名为*.c.

}

for(c=1;c<=10;c++) //c作浮点运算,所以定义在double类型中.

{

csum=csum+1/c;

}

printf("%lf",asum+bsum+csum);

return 0;

}

P

P

#include

#include

int main()

{

int j,k,s[6],x=100,y,sum=0;

for(j=153;j<=154;j++)

{

for(k=2;k>=0;k--)

{

s[k]=j%(int)pow(10,k+1)/(int)pow(10,k);

y=pow(s[k],3);

sum+=y;

printf("%d-%d--%d\t",k,s[k],j);

}

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

}

return 0;

}

P140 0.8 水仙花数.

//#include //一步步的发现问题.

//

//int main() //在%和/号之间,以前pow.以后再做.

//{

// int i,j,k,a,b,c,sum=0; //这里逻辑对,算出来却错了.

// for(i=2;i<=4;i++) //计算机在想什么,看来它的大脑难以模拟.

// {

// for(j=pow(10,i);j<=pow(10,i+1)-1;j++) //我不完全明白它遵守的逻辑. // {

// for(k=0;k<=i;k++)

// {

// sum+=pow((j%pow(10,i+1)/pow(10,i)),3);

// }

// if(sum==j)

// {

// printf("%d 是水仙花数!\n",j);

// }

// sum=0;

// }

// }

// return 0;

//} //为什么还是无法实现?!

#include

#include

int main()

{

int a,b,c,i,sum=0; //这里只计算三位数的.

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

{

a=i/100;

b=i%100/10;

c=i%10;

sum+=a*a*a+b*b*b+c*c*c;

if(sum==i)

{

printf("%d 是水仙花数.\n",i);

}

sum=0;

}

return 0;

}

P141 0.9 完数.

#include

int main()

{

int i,j,r;

for(i=1;i<=1000;i++) //零是个临界值,不能包括它.

{

r=0; //每次清零重来.类似水仙中的sum.

for(j=1;j

{

if(i%j==0) //除得尽即是因子.

{

r=r+j; //然后累加进去.

}

}

if(r==i) //若相等.

{

printf("%d 是完数.\n",i);

}

}

return 0;

}

P141 0.10 2/1+3/2+5/3+8/5+13/8…#include

int main() //10.007051

{

double i,a=2,b=1,c,s=0; //a是分子,b是分母.

for(i=0;i<6;i++) //二十可以用户指定.

{

s+=a/b; //中间储值变量.

c=a+b;

b=a;

a=c;

}

printf("%lf\n",s);

return 0;

}

P141 0.11 球落地并反弹问题.

#include

int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.

{

double sum=100,high=100,up,donw,i;

for(i=1;i<10;i++) //不管指定到哪个数,都不会超过三百.

{

up=high/2;

donw=up;

high=donw; //自咬尾巴问题.

sum+=donw*2;

}

printf("%lf %lf\n",donw,sum);

return 0;

}

P141 0.12 猴子吃桃子.

#include

int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.

{

int i,sum=1;

for(i=1;i<=10;i++) //临界要清楚,结果要与手算的前几个实例相匹配.

{

printf("倒数第%d天还剩有%d个桃子.\n",i,sum);

sum=(sum+1)*2;

}

//printf("%d\n",sum);

return 0;

}

P141 0.16 输出星号棱形图案.

#include

#include

main() //只关注左半部分.右半部分无视空格.

{

int i,j,k,m=6; //m可指定,指定中心点位置.可任意奇偶.

for(i=1;i<=m;i++) //上半部分.其实也是正三角.

{

for(j=1;j<=m-i;j++) //一到中心点前i个位置填充空格.

printf(" ");

for(k=1;k<2*i;k++) //空格后向前填充星号的个数.是奇数.一,三,五... printf("*");

printf("\n");

}

for(i=m-1;i>0;i--) //下半部分.其实也是倒三角.

{ //减一是因为行数问题.这是中心行以下的.

for(j=m-1;j>=i;j--)

printf(" ");

for(k=1;k<2*i;k++)

printf("*");

printf("\n");

}

getch(); //用户反应后结束.但,没必要.

}

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

c语言第五章习题答案

第一题: 1. 从键盘输入10个数,求和。 #include "stdio.h" void main( ) { int x,s=0; int i; for(i=0;i<10;i++) {scanf("%d",&x); s+=x;} printf("s=%d\n",s ); } 2. 从键盘输入10个数,求平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; for(i=0;i<10;i++) {scanf("%d",&x); s+=x;}

ave=s/10; printf("s=%d,ave=%d\n",s ,ave ); } 3. 从键盘输入10个数,求偶数的和。 #include "stdio.h" void main( ) { int x,s=0; int i; for(i=0;i<10;i++) {scanf("%d",&x); if(x%2==0) s+=x;} printf("s=%d\n",s ); } 4. 从键盘输入10个数,求偶数的平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; int k=0;

for(i=0;i<10;i++) {scanf("%d",&x); if(x%2==0) {s+=x;k++;} } ave=s/k; printf("s=%d,ave=%d\n",s,ave ); } 5. 从键盘输入n个数,求偶数的平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; int k=0; int n; scanf("%d",&n); for(i=0;i

Linux第5章课后习题答案

Linux思考题5 1.fork()和clone()二者之间的区别是什么? 答:fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid,但却复制父进程其它所有的资源。 通过fork创建子进程,需要将上面描述的每种资源都复制一个副本。fork()调用执行一次返回两个值,对于父进程,fork函数返回子程序的进程号,而对于子程序,fork函数则返回零,这就是一个函数返回两次的本质。在fork 之后,子进程和父进程都会继续执行fork调用之后的指令。 系统调用fork()和vfork()是无参数的,而clone()则带有参数。fork()是全部复制,vfork()是共享内存,而clone()是则可以将父进程资源有选择地复制给子进程,而没有复制的数据结构则通过指针的复制让子进程共享,具体要复制哪些资源给子进程,由参数列表中的clone_flags来决定。另外,clone()返回的是子进程的pid。 2.什么是进程?什么是线程?Linux系统中的进程有那些状态?如何获取系统 中各进程的状态? 答:进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。 Linux系统中的进程状态有:TASK_RUNNING(运行状态),TASK_INTERRUPTIBLE(可中断睡眠状态),TASK_UNINTERRUPTIBLE(不可中断的睡眠状态),TASK_STOPPED(暂停状态),TASK_NONINTERACTIVE(不可交互睡眠状态),TASK_DEAD(死亡状态),EXIT_ZOMBIE(僵死进程),EXIT_DEAD(僵死撤销状态) ps 查看静态的进程信息 可以使用man 来查看 ps 的使用参数以下是几个常使用到得, a 显示当前终端的所有进程信息 u 使用以用户为主的格式输出进程信息 x 显示当前用户在所有终端下的进程信息 -e 显示系统内的所有进程 # ps 只显示当前用户打开的进程 ]# ps aux 显示系统中所有进程信息 3.Linux系统中进程有哪两种模式?各有何特点? 答:用户进程和系统进程, 用户进程就是用户自己打开的应用程序,可有可无。 系统进程即是内核进程,是维持操作系统正常工作自动生成的,关闭系统进程会产生不可预知的结果。 4.Linux系统中进程控制块的作用是什么?它进程有何关系?

统计学第五章课后题及答案解析

第五章 一、单项选择题 1.抽样推断的目的在于() A.对样本进行全面调查 B.了解样本的基本情况 C.了解总体的基本情况 D.推断总体指标 2.在重复抽样条件下纯随机抽样的平均误差取决于() A.样本单位数 B.总体方差 C.抽样比例 D.样本单位数和总体方差 3.根据重复抽样的资料,一年级优秀生比重为10%,二年级为20%,若抽样人数相等时,优秀生比重的抽样误差() A.一年级较大 B.二年级较大 C.误差相同 D.无法判断 4.用重复抽样的抽样平均误差公式计算不重复抽样的抽样平均误差结果将()A.高估误差 B.低估误差 C.恰好相等 D.高估或低估 5.在其他条件不变的情况下,如果允许误差缩小为原来的1/2,则样本容量()A.扩大到原来的2倍 B.扩大到原来的4倍 C.缩小到原来的1/4 D.缩小到原来的1/2 6.当总体单位不很多且差异较小时宜采用() A.整群抽样 B.纯随机抽样 C.分层抽样 D.等距抽样 7.在分层抽样中影响抽样平均误差的方差是() A.层间方差 B.层内方差 C.总方差 D.允许误差 二、多项选择题 1.抽样推断的特点有() A.建立在随机抽样原则基础上 B.深入研究复杂的专门问题 C.用样本指标来推断总体指标 D.抽样误差可以事先计算 E.抽样误差可以事先控制 2.影响抽样误差的因素有() A.样本容量的大小 B.是有限总体还是无限总体 C.总体单位的标志变动度 D.抽样方法 E.抽样组织方式 3.抽样方法根据取样的方式不同分为() A.重复抽样 B.等距抽样 C.整群抽样 D.分层抽样 E.不重复抽样 4.抽样推断的优良标准是() A.无偏性 B.同质性 C.一致性 D.随机性 E.有效性 5.影响必要样本容量的主要因素有() A.总体方差的大小 B.抽样方法

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

第五章课后部分习题答案

第五章课后部分习题答案

第五章课后习题答案 二、计算题 1.(1)该会计混淆了资本的5天使用成本与一年的使用成本。这两个成本是不可比的,必须将时间长度转化一致才可比较。 (2)%94.14610 15360%21%2=-?- (3)如果公司决定不获得现金折扣,在到 期日之前支付是毫无道理的。若是购货后30天付款,而非15天付款,则年利息成本可下降至 %73.3610 30360%21%2=-?- 2.放弃10天内付款的现金折扣成本=%7.3610 30360%21%2=-?- 放弃20天内付款的现金折扣成本=%4.3620 30360%11%1=-?- (1)因为银行的贷款利率为15%,低于放弃现金折扣成本,所以该公司不应放弃现金折扣,并且放弃10天内付款的现金折扣成本大于放弃20天内付款的成本,所以应在第10天付款。 (2)因为短期投资收益率比放弃折扣的代价高,所以应在第30天付款。

3.(1)外购: TC=3600×9.8+1440=36720(元) 自制: TC=825+10×3600=36825(元) 不考虑缺货的情况下,自制成本高,外购成本低。 (2)外购的经济订货批量 每年订货次数=3600/360=10(次) 交货期内的平均每天需要量=3600/360=10(件) 如果延迟交货1天,则交货期为10+1=11(天),交货期内的需要量=11×10=110(件),概率为0.25 如果延迟交货2天,则交货期为10+2=12(天),交货期内的需要量=12×10=120(件),概率为0.1 如果延迟交货3天,则交货期为10+3=13(天),交货期内的需要量=13×10=130(件),概率为0.05 ①保险储备B=0时, 再订货点R=10×10=100(件) S=(110-100)×0.25+(120-100)×

第5章习题参考答案

第5章习题参考答案 1.请在括号内填入适当答案。在CPU中: (1)保存当前正在执行的指令的寄存器是(IR ); (2)保存当前正在执行的指令地址的寄存器是(AR ) (3)算术逻辑运算结果通常放在(DR )和(通用寄存器)。2.参见图5.15的数据通路。画出存数指令“STO Rl,(R2)”的指令周期流程图,其含义是将寄存器Rl的内容传送至(R2)为地址的主存单元中。标出各微操作信号序列。 解: STO R1, (R2)的指令流程图及为操作信号序列如下:

STO R1, (R2) R/W=R DR O, G, IR i R2O, G, AR i R1O, G, DR i R/W=W 3.参见图5.15的数据通路,画出取数指令“LAD (R3),R0”的指令周期流程图,其含义是将(R3)为地址主存单元的内容取至寄存器R2中,标出各微操作控制信号序列。 解: LAD R3, (R0)的指令流程图及为操作信号序列如下:

PC O , G, AR i R/W=R DR O , G, IR i R 3O , G, AR i DR O , G, R 0i R/W=R LAD (R3), R0 4.假设主脉冲源频率为10MHz ,要求产生5个等间隔的节拍脉冲,试画出时序产生器的逻辑图。 解:

5.如果在一个CPU 周期中要产生3个节拍脉冲;T l =200ns ,T 2=400ns ,T 3=200ns ,试画出时序产生器逻辑图。 解:取节拍脉冲T l 、T 2、T 3的宽度为时钟周期或者是时钟周期的倍数即可。所以取时钟源提供的时钟周期为200ns ,即,其频率为5MHz.;由于要输出3个节拍脉冲信号,而T 3的宽度为2个时钟周期,也就是一个节拍电位的时间是4个时钟周期,所以除了C 4外,还需要3个触发器——C l 、C 2、C 3;并令 211C C T *=;321C C T *=;313C C T =,由此可画出逻辑电路图如下:

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

c语言程序设计课后习题答案 第五章

/*练习5-3*/ #include int prime(int m) { int i; for(i=2;i<=m-1;i++) if(m%i==0) break; if(i==m) return 1; else return 2; } main() { int i,m,n,sum=0,a=0; printf("enter m and n:(1<=m<=n<=500)\n"); scanf("%d",&m); scanf("%d",&n); for(i=m;i<=n;i++) { if(prime(i)==1) sum=sum+i; a=a+1; } printf("之间的素数和为:%d\n",sum); printf("之间的素数个数为:%d\n",a); } /*习题5.1*/ #include int fn(int a,int n) { int i,sum=0,m=1,c; for(i=1;i<=n;i++) { sum=sum+m; m=m*10; } c=sum*a; return c; }

main() { int a,n,i,x,y=0; printf("enter a and n:\n"); scanf("%d",&a); scanf("%d",&n); for(i=1;i<=n;i++) { x=fn(a,i); y=y+x; } printf("y=%d\n",y); } /*习题5.2*/ #include int countdigit(int number,int digit) { int sum=0; while(number>0) { if(number%10==digit) sum=sum+1; number=number/10; } return sum; } main() { int number,y; printf("enter a number:\n"); scanf("%d",&number); y=countdigit(number,2); printf("y=%d\n",y); }

第五章微机原理课后习题参考答案

习题五 一. 思考题 ⒈半导体存储器主要分为哪几类?简述它们的用途和区别。 答:按照存取方式分,半导体存储器主要分为随机存取存储器RAM(包括静态RAM和动态RAM)和只读存储器ROM(包括掩膜只读存储器,可编程只读存储器,可擦除只读存储器和电可擦除只读存储器)。 RAM在程序执行过程中,能够通过指令随机地对其中每个存储单元进行读\写操作。一般来说,RAM中存储的信息在断电后会丢失,是一种易失性存储器;但目前也有一些RAM 芯片,由于内部带有电池,断电后信息不会丢失,具有非易失性。RAM的用途主要是用来存放原始数据,中间结果或程序,与CPU或外部设备交换信息。 而ROM在微机系统运行过程中,只能对其进行读操作,不能随机地进行写操作。断电后ROM中的信息不会消失,具有非易失性。ROM通常用来存放相对固定不变的程序、汉字字型库、字符及图形符号等。 根据制造工艺的不同,随机读写存储器RAM主要有双极型和MOS型两类。双极型存储器具有存取速度快、集成度较低、功耗较大、成本较高等特点,适用于对速度要求较高的高速缓冲存储器;MOS型存储器具有集成度高、功耗低、价格便宜等特点,适用于内存储器。 ⒉存储芯片结构由哪几部分组成?简述各部分的主要功能。 答:存储芯片通常由存储体、地址寄存器、地址译码器、数据寄存器、读\写驱动电路及控制电路等部分组成。 存储体是存储器芯片的核心,它由多个基本存储单元组成,每个基本存储单元可存储一位二进制信息,具有0和1两种状态。每个存储单元有一个唯一的地址,供CPU访问。 地址寄存器用来存放CPU访问的存储单元地址,该地址经地址译码器译码后选中芯片内某个指定的存储单元。通常在微机中,访问地址由地址锁存器提供,存储单元地址由地址锁存器输出后,经地址总线送到存储器芯片内直接进行译码。 地址译码器的作用就是用来接收CPU送来的地址信号并对它进行存储芯片内部的“译码”,选择与此地址相对应的存储单元,以便对该单元进行读\写操作。 读\写控制电路产生并提供片选和读\写控制逻辑信号,用来完成对被选中单元中各数据位的读\写操作。

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

C语言预习及课后习题(参考答案1-5)

第一章C语言概述 课前预习题 1.函数 2.main()函数3.单行注释、块注释、A 参考分析:C语言总是从main函数开始,main函数结束。但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。 2.C 参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。因此,如果注释中存在错误,系统是不可能发现的。另外,C语言的I/O操作均通过函数实现,系统本身未提供相应的语句。 3.D 参考分析:C语言中,注释语句的位置是任意的,当然,它不能破坏标识符的完整性。C语言只是将一个注释看作是一个空格,因此对注释内的任何错误都不作检查。 4. C 5.B 参考分析:通常许多语言程序由主程序和子程序构成,但是C语言是函数式语言,整个程序由众多函数组成。尽管有时习惯上称main函数为主程序,显然,严格地讲还是B更为符合C语言的规则。 6.C 7.B 8.C 9.C 10.C 11.绘制NS算法流程图。 (1)输入10个数,求其中的最大值。 (2)输入3个数,将它们升序排列输出。 (3)输入2个数,求它们的最大公约数。(4)输入一元二次方程的系数a、b、c,判断其根。

第二章数据类型、运算符与表达式 课前预习题 1.变量在内存中所占的字节数、变量的表数范围、变量允许参与的运算2.1、4、8 3.float、double 4.八进制、十进制、十六进制5.1 6.26 7.12、4 8.6、4、2 9.-60 10.2 11.10、6 12.13.14.4 15.1 16.0 17.9 18.字符、数字、下划线19.'f' 20.21.int型22.m/10%10*100+m/100*10+m%10 课后习题 1.A 分析:在不同的计算机系统中,不同的C语言系统中,其各种数据类型所占据的存储空间是不同的,但是有一个总的原则,即:char<=short<=int<=long<= float<=double,只有A符合16位PC机中的具体环境。 2.C 参考分析:逗号表达式的计算结果是最后一个表达式的值。k=23是括号内最后一个表达式,因此x变量的值来自k变量的值。 3.B 参考分析:逗号表达式的计算结果是最后一个表达式的值。b++在所在表达式参与运算时的值是5,该表达式计算完成后,b进行自增运算,故a+b的值为2+6=8。 4.A 参考分析:是关键字的有:char、case、while。 5.B 参考分析:不是关键字的:include、scanf、type 6.C 参考分析:合法的有:A、P_0、la0、_A、_123、temp、INT。 7.C 参考分析:教材中只是强调首字符必须为字母,我们应当知道,在语言系统中,下划线和字母具有同等的“法律效力”。 8.A 参考分析:不合法的B2,C2,C3,D2。解释:A2:-0xffff十六进制数本身已经包含了符号位,一般不前面加符号位,但加上符号位也不错误;C3:0668在有些C系统中,八进制数中允许出现8,但是通常不允许使用8;D3:0x显然后面缺少数值,但在TC中是允许的。 9.D 参考分析:不合法的A1,B3,C1,C3,D。解释:A1:--0f1十六进制数没有0x,显然不合法,这里需要讨论的是常

第5章习题习题参考答案

第五章习题参考答案 5.1 题5.1的图所示的是三相四线制电路,电源线电压l U =380V 。三个电阻性负载接成星形,其电阻为1R =11Ω,2R =3R =22Ω。 (1)试求负载相电压、相电流及中性线电流,并作出它们的相量图;(2)如无中性线,求负载相电压及中性点电压;(3)如无中性线,当L1相短路时求各相电压和电流,并作出它们的相量图;(4)如无中性线,当L3相断路时求另外两相的电压和电流;(5)在(3),(4)中如有中性线,则又如何? 1 L 2 L 3 L N 题5.1的图 解: ○1各相负载两端电压都等于电源相电压,其值为:V V U U l P 2203 380 3===。各负载相电流分别为: ()()A I I I I I I A R U I A R U I A R U I N P P P 1030cos 30cos 30sin 30sin 10,10,202 2321323 32211=?-?++?-?-= ====== 相量图如图(b )所示。 ○ 2因为三相电源对称,而三相负载不对称时,由于无中性线,将使电源和负载中点之间的电位差不为零,而产生中性点位移。 设 V U U ?∠=01 1& ()()() V V U U U V V U U U V V U U U V V R R R R U R U R U U N N N N N N N N ?∠=?∠-?∠=-=?-∠=?∠-?-∠=-=?∠=?∠-?∠=-=?∠=++? ∠+?-∠+?∠=++++=1312520551202201312520551202200165055022005522 1 2211112212022022120220110220111''''3'32'21 '1 3213322 11&&&&&&&&&&&&&

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

c语言程序设计课后习题答案高等教育出版社

#include<> main() { float x=,y=,z=; printf("x=%f\n",x); printf("y=%f\n",y); printf("z=%f\n",z); } (1) #include<> main() { int a=12,b=3; float x=,y=; printf("%f\n",(float)(a*b)/2); printf("%d\n",(int)x%(int)y); } (2) #include<> main() { int x=32,y=81,p,q; p=x++; q=--y; printf("%d %d\n",p,q); printf("%d %d\n",x,y); } #include<> main() { int x,b0,b1,b2,s; printf("Inputx:"); scanf("%d",&x); b2=x/100; printf("骰子出现 2 printf("骰子出现 3 printf("骰子出现 4 printf("骰子出现 5 printf("骰子出现 6

} (1) void Swap(int *x,int *y) { int *pTemp;.\n"); else if(strcmp(userInput,password)<0) printf("Invalid password!user inputpassword...\n"); return 0; } #include<> #define N 24 unsigned int CountLetter(char str[]); int main() { char a[N]; printf("Input a letter:\n"); gets(a); printf("The length of the letter is:%d\n",CountLetter(a)); return 0; } unsigned int CountLetter(char str[]) { char *p=str; int c=0,flag=0; while(*p!='\0') { if(*p!=' ') flag=1; else if(flag==1) { c++; flag=0; } p++; } return c+1; } #include<>

第5章-课后习题答案

第5章 习题解答 5-1 由与非门组成的基本RS 触发器的d d S ,R 之间为什么要有约束?当违反约束条件时,输出端Q 、Q 会出现什么情况?试举例说明。 解:由与非门组成的基本RS 触发器的d R 和d S 之间的约束条件是:不允许d R 和d S 同时为0。当违反约束条件即当d R =d S =0时,Q 、Q 端将同时为1,作为基本存储单元来说,这既不是0状态,又不是1状态,没有意义。 5-2 试列出或非门组成的基本RS 触发器的真值表,它的输入端R d 和S d 之间是否也要有约束?为什么? 解:真值表如右表所示、 Rd 、Sd 之同也要有约束条件,即不允许Rd=Sd=1, 否则Q 、Q 端会同时出现低电平。 5-3 画出图5-33由与非门组成的基本RS 触发器输出端Q 、Q 的电压波形,输入端 D D S R 、的电压波形如图中所示。 图5-33 解:见下图: 5-4 画出图5-34由或非门组成的基本RS 触发器输出端Q 、Q 的电压波形,输入端S D 、R D 的电压波形如图中所示。

图5-34 解:见下图: 5-5 图5-35所示为一个防抖动输出的开关电路。当拨动开关S时,由于开关触点接R S、的电压波形如图中所示。试画出Q、Q端对应的电压波形。 通瞬间发生振颤,D D 图5-35 解:见下图:

5-6 在图5-36电路中、若CP、S、R的电压波形如图中所示,试画出Q、Q端与之对应的电压波形。假定触发器的初始状态为Q=0。 图5-36 解:见下图: 5-7 在图5-37(a)所示的主从RS触发器中,CP、R、S的波形如图5-37(b)所示,试画Q、Q和Q的波形图。 出相应的Q m、 m 图5-37 解:主从RS触发器的工作过程是:在CP=l期间主触发器接收输入信号,但输出端并不改变状态,只有当CP下降沿到来时从触发器甚才翻转,称为下降沿触发。根据主从RS 触发器状态转换图可画出波形图如下图所示。

第五章练习题参考答案完整版

第五章练习题参考答案 1、下面表是一张关于短期生产函数),(K L f Q 的产量表: (1) 在表1中填空 (2) 根据(1)。在一张坐标图上作出TPL 曲线,在另一张坐标图上作出APL 曲线和MPL 曲线。 (3) 根据(1),并假定劳动的价格ω=200,完成下面的相应的短期成本表2。 (4) 根据表2,在一张坐标图上作出TVC 曲线,在另一张坐标图上作出AVC 曲线和MC 曲线。 (5) 根据(2)和(4),说明短期生产曲线和短期成本曲线之间的关系。 解:(1)短期生产的产量表(表1) (2) (3)短期生产的成本表(表2)

(4)边际产量和边际成本的关系,边际MC和边际产量MPL两者的变动方向是相反的。 总产量和总成本之间也存在着对应关系:当总产量TPL下凸时,总成本TC曲线和总可变成本TVC是下凹的;当总产量曲线存在一个拐点时, 总成本TC曲线和总可变成本TVC也各存在一个拐点。平均可变成本和平均产量两者的变动方向是相反的。MC曲线和AVC曲线的交点与MPL曲线和APL曲线的交点是对应的。 2、下图是一张某厂商的LAC曲线和LMC曲线图。请分别在Q1和Q2的产量上画出代表最优生产规模的SAC曲线和SMC曲线。 解:在产量Q1和Q2上,代表最优生产规模的SAC曲线和SMC曲线是SAC1和SAC2以及SMC1和SMC2。 SAC1和SAC2分别相切于LAC的A和B,SMC1和SMC2则分别相交于LMC的A1和

B 1。 3、假定某企业的短期成本函数是TC(Q)=Q 3 -5Q 2 +15Q+66: (1) 指出该短期成本函数中的可变成本部分和不变成本部分; (2) 写出下列相应的函数:TVC(Q) AC(Q) AVC(Q) AFC(Q)和MC(Q)。 解(1)可变成本部分: Q 3 -5Q 2 +15Q 不可变成本部分:66 (2)TVC(Q)= Q 3 -5Q 2 +15Q AC(Q)=Q 2 -5Q+15+66/Q AVC(Q)= Q 2-5Q+15 AFC(Q)=66/Q MC(Q)= 3Q 2-10Q+15 4、已知某企业的短期总成本函数是STC(Q)=0.04 Q 3 -0.8Q 2 +10Q+5,求最小的平均可变成本值。 解: TVC(Q)=0.04Q 3 -0.8Q 2 +10Q AVC(Q)= 0.04Q 2 -0.8Q+10 令08.008.0=-='Q C AV 得Q=10 又因为008.0>=''C AV

C语言课后练习题答案第五章

作业四:简单程序设计 1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式(B);如果字符串长度小于5,则输出按方式(C)。(5分)(重要) A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 2.阅读以下程序,当输入数据的形式为:25,13,10(注:表示回车),则正确的输出结果为(D)。(5分) main() { int x,y,z; scanf(“%d%d%d”,&x,&y,&z);要和这里一样 printf(“x+y+z=%d\n”,x+y+z); } A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值 3.根据下面的程序及数据的输入和输出形式,程序中输入数据的正确形式应该为(WXY)。(5分) main() { char ch1,ch2,ch3;

scanf(“%c%c%c”,&ch1,&ch2,&ch3); printf(“%c%c%c”,ch1,ch2,ch3); } 4.以下的输出结果是(x=1,y=2*sum*=3 10 Squard is : 100)。(5分) main() { int x=1,y=2; printf(“x=%d y=%d * sum * =%d\n”,x,y,x+y); printf(“10 Squared is : %d\n”,10*10); } 5.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2 =’b’,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。要求输出的结果如下:(20分) a= 3 b= 4 c= 5 x=1.200000,y=2.400000,z=-3.600000 x+y= 3.6 y+z=-1.20 z+x=-2.40 u= 51274 n= 128765 c1=’a’ or 97(ascll) c2=’b’ or 98(ascll) main()

第5章课后习题参考答案

第五章组合逻辑电路 1.写出如图所示电路的输出信号逻辑表达式,并说明其功能。 (a)(b) 解:(a)Y1ABC(判奇功能:1的个数为奇数时输出为1) Y2AB(AB)CABACBC(多数通过功能:输出与输入多数一致)(b)Y1(AB)A(AB)BABAB(同或功能:相同为1,否则为0)2.分析如图所示电路的逻辑功能 (a)(b)(c) 解:(a)Y 1ABAB(判奇电路:1的个数为奇数时输出为1) 0011 (b)Y2(((AA)A)A)(判奇电路:1的个数为奇数时输出为1) 0123 YAM 00 (c)Y 1 A M 1 (M=0时,源码输出;M=1时,反码输出) YAM 23 3.用与非门设计实现下列功能的组合逻辑电路。(1)实现4变量一致电路。 (2)四变量的多数表决电路 解:(1) 1)定变量列真值表:

ABCDYABCDY 0000110000 0001010010 0010010100 0011010110 010******* 010******* 0110011100 0111011111 2)列函数表达式:YABCDABC D ABCDABCD 3)用与非门组电路 (2)输入变量A、B、C、D,有3个或3个以上为1时输出为1,输人为其他状态时输出为0。 1)列真值表2)些表达式 3)用与非门组电路 4.有一水箱由大、小两台水泵ML和Ms供水,如图所示。水箱中设置了3个水位检测元

件A、B、C,如图(a)所示。水面低于检测元件时,检测元件给出高电平;水面高于检测元件时,检测元件给出低电平。现要求当水位超过C点时水泵停止工作;水位低于C点而高于B点时Ms单独工作;水位低于B点而高于A点时ML单独工作;水位低于A点时 ML和Ms同时工作。试用门电路设计一个控制两台水泵的逻辑电路,要求电路尽量简单。 解:(1)根据要求列真值表(b) (b)(a) (2)真值表中×对应的输入项为约束项,利用卡诺图化简(c)(d) (c)(d) (e) 得:MABC s MB L (ML、M S的1状态表示工作,0状态表示停止) (3)画逻辑图(e)

相关文档
相关文档 最新文档