一、选择题
1、
在C语言中,用__________表示逻辑值“真”。
A.T B.F C.非零整数 D.0
2、
执行“int a=3;a+=a^2;”后,则a的值是__________。
A.12 B.9 C.6 D.4
3、
若“int a[2][3]={1,2,3,4,5,6};”,则不能访问a[1][2]值的是__________。
A.*(a[1]+2) B.*(*(a+1)+2) C.*(a+2) D.*(&a[1][0]+2)
二、程序填空题
1、
7个待测样本中有且仅有一个样本指标超标,为了找到这唯一超标样本,采用3个检测试剂盒进行检测。方法如下:把7个样本按1,2,3,…7进行编号,并将其编号转换为相应的3位二进制数;把可重复使用的3个检测试剂盒进行编号,分别对应3位二进制数的每一位;如果样本编号3位二进制中的某位为1,就用相应二进制位(编号)的试剂盒进行检测:按上述方法对每一个待测样本进行检测;最后,检测为阳性(设定值为1)试剂盒编号组成的二进制数就是超标样本的编号。下面程序功能就是完成上述检测方法并输出超标样本编号即:“flag=7”。请补充完整。
#include<stdio.h>
int main()
{
int sample[8]={0,0,0,0,0,0,0,1};/*样本编号第7个数值为1表明其超标*/
int test[3]={0};/*检测试剂盒编号,test[0]对应二进制的最低位,test[2]对应最高位*/
int i,j,k,base=1,flag=0;
for(i=1;i<=7;i++)
{
_____ 1 _____ ;
j=0;
while( _____ 2 _____ )
{
if(k%2==1)
test[j]=test[j]||sample[i];
_____ 3 _____ ;
j++;
}
}
for(i=0;i<3;i++)
{
flag+=test[i]*base;
_____ 4 _____ ;
}
printf("flag=%d", flag);
}
三、写程序结果
1、
下列程序的运行结果是__________。
#include "stdio.h"
main()
{
unsigned int a=6;
int b=-20;
(a+b>6)?puts("sum>6"):puts("sum<=6");
}
2、
下列程序的运行结果是__________。
#include"stdio.h"
int main()
{
int a[]={118,65,128};
int i;
for(i=0;i<3;i++)
printf("%c",(a[i])&(a[i]-1)?'N': 'Y');
}
3、
下列程序的运行结果是__________。
#include"stdio.h"
int fun(int n)
{
if(n>0)
return(n*fun(n-2));
else
return 1;
}
int main()
{
int x;
x=fun(5);
printf("x=%d\n",x);
return 0;
}
4、
下列程序的运行结果是__________。
#include"stdio.h"
int main()
{
char s1[]="I love China";
char s2[]="I love";
char *str1=s1,*str2=s2;
int answer=0;
while(!(answer=*str1-*str2)&&*str2)
{
str1++;
str2++;
}
if(answer<0)
answer=1;
else if(answer>0)
answer=-1;
printf("answer=%d\n",answer);
return 0;
}
5、
下列程序的运行结果是__________。
#include "stdio.h"
int main()
{
int a[]={89,88,76,70,68,58};
int x=70,mid,pos=-1,find=0,low=0,high=5;
while(!find&low<=high)
{
mid=(high+low)/2;
if(x>a[mid])
low=mid+1;
else
if(x<a[mid])
high=mid-1;
else
{
pos=mid;
find=1;
}
}
printf("pos=%d\n",pos);
return 0;
}
四、程序填空
1、
下面程序的功能是:调用 Sort()排序函数,通过传递相应参数用选择法按升序(或降序)对数组中的数进行排序。假设数组中存储数据为{88 ,67,78,56,90},若升序排序则结果为{56,67,78,88,90},若降序排序则结果为{90,88,78,67,56}。
#include<stdio.h>
_____ 1 _____ 5
_____ 2 _____ ;//排序函数声明*
int Ascending(int a,int b);//升序*
int Descending(int a,int b);//降序*
int main()
{
int i;
int score[N]={88,67,78,56,90};
_____ 3 _____ ;//*升序排序*
printf("The Ascending Sort is: ");
for(i=0;i<5;i++)
printf("%d ",score[i]);
Sort(score,5,Descending);//降序排序
printf("The Descending Sort is:");
for(i=0;i<5;i++)
printf("%d ",score[i]);
return 0;
}
void Sort(int score[],int n,int(*compare)(int a,int b))
{
int i,j,k;
int t1,t2;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if( _____ 4 _____ )
k=j;
if(k!=i)
{
t1=score[k];score[k]=score[i];score[i]=t1;
}
}
}
int Ascending(int a,int b)
{
_____ 5 _____ ;
}
int Descending(int a,int b)
{
return a>b;
}
五、改错
1、
下列给定程序中函数f的功能是:根据整型形参(x,t),计算公式前几项的值。
例如,若x=2,n=10;则输出为:sin(2)=0.90937。以下程序只允许修改三行。
#include "stdio.h"
double f(int x, int n)
{
int i,j;
long double t,xt;
int sign;
double s=0;
for(i=1;i<n;i=i+2)
{
t=1;
xt=1;
for(j=1;j<=i;j++)
{
t=t*j;
xt=xt*xt;
}
s+=xt/t;
sign=-sign;
}
return s;
}
int main()
{
printf("sin(%d)=%f\n",2,f(2,5));
return 0;
}
2、
下面程序的功能是把一个文件的内容拷贝到另一个文件,如果拷贝成功,则提示“File Copy Success!”。以下程序只允许修改两行。
#include"stdio.h"
int main()
{
FILE *fpSrc;//源文件*
FILE *foDes;//目标文件*
int ch;
if((fpSrc=fopen("src.txt","r")==NULL)
{
printf("File Cannot Open!");
exit(0);
}
if((fpDes=fopen("des.txt","r")==NULL)
{
printf("File Cannot Open!");
exit(0);
}
while((ch=fgetc(fpSrc)!=EOF)
if((fputs(ch,fpSrc)==EOF)
return 0;
printf("File Copy Success!");
return 0;
}
六、程序设计题
1、
下面程序中定义了三个函数,其功能分别是添加链表结点、显示链表结点与删除链表结点。如果添加的链表结点数据为“11,22,33,44,55”则显示链表为“11→22→33→44→55→End”如果要删除数据33的结点则显示链表为“11→22→44→55→End”请补充程序。
#include"stdio.h"
#include"stdlib.h"
struct Node
{
int data;
_____ 1 _____
};
struct Node *AppNode(struct Node *head);//添加结点*
void DisNode(struct Node *head);//*显示结点*
struct Node *DelNode(struct Node *head,int nodeData);//删除结点*
int main()
{
int i=0;
struct Node *head=NULL;
for(i=0;i<5;i++)
head=AppNode(head);
DisNode(head);
DelNode(head,33);//*删除数据为33的结点*
DisNode(head);
}
struct Node *AppNode(struct Node*head)
{
struct Node *p=NULL;
_____ 2 _____
int data;
_____ 3 _____
if(p==NULL)
{
printf("No enough memory!");
exit(0);
}
if(head==NULL)
head=p;
else
{
while(pr->next!=NULL)
pr=pr->next;
pr->next=p;
}
pr=p;
printf("input node data: ");
scanf("%d",&data);
pr->data=data;
pr->next=NULL;
return head;
}
void DisNode(struct Node *head)
{
struct Node*p=head;
while(p!=NULL)
{
printf("%d->",p->data);
p=p->next;
}
printf("End\n");
}
struct Node *DelNode(struct Node *head, int nodeData)
{
struct Node *p=head,*pr=head;
if(head==NULL)
{
printf("No Linked Table!\n");
return(head);
}
while(nodeData!=p->data&&p->next!=NULL)
{
pr=p;
p=p->next;
}
if( _____ 4 _____ )
{
if(p==head)
head=p->next;
else
_____ 5 _____
free(p);
}
else
printf("The Node has not found!");
return head;
}
参考答案:
一、选择题
1—3 C、D、C
二、程序填空题
1、k=i 2、k 3、k=k/2 4、base=base*2
三、写程序结果
1、sum>6 2、NNY 3、x=15 4、answer=-1
5、pos=-1
四、程序填空
1、#define N
2、void Sort(int score[],int n,int(*compare)(int a,int b))
3、Sort(score,5,Ascending) 4、!(*compare)(score[k],score[j])
5、return a<b
注:第四空如果改变参数次序,可以不要取反
五、改错
1、
L06 int sign=1;
L15 xt=xt*x;
L17 s+=xt/t*sign;
2、
L12 if((fpDes=fopen("des.txt","w")==NULL)
L18 if((fputs(ch,foDes)==EOF)
六、程序设计题
1、struct Node * next; 2、struct Node *pr=head;
3、p=(struct Node*)malloc(sizeof(struct Node));
4、if(nodeData==p->data ) 5、pr->next=p->next;
标签:Node,head,struct,_____,真题,int,对口,2020,include From: https://blog.51cto.com/teacherzhou/6890735