二级C语言
在长度为n的线性表中,寻找最大项至少需要比较____次。
一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有____个结点。
仅由顺序、选择(分支)和反复(循环)结构构成的程序是____程序。
数据库设计的四个阶段是:需求分析,概念设计,逻辑设计,____
以下程序运营后的输出结果是____。
#include<stdio.h>
main(){
int a=200,b=010;
printf("%d%d\n",a,b);
}有以下程序
#include<stdio.h> main() {int x,Y; scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y); }
程序运营时输入:1234567程序的运营结果是____
在C语言中,当表达式值为0时表达逻辑值“假”,当表达式值为____时表达逻辑值“真”。
有以下程序
#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]);}
}程序运营后的输出结果是____。
以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)
int fun(int x[N]) {int i,k=0; for(i=0;i<N;____++) if(x[i] return x[k]; }
有以下程序
#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;}
程序运营后的输出结果是____
以下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(____): }
有以下程序
#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]); }
程序运营后的输出结果是____
以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。
#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”,____); }
以下程序打开新文献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); }
给定程序中,函数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);
}给定程序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);
}请补充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);
}请根据以下各小题的要求设计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**********/函数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**********/下列给定程序的功能是调用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**********