当前位置:首页 > 2013 上半年 C语言练习题汇总答案
c)直接按系统设定的标准方式搜索目录
d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索
解析:本题考查文件包含的知识点:格式1:#include <文件名>,预处理程序在标准目录下查找指定的文件;格式2:#include”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录中寻找指定的文件,如查找不到,再按系统指定的标准目录查找。
3. 下面程序中的for循环执行的次数是____B____. #define N 2 #define M N+1
#define NUM 2*M+1 main( ) {int i;
for(i=1; i<=NUM; i++) printf(“%d\\n”,i);} A、5 B、6 C、7 D、8 (解析:NUM=2*2+1+1=6)
4. 编译预处理的三种形式除宏定义外,还有_______文件包含______和______条件编译_______。
5. 下面程序的输出结果是:(10,64) #include
printf(\ return 0; }
6. 下面程序的输出结果是?(d=70) #define add(x) x*x main()
{int a=4,b=6,c=7,d=add(a+b)*c; printf(\
指针
1.变量的指针,其含义是指该变量的( B )。 A) 值 B) 地址 C)名 D)一个标志
2.若有以下说明,则正确的赋值表达式是( A )。
int x,*p;
A) p=&x B) p=x C) *p=&x D) *p=*x
3.执行下面程序段后,ab的值为( B )。 int *var,ab;
ab=100;var=&ab; ab=*var+10;
A)120 B)110 C)100 D)90
4.有如下语句
int a=10, b=20, *p1, *p2; p1=&a; p2=&b;
若要实现p1,p2均指向b,可选用的赋值语句是( B )。 A) *p1=*p2; B) p1=p2; C) p1=*p2; D) *p1=p2;
5. 以下程序的运行结果是( B )。 sub(int x,int y,int *z) {*z=y-x;} main() {int a,b,c;
sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);
printf(\A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7
6. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( B )。
main()
{int *p,*q,a,b; p=&a;
printf(\ scanf(\ …… }
A) *p表示的是指针变量p的地址
B) *p表示的是变量a的值,而不是变量a的地址 C) *p表示的是指针变量p的值
D) *p只能用来说明p是一个指针变量。 7. 以下程序的输出结果是( C )。 A. 4 B. 6 C. 8 D. 10 main( )
{ int k=2,m=4,n=6;
int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(\ }
8.若有int a[10]={1,2,3,4,5,6,7,8,9,10};*p=a;则数值为9的数组元素的表达式是( B )。
A. *p+9 B. *(p+8) C. *p+=9 D. p+8
9.若有以下说明, 则a[*(a+a[3])]的值为( C )。 int a[]={8,1,2,5,0,4,7,6,3,9};
A) 8 B) 3 C) 0 D) 不合法
10.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为____D__. a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j
11.下面程序段的运行结果是____C_____. char *s=\ s+=2;printf(\
a)cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果
12.以下正确的程序段是_____C____.
a)char str[20]; scanf(\ b)char *p; scanf(\
c)char str[20]; scanf(\ d)char str[20], *p=str; scanf(\ 13.若有说明语句 char a[]=\ char *p=\
则以下不正确的叙述是____D____. a)a+1表示的是字符t的地址
b)p指向另外的字符串时,字符串的长度不受限制 c)p变量中存放的地址值可以改变
d)a中只能存放10个字符
14.下面程序的运行结果是___B____. #include
char *s1=\ char *s2=\ s1+=2;s2+=2;
printf(\ }
a)正数 b)负数 c)零 d)不确定的值
15.下面程序段的运行结果是__ef__. char str[]=\ printf(\
16.下面程序的功能是将两个字符串s1和s2连接起来。请填空。 #include
{char s1[80],s2[80]; gets(s1); gets(s2); conj(s1,s2); puts(s1); }
void conj(char *p1,char *p2) {char *p=p1; while(*p1)_ p1++_;
while(*p2){*p1=_*p2__;p1++;p2++;} *p1='\\0';
共分享92篇相关文档