strainer是什么意思:又有不懂的C语言题目了,没有办法要考试了,帮帮我啊,各位大侠!

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 15:46:27
2.以下所列的C语言常量中,错误的是
A) 0xFF B) 1.2e0.5 C) 2L D) '\72'

5.下面程序段的运行结果是【5】
float y=0.0,a[]={2.0,4.0,6.0,8.0,10.0},*p;
int i;
p=&a[1];
for(i=0;i<3;i++) y+=*(p+i);
printf("%f\n",y);
A) 12.0000 B) 28.0000
C) 20.0000 D) 18.0000

14.下面函数调用正确的是【14】
A) fopen('file.dat','r'); B) fprintf("%ld",data,fp);
C) fclose("file.dat"); D) fread(&i,sizeof(int),1,fp);

18.有如下程序: C
main()
{ int i,sum;
for(i=1;i<=3;sum++)
sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是【18】
A) 6 B) 3 C) 死循环 D) 0

20.有如下程序段:
int *p,a=10,b=1;
p=&a;a=*p+b;
执行该程序段后,a的值为【20】
A) 12 B) 11 C) 10 D) 编译出错
21.以下函数返回a所指数组中最小的值所在的下标值
fun(int *a,int n)
{int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p]) _________;
return(p);
}
在下划线处应填入的是【21】。
A) i=p B) a[p]=a[i] C) p=j D) p=i

25.有以下程序段:
int k=0;
while(k=1) k++;
while循环执行的次数是【25】
A) 无限次 B) 有语法错,不能执行
C) 一次也不执行 D) 执行1次

28.下面函数st的功能是【28】
st(char *s)
{char *q=s;
while(*q!='\0') q++;
return (q-s);
}
A) 检查字符串s中是否含有空字符
B) 生成一个新的字符串q,字符串q是从字符串s的尾部到头部排列的
C) 将字符串s中的非空字符的ASCII码值增1
D)计算字符串s的长度

30.若执行以下程序段:
int a=1,b=2,m=2,n=2;
(m=a>b)&&++n;
则n的值是【30】
A) 1 B) 2 C) 3 D) 4

31.以下程序的运行结果是【31】
#include <stdio.h>
main()
{int i=0;
while(1)
{ printf("*");
i++;
if(i<3) break;
}
printf("\n");
}
A) * B) *** C) ** D) ****

32.若有以下程序:
#include <stdio.h>
main(int argc,char *argv[])
{
while(--argc)
printf("%s",argv[argc]);
printf("\n");
}
该程序经编译和连接后生成可执行文件S.EXE。
现在DOS提示符下键入S AA BB CC回车,则输出结果是【32】
A) AABBCC B) AABBCCS
C) CCBBAA D) CCBBAAS

33.若执行以下程序段
int x=3,y=6,z;
z=x^y<<2;
则z的二进制值是【33】
A) 00011011 B) 00010100
C) 00011000 D) 00000110

34.以下【34】是非法函数调用语句。
A) char c='T'; B) char c; putchar(c); getchar(c);
C) putchar(0x7) D) putchar('d'+1);

请在给答案时也做点答案解释啊。谢谢!

2. B
因为double型下的 1.2e0.5 ,e后面不能带有小数,只能是整数。

5. D
float y=0.0,a[]={2.0,4.0,6.0,8.0,10.0},*p;
int i;
p=&a[1]; /**将a[1]的地址赋给P*/
for(i=0;i<3;i++) y+=*(p+i); /**从p开始将p,p+1,p+2地址的值

加起来*/
printf("%f\n",y); /*输出总合*/

理解了上述的程序段,那么可以知道
在循环中,i=0时,*p=4.0 ,y=4.0
i=1时,*p=6.0 ,y=10.0
i=2时,*p=8.0 ,y=18.0
因为是浮点形式输出,所以最终的结果是D

14.A

fopen的原型是:FILE *fopen(const char *filename,const char

*mode)
fclose的原型是:fclose(FILE *fp)
fprintf的原型是:int fprintf(FILE*stream, const

char*format[,argument]…); ]
fread的原型是:int fread(void *buf,int size,int count,FILE

*stream);
参照上述函数原型,就可以得到A是对的。其他错的。

18. C

因为在循环条件中,首先定义i=1,但是在循环体中并没有对i进行操

作,那么i就一直保持不变=1,而只要i<3那么就进入循环,所以进入

循环的条件一直都是为真,所以就一直循环,变成死循环,无法进入p

rintf那条语句了。

20. B

int *p,a=10,b=1;
p=&a;a=*p+b;

首先p是一个指针,p=&a这个是让p指向a,也就是说*p里面存的是a的

值10;a=*p+b;这句就是进行加法运算,10+1=11赋给a,所以a的最终

结果就是11

21. D
这个函数的大意就是说,假设p存放的是最小的那个数的下标,从第0

个数开始跟后面的数进行比较,如果这个数比后面的数大,那么就把

后面的那个数的下标作为最小值的下标赋给p,然后继续进行比较,直

到全部比较结束。

25. A

int k=0;
while(k=1) k++
k=1实际上就是1,也就是命题为真,所以不管怎么样进入循环体的条

件永远都成立,所以每次都可以进入循环,所以是死循环。

28.D

st(char *s)
{char *q=s; /**将字符串s的首地址赋给指针q*/
while(*q!='\0') q++; /**如果q地址的内容不是字符串结束符的话,

那就取下一个*/
return (q-s); /**返回q-s的值,这个是一个int类型,实际上就是

取这个字符串的长度*/
}

30.B
程序跑的

31.A
main()
{int i=0;
while(1)
{ printf("*"); /*打印一个* */
i++; /*此时i=1*/
if(i<3) break; /**因为i=1满足if条件,所以跳出循环体*/
}
printf("\n");
}
所以最终只打印了一个*

32. D

#include <stdio.h>
main(int argc,char *argv[])
{
while(--argc) /**只要参数的总数自减不为0,那么进入循环体*/
printf("%s",argv[argc]); /**打印出第argc个参数*/
printf("\n");
}
因为argc=4,所以会进入循环体4次,--argc是先做判断再自减

33 A

^按位异或
<<左移
优先级,左移〉按位异或
按照这个规则去算就可以了
所以选择A

34. B

getchar()不能带参数。

B,D,D,C,B,D,C,D,B,A,D,A,B

B,D,D,C,B,D,C,D,C,A,C,A,D

B,D,D,C,B,D,C,D,B,A,D,A,B