2006年9月计算机等级考试三级C语言上机试题

2006-11-10 16:12:37   Count:
试题1:

机试时间:9月23日15:30
机试试题:南开67(整数各位数字运算题)

下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt以及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT13.DAT中。
    部分源程序存在文件prog1.c中。
    请勿改动主函数main()和输出数据函数writeDat()的内容。

答案内容:
void countValue()
{int i,thou,hun,ten,data;
for(i=1000;i<5000;i++)
{ thou=i/1000;    hun=i%1000/100;
   ten=i%100/10;  data=i%10;
  if(thou+hun==ten+data&&thou+hun==(data-thou)*10) {cnt++;sum+=i;}
  }
}


试题2:

在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的组数作为函数jsSort() 的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。
    部分源程序存在文件prog1.c中。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
答案是
int jsSort()
{int i, j, cnt=0;
data ch;
for(i=0;i<200;i++)
    if(aa.x2>aa.x1+aa.x3) bb[cnt++]=aa;
for(i=0;i<cnt-1;i++)
   for(j=i+1;j<cnt;j++)
      if(bb.x2+bb.x3<bb[j].x2+bb[j].x3) { ch=bb;bb=bb[j];bb[j]=ch;}
return cnt;
}

试题3:

请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。

    最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。

    部分源程序存在文件prog1.c中。

    例如:若输入17 5 则应输出:19,23,29,31,37。

    请勿改动主函数main()和写函数writeDat()的内容。

void num(int m,int k,int xx[])

{ int i,s=0;

  for(i=m+1;k>0;i++)

   if(isP(i)) { xx[s++]=i; k--;}

}

试题4:

机试时间:9月23日20:15
机试试题:南开82( 素数题)

已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果cnt,pjz1,pjz2输出到out.dat文件。

例如:5591是素数,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
9812是非素数,则该数不满足条件计算平均值pjz2。
部分源程序存在文件prog1.c中。
程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

答案内容:
{int i;
for(i=0;i<300;i++)
    if(isP(a)) {pjz1+=a;cnt++;}
    else pjz2+=a;
if(cnt==0) pjz1=0;
else pjz1/=cnt;
if(300-cnt==0) pjz2=0;
else pjz2/=(300-cnt);
}

试题5:

机试时间:9月24日9:20
机试题目:南开59题。
考号尾数:915

题目59函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。
void jsVal()
{int i,thou,hun,ten,data,j;
int ab,cd;
for(i=0;i<MAX;i++)
  {thou=a/1000;  hun=a/100%10;
   ten=a%100/10; data=a%10;
   ab=10*thou+ten;  cd=10*data+hun;   if(((ab-cd)<0&&ab%2==1&&ab%5!=0)&&cd%2!=1&&ab>=10&&cd>=10)
     {b[cnt]=a;cnt++;}  }
for(i=0;i<cnt-1;i++)
   for(j=i+1;j<cnt;j++)
     if(b<b[j]) {data=b;b=b[j];b[j]=data;}}

试题6 :

机试时间:9月24日9:20
机试题目:南开59题。
考号尾数:915

题目59函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。
void jsVal()
{int i,thou,hun,ten,data,j;
int ab,cd;
for(i=0;i<MAX;i++)
  {thou=a/1000;  hun=a/100%10;
   ten=a%100/10; data=a%10;
   ab=10*thou+ten;  cd=10*data+hun;   if(((ab-cd)<0&&ab%2==1&&ab%5!=0)&&cd%2!=1&&ab>=10&&cd>=10)
     {b[cnt]=a;cnt++;}  }
for(i=0;i<cnt-1;i++)
   for(j=i+1;j<cnt;j++)
     if(b<b[j]) {data=b;b=b[j];b[j]=data;}}

试题7:

机试时间:2006年9月23日,下午4:30
考号:116
题目:南开59题
题目59函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。
void jsVal()
{int i,thou,hun,ten,data,j;
int ab,cd;
for(i=0;i<MAX;i++)
  {thou=a/1000;  hun=a/100%10;
   ten=a%100/10; data=a%10;
   ab=10*thou+ten;  cd=10*data+hun;   if(((ab-cd)<0&&ab%2==1&&ab%5!=0)&&cd%2!=1&&ab>=10&&cd>=10)
     {b[cnt]=a;cnt++;}  }
for(i=0;i<cnt-1;i++)
   for(j=i+1;j<cnt;j++)
     if(b<b[j]) {data=b;b=b[j];b[j]=data;}}
(借用my0625的 )

试题8:

机试时间:9月23日
机试试题:如下
  已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat() 把这些数存入数组 a 中,请考生编制一函数 jsVal(),其功能是:把千位数字和十位数字重新组成一个新的含有两位数字的数 ab(新数的十位数字是原四位数的千位数字,新数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的两位数字 cd(新数的十位数字是原四位数的个位数字,新数的个位数字是原四位数的百位数字),如果新组成的两个数 ab-cd>=10 且 ab-cd<=20 且两个数均是偶数,同时两个数的十位数字均不能为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数 cnt。最后 main() 函数调用写函数 writeDat() 把结果 cnt 以及数组b中符合条件的四位数输出到OUT.DAT文件中。
---------
网友填写的jsVal()函数程序代码如下:

void jsVal()
{ int i,j,maxnum,ab,cd,thou,hun,ten,data;
   for(i=0;i<MAX;i++)
    { thou=a/1000;
       hun=a%1000/100;
       ten=a%100/10;
       data=a%10;
       ab=thou*10+ten;
       cd=data*10+hun;
       if(ab-cd>=10&&ab-cd<=20&&ab%2==0&&cd%2==0&&thou!=0&&data!=0)
        { b[cnt]=a;cnt++;}
    }
for(i=0;i<cnt-1;i++)
  { for(j=i+1;j<cnt;j+=1)
      if(b<b[j])
        { maxnum=b[j];b[j]=b[ i ];b [ i ]=maxnum;}
  }
}

试题9:

机试时间:9月23日17:10
机试试题:南开

下列程序的功能是找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。请编写函数countValue()实现程序要求的功能,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。

    部分源程序存在文件prog1.c中。

    请勿改动主函数main()和输出数据函数writeDat()的内容。


答案内容:
void countValue()

{int i;

for(i=2;i<=90;i++)

   if(isPrime(i)&&isPrime(i+4)&&isPrime(i+10))

     {cnt++;sum+=i;}

}

isPrime函数已经给定~~~~~


浏览该文章的用户为您推荐了该信息: 
阅读该文章的用户同时也阅读了:
       
   
   
 
站内检索:
栏目导航
本月授课安排
阅读排行