一、选择题
1、
下列C语言标识符错误的是__________。
A.ABc B.abc C.A_bc D.Ab.c
2、
分析以下程序,下列说法正确的是__________。
#include <stdio.h>
void main()
{
int x=3,a=3,b=3;
if(x=a+b)
printf("* * * *");
else
printf("@ @ @ @");
}
A.输出:* * * * B.输出:@ @ @ @
C.不能输出编译,有语法错误 D.能通过编译,但不能连接
3、
若"int a;float b=12.2;",则执行"a=(int)b%3;"后,a的值是__________。
A.1 B.0 C.2.2 D.1.22
二、程序填空题
1、
从键盘上输入一个百分制成绩score,按下列原则输出其评分等级:
score≧90,等级为A;
80≦score<90,等级为B;
70≦score<80,等级为C;
60≦score<70,等级为D;
Score<60,等级为E
请补全下列代码:
#include <stdio.h>
void main()
{
int data;
_____ 1 _____ ;//定义grade字符变量
printf("请输入成绩: ");
scanf("%d",_____ 2 _____ );
switch(data/10)
{
case 10:
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
_____ 3 _____;
}
printf("评分等级为:%c",_____ 4 _____ );
}
三、写程序结果
1、
下列程序的运行结果是__________。
#include "stdio.h"
#include "string.h"
int main()
{
char a[]= {'a','b','c','d','e','f','g','h','\n'};
int x,y;
x=sizeof(a);
y=strlen(a);
printf("%d,%d",x,y);
return 0;
}
2、
下列程序的运行结果是__________。
#include "stdio.h"
void fun(int b[3])
{
int j;
for(j=0; j<3; j++)
{
b[j]=j;
}
}
int main()
{
int a[3]= {1,2,3},k;
fun(a);
for(k=0; k<3; k++)
{
printf("%d",a[k]);
}
return 0;
}
3、
下列程序的运行结果是__________。
#include "stdio.h"
int fun(int a,int b)
{
return a+b;
}
int main()
{
int x=2,y=3,z=4,r;
r=fun(fun(x,y),z);
printf("%d",r);
return 0;
}
4、
下列程序的运行结果是__________。
#include "stdio.h"
int main()
{
char a[]="abcdef",b[]="acdeea";
char *p1,*p2;
int i;
p1=a;
p2=b;
for(i=0; i<6; i++)
{
if(*(p1+i)!=*(p2+i))
printf("%c",*(p1+i));
}
return 0;
}
5、
下列程序的运行结果是__________。
#include "stdio.h"
void inv(int *p,int n)
{
int *i,*j,m=(n-1)/2,t;
j=p+n-1;
for(i=p; i<p+m; i++,j--)
{
t=*i;
*i=*j;
*j=t;
}
}
int main()
{
int i;
int a[]={3,5,7,0,6,2};
inv(a,6);
for(i=0; i<6; i++)
printf("%d",a[i]);
return 0;
}
四、程序填空
1、
函数countBit1用于统计某个字节中值为1的位的个数。
unsigned int countBit1(char byteData)
{
int i;
unsigned int num=0,tmpVal;
for(i=0; i<8; i++)
{
tmpVal=_____ 1 _____;
tmpVal &=0x01;
if(tmpVal)
_____ 2 _____;
}
return num;
}
2、
以下程序在main函数中调用reverse函数按逆序重新放置数组a中元素的值,reverse函数使用递归实现数组逆序。此程序运行后输出:54321
#include "stdio.h"
#define N 5
void reverse(int *s,int i,int j)
{
int t;
if(i<j)
{
t=*(s+i);
______3______;
*(s+j)=t;
reverse(______4______);
}
}
int main()
{
int a[N]= {1,2,3,4,5};
int i=0;
reverse(______5______);
for(i=0; i<N; i++)
printf("%d",a[i]);
return 0;
}
五、改错
1、
以下程序从键盘获得字符串输入,并将输入字符串追加写入C盘d去ta.txt文件中去。以下程序只允许修改两行。
int main()
{
FILE *fp;
char buf[100],*fileName="D://data.txt";
gets(buf);
if((fp=fopen(fileName,"w"))!=NULL);
{
puts(buf);
fclose(fp);
}
return 0;
}
2、
函数endsWith(char *str,char *substr)用于判断字符串str是否以子字符串substr结尾,是返回整数1,否返回整数0。以下程序只允许修改三行。
int endsWith(char *str,char *substr)
{
int sublen=0;
while(str!='\0')
{
if(substr[sublen]!='\0')
{
sublen++;
}
str++;
}
int i=0;
for(; i<sublen; i++)
{
char strCh=*str;
char subCh=*--substr;
if(strCh!=subCh)
{
return 0;
}
}
return 1;
}
六、程序设计题
1、
编写程序用于从键盘逐个读取整数,并将整数按照升序插入链表,每插入一个数后将链表中的数据都输出一次,当输入整数0时结束插入。
#include "stdio.h"
#include "stdlib.h"
struct NumNode
{
int data;
struct NumNode *next;
};
struct NumNode *insertToList(struct NumNode *head,int fdata)
{
struct NumNode *p,*q;
struct NumNode *newNode=(struct NumNode *)malloc(sizeof(struct NumNode));
newNode->data=fdata;
newNode->next=NULL;
p=head;
q=head;
if(head==NULL)
{
_____1_____;
return head;
}
while(p!=NULL && fdata>p->data)
{
q=p;
p=p->next;
}
if(p!=NULL)
{
if(head==p)
{
______2______;
}
else
q->next=newNode;
______3______;
}
else
{
______4______;
}
return head;
}
void printList(struct NumNode *head)
{
struct NumNode *p=head;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
struct NumNode *head=NULL;
int i;
scanf("%d",&i);
while(i!=0)
{
______5______;
printList(head);
scanf("%d",&i);
}
}
参考答案:
一、选择题
1—3 D、A、B
二、程序填空题
1、char grade 2、&data 3、default : grade='E' 4、grade
三、写程序结果
1、9,9 2、012 3、9 4、bcdf 5、267053
四、程序填空
1、byteData>>I 2、num++
3、*(s+i)=*(s+j) 4、s,i+1,j-1 5、a,i,N-1
五、改错
1、
L6 if((fp=fopen(fileName,"a"))!=NULL)
L8 fputs(buf,fp);
2、
L04 while(*str!='\0')//while(str!='\0')
L15 char strCh=*--str;//char strCh=*str;
L16 char subCh=substr[sublen-i-1];//char subCh=*--substr;
int main()
{
int i;
char a[]="abcdefeg",b[]="eg";
i=endsWith(a,b);
printf("%d",1);
return 0;
}
六、程序设计题
1、head=newNode
2、head=newNode
3、newNode->next=p
4、q->next=newNode
5、head=insertToList(head,i)
标签:head,struct,真题,int,对口,char,NumNode,2017,include From: https://blog.51cto.com/teacherzhou/6859783