单项选择题
在下列各题的备选项中,请选择一个最符合题意的选项。
1) 若有以下程序段
int r=8;
printf(“%d\n”,r>>1);
输出结果:是( )。
A.4
B.8
C.16
D.2
2) 若有以下语句
typedef struct S {
int g;
char h;
} T;
以下叙述中正确的是( )。
A.可用T定义结构体变量
B.可用S定义结构体变量
C.S是struct类型的变量
D.T是struct S类型的变量
3) 以下选项中,当x为大于1的奇数时,值为0的表达式是( )。
A.x%2==0
B.x/2
C.x%2!=0
D.x%2==1
4) 有以下程序
#include
#define f(x) x*x*x
main()
{
int a=3,s,t;
s=f(a+1);
t=f((a+1));
printf(“%d,%d\n”,s,t);
}
程序运行后的输出结果是( )。
A.10,64
B.10,10
C.64,10
D.64,64
5) char w;int x;float y;则表达式w*x+y-3.14的结果类型是()。
A.float
B.char
C.int
D.Double
6) 若执行以下程序时从键盘上输入3和4,则输出的结果是( )。
main()
{
int a,b,s;
scanf(“%d %d”,&a,&b);
s=a;
if(a
s*=s;
printf(“%d\n”,s);
}
A.14
B.16
C.18
D.20
7) 下面程序的输出结果是( )。
#include
#define SUB(X,Y) (X)*Y
main()
{
int a=3,b=4;
printf(“%d\n”,SUB(a++,b++));
}
A.12
B.15
C.16
D.20
8) 指针s所指字符串的长度为( )。
char *s=”\\abc\\\n”;
A.9
B.7
C.6
D.说明不合法
9) 对于以下的变量定义,表达式( )不符合C语言语法。
struct node {
int len;
char *pk;
} x = {2, “right”}, *p = &x;
A.p->pk
B.*p.pk
C.*p->pk
D.*x.pk
10) 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。
A.-1
B.0
C.1
D.3
填空题
请将下列试题的空白处补充完整。
1) C语言程序总是从( )函数开始执行。
2)
的C语言表达式( )。
3) 下列程序的输出结果为________。
#include
main()
{
int m=8;
if(m–<8) printf(“%d\n”,++m);
else printf(“%d\n”,–m);
}
4) 若有说明int a[3][4]={
{1,2}, {0}, {4,6,8,10}},则a数组的元素个数为( )。
5) 己知int a[][3]={1,2,3,4,5,6};,数组元素a[1][1]的值是( )。
6) 有以下程序,执行后输出结果是____。
#include
main()
{
unsigned char a,b;
a=4|3;
b=4&3;
printf(“%d%d\n”,a,b);
}
程序填空题
请将下列程序中的空白处补充完整。
1) 本程序中函数fun的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入”Ab,cD”,则输出”ab,cd”。请将下述程序补充完整(注意:不改动程序的结构,不得增行或删行)。
#include
#include
#include
char 【1】 fun(char tt[])
{
int i;
for(i=0;tt[i];i++)
{
if((tt[i]>=’A’)&&(tt[i]<= 【2】 ))
tt[i]+=32;
}
return(tt);
}
main()
{
char tt[81];
printf(“\nPlease enter a string: “);
gets(tt);
printf(“\nThe result string is: \n%s”,fun( 【3】 ));
}
2) 以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。
main( )
{ int x[10],a[9],i;
for (i=0;i<10;i++)scanf(“%d”,&x[i]);
for( 【1】 ;i<10;i++)
a[i-1]=x[i]+ 【2】 ;
for(i=0;i<9;i++) printf(“%d”,a[i]);
printf(“\n”);
}
程序改错题
请按要求修改下列程序中的错误。
1) 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。例如,若输入“good luck!”,则应输出“Good Luck!”。
请修改程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include
#include
#include
/*******found*********/
void top(char s)
{
int i=0;
for(;*s;s++)
if(i)
{
if(*s==’ ‘)
i=0;
}
else
{
if(*s!=’ ‘)
{
i=1;
*s=toupper(*s);
}
}
}
main()
{
char str[81];
printf(“\nPlease enter an English text line: “);
gets(str);
printf(“\n\nBefore changing:\n %s”,str);
top(str);
printf(“\nAfter changing:\n %s\n”,str);
}
2) 下列给定的程序中,函数fun的功能是交换主函数中两个变量的值。例如,若变量x中的值为1,y中的值为2,则程序运行后x中的值为2,y中的值为1。
请修改程序中的错误,得出正确的结果。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include
/****found******/
void fun(int a,int b)
{
int t;
/****found******/
t=a;a=b;b=t;
}
main()
{
int x,y;
x=1;
y=2;
fun(&x,&y);
printf(“the result is %d,%d\n”,x,y);
}
程序设计题
请按照试题要求,完成规定的程序设计。
1) 编写程序验证歌德巴赫猜想:1000-2000中的每一个偶数都可以表示成两个素数之和。如果此猜想成立,显示”all numbers are OK!;否则显示”n is not OK!”,这里n是第一个使猜想不成立的偶数。
2) 编写程序,实现如下功能:
对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如,输入的两个字符串分别为”abcdefg”和”abceef”,则输出为-1。
3) N名学生的成绩已经在主函数中放入一个带头结点的链表结构中,head指向链表的头结点。请编写程序,它的功能是求出平均分、由函数值返回。