f(aa,0,4);
for(i=0;i<5;i++) printf(“%d,”,aa*i+); printf(“ ”); }
执行后输出结果是 A.5,4,3,2,1, B.5,2,3,4,1, C.1,2,3,4,5, D.1,2,3,4,5, (47) 有以下程序 struct STU
{ char name[10]; int num; int Score; };
main( )
{ struct STU s*5+=,,“YangSan”,20041,703-,,“LiSiGuo”,20042,580-, ,“wangYin”,20043,680-,,“SunDan”,20044,550-, ,“Penghua”,20045,537--,*p*5+,*t; int i,j;
for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++)
if(p[i]->Score>p[j]->Score) { t=p[i];p[i]=p[j];p[j]=t;}
printf(“5d %d ”,s*1+.Score,p*1+->Score); }
执行后输出结果是 A.550 550 B.680 680 C.580 550 D.580 680 (48) 有以下程序 #include struct NODE{ int num;
struct NODE *next; };
main( )
{ struct NODE *p,*q,*r; int sum=0;
p=(struct NODE *)malloc(sizeof(struct NODE)); q=(struct NODE *)malloc(sizeof(struct NODE)); r=(struct NODE *)malloc(sizeof(struct NODE)); p->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL; sum+=q->next->num;sum+=p->num; printf(“%d ”,sum); }
执行后的输出结果是 A.3 B.4 C.5 D.6
(49) 有以下程序 #include main( )
{ FILE *fp; int i,k=0,n=0; fp=fopen(“d1.dat”,”w”);
for(i=1;i<4;i++) fprintf(fp,”%d”,i); fclose(fp);
fp=fopen(“d1.dat”,”r”);
fscanf(fp,”%d%d”,&k,&n); printf(“%d %d ”,k,n); fclose(fp); }
执行后输出结果是 A.1 2 B.123 0 C.1 23 D.0 0
(50) 有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_EN D.;语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节) #include main( )
{ FILE *fp; int i,a[4]={1,2,3,4},b; fp=fopen(\
for(i=0;i<4;i++) fwrite(&a[i],sizeof(int),1,fp); fclose(fp);
fp=fopen(\\;
fseek(fp,-2L*sizeof(int).SEEK_END);
fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp);
printf(\}
执行后输出结果是 A.2 B.1 C.4
D.3
二、填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上, 答在试卷上不得分. (1) E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【1】 。 (2) 计算机网络分为广域网和局域网,因特网属于【2】 。
(3) 从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为【3】 。 (4) 在Windows环境下,只要在“开始”菜单中单击【4】选项,就可以查阅最近打开过的文档清单。
(5) 计算机的运算速度可以用MIPS来描述,1MIPS是指每秒执行【5】条指令。 (6) 已知字符A的ACSII码值为65,以下语句的输出结果是【6】 char ch=’B’;
printf(“%c %d ”,ch,ch); (7) 有以下语句段 int n1=10,n2=20;
printf(“ 【7】 ”,n1.n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20
(8) 有以下程序 main( )
{ int t=1,i=5;
for(;i>=0;i--) t*=i; printf(“%d ”,t); }
执行后输出结果是【8】 。 (9) 有以下程序 main( )
{ int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d ”,x); }
执行后输出结果是【9】 。 (10) 有以下程序 #include main( )
{ char ch1,ch2; int n1,n2;
ch1=getchar(); ch2=getchar(); n1=ch1-‘0’; n2=n1*10+(ch2-‘0’); printf(“%d ”,n2); }
程序运行时输入:12<回车>,执行后输出结果是【10】 。 (11) 有以下程序
void f( int y,int *x) {y=y+*x; *x=*x+y;} main( )
{ int x=2,y=4; f(y,&x);
printf(“%d %d ”,x,y); }
执行后输出的结果是【11】 。 (12) 函数fun的功能是计算xn double fun(double x,int n) { int i; double y=1;
for(i=1;i<=n;i++) y=y*x; return y; }
主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+B) 3。实现这一计算的函数调用语句为【12】
(13) 下面rotate函数的功能是:将n行n列的矩阵A转置为A’,例如: 1 2 3 4 1 5 9 13 5 6 7 8 2 6 10 14
当 A= 9 10 11 12 则 A’= 3 7 11 15 13 14 15 16 4 8 12 16 请填空 #define N 4
void rotate(int a[][N]) { int i,j,t;
for(i=0;i for(j=0;【13】;j++) { t=a[i][j];
【14】 ; a[j][i]=t; } }
(14) 以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。 void sstrcpy(char *s,char *t) { while(*s++=【15】);} main( )
{ char str1*100+,str2*+=”abcdefgh”; sstrcpy(str1,str2); printf(“%s ”,str1); }
(15) 下列程序的运行结果是:【16】 #include
char *ss(char *s)
{ return s+strlen(s)/2;}
main( )
{ char *p,*str=”abcdefgh”; p=ss(str); printf(“%s ”,p); }
(16) 下面程序的运行结果是:【17】 int f( int a[], int n)
{ if(n>1) return a[0]+f(&a[1],n-1); else return a[0]; }
main ( )
{ int aa[3]={1,2,3},s;
s=f(&aa[0],3); printf(“%d ”,s); }
(17) 以下程序中给指针p分配三个double型动态内存单元,请填空。 # include main ( ) { double *p;
p=(double *) malloc(【18】); p[0]=1.5;p[1]=2.5;p[2]=3.5; printf(“%f%f%f ”,p*0+,p*1+,p*2+); }
(18) 以下程序的运行结果是【19】 # include
typedef struct student{ char name[10]; long sno; float score; }STU; main( ) { STU
a=,“zhangsan”,2001,95-,b=,“Shangxian”,2002,90-,c=,“Anhua”,2003,95},d,*p=&d; d=a;
if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf(“%ld%s ”,d.sno,p->name); }
(19) 以下sum函数的功能是计算下列级数之和。 S=1+x+x2/2!+x3/3!+........+xn/n! 请给函数中的各变量正确赋初值。 double sum( double x, int n ) { int i; double a,b,s; 【20】
for( i=1;i<=n;i++)
{ a=a*x; b=b*i; s=s+a/b; }