自考资讯

导航

自学考试《C语言程序设计》复习试题及答案

来源 :中华考试网 2017-01-31

  【4.31】参考答案:

  #include

  main( )

  { int i,j;

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

  printf("%4d",i);

  printf("\n--------------------------------------\n");

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

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

  if(j<10-i) printf(" ");

  else printf( "%4d" , (10-i)*j);

  printf("\n");

  }

  }

  【4.32】参考答案:

  #include "math.h"

  main()

  { int flag=0;

  float a,b,c,s;

  do

  { printf("Please enter a b c:");

  scanf("%f%f%f",&a,&b,&c);

  if(a>b+c || b>a+c || c>a+b)

  flag=1;

  }while(flag);

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

  printf("S=%f",s=sqrt((s-a)*(s-b)*(s-c)));

  }

  【4.33】参考答案:

  #include

  main( )

  { int j;

  long n; /* 使用长整型变量,以免超出整数的表示范围 */

  printf("Please input number:");

  scanf("%ld", &n);

  for(j=999;j>=100;j--)/* 可能取值范围在999到100之间,j从大到小 */

  if(n%j == 0 ) /* 若能够整除j,则j是约数,输出结果 */

  { printf("The max factor with 3 digits in %ld is: %d.\n",n,j);

  break; /* 控制退出循环 */

  }

  }

  【4.34】参考答案:

  #define E 0.000001

  main()

  { float x,y=1,s=0;

  printf("Please enter x=");

  scanf("%f",&x);

  while(1/y>E)

  { s=s+1/y;

  y=y*x;

  }

  printf("S=%f\n",s);

  }

  【4.35】参考答案:

  #include

  main( )

  { int class1, class2, class3;

  char ch;

  class1=class2=class3=0; /* 初始化分类计数器 */

  do

  { ch=getch( );

  switch(ch)

  { case '0': case '1': case '2': case '3': case '4':

  case '5': case '6': case '7': case '8': case '9':

  class1++; break; /* 对分类1计数 */

  case '+': case '-': case '*': case '/': case '%': case '=':

  class2++; break; /* 对分类2计数 */

  default: class3++; break; /* 对分类3计数 */

  }

  }while (ch!= '\\'); /* 字符'\'在C程序中要使用转义符'\\' */

  printf("class1=%d, class2=%d, class3=%d\n", class1, class2, class3);

  }

  【4.36】分析:程序的关键是怎样判断一个单词。由单词的定义已知它是用空格、制表符或换行符分隔开的,两个字符之间没有空格、制表符或换行符,则认为是一个单词中的两个字符。

  参考答案:

  #define EOF -1

  #define YES 1

  #define NO 0

  #include

  main( ) /* 对输入的行、字符和单词进行计数统计 */

  { int c, nl, nc, nw, inword;

  inword=NO; /* inword=NO 已处理的最后一个字符是空格、\t或\n */

  /* inword=YES 已处理的最后一个字符不是空格、\t或\n */

  nl=nc=nw=0; /* 行、字符、字计数器置0 */

  while((c=getchar())!= EOF)

  { ++nc; /* 进行字符计数 */

  if(c=='\n' )

  ++nl; /* 进行行计数 */

  if(c=='\t'||c=='\n'||c==' ')

  inword=NO;/* 如果读入的字符是空格、\t或\n,则置inword为NO */

  else /* 读入的字符不是空格、\t或\n */

  if(inword==NO) /* 如果前一个字符是空格、\t或\n */

  { inword=YES; /* 则读入的字符为一个单词的第一个字符*/

  ++nw; /*置inword为YES,进行单词计数 */

  }

  }

  printf("Lines=%d\nWords=%d\nChars=%d\n",nl,nw,nc); /* 输出结果 */

  }

  【4.37】参考答案:

  #define E 0.000001

  #include "math.h"

  main()

  { int i,k=1;

  float x,y,t=1,s,r=1;

  printf("Please enter x=");

  scanf("%f",&x);

  for(s=x,y=x,i=2;fabs(r)>E;i++)

  { t=t*(i-1);

  y=y*x*x;

  k=k*(-1);

  r=k*y/t/(2*i-1);

  s=s+r;

  }

  printf("S=%f\n",s);

  }

  【4.38】参考答案:

  main()

  { int i;

  float s=0;

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

  s=s+i;

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

  s=s+i*i;

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

  s=s+1.0/i;

  printf("Result=%f\n",s);

  }

  【4.39】参考答案:

  main()

  { int i;

  float s=1;

  for(i=1;i<=20 && 1.0/i/(i+1)>0.001;i++)

  s=s+1.0/i/(i+1);

  printf("Result=%f i=%d\n",s,i);

  }

  【4.40】参考答案:

  #include

  main()

  { float x,eps,s,y=0,y0,t;

  int n,j;

  printf("Enter x & eps:");

  scanf("%f%f", &x, &eps);

  n=t=j=1;

  s=x;

  do

  { y0=y;

  if(n%2==0) y=y-s/t;

  else y=y+s/t;

  s *= x*x; /* 求x的乘方 */

  t *= (j+1)*(j+2); /* 求n! */

  j += 2;

  n++;

  }while( fabs(y0-y) > eps ); /* 控制误差 */

  printf("sin(%f)=%f\n",x,sin(x)); /* 输出标准sin(x)的值 */

  printf("%d,sin(%f)=%f\n",n,x,y); /* 输出计算的近似值 */

  }

  【4.41】参考答案:

  main( )

  { int i,j,num,a[10];

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

  { printf("Enter No. %d:", i+1);

  scanf("%d",&num);

  for(j=i-1;j>=0&&a[j]>num;j--)

  a[j+1]=a[j];

  a[j+1]=num;

  }

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

  printf ("No.%d=%d\n", i+1, a[i]);

  }

  【4.42】参考答案:

  main()

  { int n;

  printf("Please enter n:");

  scanf("%d",&n);

  while(n>0)

  { printf("%d",n%10);

  n=n/10;

  }

  }

  【4.43】参考答案:

  main()

  { int i,n;

  long s1=0,s2=0;

  printf("Please enter N:");

  scanf("%d",&n);

  if(n>=0)

  for(i=n;i<=2*n;i++)

  s1=s1+i;

  else

  for(i=n;i>=2*n;i--)

  s1=s1+i;

  i=n;

  if(i>=0)

  while(i<=2*n)

  s2=s2+i++;

  else

  while(i>=2*n)

  s2=s2+i--;

  printf("Result1=%ld result2=%ld\n",s1,s2);

  }

  【4.44】分析:据题意,阶梯数满足下面一组同余式:

  x≡1 (mod2)

  x≡2 (mod3)

  x≡4 (mod5)

  x≡5 (mod6)

  x≡0 (mod7)

  参考答案:

  #include

  main()

  { int i=1; /* i为所设的阶梯数 */

  while( !((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)) )

  ++i; /* 满足一组同余式的判别 */

  printf("Staris_number=%d\n", i );

  }

  【4.45】参考答案:

  main( )

  { int i,n,a;

  for(i=0; ;i++)

  { if(i%8==1)

  { n=i/8;

  if(n%8==1)

  { n=n/8;

  if(n%8==7) a=n/8;

  }

  }

  if(i%17==4)

  { n=i/17;

  if(n%17==15) n=n/17;

  }

  if(2*a==n)

  { printf("result=%d\n",i);

  break;

  }

  }

  }

分享到

您可能感兴趣的文章