第1个回答 2011-06-25
~~~9
在“文件包含”预处理语句的使用形式中,当#include后面的文件名用尖括号(<>)括起时,寻找被包含文件的方式是()。
仅仅搜索当前目录
仅仅搜索源程序所在目录
在标准目录下查找指定文件
先在源程序所在目录搜索,如没找到,再按系统指定的标准目录查找
~C
~~~10
下列对结构体类型变量td的定义中,错误的是()。
typedef struct aa struct aa
{ int n; { int n;
float m; float m;
}AA; }td;
AA td;
struct struct
{int n; { int n;
float m; float m;
}aa; }td;
struct aa td;
~C
~~~10
下列叙述错误的是()。
可以通过typedef增加新的类型
可以用typedef将已存在的类型用一个新的名字来代表
用typedef定义新的类型名后,原有的类型名仍有效
用typedef可以为各种类型起别名,但不能为变量起别名
~A
~~~10
设有以下语句:
typedef struct TT
{char c;int a[4];}CIN;
则下列叙述中正确的是()。
可以用TT定义结构体变量
TT是 struct类型的变量
可以用CIN定义结构体变量
CIN是struct TT类型的变量
~C
~~~10
下列关于typedef的叙述错误的是()。
用typedef可以增加新的类型
typedef只是将已存在的类型用一个新的名字来代表
用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名
用typedef为类型说明一个新名,通常可以增加程序的可读性
~A
~~~10
有以下结构体类型说明和变量定义中正确的是()。
typedef struct struct REC
{ int n;char c;}REC; { int n;char c;};
REC t1,t2; REC t1,t2;
typedef struct REC; struct
{ int n=0;char c='A';}t1,t2; { int n;char c;}REC;
REC t1,t2;
~A
~~~10
定义以下结构体数组:
struct st
{ char name[15];
int age;
}a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17};
执行语句printf("%d,%c"a[2].age,*(a[3].name+2)))的输出结果为()。
15,A
16,H
16,A
17,H
~C
~~~11
设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为()。
EOF
非0值
0
NULL
~B
~~~11
读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是()。
一个文件指针,指向待读取的文件
一个整型变量,代表待读取的数据的字节数
一个内存块的首地址,代表读入数据存放的地址
一个内存块的字节数
~C
~~~11
如果需要打开一个已经存在的非空文件“FILE"并进行修改,正确的语句是()。
fp=fopen("FILE","r");
fp=fopen("FILE","a+");
fp=fopen("FILE","w+");
fp=fopen("FILE","r+");
~D
~~~11
若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。
文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加或读操作
文件打开时,原有文件内容不被删除,只能进行读操作
文件打开时,原有文件内容被删除,只能进行写操作
以上各种说法都不正确
~A
~~~11
使用fgets(str,n,p)函数从文件中读入一个字符串,以下叙述错误的是()。
字符串读入后会自动加入'\0'
fp是指向该文件的文件型指针
fgets函数将从文件中最多读入n-1个字符
fgets函数将从文件中最多读入n个字符
~D
###
~~~3
下列程序运行后的输出结果是[<10 20 0>]。
main()
{int a,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c);
}
~~~3
下列程序用于判断a、b、c能否构成三角形,若能输出YES,否则输出NO。请填空。
main()
{float a,b,c;
scanf("&f&f&f",&a,&b,&c);
if([<(a+b>c)&&(a+c>b)&&(b+c>a)>]) printf("YES\n");
else printf("NO");
}
~~~3
已有定义:char c='';int a=1,b;执行b!=c&&a;后b的值为[<0>]。
~~~3
下列程序的输出结果是[<1>]。
main()
{int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n",b);
}
}
~~~3
下列程序的输出结果是[<1>]。
main()
{int x,a=1,b=2,c=3,d=4;
x=(a<b)?a:b; x=(x<c)?x:c; x=(d>x)?x:d;
printf("%d\n",x);
}
~~~3
下列程序的输出结果是[<0235>]
main()
{int k=5,n=0;
do
{switch(k)
{case 1: case 3:n+=1;k--;break;
default:n=0;k--;
case 2: case 4:n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n<5);
}
~~~3
下列程序的输出结果是[<25>]
main()
{int i;
for(i=1;i<=10;i++)
{ if((i*i>=20)&&(i*i<=100))
break;
}
printf("%d\n",i*i);
}
~~~3
下列程序的输出结果是[<2,2,0>]
main()
{int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0) x=x+y;
if (a<=0)
{ if(b>0)
if(c<=0) y=x-y;
}
else if (c>0) y=x-y;
else z=y;
printf("%d,&d,&d\n",x,y,z);
}
~~~4
有下列程序段,且变量已正确定义和赋值:
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
请填空,使下列程序段的功能与之完全相同。
s=1.0;k=1;
while([<k<=n>]) {s=s+1.0/(k*(k+1));[<k++>];}
printf("s=%f\n\n",s);
~~~4
下列程序的功能是:将输入的正整数按逆序输出。例如,如输入135则输出531,请填空。
main()
{int n,s;
scanf("%d",&n);
do
{s=n%10;printf("%d",s);[<n=n/10>];}
while (n!=0);
}
~~~4
下列程序的功能是计算:s=1+12+123+1234+12345.请填空。
main()
{int t=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+[<t*10>];s=s+t;}
printf("%d\n",s);
}
~~~4
下列程序的运行结果是[<32>]。
main()
{int i=0,a=0;
while(i<20)
{for(;;)
{if(i%10==0)break;
else i--;
}
i+=11;
a+=i;
}
printf("%d\n",a);
}
###
~~~3
在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。
(!E==0)
(E>0||E<0)
(E==0)
(E!=0)
~C
~~~3
已知字母A的ASCII值为65,若变量kk为char型,以下不能正确判断出kk的值为大写字母的表达式是()。
kk>='A'&&kk<='Z'
!(kk>='A'||kk<='Z')
(kk+32)>='a'&&(kk+32)<='z'
isalpha(kk)&&(kk<91)
~B
~~~3
设有定义:int a=2,b=3,c=4;,则下列选项中值为0的表达式是()。
(!a==1)&&(!b==0)
(a<b)&&!c||1
a&&b
a||(b+b)&&(c-a)
~A
~~~3
下列关于逻辑运算符两侧运算对象的叙述中正确的是()。
只能是整数0或1
只能是整数0或非0
可以是结构体类型的数据
可以是任意合法的表达式
~D
~~~3
当变量c的值不为2、4、6时,值也为真的表达式是()。
(c==2)||(c==4)||(c==6)
(c>=2&&c<=6)||(c!=3)||(c!=5)
(c>=2&&c<=6)&&!(c%2)
(c>=2&&c<=6)&&(c%2!=1)
~C
~~~3
在嵌套使用if语句时,C语言规定else总是()。
和之前与其具有相同缩进位置的if配对
和之前与其最近的if配对
和之前与其最近的且不带else的if配对
和之前的第一个if配对
~C
~~~3
设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是()。
if(x++) ;
if(x>y&&y!=0)
if (x>0) x-- else y++
if (y<0){;} else x++;
~C
~~~3
若变量已正确定义,有以下程序段:
*int a=3,b=5,c=7;
*if(a>b) a=b;c=a;
*if(c!=a) c=b;
*printf("%d,%d,%d\n",a,b,c);
*其输出结果是()。
程序段有语法错误
3,5,3
3,5,5
3,5,7
~B
~~~3
下列叙述中正确的是()。
break只能用于 switch语句
switch语句中必须使用default
break必须与switch语句中的case配对使用
在switch中,不一定使用break
~D
~~~3
若变量已正确定义,以下表达式错误的是()。
a/b+c
a%(5.0)
a=1/3*(x=y=10,x*2)
a=b=c
~B
~~~3
下列程序运行后的输出结果是()。
*main()
*{int a=4,b=3,c=2,d=1;
*printf("%d",a<b?a:d<c?d:b);
*}
1
3
2
4
~A
~~~3
若a=3,b=4,c=5,d=6,则条件表达式a<b?a:c<d?c:d的值是()。
4
3
2
1
~B
~~~3
执行下面程序中的输出语句后,a的值是()。
*main()
*{int a;
*printf("%d\n",(a=2*3,a*5,a+7));
*}
17
37
6
13
~C
~~~3
当a=1,b=2,c=3,d=4时,执行下面程序段后,x的值是()。
*if(a<b)
*if(c<d) x=1;
* else
* if(a<c)
* if(b<d) x=2;
* else x=3;
*else x=6;
*else x=7;
1
2
3
6
~A
~~~4
有下列程序:
*main()
*{int k=5;
*while(--k) printf("%d",k-=3);
*printf("\n");
*}
*执行后的输出结果是()。
1
2
4
死循环
~A
~~~4
有下列程序段:
int n,t=1,s=0;
scanf("%d",&n);
do {s=s+t;t=t-2;}while(t!=n);
为使此程序不陷入死循环,从键盘输入的程序应该是()。
任意正奇数
任意负偶数
任意正偶数
任意负奇数
~D
~~~4
若变量已正确定义,有下列程序段:
*i=0
*do printf("%d,",i);while(i++);
*printf("%d\n",i);
*其输出结果是()。
0,0
0,1
1,1
程序进入无限循环
~B
~~~4
有下列程序:
*main()
*{int i,j,m=55;
*for(i=1;i<=3;i++)
*for(j=3;j<=i;j++) m=m%j;
*printf("%d\n",m);
*程序的运行结果是()。
0
1
2
3
~B
~~~4
下列程序的运行结果是()。
*main()
*{int a=1,b;
*for(b=1;b<=10;b++)
*{if(a>=8) break;
*if(a%2==1)
*{a+=5;continue;}
*a=3;
*}
*printf("%d\n",b);}
3
4
5
6
~B
~~~4
下列叙述中正确的是()。
break语句只能用于switch语句中
continue的作用是使程序的执行流程跳出包含它的所有循环
break语句只能用于循环体内和switch语句中
在循环体内使用break语句和continue语句的作用相同
~C
~~~4
设有程序段:
*int k=12;
*while (k=1)k=k-1;
*则下面描述中正确的是()。
while循环执行10次
循环是无限循环
循环体语句一次也不执行
循环体语句执行一次
~B
~~~4
下列程序段的运行结果是()。
*x=y=0;
*while(x<25)
*{y++;
*x+=++y;
*}
*printf("%d,%d",y,x);
30,9
9,30
3,1
10,30
~D
~~~4
while和 do while循环的主要区别是()。
do while循环的循环体不能是复合语句
do while循环允许从循环体外转到循环体内
while循环的循环体至少被执行一次
do while循环的循环体至少被执行一次
~D
~~~4
下面的for语句的循环次数是()。
*for(x=1,y=0;(y!=19&&(x<6);x++);
无限循环
循环次数不定
最多执行6次
最多执行5次
~D
~~~4
下面结论中错误的是()。
可以用do while语句实现的循环一定可以用while语句实现
可以用for语句实现的循环一定可以用while语句实现
可以用while语句实现的循环一定可以用for语句实现
do while语句和while语句的区别仅是while出现的位置不同
~D
~~~4
若i,j已定义成int型,则以下程序段中内循环体的总执行次数是()。
*for(i=6;i>0;i--)
*for(j=0;j<4;j++){...}
20
24
25
30
~B
~~~4
以下循环体的执行次数是()。
*main()
*{int i,j;
*for(i=0,j=1;i<j+1;i+=1,j--)
*printf("%d\n",j);}
3
2
1
0
~C
~~~4
下列叙述中正确的是()。
只能在循环体内和switch语句内使用break语句
continue的作用是结束整个循环的执行
在循环体内使用break和continue的作用相同
从多层循环嵌套中退出时,只能使用goto语句
~A