金陵科技学院校内二级复习题.docx
《金陵科技学院校内二级复习题.docx》由会员分享,可在线阅读,更多相关《金陵科技学院校内二级复习题.docx(49页珍藏版)》请在冰豆网上搜索。
金陵科技学院校内二级复习题
一、填空题
C程序中有且仅有一个【1】函数.
答案:
主
已知有声明floatd=1;doublef=1;longg;和语句printf("___",g=10+'i'+(int)d*f);,为了正确地以十进制形式输出printf参数表中第二个参数(表达式)的值,则在第一个参数中的下划线位置处应填写的格式转换说明符是【1】.
答案:
%ld
在C语言中,字符型数据在内存中以【1】码形式存放.
答案:
ASCII
以下程序输出的结果是【1】.
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
答案:
0
设y为int型变量,请写出描述"y为奇数"的表达式【1】。
答案:
y%2!
=0
以下十个运算符+!
<
=,?
:
&&=||%中优先级别最高和最低的分别是【1】和【2】.
答案:
!
阅读以下程序:
main()
{intx;
scanf("%d",&x);
if(x--<5)printf("%d",x);
elseprintf("%d",x++);
}
程序运行后,如果从键盘上输人5,则输出结果是【1】
答案:
4
有以下程序
main()
{inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
执行后输出结果是【1】。
=======(答案1)=======
3
假定所有变量均已正确说明,下列程序段运行后x的值是【1】
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
=======(答案1)=======
4
有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x>10.0)y=1.0/x;
elsey=1.0;
printf("%.2f\n",y);}
该程序的输出结果是【1】.
=======(答案1)=======
1.00
结构化程序中,有三种结构:
顺序结构,【1】,循环结构.
=======(答案1)=======
选择结构
在TurboC2.0系统中,若将实型常数1.5存储在内存中,它占用【1】个字节.
8
执行"printf("%d,%d",i,j,k,m);"后将在屏幕上输出【1】个整数.
=======(答案1)=======
2
设a和b均为int整型变量,且a=5,b=7,则以下表达式的值为【1】.1.0+a/b
=======(答案1)=======
1.0
条件"20((x>20)&&(x<30))||(x<-100)
若执行以下程序时从键盘上输入9,则输出结果是【1】
main()
{
intn;
scanf("%d",&n);
if(n++<10)printf("%d",n);
elseprintf("%d",n--);
}
=======(答案1)=======
10
有以下程序
main()
{intn=0,m=1,x=2;
if(!
n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
执行后输出结果是【1】
=======(答案1)=======
-4
以下程序运行后的输出结果是【1】.
main()
{inta=1,b=3;
if(a+b)printf("yes\n");
elseprintf("no\n");
}
=======(答案1)=======
yes
有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x>10.0)y=1.0/x;
elsey=1.0;
printf("%.2f\n",y);}
该程序的输出结果是【1】.
=======(答案1)=======
1.00
在C语言的源程序中若出现常量"1L",则该常量的类型是【1】.
长整型
若a是int型变量,则执行表达式"a=25/3%3"后,a的值为【1】.
=======(答案1)=======
2
设x,y,z均为int型变量,请写出描述"x或y中有一个小于z"的表达式【1】.
=======(答案1)=======
x以下程序运行后的输出结果是【1】.
main()
{inta=1,b=2,c=3;
if(c=a)printf("%d\n",c);
elseprintf("%d\n",b);
}
=======(答案1)=======
1
以下程序运行时输出到屏幕的结果是【1】。
#include
voidmain()
{inti=1,m=0;
switch(i)
{case1:
case2:
m++;
case3:
m++;
}
printf("%d",m);
}
=======(答案1)=======
2
以下程序运行后的输出结果是【1】
main()
{
inta,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d,%d,%d\n",a,b,c);
}
=======(答案1)=======
10,20,0
假定所有变量均已正确说明,下列程序段运行后x的值是【1】
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
=======(答案1)=======
4
有以下程序
#include
main()
{intc=0,k;
for(k=1;k<3;k++)
switch(k)
{default:
c+=k;
case2:
c++;break;
case4:
c+=2;break;
}
printf("%d\n",c);
}
程序运行后的输出结果是【1】.
=======(答案1)=======
3
【1】语句,只能用在循环中,以中断某次循环,继续下一次循环.
=======(答案1)=======
continue
执行语句段
for(s=0,i=1;i<11;i++)
{if(i==6)continue;
s+=i;
}
后,s值为【1】.
=======(答案1)=======
49
有以下程序
#include
main()
{intn=2,k=0;
while(k++&&n++>2);
printf("%d%d\n",k,n);
}
程序运行后的输出结果是【1】.
=======(答案1)=======
12
执行语句"for(s=0,i=1;i<=10;i=i+3)s+=i;"后,变量s、i的当前值是【1】和【2】.
=======(答案1)=======
22
=======(答案2)=======
13
若有定义:
inta[2][3]={{1},{2,3}},则初始化后,元素a[0][1]得到的初值是【1】.
=======(答案1)=======
0
下面程序运行结果的最后一行为【1】.main()
{inti,f[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];
for(i=2;i<10;i++)
{if(i%4==0)printf("\n");
printf("%3d",f[i]);}
}
=======(答案1)=======
3455
以下程序运行后输出结果中第一行为【1】,第二行为【2】,第三行为【3】.
#include"stdio.h"
#defineN3
main()
{inta[N][N],b[N*N]={1,1},i,j;
for(i=2;ib[i]=b[i-1]+b[i-2];
for(i=0;ifor(j=0;ja[j][i]=b[i*N+j];
for(i=0;i{for(j=0;jprintf("%3d",a[i][j]);
printf("\n");
}
}
=======(答案1)=======
1313
=======(答案2)=======
1521
=======(答案3)=======
2834
本程序用改进的冒泡法对数组a[n]的元素从小到大排序,请在程序空白处填空.
#defineN10
main()
{inta[N]={10,7,43,1,9,6,3,8,5,2};
intj,k,jmax,temp;
【1】;
do
{k=0;
for(j=0;jif(【2】)
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
k++;
}
【3】;
}while(jmax>0&&k);
for(j=0;jprintf("%5d",a[j]);
printf("\n");
}
=======(答案1)=======
jmax=N-1
=======(答案2)=======
a[j]>a[j+1]
=======(答案3)=======
jmax=jmax-1
以下程序运行后的输出结果是【1】.
main()
{inta=1,b=3;
if(a+b)printf("yes\n");
elseprintf("no\n");
}
=======(答案1)=======
yes
以下程序的输出结果是【1】.
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf("x=%d",x);
}
=======(答案1)=======
x=8
有以下程序
#include
main()
{intn=2,k=0;
while(k++&&n++>2);
printf("%d%d\n",k,n);
}
程序运行后的输出结果是【1】.
=======(答案1)=======
12
除goto语句外,在循环结构中执行【1】语句可提前结束本次循环直接进入下一次循环。
=======(答案1)=======
continue
若声明"chara[15]="Windows-9x";",语句"printf("%s",a+8);"的输出结果为【1】.
=======(答案1)=======
9x
以下程序输出的结果是【1】.
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<3;i++)
p[i]=a[i*(i+1)];
for(i=0;i<3;i++)
k+=p[i]*2;
printf("%d",k);
}
=======(答案1)=======
21
下面的程序打印杨辉三角形,其格式为:
1
11
121
1331
14641
15101051
1615201561
172135352171
18285670562881
193684126126843691
程序如下.
#defineN11
main()
{inti,j,a[N+1][N+1];
for(i=1;i<=N;i++)
{a[i][i]=1;
a[i][1]=1;
}
for(【1】;ifor(j=2;【2】;j++)
a[i][j]=【3】;
for(i=1;i{j=N-i-1;
while(j>0){printf("");j--;}
for(j=1;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
printf("\n");
}
=======(答案1)=======
i=3
=======(答案2)=======
j
=======(答案3)=======
a[i-1][j-1]+a[i-1][j]
有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x>10.0)y=1.0/x;
elsey=1.0;
printf("%.2f\n",y);}
该程序的输出结果是【1】.
=======(答案1)=======
1.00
有以下程序
#include
main()
{intc=0,k;
for(k=1;k<3;k++)
switch(k)
{default:
c+=k;
case2:
c++;break;
case4:
c+=2;break;
}
printf("%d\n",c);
}
程序运行后的输出结果是【1】.
=======(答案1)=======
3
设inti=5;则循环语句while(i>=1)i--;执行后,i的值为【1】.
=======(答案1)=======
0
有如下程序
main()
{
intx=23;
do
{printf("%d″,x--);
}while(!
x);
}
该程序的执行结果是【1】.
=======(答案1)=======
23
有以下程序
#include
main()
{intn=2,k=0;
while(k++&&n++>2);
printf("%d%d\n",k,n);
}
程序运行后的输出结果是【1】.
=======(答案1)=======
12
设charstring[]="abc_d!
";则数组所占字节数应是【1】.
=======(答案1)=======
7
下列程序段的输出结果是【1】.
main()
{charb[]="hello,you";
b[5]=0;
printf("%s\n",b);
}
=======(答案1)=======
hello
执行程序段后,表达式*--p的值是【1】.
inta[]={63,20,30,28};
p=&a[2];
=======(答案1)=======
20
执行下面的程序段后,ab的值为【1】.
int*v,ab;
ab=100;
v=&ab;
ab=*v+10;
=======(答案1)=======
110
以下程序的运行结果是【1】.
main()
{chara[]="12345",*p;
ints=0;
for(p=a;*p!
='\0';p++)s=10*s+*p-'0';
printf("%d",s);
}
=======(答案1)=======
12345
以下程序的运行结果是【1】.
main()
{intx[5]={2,4,6,8,10},*p,**pp;
p=x;pp=&p;
printf("%d,",*(p++));
printf("%d",**pp);
}
=======(答案1)=======
2,4
以下程序运行时输出到屏幕的结果是【1】。
#include
longf(intn)
{staticlongs;
if(n==1)returns=2;
elsereturn++s;
}
voidmain()
{longi,sum=0;
for(i=1;i<4;i++)sum+=f(i);
printf("%ld",sum);
}
=======(答案1)=======
9
一个用C语言编写的程序在运行时,如果没有发生任何异常情况,则只有在执行了【1】函数的最后一条语句或该函数中的return语句后,程序才会终止运行.
=======(答案1)=======
main
以下binary函数的功能是利用二分查找法从数组a的10个元素中对关键字m进行查找,若找到,返回此元素的下标;若未找到,则返回值-1.请填空:
binary(inta[10],intm)
{intlow=0,high=9,mid;
while(low<=high)
{mid=(low+high)/2;
if(melseif(m>a[mid])【2】
elsereturn(mid);
}
return(-1);
}
main()
{inta[]={1,3,5,7,9,11,13,15,17,19},m,r;
scanf("%d",&m);
r=binary(【3】);
if(r==-1)printf("notfound!
");
elseprintf("found:
%d",r+1);
}
=======(答案1)=======
high=mid-1:
=======(答案2)=======
low=mid+1:
=======(答案3)=======
a,m
以下程序的功能是:
实现两个复数相加的计算并输出运算结果.
#include
#include
structcomlex
{floatr,i;};
structcomplex*cal(structcomplex*x1,structcomplex*x2)
{structcomplex*p;
p=(【1】)malloc(sizeof(structcomplex));
p->r=(*x1).r+(*x2).r;p->i=(*x1).i+(*x2).i;
【2】;
}
main()
{structcomplex*p,x,y;
scanf("%f%f%f%f",&x.r,&x.i,&y.r,&y.i);
p=cal(&x,&y);
printf("result:
%.2f+%.2fi",【3】);
free(p);
}
=======(答案1)=======
structcomplex*
=======(答案2)=======
returnp
=======(答案3)=======
p->r,p->i
在调用函数fopen("a:
\\b.dat","r")时,若A盘根目录下不存在文件b.dat,则函数的返回值是【1】.
=======(答案1)=======
0
当程序读写数据文件时,需要有声明语句"FILE*fp;",在该声明语句之前必须包含的头文件名为【1】.
=======(答案1)=======
stdio.h
若有声明"chara[3]="AB";char*p=a;",执行语句"printf("%d",p[2]);"后
输出结果是【1】.
=======(答案1)=======
0
当运行以下程序时,从键盘输入
control<回车>
cat<回车>
bed<回车>
-1<回车>
则以下程序的运行结果是【1】.
#include"stdio.h"
main()
{chars[80],*p;
p=s;
gets(p);
while(*p!
='-')
{if(*p=='a'||*p=='b')puts(p);
gets(p);
}
}
=======(答案1)=======
bed
以下程序运行时输出到屏幕的结果是【1】。
#include
intfun(int*x,intn)
{if(n==0)returnx[0];
elsereturnx[0]+fun(x+1,n-1);
}
voidmain()
{inta[]={1,2,3,4,5,6,7};
printf("%d\n",fun(a,2));
}
=======(答案1)=======
6
C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是【1】.
=======(答案1)=======
int
#include
voidfun(int*a,intb,int*c)
{*a=++b;b=*c;*c=*a;}
main()
{inta=10,b=20,c=30;
{inta=4;
c=a+b;
printf("%d\n",a+b+c);
{intc=b;
fun(&a,b,&c);
printf("%d\n",a+b+c);
}
printf("%d\n",a+b+c);
}
}
程序输出的第一行是【1】,第二行是【2】,第三行是【3】.
=======(答案1)=======
48
=======(答案2)=======
62
=======(答案3)=======
65
在带头结点的单链表中,编一函数删除数据域值为x的结点.
structlink*delete_link(structlink*head,intx)
{structlink*q,*m;
q=head;
m=head->next;
while((m!
='\0')&&(【1】))/*寻找被删除结点m*/
{q=m;/*q始终指向m之前的结点*/
m=m->next;
}
if(【2】)/*不存在符合条件的结点*/
printf("cannotexit!
\n");
else/*逻辑删除结点*/
{q->next=m->next;
【3】;
}
return(head);
}
=======(答案1)=======
m->data!
=x
=======(答案2)=======
m==NULL
=======(答案3)=======
free(