计算机二级题目之选择结构练习学习

1.、在考生文件夹下,给定程序FILL.C的功能是: 统计整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返回主函数。   例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。

#include   <stdio.h>
int  c1,c2,c3;
void fun(long  n)
{  c1 = c2 = c3 = 0;
   while (n) {
/**********found**********/
      switch(___1___)
      {
/**********found**********/
       case 1:    c1++;___2___;
/**********found**********/
       case 2:    c2++;___3___;
       case 3:    c3++;
      }
      n /= 10;
   }
}
main()
{  long  n=123114350L;
   fun(n);
   printf("\nThe result :\n");
   printf("n=%ld  c1=%d  c2=%d  c3=%d\n",n,c1,c2,c3);
}

2.函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。例如,当a=3,b=5,c=4时,中数为4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!

#include    <stdio.h>
int fun(int  a, int  b, int  c)
{
   int  t;
/**********found**********/
   t = (a>b) ? (b>c? b :(a>c?c:___1___)) : ((a>c)?___2___ : ((b>c)?c:___3___));
   return  t;
}
main()
{  int  a1=3, a2=5, a3=4, r;
   r = fun(a1, a2, a3);
   printf("\nThe middle number is  :  %d\n", r);
}

 

 3.编写一个程序,统计一个英文句子中各小写的元音字母出现的次数。

#include <conio.h>
#include <stdio.h>
int  vv[26];
void Vs( char* s )
{
     for( ; *s; s++ )
/************FOUND**********/
       switch( s );
         {  case( 'a' ):
            case( 'e' ):
            case( 'i' ):
            case( 'o' ):
            case( 'u' ):
              vv[ *s - 'a' ]++;
         }
}
main()
{
     char str[81], ww[6] = { "aeiou" };
     int i;
     printf( "\nPlease enter a string:\n" );
     gets( str );
     Vs( str );
/************FOUND**********/
     for( i = 0; i < 6; i++ )
      printf( "\n%c ==> %2d", ww[i], vv[ ww[i] - ww[0] ] );
}

 4.判断整数x是否为同构数,若是同构数,函数返回1,否则返回0。x的值由主函数从键盘读入,要求不大于1

#include <conio.h>
#include <stdio.h>
int  fun ( int x )
{
	if(x<10)
		return!((x*x-x)%10);
	else
		return!((x*x-x)%100);







}
NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
     输出数据,关闭文件。 */
  int i, x, y ;
  FILE *rf, *wf ;
  rf = fopen("bc1.in", "r") ;
  wf = fopen("bc1.out", "w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d", &x) ;
    y = fun( x ) ;
    if ( y ) fprintf (wf, "%d  YES\n", x);
    else fprintf (wf, "%d  NO!\n", x);
  }
  fclose(rf) ;
  fclose(wf) ;
}
main( )
{
  int  x, y;
  printf( "\nPlease enter a integer numbers:  " ); scanf ( "%d", &x );
  if ( x >100 || x < 0 ){ printf ("data error !\n"); exit(0); }
  y = fun ( x );
  if ( y ) printf ("%d  YES\n", x);
  else printf ("%d  NO!\n", x);
  NONO( ) ;
}

 

5.计算n!的阶乘;

#include <stdio.h>

int fun(int j)
{








}

//声明函数
void NONO ();

int main( )
{
	int i,n;
	scanf("%d",&n);
	for(i=0;i<=n;i++)
		printf("%d!=%d\n",i,fun(i));
	NONO ();
	return 0;
}

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

	wf = fopen("out.dat","w") ;
	for(i = 6 ; i < 11 ; i++) {
		t=fun(i) ;
		fprintf(wf, "%d\n", t) ;
	}
	fclose(wf) ;
}





6.企业发放的奖金根据企业的当年利润决定。当利润I低于或等于100000元时,奖金可提成10%;利润大于100000元,小于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;利润大于200000元,小于400000元(200000<I≤400000)时,低于200000元的部分仍按上述办法提成(下同),高于200000元的部分按5%提成。利润大于400000元,小于600000元(400000<I≤600000)时,高于400000元的部分按3%提成。利润大于600000元,小于1000000元(600000<I≤1000000)时,高于600000的部分按1.5%提成;利润大于1000000元(I>1000000)时,超过1000000元的部分按1%提成。从键盘输入当年利润I,求应发放奖金总数。要求:
(1)用if语句编程序;
(2)用switch语句编程序。

 

#include <stdio.h>
/*计算应发放奖金的总数并返回给主函数。i为利润单位为元*/
int  fun(int i)
{
	






}

void NONO (int i)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *wf ;
  int a;
  wf = fopen("out.dat","w") ;
  a=fun(150000) ;
  fprintf(wf, "%d\n", a) ;
  fclose(wf) ;
}

int main( )
{
	int i;
	scanf("%d",&i);
	printf("bonus=%d",fun(i));
	NONO (i);
	return 0;
}

 

7.

#include <stdio.h>
#include <string.h>
/*fun函数完成的功能为:再加上某天的天数,并判断是否为闰年,如果是闰年且月份大于2,总天数应该加一天,并返回;
否则返回总天数*/

int  fun(int sum,int day,int month,int year)
{







}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *wf ;
  int a;
  wf = fopen("out.dat","w") ;
  a=fun(151,18,6,2015) ;
  fprintf(wf, "It is the %dth day.", a) ;
}

int main( )
{
	int day,month,year,sum;
	printf("\nplease input year,month,day\n");
	scanf("%d,%d,%d",&year,&month,&day);
	switch(month)        /* 先计算某月以前月份的总天数*/
	{
		case 1:sum=0;break;
		case 2:sum=31;break;
		case 3:sum=59;break;
		case 4:sum=90;break;
		case 5:sum=120;break;
		case 6:sum=151;break;
		case 7:sum=181;break;
		case 8:sum=212;break;
		case 9:sum=243;break;
		case 10:sum=273;break;
		case 11:sum=304;break;
		case 12:sum=334;break;
		default:printf("data error");break;
	}
	printf("It is the %dth day.",fun(sum,day,month,year));
	NONO ();
	return 0;
}

 8.输入某年某月某日,判断这一天是这一年的第几天

#include <stdio.h>
#include <string.h>
/*fun函数完成的功能为:再加上某天的天数,并判断是否为闰年,如果是闰年且月份大于2,总天数应该加一天,并返回;
否则返回总天数*/

int  fun(int sum,int day,int month,int year)
{







}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *wf ;
  int a;
  wf = fopen("out.dat","w") ;
  a=fun(151,18,6,2015) ;
  fprintf(wf, "It is the %dth day.", a) ;
}

int main( )
{
	int day,month,year,sum;
	printf("\nplease input year,month,day\n");
	scanf("%d,%d,%d",&year,&month,&day);
	switch(month)        /* 先计算某月以前月份的总天数*/
	{
		case 1:sum=0;break;
		case 2:sum=31;break;
		case 3:sum=59;break;
		case 4:sum=90;break;
		case 5:sum=120;break;
		case 6:sum=151;break;
		case 7:sum=181;break;
		case 8:sum=212;break;
		case 9:sum=243;break;
		case 10:sum=273;break;
		case 11:sum=304;break;
		case 12:sum=334;break;
		default:printf("data error");break;
	}
	printf("It is the %dth day.",fun(sum,day,month,year));
	NONO ();
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值