欢迎来到瑞文网!

c语言试题及答案(2)

试题 时间:2017-07-25 我要投稿
【www.ruiwen.com - 试题】

  三 写出下列程序的运行结果(36分,每小题6分)

  1.main( )

  { int i=29,j=6,k=2,s;

  s=i+i/j%k-9;

  printf(“s=%d ”,s);

  }

  2.main( )

  { int x=31,y=2,s=0;

  do

  { s-=x*y;

  x+=2;

  y-=3;} while( x%3==0);

  printf(“x=%d y=%d s=%d ”,x,y,s);

  }

  3.main( )

  { int a[6]={10,20,30,40,50,60},i;

  invert(a,0,5);

  for(i=0;i<6;i++) printf(“%d,”,a[i]);

  printf(“ ”);

  }

  invert(int s[ ],int i,int j)

  { int t;

  if(i<j)< p="">

  { invert(s,i+1j-1);

  t=s[i];s[i]=s[j];s[j]=t;

  }

  }

  4.#include

  main()

  { char str[ ]=“The C program”,c;

  int i;

  for(i=2;(c=str[i])!=‘\0’;i++)

  { switch(c)

  { case ‘g’: ++i; break;

  case ‘o’: continue;

  default: printf(“%c”,c); continue;

  }

  printf(“*”);

  }

  printf(“ ”);

  }

  5.struct w

  { char low;

  char high;

  };

  union u

  { struct w byte;

  short word;

  }uw;

  main( )

  { int result;

  uw.word=0x1234;

  printf(“word value:%04x ”,uw.word);

  printf(“high byte:%02x ”,uw.byte.high);

  printf(“low byte:%02x ”,uw.byte.low);

  uw.byte.low=0x74;

  printf(“word value:%04x ”,uw.word);

  result=uw.word+0x2a34;

  printf(“the result:%04x ”,result);

  }

  6.main()

  { char *s2=“I love China!”,**s1=&s2;

  char *s3,c,*s4=“w”;

  s3=&c;

  *s3=‘H’;

  s2=s2+2;

  printf(“%s %c %s %c ”,s2,*s3,s4,**s1);

  }

  四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

  1. 百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?

  main( )

  { int hb,hm,hl,n=0;

  for(hb=0;hb<=100;hb+= (1) )

  for(hm=0;hm<=100-hb;hm+= (2) )

  { hl=100-hb- (3) ;

  if(hb/3+hm/2+2* (3) ==100)

  { n++;

  printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl);

  }

  }

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

  }

  2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

  #define N 10

  char str[N];

  main()

  { int i,flag;

  for(flag=1;flag==1;)

  { scanf("%s",str);

  flag=0;

  printf(" ");

  }

  sort(___(4)___);

  for(i=0;i<n;i++)< p="">

  printf("%c",str[i]);

  printf(" ");

  }

  sort(char str[N])

  { int i,j;

  char t;

  for(j=1;j<n;j++)< p="">

  for(i=0;(i<n-j)&&(str[i]!='\0');i++)< p="">

  if(str[i]>str[i+1])

  { t=str[i];

  ____(5)____;

  ____(6)____;

  }

  }

  3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

  例如,矩阵为:

  3 0 0 3

  2 5 7 3

  1 0 4 2

  则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

  add(int m,int n,int arr[])

  { int i,j,sum=0;

  for(i=0;i<m;i=i+m-1)< p="">

  for(j=0;j<n;j++)< p="">

  sum=sum+ (7) ;

  for(j=0;j<n;j=j+n-1)< p="">

  for(i=1; (8) ;i++)

  sum=sum+arr[i*n+j];

  return(sum);

  }

  4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

  #define N 10

  main()

  { void maxmin(int arr[],int *pt1,int *pt2,int n);

  int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

  p1=&a; p2=&b;

  maxmin(array,p1,p2,N);

  printf("max=%d,min=%d",a,b);

  }

  void maxmin(int arr[],int *pt1,int *pt2,int n)

  { int i;

  *pt1=*pt2=arr[0];

  for(i=1;i<n;i++)< p="">

  { if(arr[i]>*pt1) (9) ;

  if(arr[i]<*pt2) (10) ;

  }

  }

  答案

  一 选择题(24分,每小题2分)

  1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A )

  7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D )

  二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

  1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × )

  6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ )

  三 写出下列程序的运行结果(36分,每小题6分)

  1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10,

  4.e C pr*am 5.word value:1234 6.love China! H w l

  high byte:12

  low byte:34

  word value:1274

  the result:3ca8

  四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

  1.(1) 3 (2) 2 (3)hm hl

  2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t

  3.(7) arr[i*n+j](或者arr[i*10+j])

  (8) i<m-1(或者i<=m-2)< p="">

  4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]


热门文章