c语言第五章习题答案
数据结构(c语言版)第五章答案
数据结构(c语言版)第五章答案第五章1、设二维数组A【8】【10】是一个按行优先顺序存储在内存中的数组,已知A【0】【0】的起始存储位置为1000,每个数组元素占用4个存储单元,求:(1)A【4】【5】的起始存储位置。
A【4】【5】的起始存储位置为1000+(10*4+5)*4=1180;(2)起始存储位置为1184的数组元素的下标。
起始存储位置为1184的数组元素的下标为4(行下标)、6(列下标)。
2、画出下列广义表D=((c),(e),(a,(b,c,d)))的图形表示和它们的存储表示。
略,参考第5·2节应用题第5题分析与解答。
3、已知A为稀疏矩阵,试从时间和空间角度比较采用两种不同的存储结构(二维数组和三元组表)实现求∑a(i,j)运算的优缺点。
稀疏矩阵A采用二维数组存储时,需要n*n个存储单元,完成求∑ii a(1≤i≤n)时,由于a【i】【i】随机存取,速度快。
但采用三元组表时,若非零元素个数为t,需3t+3个存储单元(t个分量存各非零元素的行值、列值、元素值),同时还需要三个存储单元存储存稀疏矩阵A的行数、列数和非零元素个数,比二维数组节省存储单元;但在求∑ii a(1≤i≤n)时,要扫描整个三元组表,以便找到行列值相等的非零元素求和,其时间性能比采用二维数组时差。
4、利用三元组存储任意稀疏数组时,在什么条件下才能节省存储空间?当m行n列稀疏矩阵中非零元素个数为t,当满足关系3*t<m*n 时,利用三元组存储稀疏数组时,才能节省存储空间。
< bdsfid="74" p=""></m*n时,利用三元组存储稀疏数组时,才能节省存储空间。
<>5、求下列各广义表的操作结果。
(1)GetHead((a,(b,c),d))GetHead((a,(b,c),d))=a(2)GetTail((a,(b,c),d))GetTail((a,(b,c),d))=((b,c),d)(3)GetHead(GetTail((a,(b,c),d)))GetHead(GetTail((a,(b,c),d)))=(b,c)(4)GetTail(GetHead((a,(b,c),d)))GetTail(GetHead((a,(b,c),d)))=()第六章1、已知一棵树边的集合为{(i,m),(i,n),(e,i),(b,e),(b,d),(a,b),(g,j),(g,k),(c,g),(c,f),(h,l),(c,h),(a,c)}用树形表示法画出此树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶结点?(3)哪个是g的双亲?(4)哪些是g的祖先?(5)哪些是g的孩子?(6)哪些是e的子孙?(7)哪些是e的兄弟?哪些是f的兄弟?(8)结点b和n的层次号分别是什么?(9)树的深度是多少?(10)以结点c为根的子树的深度是多少?(11)树的度数是多少?略。
C语言题库第5章 数组√
第五章数组一、单项选择1.若要定义一个具有5个元素的整型数组,以下错误的定义语句是( C)2.下列选项中,能正确定义数组的语句是( D)3.下面是有关C语言字符数组的描述,其中错误的是( D)4.有以下程序,程序运行时若输入:how are you? I am fine<回车>则输出结果是( C)#include<stdio.h>int main(){ char a[30],b[30];scanf("%s",a);gets(b);printf("%s\n %s\n",a,b);return 0;}5.以下选项中正确的语句组是( D)6.若有定义语句:int m[]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是( A )7.以下数组定义中错误的是( A)8.下列选项中,能够满足"若字符串s1等于字符串s2,则执行ST"要求的是 ( A )9.有以下程序,程序运行后的输出结果是( C)#include <stdio.h>#include <string.h>int main(){char x[]="STRING";x[0]='0';x[1]='\0';x[2]=0;printf("%d %d\n",sizeof(x),strlen(x));return 0;10.有以下程序,程序运行后的输出结果是( B )#include <stdio.h>#include <string.h>int main(){char a[20]=”ABCD\0EFG\0”,b[]=”IJK”;strcat(a,b); printf(“%s\n”,a);return 0;二、程序设计1./* 编写程序,实现矩阵(3行3列)的转置(即行列互换)。
C语言课后练习题答案第五章
作业四:简单程序设计1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按方式(B);如果字符串长度小于5,则输出按方式(C)。
(5分)(重要)A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出C) 右对齐输出该字符串,左补空格 D) 输出错误信息2.阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为(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*=310 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= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.6 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1=’a’ or 97(ascll)c2=’b’ or 98(ascll)main(){ int a=3,b=4,c=5;float x=1.2,y=2.4,z=-3.6;unsigned u=51274;long n=128765;char c1=’a’,c2=’b’;printf(“a=%d b=%d c=%d\n”,a,b,c);printf(“x=%f ,y=%f, z=%f\n”,x,y,z);printf(“x+y=%3.1f y+z=%.2f z+x=%.2f\n”,x+y,y+z,z+x); printf(“u=%u n=%9ld \n”,u,n);printf(“c1=’%c’or %d (asc11) \n”,c1,c1);printf(“c2=’%c’or %d (asc11) \n”,c2,c2);}6.请写出下面程序的输出结果。
C语言程序设计教程 第五章 课后习题参考答案
k++;
if(k%5==0)
printf("\n");
f1=f2;
f2=f;
}
printf("\n");
return 0;
}
P124 3统计一个整数的位数
#include<stdio.h>
int main()
{
int n,k=0;
printf("请输入n的值:");
int main()
{
int x,y,z,i=0;
for(x=1;x<=20;x++)
{
for(y=1;y<=33;y++)
{
for(z=3;z<=99;z=z+3)
{
if((5*x+3*y+z/3==100)&&(x+y+z==100))
i++;
}
}
}
printf("共有%d种买法:\n",i);
c语言程序设计教程第五章课后习题参考答案
P1242古典问题:兔子总数(斐波那契数列)
#include<stdio.h>
int main()
{
int f1=1,f2=1,f,i,k=0;
printf("%d\t %d\t",f1,f2);
k=k+2;
for(i=3;i<=20;i++)
{
f=f1+f2;
do
{
printf("请输入第%d个整数x=",i);
C语言谭浩强版本第5章课后练习题答案
第5章课后练习题一单选题1.假定所有变量均已正确说明,下列程序段运行后x的值是:int a=0,b=0,x=35;if(!a) x--;if(b) x=3;else x=4;A)34B) 4C)35D) 32.与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是:A)if (x>0) y=1;else if(x<0)y=-1;else y=0;B) if(x){if(x>0)y=1;else if(x<0)y=-1;else y=0; }C) y=-1;if(x){ if(x>0)y=1;else if(x==0)}else y=-1;D) y=0;if(x>=0){ if(x>0)y=1;else y=-1;}3.为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与()组成配对关系。
A)缩排位置相同的ifB)在其之前未配对的ifC)在其之前未配对的最近的ifD)同一行上的if4.能将变量 u 、s中的最大值赋给变量t 的是:A)if(u>s) t=u;t=s;B)t=u; if(t ) t=s;C)if(u>s) t=s;else t=u;D)t=s; if(u ) t=u;5.对下面三条语句(其中s1和s2为内嵌语句),正确的论断是(1)if (a) s1;else s2;(2) if (a==0) s2;else s1;(3)if (a!=0) s1;else s2;A)三者相互等价B)1和2等价,但与 3不等价C)三者互不等价D)1和3等价,但与2不等价6.若执行下面的程序时从键盘上输入 5 ,则输出是:int x; scanf("%d",&x);if(x++>5) printf("%d\n",x); else printf("%d\n",x--);A)7B) 6C) 5D) 4一、判断题1.i f (a = 1) printf(“One\n”) ; 语句是否正确 ( 正确 )2.选择结构可以使用嵌套形式. ( )二、填空题结构化程序设计所规定的三种基本控制结构是 ________,__________,________三、分析题1.以下程序的执行结果是:int a=25,b=14,c=19;if(a++<=25&&b--<=2&&c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);else printf("###a=%d,b=%d,c=%d\n",a,b,c);2.以下两条if语句可合并成一条if语句为:if(a<=b) x=1; else y=2;if(a<=b) printf("**** y=%d\n",y);else printf("#### x=%d\n",x);3.以下程序的执行结果是:main(){ int a,b,c;a=2;b=3;c=1;if (a>b)if (a>c) printf("%d\n",a);else printf("%d\n",b);printf("end\n");}4.以下程序的执行结果是:main(){ int a,b,c,d,x;a=c=0;b=1;d=20;if(a)d=d-10;else if(! b)if (! c)x=15;else x=25;printf("d=%d\n",d);}5.以下程序在输入5,2之后的执行结果是: main(){ int s,t,a,b;scanf("%d,%d",&a,&b);s=1;t=1;if(a>0) s=s+1;if(a>b)t= s + t;else if(a==b) t=5;else t=2*s;printf("s=%d,t=%d\n",s,t);}6.写出下列程序的输出结果:main(){ int a=100;if(a>100) printf("%d\n",a>100);else printf("%d\n",a<=100);}。
C语言第五章习题带答案
练习5-1答案一、选择题1.合法的数组说明语句是( B )。
A.int a[]="string"; B.int a[]={0,1,2,3,4,5};C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'}; 2.以下对一维整型数组a的说明正确的是( D )。
A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.已知:int a[10];,则对a数组元素的正确引用是( D )。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]4.以下对一维数组a进行正确初始化的语句是( C )。
A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={};C.int a[]={0}; D.int a[2]={10, 9, 8};5.对以下说明语句的正确理解是( B )。
int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确二、填空题6.求所有不超过200的N值,N的平方是具有对称性质的回文数。
所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。
例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。
#include <stdio.h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。
C语言第五章习题带答案
练习5-1答案一、选择题1.合法得数组说明语句就是( B )。
A.int a[]="string";B.int a[]={0,1,2,3,4,5};C.char a="string";D.char a[5]={'0', '1', '2', '3', '4', '5'};2.以下对一维整型数组a得说明正确得就是( D )。
A.int a(10);B.int n=10, a[n];C.int n;D.#define SIZE 10scanf("%d", &n); int a[SIZE];int a[n];3.已知:int a[10];,则对a数组元素得正确引用就是( D )。
A.a[10]B.a[3、5]C.a(5)D.a[10-10]4.以下对一维数组a进行正确初始化得语句就是( C )。
A.int a[10]=(0, 0, 0, 0, 0);B.int a[10]={};C.int a[]={0};D.int a[2]={10, 9, 8};5.对以下说明语句得正确理解就是( B )。
int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值得个数不相同,所以此语句不正确二、填空题6.求所有不超过200得N值,N得平方就是具有对称性质得回文数。
所谓回文数就就是将一个数从左到右与从右到左读都就是一样得,例如:34543与1234321都就是回文数。
例如:满足题意要求得数有:N=1,11*11=121;N=111,111*111=12321。
#include <stdio、h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。
C语言第五章习题及答案
第五章习题答案一、选择题1) 有以下程序#include <stdio.h>main(){ int n=2,k=0;while(k++&&n++>2);printf("%d %d\n",k,n);}程序运行后的输出结果是A)0 2 B)1 3 C)5 7 D)1 22)有以下程序:main(){ int k=5;while(--k) printf("%d",k-=3);printf("\n");}执行后的输出结果是()。
A)1 B)2 C)4 D)死循环3)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”y=%d\n”,y);}程序执行后的输出结果是A)y=0 B)y= -1 C)y=1 D)while构成无限循环4) 若变量已正确定义,有以下程序段i=0;do printf("%d,",i);while(i++);printf("%d\n",i)其输出结果是A)0,0 B)0,1 C)1,1 D)程序进入无限循环5)有以下程序:main(){ int i;for(i=1;i<=40;i++){ if(i++%5==0)if(++i%8==0) printf("%d",i); }printf("\n");}执行后的输出结果是()。
A)5 B)24 C)32 D)406) 有以下程序#includes <stdio.h>main(){ int a=1,b=2;for(;a<8;a++) {b+=a; a+=2;}printf ("%d,%d\n",a,b);}程序运行后的输出结果是(A)9,18 (B)8,11 (C)7,11 (D)10,147) 有以下程序#include<stdio.h>main(){int y=9;for( ; y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)741 B)963 C)852 D)8) 一下程序段中的变量已正确定义for(i=0;i<4;i++,j++)for(k=1;k<3;k++); printf("*");程序段的输出结果是A)******** B)**** C)** D)*9) 有以下程序#iinclude <stdio.h>main(){ int i,j;for(i=3; i>=1; i--){ for (j=1;j<=2;j++) printf(“%d”,i+j);printf(“\n”);}}程序的运行结果是()A) 2 3 4 B) 4 3 2 C) 2 3 D) 4 53 4 5 5 4 3 3 4 3 44 5 2 3 答案:D10)有以下程序main(){int i,j;for(i=1;i<4;i++){for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j);printf(“\n”);}}程序运行后的输出结果是A) 1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=32*1=2 2*2=4 2*2=4 2*3=63*1=3 3*3=9C) 1*1=1 D) 1*1=11*2=2 2*2=4 2*1=2 2*2=41*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9 11) 有以下程序#include<stdio.h>main(){int i,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++) m=m%j;printf("%d\n",m);}程序的运行结果是A)0 B)1 C)2 D)312) 有以下程序#include <stdio.h>main(){ int i=5;do{ if (i%3= =1)if (i%5= =2){printf(“*%d”,i); break; }i++;}while(i!=0);printf(“\n”);}程序的运行结果是A)*7 B)*3*5 C) *5 D)*2*6答案:A13) 有以下程序#include <stdio.h>main(){ int c=0,k;for(k=1;k<3;k++)switch(k){ default:c+=k;case 2:c++;break;case 4:c+=2;break;}printf("%d\n",c);}程序运行后的输出结果是A)3 B)5 C)7 D)914) 设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!='\n')n++;B)n=0;while(getchar()!='\n')n++;C)for(n=0;getchar()!='\n';n++);D)n=0;for(ch=getchar();ch!='\n';n++);15)有以下程序#includemain(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11 B)7,1 C)7,11 D)6,116) 要求通过while循环不断读入字符,当读入字母N时结束循环。
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<n;i++){scanf("%d",&x);if(x%2==0) {s+=x;k++;}}ave=s/k;printf("s=%d,ave=%d\n",s,ave );}第二题:#include "stdio.h"void main( ){char c;int zm=0,sz=0;do{c=getchar();if(c>='A'&&c<='Z' || c>='a'&&c<='z')zm++; else if(c>='0'&&c<='9')sz++;}while(c!='*');printf("zm=%d,sz=%d\n",zm,sz );}第三题:#include "stdio.h"void main( ){int n,s=0,d,x;scanf("%d",&n);x=n;while(n!=0){d=n%10;s+=d;n=n/10;}printf("n=%d,s=%d\n",x,s );}第四题:#include "stdio.h"void main( ){char c;do{c=getchar();if(c >= 'A' && c <= 'Z') putchar(c+32); else if(c >= 'a' && c < 'z' )putchar(c-32); }while(c!='\n');}第五题:#include "stdio.h"void main( ){int k=0; float t=200;while(t<500){ t=t*(1+0.045);k++;//if(t>=500)break; }printf("after %d years: t=%f",k,t);}第六题:#include "stdio.h"void main( ){int m,d,x;for(m=1;m<=999;m++){ x=m;if(x%3==0){while(x!=0){ d=x%10;if(d==5) {printf("%4d",m);break;}x=x/10;}}}}第七题:#include "stdio.h"void main( ){int m,k=0;for(m=7; 1 ;m++){if(m%2==1&&m%3==2&&m%5==4&&m%6==5&&m %7==0){printf("m=%d\n",m);k++;}if(k==5)break;}}。
C语言第五章课后答案
}
xt5-5
#include <stdio.h>
int main()
{
int a,n,i=1,sn=0,tn=0;
printf("a,n=:");
scanf("%d,%d",&a,&n);
while (i<=n)
{
tn=tn+a; /*赋值后的tn为i个a组成数的值*/
sn=sn+tn; /*赋值后的sn为多项式前i项之和*/
if (n>8) printf(",%d",k9);
if (n>9) printf(",%d",k10);
printf("\n");
}
}
return 0;
}
xt5-9-2
#include <stdio.h>
int main()
{int m,s,i;
for (m=2;m<1000;m++)
{s=0;
for (i=1;i<m;i++)
count++; // count累加1
}
pi=pi*4; //多项式的和pi乘以4,才是π的近似值
printf("pi=%10.8f\n",pi); //输出π的近似值
printf("count=%d\n",count); //输出循环次数
return 0;
}
xt5-3
#include <stdio.h>
{x0=x1;
x1=(x0+a/x0)/2;
《C语言程序设计》教材习题答案第5章
《C语言程序设计》教材习题答案第5章一、选择题1.设有程序段”int k=10;while(k=0)k=k-1;”,则下面叙述正确的是D 循环体语句一次也不执行2.设有程序段”int x=0,s=0;while(!x!=0)s+=++x;printf(“%d”,s);”则A 运行程序段后输出13.若有语句”int x=3;do{printf(“%d\n”,x-=2);}while(!(--x));”,则该程序段C 输出的是1和-24.下面循环语句中,错误的是D int a=1,b=2;do b--while(b= =0);5.已知”int i=5;”,下列do…while循环语句的循环次数为C 5do{printf(“%d\n”,i--);}while(i!=0);6.循环语句”for(int i=0,j=10;i=j=10;i++,j--)”的循环次数是D 无限7.循环语句”while(int i=0;)i--;”的循环次数是A 08.下述有关break语句的描述中,不正确的是C break语句用于if 语句的内嵌语句内,它结束该if语句9.下面关于循环语句的描述中,错误的是B 循环体内必须同时出现break语句和continue语句10.以下不是死循环的是 D for(;(c=getchar()!=’\n’);)printf(“%c”,c);11.执行语句”for(i=0;i++<3;);”后,变量i的值为C 412.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C 循环4次13.与语句”while(!x);”等价的语句是A while(x= =0);14.执行下列程序段后a的值为B 2int a=1,b=10;do{b-=a;a++;}while(b--<0)二、编程题1.读入用户输入的6个整数并显示其平均值。
#includemain(){float sum=0;int tmp;int i;for(i=0;i<6;i++){printf("输入第%d个数:",i+1);scanf("%d",&tmp);sum=sum+tmp;}printf("平均值是:%f",sum/6);}2.先读入一个正整数n,然后计算并显示前n个偶数的和。
c语言选择程序设计(第五章)习题答案
}*/
//*****采用switch语句编写*****//
void main()
{
long i;
float bonus;
scanf("%ld",&i);
int g=i/100000;
switch(g)
else if(i<=1000000)
bonus=(i-600000)*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1; //bonus=(i-600000)*0.015+bonus6;
else
bonus=(i-1000000)*0.01+400000*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1; //bonus=(i-1000000)*0.01+bonus10;
bonus=(i-200000)*0.05+100000*0.075+100000*0.1; //bonus=(i-200000)*0.05+bonus2;
else if(i<=600000)
bonus=(i-400000)*0.03+200000*0.05+100000*0.075+100000*0.1; //bonus=(i-400000)*0.03+bonus4;
case 9:
bonus=(i-600000)*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1;//bonus=(i-600000)*0.015+bonus6;
C语言程序设计教程 第五章 课后习题参考答案
C语言程序设计教程第五章课后习题参考答案一、选择题1. B2. A3. C4. B5. D二、填空题1. while2. binary3. 164. 35. continue6. global三、判断题1. 错误2. 正确3. 错误4. 错误5. 正确四、编程题1.```c#include<stdio.h>int main() {int num;printf("请输入一个整数:"); scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num); } else {printf("%d是奇数\n", num); }return 0;}```2.```c#include<stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("%d与%d的和为%d\n", num1, num2, num1 + num2); return 0;}```3.```c#include<stdio.h>int isPrime(int num) {int i;if (num <= 1)return 0;for (i = 2; i <= num / 2; i++) {if (num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num); } else {printf("%d不是素数\n", num); }return 0;}```4.```c#include<stdio.h>int factorial(int num) {int i, result = 1;for (i = 1; i <= num; i++) {result *= i;}return result;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("%d的阶乘为%d\n", num, factorial(num)); return 0;}```五、简答题1. C语言逻辑与运算符(&&)短路特性是什么?答:C语言逻辑与运算符(&&)具有短路特性,即在进行逻辑与运算时,如果前一个表达式的值为假(0),则后面的表达式将不会被计算,整个逻辑与表达式的值直接为假(0)。
c语言 大学 第5章课后答案
第5章数组大家在前面的章节中已经碰到过这样的例子:求两个整数中的较小的那个,或者求三个整数中的最小数。
那么大家想一下,如果题目中要求大家找出10个整数中的最小数呢,甚至100个整数中的最小数呢?在计算机应用领域中,也常常遇到这类处理大量数据的问题,其特点也是:数据量很大,数据之间存在一定的内在关系。
那么,对于这样的一组数据,计算机如果用前面讲过的简单变量来处理就很不方便,甚至不能处理。
考虑上面的求出10个整数中的最小数,先要设10个变量a1,a2,a3……a10,然后这10个变量之间又要相互比较,求出最小数。
显然是非常麻烦,要是成千上万个数据,是不是还要设一万个变量呢?为了解决这一问题,C语言引入了一个重要的数据结构——数组,它是具有相同数据类型的变量集合,这些变量具有相同的名字,但用不同的下标表明数据的位置,我们称这些变量为数组元素。
将数组与循环结合起来,可以有效地处理大批量的数据,大大提高了工作效率,十分方便。
本章介绍在C语言中怎样定义和使用数组,包括一维数组,二维数组和字符串。
5.1一维数组5.1.1一维数组的定义和引用例5-1要求从键盘中输入10个互不相同的整数,求其中的最小数并输出。
10 #include "stdio.h"20 main()30 {40 int a[10]; /*定义数组a*/50 int i,min; /*定义变量i和min*/60 for(i=0;i<=9;i++) /*循环10次*/70 scanf("%d",&a[i]); /*从键盘输入数给数组元素赋值*/80 for(i=0;i<=9;i++) /*循环10次*/90 printf("%d\t",a[i]); /*输出数组元素的值*/100 min=a[0]; /*给min变量赋初值*/110 for(i=1;i<=9;i++) /*循环9次*/120 if(min>a[i])130 min=a[i]; /*比较min与数组中的每个数的大小,将较小的赋给min */140 printf("The min is %d\n",min); /*输出最小值*/ 150 }该程序的流程图如图5-1所示。
c语言程序设计 杨路明 第五章
绵
阳
师
范
学
院
论
坛
ww
w.
mn
ub
} getch();
bs
}
.c
if (n > 1) printf("%d,%d", k1, k2); /* n>1 表示 a 至少有 2 个因子 */ if (n > 2) printf(",%d", k3); /* 注意以下 if 的用法,追加的方法 */ if (n > 3) printf(",%d", k4); if (n > 4) printf(",%d", k5); if (n > 5) printf(",%d", k6); if (n > 6) printf(",%d", k7); if (n > 7) printf(",%d", k8); if (n > 8) printf(",%d", k9); if (n > 9) printf(",%d", k10); printf("\n");
设某县 2000 年工业总产值为 200 亿元,如果该县预计平均年工业总产值增长率为 4.5%, 那么多少年后该县年工业总产值将超 500 亿元。 答 main() { float x=200; int n=0;
绵
阳
师
范
学
院
论
坛
ww
4 ★输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。
ub
bs
.c
n
do { x*=(1+0.045); n++; }while(x<500); printf("n=%d",n); getch();
c语言第五章选择结构程序设计(习题册答案)
c语⾔第五章选择结构程序设计(习题册答案)第五章选择结构程序设计基础练习(A)⼀、填空题1、关系表达式的运算结果是逻辑值。
C语⾔没有逻辑型数据,以1代表“真”,以0代表“假”。
2、逻辑运算符!是单⽬运算符,其结合性是由右结合性。
3、C语⾔提供的三种逻辑运算符是&&、|| 、!。
其中优先级最⾼的为!,优先级最低的为| | 。
4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和⾮0的整数,也可以是任何类型的数据。
系统最终以0 和⾮0 来判定它们属于“真”或“假”。
5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。
6、设x,y,z均为int型变量,请写出描述“x或y中有⼀个⼩于z”的表达式x7、条件“22&&x<3。
8、判断char型变量ch是否为⼤写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。
9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。
10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。
11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是0。
12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。
13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。
14、有int x,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。
!(x>y)+(y!=z)||(x+y)&&(y-z)15、有int a=3,b=4,c=5,x,y;,则以下表达式的值为0。
!(x=a)&&(y=b)&&016、if (!k) a=3;语句中的!k可以改写为k= =0,使其功能不变。
C语言第五章课后答案(1).docx
〃5.4有3个整数a,b,c,有键盘输入,输出其中最大的数。
#ifO;#include<stdio.h>void main(){int a,b9c9max;printf「输出三个数:”);scanf(H%d%d%d n,&a,&b,&c); printf(M输出最大的一个数:”);max=a;if(max<b)max=b;if(max<c)max=c;printf(H %d\n n,max);}#endif;#ifO;〃方法二#include<stdio.h> void main(){int max(int x,int y,int z);int a9b9c9d; scanfC'%d,%d,%(T,&a,&b,&c); d=max(a,b^c);printf(H%d\n,\d);}int max(int x9int y,int z){int n;if(x>y)if(x>z) n=x;else n=z;elseif (y>z) n=y;else n=z;return(n);#endif;#ifO;//5.5有一个函数,写一段程序,输入x,输出y。
#include<stdio.h>void main(){int x,y;printf(n输入x:n);scanf(n%d n,&x);if(x<l)y二x;if(x>=l&&x<10)y=2*x-l;if(x>=10)y=3*x-ll;prmtf(H%d n,y);#endif;#ifO;〃5・6给出一百分制成绩,要求输出成绩等级A,B,C,D,E。
90分以上A,80~89 分为B, 70~79分为C,60~69分为D, 60分以下为E./*#include<stdio.h>void main(){int grade;scanf(n %d M,&grade);if(grade>90)printf(n A\n n);if(grade>80 && grade<89)printf(M B\n u);if(grade>70 && grade<79)printf(n C\n n);if(grade>60 && grade<69)printf(n D\n M);if(grade<60)#endif;#ifO;〃5・7给一个不多于5位数的正整数,要求:1,求出它是几位数;2,分别输出 每一位数字;3,按逆序输出各位数字,例如原数位321,应输出123。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一题:
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<n;i++)
{scanf("%d",&x);
if(x%2==0) {s+=x;k++;}
}
ave=s/k;
printf("s=%d,ave=%d\n",s,ave );
}
第二题:
#include "stdio.h"
void main( )
{
char c;
int zm=0,sz=0;
do
{c=getchar();
if(c>='A'&&c<='Z' || c>='a'&&c<='z')zm++; else if(c>='0'&&c<='9')sz++;}while(c!='*');
printf("zm=%d,sz=%d\n",zm,sz );
}
第三题:
#include "stdio.h"
void main( )
{
int n,s=0,d,x;
scanf("%d",&n);
x=n;
while(n!=0)
{d=n%10;
s+=d;
n=n/10;}
printf("n=%d,s=%d\n",x,s );
}
第四题:
#include "stdio.h"
void main( )
{char c;
do
{c=getchar();
if(c >= 'A' && c <= 'Z') putchar(c+32); else if(c >= 'a' && c < 'z' )putchar(c-32); }while(c!='\n');
}
第五题:
#include "stdio.h"
void main( )
{int k=0; float t=200;
while(t<500)
{ t=t*(1+0.045);
k++;
//if(t>=500)break; }
printf("after %d years: t=%f",k,t);
}
第六题:
#include "stdio.h"
void main( )
{int m,d,x;
for(m=1;m<=999;m++)
{ x=m;
if(x%3==0)
{
while(x!=0)
{ d=x%10;
if(d==5) {printf("%4d",m);break;}
x=x/10;
}
}
}
}
第七题:
#include "stdio.h"
void main( )
{int m,k=0;
for(m=7; 1 ;m++)
{
if(m%2==1&&m%3==2&&m%5==4&&m%6==5&&m %7==0)
{printf("m=%d\n",m);k++;}
if(k==5)break;
}
}。