历年二级C语言笔试真题及答案
A)scanf(“%s”,s[0].name); B)
scanf(“%d”,&s[0].age); C)
scanf(“%c”,&(ps>sex)); D)
scanf(“%d”,ps>age);
(46)若有以下定义和语句
union data{ int i; char c; float f;x; int y;} 则以下语句正确的是________。
A)x=10.5; B)x.c=101; C)y=x; D)printf(“%d\n”,x);
47)程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。
data next
a
b
c NULL 若有以下程序段
q=s; s=s>next; p=s;
while(p->next) p=p->next;
p->next=q; q->next=NULL;该程序段实
现的功能是________。
A)首结点成为尾结点B)尾结点成为首结点C)删除首结点D)删除尾结点(48)若变量已正确定义,则以下语句的输出结果是________。
s=32; s^=32;printf(“%d”,s);A)-1 B)0 C)1 D)32
(49)以下叙述中正确的是________。A)C语言中的文件是流式文件,因此只能顺序存取数据
B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失(50)有以下程序
#include <stdio.h>
main()
{FILE *fp; int i; char ch[]=”abcd”,t;
fp=fopen(“abc.dat”,”wb+”);
for(i=0;i<4;i++)fwriter&ch[],1,1fp; fseek(fp,-2L,SEEK_END);
fread(&t,1,1,fp);
fclose(fp);
printf(“%c\n”,t); }程序执行后的输出结果是________。A)d B)c C)b D)a 二、填空题(每空2分,共40分)
********(1)下列软件系统结构图的宽度为【1】。
(2)【2】的任务是诊断和改正程序中的错误。
(3)一个关系表的行称为【3】。(4)按“先进后出”原则组织数据的数据结构是【4】。
(5)数据结构分为线性结构和非线性结构,带链的队列属于【5】。
(6)设有定义:float x=123.4567;,则执行以下语句后的输出结果是【6】。printf("%f\n",(int)(x*100+0.5)/100.0); (7)以下程序运行后的输出结果是【7】。main()
{ int
m=011,n=11;printf("%d %d\n",++m,n+
+);}
(8)以下程序运行后的输出结果是
【8】。
main()
{ int x,a=1,b=2,c=3,d=4;
x=(a<b)?a:b; x=(x<c)?x:c;
x=(d>x)?x:d; printf("%d\n",x);}
9)有以下程序,若运行时从键盘输入:
18,11<回车>,则程序输出结果是【9】。
main()
{ int a,b; printf("Enter
a,b:");scanf("%d,%d",&a,&b);
while(a!=b)
{ while(a>b) a-=b; while(b>a)
b-=a; }
printf("%3d%3d\n",a,b); ynexa
m.cn[云南考试网] }
(10)以下程序的功能是:将输入的正整
数按逆序输出。例如,若输入135,则输
出531。请填空。
#include <stdio.h>
main()
{int n,s;printf("Enter a number:");
scanf("%d",&n); printf("Output: ");
do
{ s=n%10; printf("%d",s); 【10】;}
while(n!=0); printf("\n"); }
11)以下程序中,函数fun的功能是计算
x2-2x+6,主函数中将调用fun函数计算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
请填空。
#include "math.h"
double fun(double x)
{ return(x*x-2*x+6); }
main()
{ double x,y1,y2; printf("Enter x:");
scanf("%lf",&x);
y1=fun( 【11】); y2=fun( 【12】);
printf("y1=%lf,y2=%lf\n",y1,y2); }
(12)下面程序的功能是:将N行N列
二维数组中每一行的元素进行排列,第0
行从小到大排序,第1行从大到小排
序,第2行从小到大排序,第3行从大到
小排序。例如:
#define N 4
Void sort (int a[][N])
{int i,j,k,t;
for (i=0;i<N;i++)
for(j=0;j<N-1;j++)
for(k=【13】;k<N;k++) /*判断下标是否
为偶数来确定按升序或降序来排列*/
if(【14】?a[j]<a[j][k]:a[j]>a[k])
{t=a[j] a[j]=a[k];
a[k]=t; } }
void outarr(int a[N][N])
{...........}
main()
{int
aa[N][N]={{2,3,4,1}{8,6,5,7}{11,12,10,9}{
15,14,16,13}};
outarr(aa);/*以矩阵的形式输出二维数组
*/
sort(aa);outarr(aa);}
(13)下列程序中的函数strcpy2()实现字
符串两次复制,即将t所指字符串复制两
次到s所指内存空间中,合并形成
一个新的字符串。例如,若t所指字符串
为efgh,调用strcpy2后,s所指字符串
为efghefgh。请填空。
#include <stdio.h>
#include <string.h>
void strcpy2(char *s,char *t)
{ char *p=t;
while(*s++=*t++);
s= 【15】;
while( 【16】=*p++);}
main()
{ char str1[100]="abcd",str2[]="efgh";
strcpy2(str1 ,str2); printf("%s\n",str1);}
(14)下面程序的运行结果是【17】。
#include <stdio.h>
int f(int a[],int n)
{if(n>1)
return a[0]+f(a+1,n-1);
else return a[0];}
main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},s;
s=f(aa+2,4); printf("%d\n",s);}
(15)下面程序由两个源文件t4.h和t4.c
组成,程序编译运行的结果是【18】。
t4.h的源程序为:
#define N 10
#define f2(x) (x*N)
t4.c的源程序为:
#include <stdio.h>#define M 8
#define f(x) ((x)*M)
#include "t4.h"
main()
{int i,j; i=f(1+1); j=f2(1+1);
printf("%d%d\n",i,j); }
(16)下面程序的功能是建立一个有3个
节点的单向循环链表,然后求各个节点数
值域data中数据的和请填空。
#include <stdio.h>
#include <stdlib.h>
struct NODE{ int data;
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->data=100; q->data=200;
r->data=200;
p->data=q; q->data=r;
r->data=p;
m=p->data+p->next->data+r->next->dat
a 【19】;
printf("%d\n",sum); }
(17)有以下程序,其功能是:以二进制
“写”方式打开文件d1.dat,写入1~100
这100个整数后关闭文件。再以二进制
17
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库历年二级C语言笔试真题及答案(17)在线全文阅读。
相关推荐: