C程序设计复习题答案

printf(\

aver=average(score);

printf(\}

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(\ for (i=0;i<20;i++) { if(a>0) { count++;

sum+= a[i] ; } }

printf(\}

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(“%s\\n”,*q); } }

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

6

#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:%d\\n”, 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(“%s\\n”, s ) ; }

7

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,%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 void main() { char c1,c2;

c1= getchar() ;

printf(“%c, %d\\n”,c1,c1); c2=c1+32 ;

printf(“%c, %d\\n”,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.输入三角形的三边长,求三角形面积。请填空:

8

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.2f\\n”,a,b,c,s); printf(“area=%7.2f\\n”,area); }

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

#include #include void main() {

int m, i, k;

scanf(\ k=sqrt(m) ; for(i=2;i<=k;i++)

if( m%i==0 ) break;

if( i>k ) printf(\ else printf(\}

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 \#include \main() {

int x,y,z,t;

scanf(\ if (x>y)

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

9

if(x>z)

{ t=z;z=x;x=t; } /*交换x,z的值*/ if(y>z)

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

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(\}

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

char c;

int letters=0,space=0,digit=0,others=0; printf(\ 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(\ space,digit,others); }

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

10

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4