二级C语言

第1161题

在长度为n的线性表中,寻找最大项至少需要比较____次。

第1162题

一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有____个结点。

第1163题

仅由顺序、选择(分支)和反复(循环)结构构成的程序是____程序。

第1164题

数据库设计的四个阶段是:需求分析,概念设计,逻辑设计,____

第1165题

以下程序运营后的输出结果是____。

#include<stdio.h>
main(){
int a=200,b=010;  
printf("%d%d\n",a,b);
}


第1166题

有以下程序

  #include<stdio.h>
  main()
  {int  x,Y;
  scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);
  }

  程序运营时输入:1234567程序的运营结果是____

第1167题

在C语言中,当表达式值为0时表达逻辑值“假”,当表达式值为____时表达逻辑值“真”。

第1168题

有以下程序

#include<stdio.h>
main()
{int i,n[]={0,0,0,0,0};
  for (i=1;i<=4;i++)
  {n[i]=n[i-1]*3+1; printf(”%d ",n[i]);}
}

程序运营后的输出结果是____。

第1169题

以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)

  int fun(int x[N])
  {int i,k=0;
  for(i=0;i<N;____++)
  if(x[i]
  return x[k];
  }
第1170题

有以下程序

#include<stdio.h>
int*f(int *p,int*q);
main()
{int m=1,n=2,*r=&m;
  r=f(r,&n);printf(”%d\n”,*r);
}
int*f(int *p,int*q)
{return(*p>*q)?p:q;}

程序运营后的输出结果是____

第1171题

以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。(设M,. N已定义)

  int fun(int a[N][M))
  {int i,j,row=0,col=0;
  for(i=0;i<N;I++)
  for(j=0;j
  if(a[i][j]>a[row][col]){row=i;col=j;}
  return(____):
  }
第1172题

有以下程序

  #include<stdio.h>
  main()
  {int  n[2],i,j;
  for(i=0;i<2;i++)n[i]=0;
  for(i=0;i<2;i++)
  for(j=0;j<2;j++)n[j]=n[i]A+1;
  printf(”%d\n”,n[1]);
  }

  程序运营后的输出结果是____

第1173题

以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。

  #include<stdio.h>
  main()
  {int a〔10],*p,*s;
  for(p=a;p-a<10;p++)scanf(”%d”,p);
  for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;
  printf("max=%d\n”,____);
  }
第1174题

以下程序打开新文献f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。

  #include<stdio.h>
  main()
  {____*fp;
  char a[5]={’1’,’2’,’3’,’4’,’5’},i;
  fp=fopen(”f .txt”,”w”);
  for(i=0;i<5;i++)fputc(a[i],fp);
  fclose(fp);
  }
第1175题

给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在__2__处使fa指向函数f1,在__3__处使fb指向函数f2。当调用正确时,程序输出:

x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000

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

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

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

给定源程序:

#include  <stdio.h>
double f1(double x)
{return x*x;}
double f2(double x, double y)
{return x*y;}
double fun(double a, double b)
{
/**********found**********/
  __1__ (*f)();
  double r1, r2;
/**********found**********/
  f = __2__ ;   /* point fountion f1 */
  r1 = f(a);
/**********found**********/
  f = __3__ ;   /* point fountion f2 */
  r2 = (*f)(a, b);
  return r1 + r2;
}
main()
{double x1=5, x2=3, r;
  r = fun(x1, x2);
  printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n",x1, x2, r);
}
第1176题

给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

给定源程序:

#include <stdio.h>
#include <stdlib.h>
typedef struct aa
{int data; struct aa *next;}NODE;
int fun(NODE *h)
{int sum = 0 ;
  NODE *p;
/***********found**********/
  p=__1__;
  while(p)
  {if(p->data%2==0)
     sum +=p->data;
/***********found**********/
     p=__2__;
  }
  return sum;
}
NODE *creatlink(int n)
{NODE *h, *p, *s;
   int i;
   h=p=(NODE *)malloc(sizeof(NODE));
   for(i=1; i<=n; i++)
   {s=(NODE *)malloc(sizeof(NODE));
      s->data=rand()%16;
      s->next=p->next;
      p->next=s;
      p=p->next;
   }
   p->next=NULL;
   return h;
}
outlink(NODE *h, FILE *pf)
{NODE *p;
   p = h->next;
   fprintf(pf ,"\n\nTHE LIST :\n\n HEAD ");
   while(p)
   {fprintf(pf ,"->%d ",p->data); p=p->next;}
      fprintf (pf,"\n");
}
outresult(int s, FILE *pf)
{fprintf(pf,"\nThe sum of even numbers : %d\n",s);}
main()
{NODE *head; int even;
   head=creatlink(12);
   head->data=9000;
   outlink(head , stdout);
   even=fun(head);
   printf("\nThe result :\n"); outresult(even, stdout);
}
第1177题

请补充fun函数,该函数的功能是:计算N×N维矩阵元素的方差,结果由函数返回。维数在主函数中输入。
例如:

矩阵

的计算结果是14.414。
求方差的公式为:

公式

其中

公式

注意:
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横
线上填入所编写的若干表达式或语句。

/**********code.c**********/
#include <stdio.h>
#include <stdlib.h>
#define N 20
/**********found**********/
double fun(①______,int n)
{
int i,j;
double s=0.0;
double f=0.0;
double aver=0.0;
double sd=0.0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s+=a[i][j];
/**********found**********/
aver=②______;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
f+=(a[i][j]-aver)*(a[i][j]-aver);
f/=(n*n);
/**********found**********/
sd=③______;
return sd;
}
main()
{
int a[N][N];
int n;
int i,j;
double s;
printf("*****Input the dimension of array n******\n");
scanf("%d",&n);
printf("*****The array*****\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=rand()%50;
while (a[i][j]==0)
a[i][j]=rand()%60;
printf("%4d",a[i][j]);
}
printf("\n\n");
}
s=fun(a,n);
printf("*****THE RESULT*****\n");
printf("%4.3f\n",s);
}
第1178题

请根据以下各小题的要求设计C应用程序(包括界面和代码)。
下列给定程序中,函数fun()的功能是:将n个无序整数从小到大排序。
请改正程序指定部位的错误,使它能得到正确结果。
注意:
不要改动函数main(),不得增行或删行,也不得更改程序的结构。

/**********code.c**********/
#include <stdio.h>
void fun(int n, int *a)
{
int i,j,p,t;
for(j=0;j<n-1;j++)
{
p=j;
/**********found**********/
for(i=j+1;i<n-1;i++)
if(a[p]>a[i])
/**********found**********/
t=i;
if(p!=j)
{
t=a[j];
a[j]=a[p];
a[p]=t;
}
}
}void putarr(int n, int *z)
{
int i;
for(i=1;i<=n;i++,z++)
{
printf("%4d",*z);
if(!(i%10))
printf("\n");
}
printf("\n");
}void main()
{
int aa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;
printf("\n\nBefore sorting %d numbers:\n",n);
putarr(n,aa);
fun(n,aa);
printf("\nAfter sorting %d numbers:\n",n);
putarr(n,aa);
}
/**********-code.c**********/
第1179题

函数fun功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。调用该函数后,c=4251。
注意,部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun花括号中填入你编写的若干语句。

/**********code.c**********/
#include <stdio.h>
void fun(int a, int b, long *c)
{

}
int main()
{
int a,b;
long c;
printf("Input a b:");
scanf("%d%d", &a, &b);
fun(a, b, &c);
printf("The result is: %ld\n", c);
}
/**********-code.c**********/

第1180题

下列给定程序的功能是调用fun函数建立班级通信录。通信录中记 录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读 入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件 中。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得 出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构!

/**********code.c**********/
#include <stdio.h>
#include<stdlib.h>
#define N 5
typedef struct
{ 
 int num;
 char name[10];
 char tel[10];
}STYPE;
void check();
/**********found**********/
int fun(①______ *std)
{
 /**********found**********/ ②______ *fp; int i;
 if((fp=fopen("myfile5.dat","wb"))==NULL)return(0);
 printf("\nOutput data to file! \n");
 for(i=0;i<n;i++) **********found**********="" fwrite(&std[i],sizeof(stype),1,③______);
 fclose(fp);
 return(1);
}
void main()
{
 STYPE s[10]={ {1,"aaaaa","111111"}, {1,"bbbbb","222222"},
{1,"ccccc","333333"}, {1,"ddddd","444444"}, {1,"eeeee","555555"} };
 int k;
 k=fun(s);
 if(k==1)
 {
 printf("Succeed!");
 check();
 }
 else printf("Fail!");
}
void check()
{
 FILE *fp; int i; STYPE s[10];
 if((fp=fopen("myfile5.dat","rb"))==NULL)
 {
 printf("Fail! \n");
 exit(0);
 }
 printf("\nRead file and output to screen: \n");
 printf("\n num name tel\n");
 for(i=0;i<n;i++) { fread(&s[i],sizeof(stype),1,fp); printf("%6d%s%s\n",s[i].num, s[i].name,s[i].tel); }
 fclose(fp);
 **********-code.c**********