计算机教材全部习题答案_第1页
计算机教材全部习题答案_第2页
计算机教材全部习题答案_第3页
计算机教材全部习题答案_第4页
计算机教材全部习题答案_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第一章习题

1.1选择题:

⑴一个C程序的执行是(A

A)从main()函数开始,直到main()函数结束

B)从第一个函数开始,直到最后一个函数结束

C)从第一个语句开始,直到最后一个语句结束

D)从main()函数开始,直到最后一个函数结束

⑵计算机能直接执行的语言是(B)。

A)汇编语言B)机器语言C)高级语言D)A和B

⑶一个C程序是由(C)。

A)一个主程序和若干子程序组成

B)若干过程组成

C)一个或多个函数组成

D)若干子程序组成

(4)下列说法正确的是(B)。

A)C程序书写格式限制严格,一行内必须写一个语句

B)C程序书写比较自由,一个语句可以分行写在多行上

C)C程序书写格式限制严格,要求一行内必须写一个语句,并要求行号

D)C程序中一个语句不可以分写在多行上

1.2填空题:

⑴构成C语言程序的基本单位是函数。

⑵C语言源程序文件的后缀是一£,经过编译后,生成文件的后缀是,obi,经过连接后,

生成文件的后缀是.exe。

⑶在TURBOC环境中用RUN命令运行一个C程序时,所运行的程序的后缀是.exe。

(4)一个C语言程序必须有而且只能有一个主函数,它的函数名为main。

⑸一个函数有两部分组成,第一部分称为函数苜部;第二部分称为函数体。

(6)函数体由符号[开始,用符号结束。函数体的前面是声明部分,其后是

执行部分。

1.3上机编辑、调试、运行下列程序,发现错误,并改正之。

/*求1+2+3+....+10的和*/

#include<stdio.h>

voidmain()

{

ints,n;

sum=0;n=1;

while(n<0)

{sum=sum+n;

n=n+1;

}

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

第二章习题

2.1选择题

⑴在以下标识符中,(B)是合法的用户标识符。

A)a#bB)getchC)voidD)ab*

⑵不合法的八进制数是(B)。

A)0B)028C)077D)01

⑶不合法的十六进制数是(A)oOx

A)oxffB)OXabcC)0x11D)0x19

(4)以下选项中正确的整型常量是(B)。

A)12.B)-20C)1,000D)456

⑸以下选项中正确的实型常量是(D)o

A)0B)3.1415C)0.329xl02D).871

(6)以下选项中不正确的实型常量是(B)o

A)2.607E-1B)0.8103e3C)-88.77D)871e-2

⑺以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子上的C语言表达

y'x-z

式是(A)。

A)x/y*zB)x*(1/(y*z))C)x/y*l/zD)x/y/z

(8)在C语言中,字符型数据在内存中以(C)的形式存放。

A)原码B)补码C)ASCII码D)BCD码

(9)sizeof(float)是(C)。

A)一种函数调用B)一个不合法的表示形式C)一个整型表达式D)一个实型表达式

⑩表达式b=((241&15)&&('Z'l'a'))的值是(B)。

A)0B)1C)TRUED)FALSE

(ID若变量已正确定义并赋值,符合C语言语法的表达式是(B)。

A)a=a+7;B)a=7+b+c,a++C)int(13.4%4)D)a=a+7=c+b

⑫以下叙述中正确的是(A)。

A)a是实型变量,C语言允许进行a=10,因此可以这样说:实型变量中允许存放整型值

B)在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值

改变为b的值,b的值由原值改变为0

D)已有a=3,b=5。当执行了表达式2=1>,b=a之后,已使a中的值为5,b中的值为3

2.2填空题

⑴数学式子cos2x•a+b写成C语言表达式是cos(x)*cos(x)*((a+b)/(a-b))_______。

a-b

⑵a是整型变量,能将a清零的表达式是a=0;能将a中的各二进制为均置成1的表达式是

a=-lo

(4)若a,b和c均是int型变量,则执行下面表达式后,a值为兀,b值为,c值为2o

a=(b=4)+(c=2)

