一、选择题
1、
已知"int w=1,x=2,y=3,z=4;",则表达式"w>x?w:z>y?z:x"的值是__________。
A.1 B.2 C.3 D.4
2、
若有定义语句"int a[3][5];",按内存中的数据存放顺序,a数组的第10个元素是__________。
A.a[1][4] B.a[1][3] C.a[2][3] D.a[2][4]
3、
已知"int a=1,b=2,c=3,x;"与"x=(a^b)&c;",则x的值为__________。
A.0 B.1 C.2 D.3
二、程序填空题
1、
下面程序的功能是统计5个同学成绩(1-100间的整数)中低于平均成绩的人数并输出,请补全以下代码。
#include "stdio.h"
int main()
{
int i,count=0;
_____ 1 _____;
float ave=0.0;
printf("input 5 scores:\n") ;
for(i=0;i<5;i++)
{
_____ 2 _____;
ave+=score[i];
}
_____ 3 _____
for(i=0;i<5;i++)
if(_____ 4 _____)
count++;
printf("%2d",count);
}
三、写程序结果
1、
下列程序的运行结果是__________。
#include "stdio.h"
int main()
{
int i=0;
do printf("%d,",i);
while(i++);
printf("%d\n",i);
}
2、
下列程序的运行结果是__________。
#include "stdio.h"
int fun(char *s)
{
char *t=s;
while(*t++);
return t-s;
}
int main()
{
char t[8]="123456";
printf("%d\n",fun(t));
}
3、
下列程序的运行结果是__________。
#include "stdio.h"
int fun(char s[])
{
int n=0;
while(*s<='9' && *s>='0')
{
n=10*n+*s-'0';
s++;
}
return n;
}
int main()
{
printf("%d\n",fun("056a0"));
}
4、
下列程序的运行结果是__________。
#include "stdio.h"
int f(int n)
{
if(n<=2)
return 1;
else
return f(n-1)+f(n-2);
}
int main()
{
int n=5;
printf("f(n)=%d\n",f(3));
}
5、
下列程序的运行结果是__________。
#include "stdio.h"
int f(char *s,char *t)
{
int n=0,num=0;
char *p,*r;
while(*s)
{
p=s;r=t;
while(*r)
if(*r==*p)
{r++;p++;}
else
break;
if(*r=='\0')
num+=1;
n++;s++;
}
return num;
}
int main()
{
printf("the result is %d\n",f("aabdabc","ab"));
}
四、程序填空
1、
下列程序的功能是求整数n(1-10)的阶乘的位数,例如:5!=120,输出结果是3。
#include "stdio.h"
_____ 1 _____
int fun(int n)
{
int i,d=0;
_____ 2 _____;
for(i=1;i<=n;i++)
s+=log10_____ 3 _____;
_____ 4 _____;
return d;
}
int main()
{
int n=5;
printf("s=%d",_____ 5 _____);
}
五、改错
1、
下面程序功能是用插入排序方法对数组中的元素按从小到大进行排序。以下程序只允许修改两行。
#include "stdio.h"
void f(int a[],int N)
{
int i,j,t;
for(i=1;i<N;i++)
{
t=a[i];
for(j=i-1;j>=0;j--)
a[j+1]=a[i];
a[j+1]=t;
}
}
int main()
{
int i;
int a[5]={12,45,3,-98,32};
f(a,5);
for(i=0;i<5;i++)
printf("%4d",a[i]);
}
2、
下面程序功能是:从键盘输入一个整数n(数组下标范围内的),把没有重复元素值的数组aa中比aa[n]小的元素放在aa[n]的左边,比aa[n]大的元素放在aa[n]的右边,数组元素仍然保存在原数组中,例如,如果aa={33,67,42,58,25,76,85,16,4l,56},输入3,则输出结果是“33,42,25,16,41,56,58,67,76,85”。以下程序只允许修改三行。
#include "stdio.h"
#include <N 10>
void fun(int aa[],int n)
{
int I,j=0,k=0,t;
int bb[N];
t=aa[j];
for(I=0;I<N;I++)
{
if(aa[I]>t)
bb[j++]=aa[I];
if(aa[I]<t)
aa[k++]=aa[I];
}
aa[k]=t;
for(I=0;I<j;I++,k++)
aa[k]=bb[I];
}
int main()
{
int i,n;
int aa[N]={33,67,42,58,25,76,85,16,41,56};
fun(aa,3);
printf("\n ***new list ***\n");
for(i=0;i<N;i++)
printf("%4d",aa[i]);
}
六、程序设计题
1、
程序功能是:输入一个整数n,建立链表,把0~n-l中整数作为链表结点键值并把链表内容保存到文件output.dat中。如果n=5,则文件中存储的内容为“0->1->2->3->4”。
#include "stdio.h"
#include "stdlib.h"
typedef struct ss
{
int data;
_____ 1 _____;
}NODE;
void fun(int n,char *filename)
{
NODE *h,*p,*s;
_____ 2 _____;
int I;
h=p=(NODE *)malloc(sizeof(NODE));
h->data=0;
for(I=1;I<n;I++)
{
s=(NODE *)malloc(sizeof(NODE));
s->data=I;
_____ 3 _____;
p=p->next;
}
p->next=NULL;
if((pf=fopen(filename,"w"))==NULL)
{
printf("Can not open Output.dat");
exit(0);
}
_____ 4 _____;
while(p)
{
fprintf(pf,"%3d",p->data);
if(p->next!=NULL)
fprintf(pf,"→");
p=p->next;
}
fprintf(pf,"\n");
fclose(pf);
p=h;
while(p)
{
s=p;
p=p->next;
_____ 5 _____;/*释放分配的内存空间*/
}
}
int main()
{
char *filename="Output.dat";
int n;
printf("\nInput n:");
scanf("%d",&n);
fun(n,filename);
}
参考答案:
一、选择题
1—3 D、A、D
二、程序填空题
1、int score[5] 2、scanf("%d",&score[i])
3、ave/=5; 4、score[i]<ave
三、写程序结果
1、0,1 2、7 3、56 4、f(n)=2
5、the result is 2
四、程序填空
1、#include "math.h"
2、double s=++d 或者 double s=1
3、(i) 4、d=s 5、fun(n)
注:第二空和第四空联动,若第二空为1,第四空则不要加1
若第二空为0 则第四空加1.
此处根据第三空的语法则s只可以定义为double型
五、改错
1、
L08 for(j=i-1;j>=0 && a[j]>t;j--)
L09 a[j+1]=a[j];
2、
L02 #define N 10
L07 t=aa[n];
L15 aa[k++]=t;
或者不改L15 改L16 for(I=0,k=k+1;I<j;I++,k++)
或者不改L15 改L17 aa[k+1]=bb[I];
六、程序设计题
1、struct ss * next 2、FILE *pf
3、p->next=s 4、p=h
5、free(s)
标签:aa,_____,真题,int,对口,++,2019,include,stdio From: https://blog.51cto.com/teacherzhou/6890501