Java教程

计算机二级题目之循环结构练习学习

本文主要是介绍计算机二级题目之循环结构练习学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.下列给定程序中,函数fun的功能是:计算并输出max以内最大的10个素数之和。high由主函数传给fun函数。

#include <stdio.h>
#include <math.h>

int fun( int  high )
{ int sum = 0,  n=0,  j,  yes;
/************found************/
  while ((high >= 2) ___1___ (n < 10))
  {
     yes = 1;
     for (j=2; j<=high/2; j++ )
     if (high % j ==0 ){
/************found************/
       yes=0; ___2___;
     }
     if (yes) { sum +=high; n++; }
/************found************/
     ___3___;
  }
  return sum ;
}

main ( )
{
   printf("%d\n", fun (100));
}

2.对从键盘输入的字符数组xx不超过80个,按照字符从大到小的顺序进行排序,排序后的结果存入字符串数组xx中。

#include <stdio.h>

void main()
{
    char xx[80] ;
    int numi,numj;
    char ch;
    printf("\n please input strings:");
    scanf("%s",xx);
    for (numi=0;numi<strlen(xx);numi++)
/***************found***************/       
     for (numj=___1___;numj<strlen(xx);numj++)
	    if (xx[numi]<xx[numj]){
/***************found***************/   	    
	      ___2___;
	      xx[numi]=xx[numj];
/***************found***************/   	      
	      ___3___;}
    printf("\n %s",xx);
}

 3.本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

#include <conio.h>
#include <stdio.h>
double fun(int n)
{ int a,b,c,k;  double s;
  s=0.0;
  a=2;
/***************found***************/  
  ___1___;
  for (k=1;k<=n;k++)
  {
    s=s+(double)a/b;
    c=a; a=a+b;b=c;
    }
/***************found***************/
   ___2___;
}

main()
{
   int n;
/***************found***************/   
   printf("\n n=");
   scanf("%d",___3___);
   printf("\n the value of function is: %lf\n", fun(n));
}          

3.求下列分数序列的前n项之和。n值从键盘输入,和值通过函数值返回主程序输出。

#include <conio.h>
#include <stdio.h>
double fun(int n)
{ int a,b,c,k;  double s;
  s=0.0;
  a=2;
/***************found***************/  
  ___1___;
  for (k=1;k<=n;k++)
  {
    s=s+(double)a/b;
    c=a; a=a+b;b=c;
    }
/***************found***************/
   ___2___;
}

main()
{
   int n;
/***************found***************/   
   printf("\n n=");
   scanf("%d",___3___);
   printf("\n the value of function is: %lf\n", fun(n));
}          

4.给定程序中,函数fun的功能是:f(x)=1+x+x2/+…+xn/n!直到|x/n!|<10-6,若x=2.5,函数值为:12.182494。

#include    <stdio.h>
#include    <math.h>
double fun(double  x)
{  double  f, t; int n;
/**********found**********/
   f = 1.0+___1___;
   t = x;
   n = 1;
   do {
        n++;
/**********found**********/
        t *= x/___2___;
/**********found**********/
        f += ___3___;
   } while (fabs(t) >= 1e-6);
   return  f;
}
main()
{  double  x, y;
   x=2.5;
   y = fun(x);
   printf("\nThe result is :\n");
   printf("x=%-12.6f    y=%-12.6f \n", x, y);
}

5.

给定程序中,函数fun的功能是:找出100至x(x≤999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。

例如,当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。共有26个。

请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include  <stdio.h>
fun(int  x)
{ int  n, s1, s2, s3, t;
/**********found**********/
  n=__1__;
  t=100;
/**********found**********/
  while(t<=__2__)
  { s1=t%10;  s2=(t/10)%10;  s3=t/100;
    if(s1+s2+s3==15)
    {  printf("%d ",t);
       n++;
    }
/**********found**********/
    __3__;
  }
  return n;
}
main()
{ int  x=-1;
  while(x>999||x<0)
  {  printf("Please input(0<x<=999): ");  scanf("%d",&x);  }
  printf("\nThe result is: %d\n",fun(x));
}

6.求k!(k<13),求阶乘的值作为函数值返回。例如k=10,则输出3628800.

#include <conio.h>
#include <stdio.h>
long  fun ( int   k)
{
/************found************/
   if  k > 0
      return (k*fun(k-1));
/************found************/
   else if ( k=0 )
     return 1L;
}
NONO( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, k ;

  rf = fopen("gc02.in", "r") ;
  wf = fopen("gc02.out", "w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d,", &k) ;
    fprintf(wf, "%d!=%ld\n", k, fun ( k )) ;
  }
  fclose(rf) ;
  fclose(wf) ;
}
main()
{  int k = 10 ;
   printf("%d!=%ld\n", k, fun ( k )) ;
   NONO( ) ;
}


 7.输入x,y的值,求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。

#include <stdio.h>
long  fun(int  x,int  y,long  *p )
{  int  i;
   long  t=1;
/**************found**************/
   for(i=1; i<y; i++)
      t=t*x;
   *p=t;
/**************found**************/
   t=t/1000;
   return  t;
}
main()
{  long   t,r;    int  x,y;
   printf("\nInput x and y: ");  scanf("%ld,%ld",&x,&y);
   t=fun(x,y,&r);
   printf("\n\nx=%d, y=%d, r=%ld, last=%ld\n\n",x, y,r,t );
}

8.“从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。例如:当s中的数为:7654321时,t中的数为:7531。”