⑸经过下述赋值后,变量x的数据类型是int。

intx=2;

doubley;

y=(double)x;

(6)若x和n均是整型变量,且x和n的初值均为5,则执行下面表达式后,x值为10,n值

为6。

x+=n++x=x+n++

⑺若有定义:intb=7;floata=2.5,c=4.7;则下面表达式的侑为4.5。

a+(int)(b/3*(int)(a+c)/2)%4

⑻若有定义:intm=7,y=2;则执行下面表达式的值后,v值为-24。

y+=y-=m*=y

(9)表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的类型为整型。

(ID条件4,-1<x<3或x<-99”的C语言表达式是___(x>-l&&x<3)ll(x<-99)—。

⑫若x和a均是整型变量,则执行表达式①后的x值为12,执行表达式②后的x值为

4_,,

①x=(a=4,6*2)

②x=a=4,6*2

⑬一个字节包含」个二进制位,在一个字节中能存放的最大(十进制)整数是,它的二

进制数的形式是;最小(十进制)整数是,它的二进制数的形式是。

(14)当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是,它的二进制

数的形式是;最小(十进制)整数是,它的二进制数的形式是。

2.3改错题

(1)#includestdio.h;#include<stdio.h>正确

main();(多分号)/*mainfunction*/

(

floatr,s;isradius,sisareaofcircular*/

r=5.0;

s=3.14159*r*r;

printf(n%f\nu,s);

(2)includestdio.h(缺V>号)#include<stdio.h>正确

main();/*mainfunction*/

(

floata,b,c,v;/*a,b,caresides,visvolumeofcube*/

a=2.0;b=3.0;c=4.0;(缺;号)

v=a*b*c;

printf(u%f\nn,v);(缺;号)

第三章习题

3.1什么是C语言的基本执行单位?C语言的语句是如何分类的?

3.2C语言的流程控制语句有哪几种?

3.3结构程序设计的基本结构有哪儿种?

3.4C语言的输入输出操作是由语句来实现的吗?

3.5顺序结构程序的特点是什么?

3.6输入下面的程序,观察运行结果。

#include<stdio.h>

voidmain()

{floatal,a2;

doublebl,b2;

al=3141.59;a2=0.000001;

bl=3141.59;b2=0.000001;

printf(1,%f,%lf\n,',al+a2,b1+b2);

)

答案:3141.590089,3141.590001

3.7输入下面的程序,观察运行结果。

#include<stdio.h>

voidmain()

{charch;

intk;

ch=,a,;k=66;

printf(H%c,%d,%x,%o,%d,%cn,ch,ch,ch,ch,k,k);

)

答案:a,97,61,141.66,B

3.8输入下面的程序,观察运行结果。

#include<stdio.h>

voidmain()

{

floatx;

doubley;

x=123.45678;

y=123.45678;

printf(u%-4.2f,%-6.2e\nu,x,y);

答案:123.46,1.2e+02

3.9输入下面的程序,观察运行结果,并说明程序的功能(注意:运行时输入大写字母)。

#include<stdio.h>

voidmain()

{charcl,c2;

cl=getchar();

printf(u%c,%d\nn,cl,cl);

c2=cl+32;

printf(u%c,%d\nn,c2,c2);

)

答案:A,65

a,97

该程序是将键盘输入的大写字母转换为对应的小写字母。

3.10编写程序:求三个正整数(小于32767)的算术平均值。

voidmain()

{inta,b,c;

floatd;

printf(u\ninputa,b,c=n);

scanf(M%d,%d,%dn,&a,&b,&c);

d=(a+b+c)/3.0;

printf(,,\nd=%f,,,d);

)

3.11编写程序:已知圆的半径,求圆的周长和面积(要求半径值由键盘接受)。

voidmain()

{intr;

floatk,s;

printf(°\ninputr=n);

scanf(n%d\&r);

k=2*3.14159*r;

s=3.14159*r*r;

printf(',\nL=%f\nS=%f',,k,s);

)

3.12编写程序:计算a+b?-6的值,其中:

a=4,b=3;

a=5,b=2;

a=2,b=8o

voidmain()

(

floata,b,h;

printf(H\ninputa,b=n);

scanf(”%f,%f”,&a,&b);

h=a+b*b-6;

printf(,,\na=%f,b=%f\nh=%f',,a,b,h);

第四章习题

4.1判断下列陈述的真假:

⑴在三种形式的if语句中,在if关键字之后均为表达式。该表达式只能是逻辑表达式或关系表达

式。False

⑵在if语句中,关键字之后的表达式必须用括号括起来,并随后跟分号(;)oFalse

⑶在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,

则必须把这一组语句用{}括起来组成一个复合语句。True

⑷条件运算符的结合方向是自右至左。False

⑸switch语句中的case后面必须是整常量表达式,如整数常数、字符常量。True

⑹当switch的整类型表达式的结果值与某一个case块的整常量表达式的值相等时,将转至该case

块,并且执行该case与下一个case之间的所有语句。False

⑺可以使用goout语句跳出switch语句。False

⑻else总是与它前面最近的if配对。True

4.2阅读下面的程序,说明程序的运行结果。

#include<stdio.h>

voidmain()

{intx=10,y=20,t;

if(x!=y){t=x;x=y;y=t;}

printf(H%d,%d\nM,x,y);

}

答案:20,10

4.3输入下面的程序,观察运行结果并说明程序的功能。

#include<stdio.h>

voidmain()

{intx=20;

if(x>=0)

if(x<50)

printf("xisok\nn);

else

printffxisnotok\nH);

)

答案:xisok

4.4分别输入下面两个程序,观察运行结果,说明有何不同。

程序段1:

#include<stdio.h>

voidmain()

{intx=20;

if(x<=0)

if(x<50)

printf(nxisok\n");

else

printf(nxisnotok\n");

}答案:什么也不输出.

程序段2:

#include<stdio.h>

voidmain()

{intx=20;

if(x<=0)

{if(x<50)printf(uxisok\nH);}

else

printf(nxisnotok\nn);

)答案:xisnotok.

4.5输入下面的程序,观察运行结果并说明程序的功能。

#include<stdio.h>

voidmain()

{intx,a;

scanf("%d”,&x);

a=x%10;

switch(a)

{case0:

case2:

case4:

case6:

case8:priintf("even!\n");break;

default:printf(“odd!\n");

)

}

答案:输入偶数,则输出even!输入奇数,则输出odd!

4.6编写程序:从键盘输入三个正整数,按由大到小的顺序输出。

#include<stdio.h>

voidmain()

{inta,b,c,t;

printf(ninputa,b,c=:n);

scanf(',%d%d%d,,,&a,&b,&c);

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

printf("%5d%5d%5dn,a,b,c);

)

4.7编写程序:从键盘输入一个正整数,判断它是否既能被3整除,又能被7整除。方法1:

#include<stdio.h>

voidmain()

{intk;

scanf(n%d",&k);

if(k%3==0&&k%7==0)printf(H\nyes");

elseprintf(Anno");

方法2:

#include<stdio.h>

voidmain()

{

intx;

printf("pleaseinputx=H);

scanf(*'%d",&x);

if(x%3==0)

{if(x%7==0)

printf("3—yes7——yes");

else

printf(n3-yes7-一no");

)

else

{if(x%7==0)

printf(M3-no7-yes");

else

printf(n3--no7-no");

)

)

4.8编写程序:

求函数:

'X+5(X>=0)

V

y=

X-5(X<0)的值。

#include<stdio.h>

voidmain()

{intx,y;

printf(npleaseinputx=n);

scanf(',%d,,,&x);

if(x>=0)

y=x+5;

else

y=x-5;

printf("y=%dn,y);

第五章习题

5.1试比较三种循环语句的异同。

5.2选择题:

(1)下面关于for循环的正确描述是(D)(>

A)for循环只能循环次数已经确定的情况

B)for循环是先执行循环体语句,后判断终止条件

C)在for循环中,不能用break语句跳出循环体

D)在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

⑵对for(表达式1;;表达式3)可以理解为(B)。

A)for(表达式1;0;表达式3)

B)for(表达式1;1;表达式3)

C)for(表达式1;表达式1;表达式3)

D)for(表达式1;表达式3;表达式3)

⑶若有“intm;",则以下循环执行次数是(B)。

for(m=2;m==0;)

A)无限次B)0次C)1次D)2次

⑷下面不是死循环的是(A)o

A)fbr(y=0,x=l;x>4-+y;x=i++)i=x;

B)for(;;x=++l);

C)while(l){x++;}

D)for(i=10;;i--)sum+=i;

⑸下面程序段的运行结果是(B)o

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

{if(i==2)continue;

printf("%d”,i);

AX

/)01B)0134C)01234D)不打印

1\

(6/下面程序段的运行结果是(B)。

intk=10;

while(k=0)k=k_l;

A)while循环执行10次B)循环是无限循环

C)循环体语句一•次也不执行D)循环体语句执行一次

⑺执行语句“for(n=l;n++<4;);”后变量n的值是(C)。

A)3B)4C)5D)不定

(8)以下正确的描述是(B)。

A)continue语句的作用是结束整个循环的执行

