一、选择题
1、
下列C语言表达式__________的值不等于1。
A.123/100 B.365%5 C.abs(-1) D.0||1
2、
对C语言程序,以下说法正确的是__________。
A.main函数是主函数,一定要写在最前面
B.程序总是从main函数开始执行的
C.程序中只能调用库函数,不能自己定义函数
D.函数参数只能是整型
3、
若“int a[9],*p=a;”,并在以后的语句中未改变p的值,则不能表示a[2]地址的是__________。
A.p+2 B.a+2 C.p+=2 D.a+=2
二、程序填空题
1、
学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数,并输出该人数。
#include <stdio.h>
int main()
{
int i;
for(i=900;i<=1100; ____ 1 ____ )
{
if( ____ 2 ____ && i%7==3 && i%3==1)
{
printf("%d\n", ____ 3 ____);
____ 4 ____
}
}
}
三、写程序结果
1、
下列程序的运行结果是__________。
#include <stdio.h>
int main()
{
signed char c=128;
int i=10;
(c+i>10)?puts("sum>10"):puts("sum<=10");
return 0;
}
2、
下列程序的运行结果是__________。
#include <stdio.h>
int main()
{
unsigned int V=7;
int num=10;
while(V)
{
V&=(V-1);
num++;
}
printf("num=%d",num);
return 0;
}
3、
下列程序的运行结果是__________。
#include <stdio.h>
int fun(int m)
{
int n=0;
m/=2;
if(m)
{
n*=m;
return (fun(m-2));
}
else
return n;
}
int main()
{
int i;
for(i=0;i<2;i++)
printf("fun(%d)=%d+",4+i,fun(4+i));
return 0;
}
4、
下列程序的运行结果是__________。
#include <stdio.h>
#include <string.h>
int main()
{
char a[]="ABCD",b[]="BAD";
int i,j;
for(i=0;i<strlen(b);++i)
{
for(j=0;(j<strlen(a)) && (a[j]!=b[i]);++j);
if(j>=strlen(a))
{
printf("No");
return 0;
}
}
printf("Yes");
return 0;
}
5、
下列程序的运行结果是__________。
#include <stdio.h>
int main()
{
int a[]={12,34,54,32};
int N=sizeof(a)/sizeof(int);
int i,j,p,t;
for(i=0;i<N-1;i++)
{
p=i;
for(j=i+1;j<N;j++)
if(a[p]>a[j])
p=j;
if(p!=i)
{
t=a[i];a[i]=a[p];a[p]=t;
}
}
for(i=0;i<N;i++)
printf("%d+",a[i]);
return 0;
}
四、程序填空
1、
下列程序的功能是从存放成绩的二维数组中,找到并输出最大值及其所在行号与列号。
运行结果为:“max=92,row=3,col=4”。
#include "stdio.h"
#define CLASS 3
____ 1 ____ /*FindMax()函数声明*/
int main()
{
int score[CLASS][4]={81,72,73,64,65,86,77,88,91,90,85,92};
int maxScore,row,col; /*maxScore存放最大值,row指所在行号,col指所在列号*/
maxScore=____ 2 ____;
printf("max=%d,row=%d,col=%d\n",maxScore,row+1,col+1);
return 0;
}
int FindMax(int*p,int m,int n,int *pRow, int*pCol)
{
int i,j,max;
max=____ 3 ____;
*pRow=0;
*pCol=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(____ 4 ____)
{
max=p[i*n+j];
*pRow=i;
*pCol=j;
}
}
}
____ 5 ____
}
五、改错
1、
下列程序的功能是:从已经排好序的数组中,找出首次满足其和等于给定值的两个数后,即终止查找。程序执行的结果是:“1,15”。以下程序只允许修改三行
#include "stdio.h"
int main()
{
int a[]={1,2,4,5,7,11,12,15};
int sum=16;
int begin=1;
int end=8-1;
while(begin<end){
long currSum;
if(currSum==sum){
printf("%d,%d\n",a[begin],a[end]);
continue;
}
else{
if(currSum<sum)
begin++;
else
end--;
}
}
}
2、
下列程序的功能是:将3个学生的记录(姓名与成绩)存入文件fd.dat中。以下程序只允许修改两行
#include "stdio.h"
#define N 3
#define LEN sizeof(STU)
typedef struct node{
char name[10];
int score;
}STU;
int main(){
file fp;
STU s[N];
int i=0;
fp=fopen("fd.dat","wb");
for(;i<N;i++){
scanf("%s%d",s[i].name,&s[i].score);
fread(s[i],LEN,1,fp);
}
fclose(fp);
}
六、程序设计题
1、
下列程序的主函数中,通过函数调用把N个人的姓名与温度数据放入一个带头节点的链表中,h指向链表的头节点。函数Check()的功能是:找出体温大于37.5的结点(除头结点外),并显示相关信息。请补充程序,使其完整。
#include "stdio.h"
#include "stdlib.h"
#define N 5
typedef struct ss
{
char name[8];/*姓名*/
float t;/*温度*/
____ 1 ____;
}NODE;
void Check(NODE *h)/*把温度大于37.5的结点信息显示出来*/
{
int sum=0;
NODE *p;
____ 2 ____;
while(p!=NULL)
{
if(____ 3 ____)
printf("%s,%3.1f\n",p->name,p->t);
p=p->next;
}
}
NODE *creatlist(int n) /*创建链表*/
{
NODE *h,*p,*s;
int i;float temp;
h=p=(NODE*)malloc(sizeof(NODE));
for(i=1;i<n;i++)
{
s=(NODE*)malloc(sizeof(NODE));
printf("input name=");
scanf("%6s",s->name);
printf("input t=");
scanf("%f",&temp);
s->t=temp;
s->next=p;
____ 4 ____;
p=p->next;
}
____ 5 ____;
return h;
}
void OutList(NODE *h) /*输出链表*/
{
NODE *p;
p=h->next;
printf("\n\n The LIST:\n\n HEAD");
while(p)
{
printf("->%6s,%3.1f",p->name,p->t);
p=p->next;
}
printf("\n");
}
int main()
{
NODE *head;
int sum;
system("CLS");
head=creatlist(N);
OutList(head);
Check(head);
return 0;
}
参考答案:
一、选择题
1—3 B、B、D
二、程序填空题
1、i++ 2、i%5==2 3、i 4、break;
三、写程序结果
1、sum<=10 2、num=13 3、fun(4)=0+fun(5)=0+
4、Yes 5、12+32+34+54+
5、987654321
四、程序填空
1、int FindMax(int*p,int m,int n,int *pRow, int*pCol);
2、FindMax(&score[0][0],CLASS,4,&row,&col) 3、p[0] 或者
4、max<p[i*n+j] 5、return max;
五、改错
1、
L06 int begin=0;
L09 int currSum=a[begin]+a[end];
L12 break;
2、
L09 FILE *fp;
L15 fwrite(&s[i],LEN,1,fp);
六、程序设计题
1、struct ss *next 2、p=h->next 3、p->t>37.5
4、p->next=s 5、p->next=NULL
注,创建链表的循环少了一次
标签:NODE,main,真题,int,对口,程序,____,2022,include From: https://blog.51cto.com/teacherzhou/6940175