c语言第五章习题答案

合集下载

数据结构(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章 数组√

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语言课后练习题答案第五章

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语言程序设计教程 第五章 课后习题参考答案

C语言程序设计教程 第五章 课后习题参考答案
printf("%d\t",f);
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章课后练习题答案

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语言第五章习题带答案

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语言第五章习题带答案

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语言第五章习题及答案

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时结束循环。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;
}
}。

相关文档
最新文档