B)只能在循环体内和switch语句体内使用break语句

C)在循环体内使用break语句和continue语句的作用相同

D)从多层循环嵌套中退出时,只能使用goto语句

5.3写出下列程序的运行结果

(1)

main()

(

inti=0,a=0;

while(i<20)

{for(;;)

if(i%10==0)break;

elsei一一;

i+=ll;a+=i;

)

printf("%d\n”,a);

}

答案:32

(2)

main()

{inti,j,b=O;

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

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

if(j>=i)b++;

printf("%d\n”,b);

}

答案:3

5.4下面程序的功能是从键盘输入10个无序的整数,去掉最大数和最小数,再求其平均值。请填空。

main()

(

intj,x,max,min,sum;

floatave;

printf("Enter10number:\nn);

scanf("%dH,&x);

sum=max=min=x;

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

{scanf("%d'',&x);

sum+=x;

if(x>max)max=x;

elseif(x<min)min=x;

}

sum=sum-max-min:

ave=sum/8.0;

print(uTheaverageis%.2f\nM,ave);

)

5.5编程计算1〜100之间是7的倍数的数值之和。

#include<stdio.h>

main()

{inti,s=0;

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

if(i%7==0)s+=i;

printf(n\ns=%dn,s);

)

5.6编写程序,利用下面公式求人的近似值:

H76=1/12+1/22+1/32+1/42+-,直到某项绝对值不大于10’为止。

#include<stdio.h>

#include<math.h>

main()

{longn=1;

floatx,sum=0;

x=1.0/(n*n);

while(x>=le-12)

{sum=sum+x;

n++;

x=1.0/(n*n);

)

sum=sqrt(sum*6);

printf("\nPI=%f,n=%ldu,sum,n-1);

)

5.7计算键盘输入的字符数。(提示:用getcharQ)

方法1:

#include<stdio.h>

#include<string.h>

main()

{charc;

intn=0;

c=getchar();

while(c!=,\n,)

{n++;

c=getchar();

)

printf(nn=%dn,n);

方法2:

#include<stdio.h>

main()

{charc;

intchgs=O;

printf("Enteronelinechar:\nn);

while(c=getchar()!=,\n')

chgs++;

printf("chgs=%d\n",chgs);

)

5.8用1元人民币兑换1分、2分、5分的硬币,编程计算共有多少种不同的兑换方法。

方法1:

#include<stdio.h>

main()

{intx,y,z,he=0;

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

for(y=1;y<=5O;y++)

{z=100-x*5-2*y;

if(z>0)

{he++;

printf("\nx=%d\ty=%d\tz=%d,',x,y,z);}

)

printf("\nhe=%d",he);

)

结果:he=461

方法2:

#include<stdio.h>

#include<math.h>

main()

{intg,k,s,fa=O;

for(g=l;g<=93;g++)

for(k=1;k<=47;k++)

{s=(100-g-2*k)/5;

if(g+2*k+5*s==100&&s>0)fa=fa+1;

)

printf(n\nfa=%d\n",fa);

)

结果:fa=461

5.9编程求出1000以内的所有完全数。若一个数恰好等于它的因子之和(除自身外),则称该数为

完全数,例如:6=1+2+3,故6是完全数。

方法1:

#include<stdio.h>

#defineM1000

main()

{intkl,k2,k3,k4,k5,k6,k7,k8,k9,k10;

inti,a,n,s;

for(a=2;a<=M;a++)

{n=0;s=a;

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

if(a%i=0)

{n++;

s=s-i;

switch(n)

{case1kl=i;break;

case2k2=i;break;

case3k3=i;break;

case4k4=i;break;

case5k5=i;break;

case6k6=i;break;

case7k7=i;break;

case8k8=i;break;

case9k9=i;break;

case10:kl0=i;

if(s==0)

{printf(u%dItsfactorsaren,a);

if(n>l)printf(M%d,%dM,kl,k2);

if(n>2)printf(H,%dn,k3);

if(n>3)printf(n,%dn,k4);

if(n>4)printf(n,%dn,k5);

if(n>5)printf(n,%dn,k6);

if(n>6)printf(M,%du,k7);

if(n>7)printf(H,%dn,k8);

if(n>8)printf(,,,%d,,,k9);

if(n>9)printf(';%dn,klO);

printf(AnH);

结果:6yes,factorsare1,2,3

28yes,factorsare1,2,4,7,14,

496yes.factorsare1,2,4,7,16,31,62,124,248,

方法2:

#include<stdio.h>

main()

{intm,s,i;

for(m=2;m<=1000;m++)

{s=0;

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

if((m%i)==0)s=s+i;

if(s==m)

{printf(H%dyes,factorsare”,m);

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

if(m%i==0)printfC%d;',i);

printf(AnM);

)

)

)

结果:6yes,factorsare1,2,3

28yes.factorsare1,2,4,7,14,

496yes,factorsare1,2,4,7,16,31,62,124,248,

5.10编程统计从键盘输入的字符中数字字符的个数,用换行符结束输入循环。

方法1:

#include<stdio.h>

#include<string.h>

main()

{charc;

intn=0;

c=getchar();

while(c!=\n')

{if(c>='0‘&&c<='9')n++;

c=getchar();

)

printf("n=%d",n);

方法2:

#include<stdio.h>

main()

{chare;

intdigit=O;

printf(nEnteronelinechar:\n");

while((c=getchar())!='\n')

{if(c>=<0,&&c<=,9,)

digit++;

)

printf(',szgs=%d\n,',digit);

)

20

5.11编程求Z〃!(即求l!+2!+3!+…+20!)

n=l

方法1:

#include<math.h>

main()

(

floatsum=0,jc=l;

intn;

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

(

jc=n*jc;

sum=sum+jc;

)

printf(nsum=l!+2!+...20!=%f\nn,sum);

)

方法2:

#include<math.h>

main()

(

floatsumjc;

intm,i;

sum=0;

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

(

jc=l;

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

jc=jc*i;

printf(njc=%f\nn,jc);

sum=sum+jc;

printf(nsum=%e\nH,sum);

5.12编写程序,求出整数1〜1000之间的所有同构数。所谓同构数是指此数的平方数的最后几位数

与该数相等。例如,25的平方为625,376的平方为141376,所以25和376都是同构数。

方法1:

#include<stdio.h>

main()

{longi;

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

if(i*i%10=iIIi*i%100==iIIi*i%1000==i)printf(n\n%5dn,i);

)

方法2:

m#include<stdio.h>

main()

{longi,m,k,r,q;

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

{m=i;k=m*m;

while(m!=0)

{r=m%10;q=k%10;

if(r==q){m=m/lO;k=k/10;)

elsebreak;

)

if(m==0)printf(M%5d,%5dH,i,i*i);

)

)

方法3:

#include<stdio.h>

main()

{longi,pf;

printf("\n");

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

{pfi=i*i;

if(i==pf%10&&i<10){printf(,'\ni=%ld,pfe=%ldH,i,pf);continue;}

if(i==pf%100&&i<100){printf(u\ni=%ld,pf=%ld".i,pf);continue;}

if(i==pf%1000&&i<1000)printf(',\ni=%ld,pf=%ld,,,i,pf);

5.13编程序,输入一个正整数,输出其素数因子的乘积。例如,输入60,输出:60=2*2*3*5

方法1:

#include<stdio.h>

#include<math.h>

main()

{intk,i,j;

scanf("%d;&k);

printf("%d:",k);

i=2;

while(k!=O&&i<=k)

{if(k%i==O)

{printf("%3d”,i);

k=k/i;

i=2;}

elsei++;

})

方法2:

#include<stdio.h>

main()

{inti,x,k;

scanf(n%d",&x);

k=x;

printf(n\n%d='\x);

while(x!=O)

{for(i=2;i<=k;i++)

if(x%i==O)break;

x=x/i;

if(i<k)printf("%d*",i);

elseprintf(n\b\nn);

第六章习题

6.1选择题:

⑴下列程序输出结果是(B)。

main()

{inta[10]={l,2,3,4,5,6,7,8,9,10),i,k;

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

a[i]=i;

for(i=0,k=0;i<4;i++)

k+=a[i]+i;

printf(,,\n%d,,,k);

)

A)20B)12C)16D)18

⑵下列程序输出结果是(A)。

main()

{intn[2]={0},i,j,k=2;

for(i=0;i<k;i4-4-)

forG=0;j<k;j++)

nU]=n[j]+l;

printf("%d\n",n[2]);

)

A)不确定值B)3C)2D)1

⑶下列程序的输出结果是(A)。

main()

{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=O;

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

for(j=0;jv=i;j++)

s+=a[i][j];

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

)

A)18B)19C)20D)21

(4)下列程序输出结果是(C)。

main()

{

inta[3][3]={l,2,3,4,5,6,7,8,9},i;

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

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

)

A)1,5,9,B)1,4,7,C)3,5,7,D)3,6,9,

⑸当执行下面的程序时,如果输入ABC,则输出结果是(A)o

#include<stdio.h>

#include<string.h>

main()

{charss[10]=n12345H;

gets(ss);

strcat(ss,“6789”);

printf(M%sH,ss);

)

A)ABC6789B)ABC67C)12345ABC6D)ABC456789

(6)下列程序输出结果是(C)。

main。

charb[]="Hello,you";

b[5]=,\0,;

printf(n%sM,b);

A)Hello,youB)Hello,C)HelloD)Helloyou

6.2输入10个浮点型数,求它们的和、平均值、最大值、最小值。

方法1:

#include<stdio.h>

main()

{floata[10],sum=0,aver,max,min;

inti=0;

while(i<10)

{scanf(H%f",&a[i]);

sum+=a[i];

i++;

)

aver=sum/10.0;

max=min=a[0];

i=0;

while(i<10)

{if(a[i]>max)max=a[i];

elseif(a[i]<min)min=a[i];

i++;

)

printf(,,\nsum=%f\naver=%f\nmax=%f\nmin=%f,',sum,aver,max,min);

方法2:

#include<stdio.h>

main()

{inti,maxi,mini;

floatx[10],sum=0,ave,max,min;

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

{scanf(n%f,,&x[i]);

sum+=x[i];}

ave=sum/10;

max=min=x[0];maxi=mini=0;

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

{if(x[i]>max){max=x[i];maxi=i;}

if(x[i]<min){min=x[i];mini=i;}

)

printf(nsum=%f\nave=%f\nmax=%f,maxi=%d\nmin=%f,mini=%d\n",sum,ave,max,maxi,min,mini);

6.3求一个3*3的整型矩阵主对角线元素之和。

main()

{inti,j,a[3][3],sum=0;

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

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

scanf("%dn,&a[i][j]);

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

{printf(u\nH);

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

printf(n%-4du,a[i][j]);

)

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

sum+=a[il[i];

printf("\nsum=%dM,sum);

)

***6.3求一个3*3的整型矩阵付对角线元素之和。

main()

{inti,j,a[3][3]={L2,3,4,5,6,7,8,9},sum=0;

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

{printf(”\n)

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

printf(“%-4d”,明⑪;

)

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

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

if(i+j=2)sum+=a[i][i|;

printf("\nsum=%d'\sum);

)

6.4将一维实型数组元素进行排序。

#include<stdio.h>

main()

{floatt,a[10]={12.4,3,44,4.88,5.9,6.88,77.90,65.88,4.8,0.7,6.7};

inti,j,p;

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

printf(H%10.2r,a[i]);

printf(An,r);

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

{P=i;

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

if(a[p]>a[j])p=j;

if(p!=i)

{t=a[p];a[p]=a[i];a[i]=t;)

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

printf(M%7.2P,a[i]);

)

6.5从键盘上输入一个字符和一个字符串,查找输入的字符是否在输入的字符串中,若不在则输出

没有找到的信息,否则输出第一个与输入字符匹配的所在位置。

#include<stdio.h>

#include<string.h>

main()

{chara[10],c;

intflag=l,i,cor;

printf('\ninputastr:\n");

gets(a);

printf(Aninputach:\n");

c=getchar();

i=0;

while(a[i])

{if(c==a[i]){flag=0;cor=i;break;}

i++;

)

if(flag==O)

printf(”\nfind,No:%d”,cor);

else

printf(n\ncannotfind");

6.6求两个矩阵的乘积,输出结果。

#include<stdio.h>

main()

{inta[2][3]={l,23A5,6},b[3][2]={l,2,l,2,l,2},c[2][2];

inti,j,k;

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

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

{c[i]U]=0;

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

c[i][j]+=a[i][k]*b[k][j];

)

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

{printfCAn1");

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

printf("%4d';c[i][j]);

6.7已知整型数组array有10个元素,分别为2、4、6、8、10、1、3、5、7、9,编写程序将前5个

元素与后5个元素交换,交换后的元素分别为1、3、5、7、9、2、4、6、8、10。

#include<stdio.h>

main()

{inta[10]={2,4,6,8,10,135,7,9},i,t;

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

{t=a[i];a[i]=a[5+i];a[5+i]=t;

)

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

printf("%-6dM,a[i]);

)

6.8输入一个十进制数,转换成二进制数并输出。

#include<math.h>

#include<stdio.h>

main()

{longa[100],k,s=0;

inti,n=0;

scanf(n%ldn,&k);

while(k!=0)

{a[n]=k%2;

k=k/2;

n++;}

for(i=n-l;i>=0;i-)

s+=a[i]*pow(10,i);

printf(An%ld",s);

)

方法2:

#include<math.h>

#include<stdio.h>

main()

{inti,s[100],x,k=0;

scanf("%d",&x);

while(x>0)

{s[k]=x%2;

x=x/2;

k++;}

for(i=k-l;i>=0;i—)

printf(M%dM,s[i]);

)

6.9将字符串中的大写字母转换成小写字母,小写字母转换成大写字母,其它字符不转换。

#include<string.h>

#include<stdio.h>

main()

{chara|80];

inti=0;

gets(a);

while(a[i]!=AO')

{if(a[i]>=,A,&&a[i]<='Z')

a[i]+=32;

else

if(a[i]>='a'&&a[i]<=,z,)a[i]-=32;

i++;)

printf(,,\nn);

puts(a);

)

方法2:

main()

{charx[]=ndhgf'hf33485SDHDbcjd980n;

inti=0;

printf(',\n%s,',x);

while(x[i]!=,\O,)

(

if(x[i]>='A,&&x[i]<='Z')

x[i]=x[i]+32;

else

if(x[i]>='a,&&x[i]<=,z,)

x[i]=x[i]-32;

i++;}

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

)

6.10在不使用系统函数strcat的情况下,实现两个字符串连接。

#include<stdio.h>

#include<string.h>

main()

{chara[80],b[80];

intn,i,j,m;

printf(u\ninputastr:");

gets(a);

printf(n\ninputbstr:");

gets(b);

n=strlen(a);m=strlen(b);

i=0;

while(b[i]!=\0,)

{a[i+n]=b[i];

i++;

a[n+m]=AO';

printf(n\nn);

puts(a);

)

6.11从字符串中删除所有指定字符。

#include<stdio.h>

#include<string.h>

main()

(

chara[80],c;

inti,j,n;

printf("inputastr:M);

gets(a);

printf("inputachar:");

c=getchar();

i=0;

n=strlen(a);

for(i=0,j=0;i<n;i++)

if(a[i]!=c)a[j++]=a[i];

a[j]=W;

printf("%sn,a);

6.12将字符串si中的ASCII码为偶数旦下标也为偶数的字符复制到字符数组s2中。

#include<stdio.h>

#include<string.h>

main()

{charsl[80Ls2[80J;

intij;

printf("inputsi:”);

gets(sl);

i=O;j=O;

while(sl[i]!=\0')

{if(sl[i]%2==0&&i%2==0)

s2[j++]=sl[i];

i++;

s2U]=,\0,;

)

printf(n\n%sM,s2);

6.13有一行电文,已按下面规律译成密码:

AfZafz

B—Yb-y

C-Xc-*x

即第1个字母变成第26个字母,第i个字母变成第(26-i+l)个字母。非字母字符不变。要求编程

序将密码译回原文,并打印出密码和原文。

#include<string.h>

#include<stdio.h>

main()

{chara[100],b[100];

inti,n;

gets(a);

n=strlen(a);

i=0;

while(a[i]!='\O')

{if(a[i]>=,a,&&a[i]v=N)

b[i]=219-a[i];

else

if(a[i]>='A'&&a[i]v=Z)

b[i]=155-a[i];

else

b[i]=a[i];

i++;

)

b[i]='\O';

printf(Ana:%s\nb:%sH,a,b);

)

方法2:

#include<string.h>

#include<stdio.h>

main()

{charx[]="dhgfhf33485SDHDbcjd980”;

inti=0;

printf("\n%s\x);

while(x[i]!=,\O,)

{if(x[i]>=,A,&&x[i]<=,Z')

x[i]=155-x[i];

else

if(x[i]>=,a,&&x[i]<=,z,)x[i]=219-x[i];

i++;}

printf(',\n%s,,,x);

第七章习题

7.1选择题:

(1)若有以下定义:

intan={l,2,3,4,5,6,7,8,9,10},*p=a,i;

其中0WiW9,则对a数组元素的引用不正确的是(D)。

A)a[i]B)*(&a[i])C)p[i]D)*(*(a+i))

⑵以下程序的输出结果是(A)。

main()

{inta[]={2,4,6,8},*p=a,i;

fbr(i=0;i<4;i+4-)

a[i]=*p++;

printf(n\n%dn,a[2]);

)

A)6B)8C)4D)2

(3)以下程序的输出结果是(A)。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

printf(n\n%d'\*(p+2));

)

A)3B)4C)1D)2

(4)以下程序的输出结果是(B)。

main()

(

inta[10]={l,2,3,4,5,6,7,8,9,10},*p=&a[l];

printf("\n%d”,*p+5);

)

A)6B)7C)8D)2

(5)以下程序的输出结果是(C)。

main()

{inta[]={2,4,6,8,10},y=l,x,*p;

p=&a[l];

for(x=0;x<3;x+4-)

y+二*(p+x);

printf("%d\n';y);

)

A)17B)18C)19D)20

(6)以下程序的输出结果是(C)。

main()

char*p[]={,,BOOLM,nOPK,,;,Hn,MSPn);

inti;

fbr(i=3;i>=0;i—,i—)

printf("%c",*p[i]);

)

A)SPB)SHC)SOD)SB

(7)以下程序的输出结果是(A)。

main()

{inta[3][3]={{2},{4},{6}},i,*p;

p=*a;

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

{if(i==0)

a[i][i+l]=*p+l;

else

++P;

printf("%d",*p);

)

)

A)23B)26C)33D)36

(8)以下程序的输出结果是(B)。

main()

(

inta[3][3],*p,i;

p=&a[0][0];

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

p[i]=i+l;

printf(”%d”,a[l]⑵);

)

A)3

温馨提示

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

评论

0/150

提交评论