31.以下程序的输出结果是
void reverse(int a[],int n)
{ int i,t;
for(i=0;i{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf(" %d\n ",s);
}
A)22
B)10
C)34
D)30
32.有如下程序
long fib(int n)
{ if(n>2)return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{ printf("%d\n",fib(3));}
该程序的输出结果是
A)2
B)4
C)6
D)8
33.假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入PROG ABCDEFGH IJKL<回车>,则输出结果为
main( int argc, char *argv[])
{ while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
A)ABCDEFG
B)IJHL
C)ABCDEFGHIJKL
D)IJKLABCDEFGH
34.函数 rewind 的作用是
A)使文件位置指针重新返回文件的开始位置
B)将文件位置指针指向文件中所要求的特定位置
C)使文件位置指针指向文件的末尾
D)使文件位置指针自动移至下一个字符位置
35.阅读以下程序及对程序功能的描述,其中正确的描述是
#include
main()
{
FILE *in,*out;
char ch,infile[10],outfile[10];
printf("Enter the infile name:\n");
scanf("%s",infile);
printf("Enter the outfile name:\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{
printf("cannot open infile\n");
exit(0);
}
if((out=fopen(outfile,"w"))==NULL)
{
printf("cannot open outfile\n");
exit(0);
}
while(! feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
A)程序完成将磁盘文件的信息在屏幕上显示的功能
B)程序完成将两个磁盘文件合二为一的功能
C)程序完成将一个磁盘文件复制到另一个磁盘文件中
D)程序完成将两个磁盘文件合并并在屏幕上输出
二、填空题(每空2分,共计30分)
1.数据的逻辑结构有线性结构和 【1】 两大类。
2.顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】 的存储单元中。
3.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 【3】 。
4.软件工程研究的内容主要包括: 【4】 技术和软件工程管理。
5.关系操作的特点是 【5】 操作。
6.以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。
#include
main ()
{ FILE *fp;
char a[4]="1234",b[6]="abcedf";
if((fp=fopen(" 【6】 ","wb"))=NULL)exit(0);
fwrite(a,sizeof(char),4,fp);
fwrite(b, 【7】 ,1,fp);
fclose(fp);
}
7.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为 【8】 。
8.以下程序输出的结果是 【9】 。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
9.以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
请按题意,完成填空。
试题程序:
#include
#include
void fun (int x, int pp[], int *n)
{ int i,j=0;
【10】
if(x%i==0)pp[j++]=i;
【11】;
}
main ()
{ int x,aa[1000], n, i ;
clrscr();
printf("\nPlease enter an integer number : \n "); scanf ("%d ", &x);
fun (x, aa, &n);
for (i=0 ; i printf ("%d ", aa [i]);
printf ("\n ");
}
10.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。
#include
#include
int fun(int *s, int t, int *k)
{ int i;
*k=0;
【12】
if(s[*k] return【13】;
}
main()
{
int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;
clrscr();
fun(a, 10, &k);
printf("%d, %d\n ", k, a[k]);
}
11.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。
#include
#include
int fun(int *s, int t, int *k)
{ int i;
*k=0;
【12】
if(s[*k] return【13】;
}
main()
{
int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;
clrscr();
fun(a, 10, &k);
printf("%d, %d\n ", k, a[k]);
}
12.设有以下结构体类型:
struct st
{ char name[8];
int num;
float s[4];
} student[50];
并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:
fwrite(student,【15】,1,fp);