程序设计复习题答案.docx

上传人:b****5 文档编号:6143444 上传时间:2023-01-04 格式:DOCX 页数:17 大小:22.58KB
下载 相关 举报
程序设计复习题答案.docx_第1页
第1页 / 共17页
程序设计复习题答案.docx_第2页
第2页 / 共17页
程序设计复习题答案.docx_第3页
第3页 / 共17页
程序设计复习题答案.docx_第4页
第4页 / 共17页
程序设计复习题答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

程序设计复习题答案.docx

《程序设计复习题答案.docx》由会员分享,可在线阅读,更多相关《程序设计复习题答案.docx(17页珍藏版)》请在冰豆网上搜索。

程序设计复习题答案.docx

程序设计复习题答案

程序设计基础复习题答案

一、填空题

1、C语言所提供的实型变量分为两种类型,它们是float和double。

2、一个C源程序中至少应包含一个主函数或main函数。

3.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-’3’的值为102。

4.在标准C语言中,输入操作是由库函数scanf()完成的,输出操作是由库函数printf()完成的。

5.对以下说明:

intc[10]={116,125,218,312,100,40,13,67,186};

c[4]的值为100。

6.在C语言中,引用数组元素时,引用数组元素时,其数组下标的数组类型允许

是整型常量或整型表达式。

7.设y为int型变量,请写出描述“y是偶数”的表达式(y%2)==0。

8.设inti=0,j=1,k=2,a=3,b=4;执行表达式(a=ik)的值为0。

9.与表达式a+=b等价的另一书写形式是a=a+b。

10.有以下定义和语句

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

p[0]=a[1];

则*(p[0]+1)所代表的数组元素是a[1][1]。

11.代表一个反斜杠字符“\”的转义字符是'\\'。

12.变量的指针就是变量的地址,存放变量地址的变量就是指针变量,它用来指向另一个变量。

13.++i和i++的不同之处在于i++是先使用i的值后,再执行i=i+1;而++i是先执行i=i+1后,再使用i的值。

14.设x、y和z是int型变量,且x=3,y=4,z=5,则表达式!