#include <conio.h>
#include <stdio.h>

/************FOUND************/
void fun (long  s, long t)
{   long   sl=10;
    *t = s % 10;
    while ( s > 0)
    {   s = s/100;
        *t = s%10 * sl + *t;
/************FOUND************/
	sl = sl*100;
    }
}

main()
{  long s, t;
   printf("\nPlease enter s:"); scanf("%ld", &s);
   fun(s, &t);
   printf("The result is: %ld\n", t);
}

9.下列给定程序中,函数fun 实现的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回 主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数 30800,则数字值为 零的个数为3,各位上数字值最大的是8。

#include <stdio.h>
int  fun(unsigned  n, int  *zero)
{  int  count=0,max=0,t;
   do
   {  t=n%10;
/**************FOUND**************/
      if(t=0)
      count++;
      if(max<t)  max=t;
      n=n/10;
   }while(n);
/**************FOUND**************/
   zero=count;
   return  max;
}
main()
{  unsigned  n;    int  zero,max;
   printf("\nInput n(unsigned):  ");  scanf("%d",&n);
   max = fun( n,&zero );
   printf("\nThe result:  max=%d    zero=%d\n",max,zero);
}

10.找出一个大于给定整数m且紧随m的素数。

#include <conio.h>
#include <stdio.h>
int fun(int m)
{  int i, k ;
   for (i = m + 1 ; ; i++) {
      for (k = 2 ; k < i ; k++)
/**************FOUND**************/
         if (i % k != 0)
            break ;
/**************FOUND**************/
         if (k < i)
           return(i);
   }
}
NONO( )
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
  FILE *fp ;
  int i ;
  fp = fopen("gc06.out", "w") ;
  for(i = 1 ; i <= 10 ; i++) fprintf(fp, "%d\n", fun(888 + i * 88)) ;
  fclose(fp) ;
}
main( )
{  int  n ;
   printf("\nPlease enter n: " ) ;
   scanf("%d", &n ) ;
   printf("%d\n", fun(n)) ;
   NONO( ) ;
}

11.

编写函数fun,函数的功能是:计算并输出给定整数n的所有因子之和(不包括1与自身)。规定n的值不大于1000。例如:n的值为855时,应输出704。

#include <stdio.h>
int fun(int  n)
{
		int sum=0,i;
		for(i=2;i<=n-1;i++)
			if(n%i==0)
				sum+=i;
	return sum;
}	
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *rf, *wf ; int i, n, sum ;
  rf = fopen("bc.in", "r") ;
  wf = fopen("bc.out", "w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d", &n) ;
    sum = fun(n) ;
    fprintf(wf, "%d=%d\n", n, sum) ;
  }
  fclose(rf) ; fclose(wf) ;
}
main()
{ int  n,sum;
  printf("Input n:  ");  scanf("%d",&n);
  sum=fun(n);
  printf("sum=%d\n",sum);
  NONO();
}

12.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。
例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。
注意:n的值要求大于2但不大于100。 部分源程序给出如下。

#include <math.h>
#include <stdio.h>
double fun(int  n)
{
	int i,j,k;
	double sum=0.0;
	for(i=3;i<=n;i++)
	{k=sqrt(i);
		for(j=2;j<=k;j++)
			if(i%j==0) break;
			if(j>=k+1) sum+=sqrt(i);

	}

	return sum;
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *rf, *wf ; int n, i ; double s ;
  rf = fopen("bc.in", "r") ;
  wf = fopen("bc.out", "w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d", &n) ;
    s = fun(n) ;
    fprintf(wf, "%lf\n", s) ;
  }
  fclose(rf) ; fclose(wf) ;
}
main()
{ int  n;    double  sum;
  printf("\n\nInput n:  ");  scanf("%d",&n);
  sum=fun(n);
  printf("\n\nsum=%f\n\n",sum);
  NONO();
}

13.设计程序,求斐波那契(Fibonacci)数列中大于t的最小的一个数,结果由函数返回,其中斐波那契数列F(n)的定义为:F(0)=0,F(1)=1;F(n)=F(N-1)+F(n-2)分别计算当t=1000和t=3000时的结果。

#include <conio.h>
#include <math.h>
#include <stdio.h>
int  fun( int  t)
{



}
NONO (  )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i, n, s ;

  fp = fopen("bc06.in","r") ;
  if(fp == NULL) {
    printf("数据文件bc06.in不存在!") ;
    return ;
  }
  wf = fopen("bc06.out","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(fp, "%d", &n) ;
    s = fun(n) ;
    fprintf(wf, "%d\n", s) ;
  }
  fclose(fp) ;
  fclose(wf) ;
}
main()   /* 主函数 */
{  int  n;
   n=1000;
   printf("n = %d, f = %d\n",n, fun(n));
   NONO();
}


 14.

如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子为1,2,3,且1+2+3=6,因此6是一个“完数”。

    计算并输出1000以内的所有“完数”之和。

#include <stdio.h>


int  fun()
{










}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *wf ;
  int a;
  wf = fopen("out.dat","w") ;
  a=fun() ;
  fprintf(wf, "2-1000之间的完数之和为:%d\n", a) ;
}

int main( )
{

	printf("2-1000之间的完数之和为:%d\n",fun());
	NONO ();
	return 0;
}

15.编写一个函数,输入n为偶数时,计算1/2+1/4+...+1/n;当输入n为奇数时,计算1/1+1/3+...+1/n。 调用该函数并输出结果。

 

 

这篇关于计算机二级题目之循环结构练习学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!