C程序设计复习题答案

C程序设计复习题答案

2023年7月28日发(作者:)

程序设计基础复习题答案

一、 填空题

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

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

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

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

5.对以下说明:int c[10] = {116, 125, 218, 312, 100, 40, 13, 67, 186};

c[4]的值为 100 。

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

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

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

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

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

10.有以下定义和语句

int a[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

15.已知函数int f(int k) { 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.设int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; 则表达式*(p+8)的值是 9 。

20.若有以下定义:

char a; int b;

float c; double d;

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

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

1 先使p加1,再取*p

2 二、程序理解题

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

1.

#include

void main()

{ int u=24,v=16,w;

while(v)

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

printf("%dn",u);

}

输出结果为: 8

2.

void main()

{ char s[]"Yesn/No",*ps=s;

puts(ps+4);

*(ps+4)=0;

puts(s);

}

输出结果:/No

Yes

3.

main()

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

int i=0,j=0;

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

printf("%dn",j);

}

输出结果: 24 。

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

void main()

{ int arr_sum(int arr[],int n);

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

3 int *p,total;

p=a[0];

total= arr_sum (p,12);

printf(“total=%dn”,total);

}

int arr_sum(int arr[],int n)

{ int i,sum=0;

for(i=0;i

sum=sum+arr[i];

return(sum);

}

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

void main()

{ int a,b,c; a=25b=025;c=0x25;printf("%d, %d, %dn",a,b,c);

}

运行结果:25, 21, 37

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

void main()

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

int i=0, ,j=0;

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

printf("%dn",j);

}

运行结果:24

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

#include

int fac(int n)

{

static int f=1;

4

}

f=f*n;

return(f);

void main()

{

}

答案:1!=1

2!=2

3!=6

4!=24

5!=120

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

main()

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

int i=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("%dn",s);

}

运行结果:92

三、程序填空题

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

5

int i;

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

printf("%d!=%dn",i,fac(i)); 则输出“no”并换行。请填空。

#include

void main()

{ int k;

printf(“Enter a int number:”);

scanf(“%d”,&k);

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

printf(“yesn”);

else

printf(__“non”______);

}

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

#include

void main()

{

char c;

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

{

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

c=c+32;

printf("%c",c);

}

printf("n");

}

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

#include

float average(float array[10]);

void main()

{float score[10],aver;

int i;

printf("input 10 scores:n");

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

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

6 printf("n");

aver=average(score);

printf("average score is %5.2f",aver);

}

float average(float array[10])

{int i;

float aver,sum=array[0];

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

sum=sum+array[i];

aver=sum/10 ;

return aver ;

}

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

Void main()

{ int i,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=%dn",sum,count);

}

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

#include

void main()

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

“C++”};

char ** q ;

int k;

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

{ q= language+k ;

printf(“%sn”,*q);

}

}

6.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。

7 #include

void main()

{ char str[81],*sptr;

int i;

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)

程序:

int age(int n)

{ int c;

if( n==1 )

c= 10 ;

else

c= age(n-1)+2 ;

return (c);

}

void main()

{ printf(“age:%dn”, age(5));

}

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

#include

#include

void main( )

{ char s[20],str[3][30];

int i;

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(“%sn”, s ) ;

}

8 9)以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。

#include

void main( )

{ 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,%dn”, *a,*b,*c);

num=*a;

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

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

printf(“输出最小整数:%dn”, num);

}

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

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

#include

void main()

{ char c1,c2;

c1= getchar() ;

printf(“%c, %dn”,c1,c1);

c2=c1+32 ;

printf(“%c, %dn”,c2,c2);

}

12.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。请填空:

#include

void main()

{ char str[81],*sptr;

int i;

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

{ str[i]=getchar();

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

}

str[i]= '0' ;

sptr=str;

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

}

13.输入三角形的三边长,求三角形面积。请填空:

9 void main()

{ float a, 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.2fn”,a,b,c,s);

printf(“area=%7.2fn”,area);

}

14.判断m是否素数。请填空:

#include

#include

void main()

{

int m, i, k;

scanf("%d", &m);

k=sqrt(m) ;

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

if( m%i==0 ) break;

if( i>k ) printf("%d is a prime numbern",m);

else printf("%d is not a prime numbern",m);

}

15.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如’a’变成‘f’,’w’变成’b’。请填空:

#include

void main( )

{ char c;

c=getchar( );

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

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

putchar(c);

}

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

#include "stdio.h"

#include "conio.h"

main()

{

int x,y,z,t;

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

if (x>y)

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

10 if(x>z)

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

if(y>z)

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

printf("small to big: %d %d %dn",x,y,z);

}

17.求1!+2!+3!+4!+…+20!的值。请填空:

#include

void main()

{ float s=0,t=1;

int n;

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

{

t=t*n ;

s=s+t ;

}

printf("1!+2!+...+20!=%cn",s);

}

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

#include "stdio.h"

#include "conio.h"

main()

{

char c;

int letters=0,space=0,digit=0,others=0;

printf("please input some charactersn");

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

{

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

letters++;

else if(c==' ')

space++;

else if(c>='0'&&c<='9')

digit++;

else

others++;

}

printf("all in all:char=%d space=%d digit=%d others=%dn",letters,

space,digit,others);

}

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

#include

11 void main( )

{ 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,%dn”, *a,*b,*c);

num=*a;

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

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

printf(“输出最小整数:%dn”, num);

}

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

#include

void main()

{ int i,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

void main()

{

float score;

char grade;

printf("请输入学生成绩:");

scanf("%f",&score);

while(score>100||score<0)

{

}

switch((int)(score/10))

{

12

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

scanf("%f",&score); case 10:

case 9: grade='A';break;

case 8: grade='B';break;

case 7: grade='C';break;

case 6: grade='D';break;

case 5:

case 4:

case 3:

case 2:

case 1:

case 0: grade='E';

}

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

}

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

#include

# define N 5

void main()

{

}

13

int a[N],i,temp;

printf("Enter array:n");

for(i=0;i

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

printf("array a:n");

for(i=0;i

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

{temp=a[i];

a[N-i-1]=temp;

}

for(i=0;i

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

printf("n Now,arraw a:n");

for(i=0;i

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

printf("n");

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

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

参考程序:

#include

void main( )

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

int b[3][2],i,j;

printf("array a:\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("array b:\n");

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

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

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

printf("\n");

}

}

4.用选择法对10个数排序(由小到大)。要求从键盘输入这10个数。

#include

void main()

{

int i, j, min, temp, a[11];

printf(“enter data: n”);

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

{

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

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

}

printf(‘n”);

printf(“The orginal numbers: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;

14

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690518460a362301.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信