((x

z||1)值为0。

15.已知函数intf(intk){return((k<0)?

1:

f(k-2)+2);}

则f(3)的值是5。

16.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。

17.计算表达式:

x=(i=4,j=10,k=24)后,x的值为24。

18.若a和b均是int型变量,且a和b的初值均为5,则计算表达式a+=b++后,a的值为10,b的值为6。

19.设inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则表达式*(p+8)的值是9。

20.若有以下定义:

chara;intb;

floatc;doubled;

则表达式a*b+d-c值的类型为double。

21.*(p++)和*(++p)作用不同,它们的意义分别是*(p++)先取*p的值,后使p加1,*(++p)先使p加1,再取*p

二、程序理解题

请给出运行以下程序的输出结果:

1.

#include

voidmain()

{intu=24,v=16,w;

while(v)

{w=u%v;u=v;v=w;}

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

}

输出结果为:

8

2.

voidmain()

{chars[]"Yes\n/No",*ps=s;

puts(ps+4);

*(ps+4)=0;

puts(s);

}

输出结果:

/No

Yes

3.

main()

{intp[7]={11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

输出结果:

24。

4、下列程序的运行结果是total=144。

voidmain()

{intarr_sum(intarr[],intn);

inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int*p,total;

p=a[0];

total=arr_sum(p,12);

printf(“total=%d\n”,total);

}

intarr_sum(intarr[],intn)

{inti,sum=0;

for(i=0;i

sum=sum+arr[i];

return(sum);

}

 

5.给出以下程序的运行结果:

voidmain()

{inta,b,c;a=25b=025;c=0x25;printf("%d,%d,%d\n",a,b,c);

}

运行结果:

25,21,37

6.给出有下面一段程序的运行结果。

voidmain()

{intp[7]={11,13,14,15,16,17,18};

inti=0,,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

运行结果:

24

7.给出有下面一段程序的运行结果。

#include

intfac(intn)

{

staticintf=1;

f=f*n;

return(f);

}

voidmain()

{

inti;

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

printf("%d!

=%d\n",i,fac(i));

}

答案:

1!

=1

2!

=2

3!

=6

4!

=24

5!

=120

8.给出有下面一段程序的运行结果。

main()

{inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||i==4)continue;

j=0;

do{s+=a[j];j++;}while(j<4);

}

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

}

运行结果:

92

三、程序填空题

1.以下程序可判断输入的一个整数是否能被5或13整除,若能整除,输出“yes”并换行,否则输出“no”并换行。

请填空。

#include

voidmain()

{intk;

printf(“Enteraintnumber:

”);

scanf(“%d”,&k);

if____(k%5==0||k%13==0)__________

printf(“yes\n”);

else

printf(__“no\n”______);

}

2.下面程序是将键盘输入的英文字符全改为小写英文字符输出,用换行符结束循环。

请填空。

#include

voidmain()

{

charc;

while((c=getchar())!

='\n')

{

if(c>='A'||c<='Z')

c=c+32;

printf("%c",c);

}

printf("\n");

}

3.有一个一维数组score,内放10个学生成绩,求平均成绩,请填空。

#include

floataverage(floatarray[10]);

voidmain()

{floatscore[10],aver;

inti;

printf("input10scores:

\n");

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

scanf("%f",&score[i]);

printf("\n");

aver=average(score);

printf("averagescoreis%5.2f",aver);

}

floataverage(floatarray[10])

{inti;

floataver,sum=array[0];

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

sum=sum+array[i];

aver=sum/10;

returnaver;

}

 

4.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。

请填空。

Voidmain()

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",&a[i]);

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

{if(a>0)

{count++;

sum+=a[i];

}

}

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

}

5.下面程序可以逐行输出由language数组元素所指向的5个字符串。

请填空。

#include

voidmain()

{char*language[]={“BASIC”,“FORTRAN”,“PROLOG”,“JAVA”,

“C++”};

char**q;

intk;

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

{q=language+k;

printf(“%s\n”,*q);

}

}

6.以下程序的功能是:

从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。

#include

voidmain()

{charstr[81],*sptr;

inti;

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

{str[i]=getchar();

if(str[i]=='\n')break;

}

str[i]='\0';

sptr=str;

while(*sptr)putchar(*sptr++);

}

7、程序的功能是用递归方法计算第五位学生的年龄,请填空。

递归公式如下:

10(n=1)

age(n)=

age(n-1)+2(n>1)

程序:

intage(intn)

{intc;

if(n==1)

c=10;

else

c=age(n-1)+2;

return(c);

}

voidmain()

{printf(“age:

%d\n”,age(5));

}

8)下面程序的功能是在三个字符串中找出最小的,请填空:

#include

#include

voidmain()

{chars[20],str[3][30];

inti;

for(i=0;i<3;i++)gets(str[i]);

strcpy(s,(strcmp(str[0],str[1])<0?

str[0]:

str[1]));

if(strcmp(str[2],s)<0)strcpy(s,str[2]);

print(“%s\n”,s);

}

9)以下程序的功能是:

通过指针操作,找出三个整数中的最小值并输出。

请填空。

#include

voidmain()

{int*a,*b,*c,num,x,y,z;

a=&x;b=&y;c=&z;

printf(“输入3个整数:

”);

scanf(“%d%d%d”,a,b,c);

printf(“%d,%d,%d\n”,*a,*b,*c);

num=*a;

if(*a>*b)num=*b;

if(num>*c)num=*c;

printf(“输出最小整数:

%d\n”,num);

}

10.C语言源程序文件的后缀是__.cpp_________,经编译后生成的文件的后缀是__.obj_______,连接后生成的文件的后缀是.exe。

11.从键盘输入一个大写字母,要求改用小写字母输出。

请填空:

#include

voidmain()

{charc1,c2;

c1=getchar();

printf(“%c,%d\n”,c1,c1);

c2=c1+32;

printf(“%c,%d\n”,c2,c2);

}

12.以下程序的功能是:

从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。

请填空:

#include

voidmain()

{charstr[81],*sptr;

inti;

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

{str[i]=getchar();

if(str[i]=='\n')break;

}

str[i]='\0';

sptr=str;

while(*sptr)putchar(*sptr++;

}

13.输入三角形的三边长,求三角形面积。

请填空:

voidmain()

{floata,b,c,s,area;

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

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);

printf(“area=%7.2f\n”,area);

}

14.判断m是否素数。

请填空:

#include

#include

voidmain()

{

intm,i,k;

scanf("%d",&m);

k=sqrt(m);

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

if(m%i==0)break;

if(i>k)printf("%disaprimenumber\n",m);

elseprintf("%disnotaprimenumber\n",m);

}

15.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。

如’a’变成‘f’,’w’变成’b’。

请填空:

#include

voidmain()

{charc;

c=getchar();

if(c>=’a’&&c<=’u’)c=c+5;

elseif(c>=’v’&&c<=z)c=c-21;

putchar(c);

}

16.输入三个整数x,y,z,请把这三个数由小到大输出。

请填空:

#include"stdio.h"

#include"conio.h"

main()

{

intx,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if(x>y)

{t=x;x=y;y=t;}/*交换x,y的值*/

if(x>z)

{t=z;z=x;x=t;}/*交换x,z的值*/

if(y>z)

{t=y;y=z;z=t;}/*交换z,y的值*/

printf("smalltobig:

%d%d%d\n",x,y,z);

}

17.求1!

+2!

+3!

+4!

+…+20!

的值。

请填空:

#include

voidmain()

{floats=0,t=1;

intn;

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

{

t=t*n;

s=s+t;

}

printf("1!

+2!

+...+20!

=%c\n",s);

}

18.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

请填空:

#include"stdio.h"

#include"conio.h"

main()

{

charc;

intletters=0,space=0,digit=0,others=0;

printf("pleaseinputsomecharacters\n");

while((c=getchar())!

='\n')

{

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

letters++;

elseif(c=='')

space++;

elseif(c>='0'&&c<='9')

digit++;

else

others++;

}

printf("allinall:

char=%dspace=%ddigit=%dothers=%d\n",letters,

space,digit,others);

}

19.以下程序是通过指针操作,找出三个整数中的最小值并输出。

请填空:

#include

voidmain()

{int*a,*b,*c,num,x,y,z;

a=&x;b=&y;c=&z;

printf(“输入3个整数:

”);

scanf(“%d%d%d”,a,b,c);

printf(“%d,%d,%d\n”,*a,*b,*c);

num=*a;

if(*a>*b)num=*b;

if(num>*c)num=*c;

printf(“输出最小整数:

%d\n”,num);

}

20.下面程序的功能是打印100以内个位数为6且能被3整除的所有数。

请填空。

#include

voidmain()

{inti,j;

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

{j=i*10+6;

if(j%3!

=0)continue;

printf(“%d”,j);

}

}

四、编程题

1.给学生成绩,要求输出成绩等级‘A’‘B’‘C’‘D’‘E’。

90分以上为‘A’,80-89分为‘B’,70-79分为‘C’,60-69分为‘D’,60分以下为‘E’。

#include

voidmain()

{

floatscore;

chargrade;

printf("请输入学生成绩:

");

scanf("%f",&score);

while(score>100||score<0)

{

printf("\n输入有误,请重输!

");

scanf("%f",&score);

}

switch((int)(score/10))

{

case10:

case9:

grade='A';break;

case8:

grade='B';break;

case7:

grade='C';break;

case6:

grade='D';break;

case5:

case4:

case3:

case2:

case1:

case0:

grade='E';

}

printf("成绩是%5.1f,相应的等级是%c.\n",score,grade);

}

2.输入一数组各元素值,将这个数组中的值按逆序重新存放(如原来顺序为5,4,3,2,1要求改为1,2,3,4,5)。

#include

#defineN5

voidmain()

{

inta[N],i,temp;

printf("Enterarray:

\n");

for(i=0;i

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

printf("arraya:

\n");

for(i=0;i

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

for(i=0;i

{temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf("\nNow,arrawa:

\n");

for(i=0;i

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

printf("\n");

}

3、将一个2×3的二维数组中行与列的元素互换并存到另一个二维数组中。

设原数组的初值为{{1,2,3},{4,5,6}}。

参考程序:

#include

voidmain()

{inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

printf("arraya:

\n");

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

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

{printf("%5d",a[i][j]);

b[j][i]=a[i][j];/*行列元素互换*/

}

printf("\n");

}

printf("arrayb:

\n");

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

{for(j=0;j<=1;j++)

printf("%5d",b[i][j]);

printf("\n");

}

}

4.用选择法对10个数排序(由小到大)。

要求从键盘输入这10个数。

#include

voidmain()

{

inti,j,min,temp,a[11];

printf(“enterdata:

\n”);

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

{

printf(“a[%d]=”,i);

scanf(“%d”,&a[i]);

}

printf(‘\n”);

printf(“Theorginalnumbers:

\n”);

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

printf(“%5d”,a[i]);

printf(“\n”);

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

{

min=i;

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

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

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf(“\nThesortednumbers:

\n”);

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

printf(“%5d”,a[i]);

printf(“\n”);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1