预处理命令与指针习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C
)。
7、若有以下定义和语句: int s[4][5], (*ps)[5]; ps=s; C 则对s数组元素的正确引用形式是( A. ps+1 B. *(ps+3) C. ps[0][2] 8、下面程序段的运行结果是( #include "stdio.h" main() { char s[6]; s="abcd"; printf("\"%s\"\n", s); } A. "abcd" B. "abcd└┘" D
14、下面程序是判断输入的字符串是否是“回文”,(顺读和倒读都一样的字 符串称为“回文”,如level)。请填空。 #include "stdio.h" #include "string.h" main() { char s[80], *t1, *t2; int m; gets(s); m=strlen(s); t1=s; t2=【 s+m-1 】; while(t1<t2) { if (*t1!=*t2) break; else { t1++; 【 t2-】;} } if (t1<t2) printf("NO\n"); else printf("YES\n"); }
3、下列程序执行后的输出结果是( #define MA(x) x*(x-1) main() { int a=1,b=2; printf("%d \n",MA(1+a+b)); } A. 6 B. 8 C. 10
BHale Waihona Puke Baidu
)。
D. 12
指针习题
1、若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是( D )。 A. p=q; B. *p=*q; C. a=*q; D. q=a; 2、若定义:int a=511, *b=&a;,则printf(“%d\n”, *b);的输出结果为: ( D )。 A. 无确定值 B. a的地址 C. 512 D. 511
16、若有定义:int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[3], m; 则下面程序段的 11 输出是________。 for ( m=0; m<3; m++) p[m]=&a[m*4]; printf("%d\n", p[2][2]); 17、若有定义和语句:int a[2][3]={0}, (*p)[3]; p=a;,则p+1表示数组 ________。 a[1] 18、若有如下定义和语句: int *p[3], a[6], n; for (m=0;m<3;m++) p[m]=&a[2*m]; 则*p[0]引用的是a数组元素【 a[0] *(p[1]+1)引用的是a数组元素【 a[3]
10、下面程序的功能是统计字串sub在母串s中出现的次数。请选择填空。 #include "stdio.h" #include "string.h" main() { char s[80], sub[80]; int n; gets(s); gets(sub); printf("%d\n", count(s,sub));} int count( char *p, char *q) { int m, n, k, num=0; for (m=0; p[m]; m++) B 】, k=0; q[k]==p[n]; k++, n++) for (【1 if(q[【2 C 】]=='\0') { num++; break;} return (num);} 【1】A. n=m+1 B. n=m C. n=0 D. n=1 【2】A. k B. k++ C. k+1 D. ++k
)。 D. *(ps+1)+3
)。(注:└┘代表空格)
C. \"abcd\"
D. 编译出错
9、以下程序的功能是删除字符串s中所有空格(包括TAB符、回车符),请填空。 #include "stdio.h" #include "string.h" #include "ctype.h" main() { char s[80]; gets(s); delspace(s); puts(s);} delspace(char *t) { int m, n; char c[80]; for(m=0, n=0; 【1 A 】; m++) if (!isspace(【2 C 】)) /*C语言提供的库函数,用以判断字符是否为空格*/ { c[n]=t[m]; n++; } c[n]='\0'; strcpy(t, c);} 【1】A. t[m] B. !t[m] C. t[m]='\0' D. t[m]=='\0' 【2】A. t+m B. *c[m] C. *(t+m) D. *(c+m)
6、下面程序段的运行结果是( #include "stdio.h" main() { char s[]="example!", *t; t=s; while( *t!='p') { printf("%c", *t-32); t++;} } A. EXAMPLE! B. example! C. EXAM D. example!
13、下面程序的功能是比较两个字符串是否相等,若相等则返回1,否则返 回0。请填空。 #include "stdio.h" #include "string.h" fun (char *s, char *t) { int m=0; while (*(s+m)==*(t+m) && 【 s[m]!='\0' 】) m++; return (【 (*(s+m)== '\0' && *(t+m)=='\0')? 1:0 】); }
4、以下不能正确进行字符串赋初值的语句是( A. char str[5]= "good!"; B. char *str="good!"; C. char str[]="good!"; D. char str[5]={'g', 'o','o', 'd'};
A
)。
C 5、下面程序段的运行结果是( )。 char *s="abcde"; s+=2; printf("%d", s); A. cde B. 字符'c' C. 字符'c'的地址 D. 无确定的输出结果
11、设有定义:int a, *p=&a; 以下语句将利用指针变量p读写变量a中的内 容,请将语句补充完整。 scanf("%d", 【 P 】 ); printf("%d\n", 【 *P 】 ); efgh 12、以下程序的输出结果是________。 #include "stdio.h" main() { char *p="abcdefgh", *r; long *q; q=(long *) p; q++; r=(char *) q; printf("%s\n", r); }
3、若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别 赋给变量a、b、c的语句是( A )。 A. scanf("%d%d%d", &a, &b, d); B. scanf("%d%d%d", a, b, d); C. scanf("%d%d%d", &a, &b, &d); D. scanf("%d%d%d", a, b,*d);
】; 】。
19、定义语句int *f();和int (*f)();的含义分别为 【 函数的返回值为指向int类型的指针 和【 定义一个指向函数的指针 】。
】
预处理命令习题
1、下面叙述中正确的是( A )。 A. 带参数的宏定义中参数是没有类型的 B. 宏展开将占用程序的运行时间 C. 宏定义命令是C语言中的一种特殊语句 D. 使用#include命令包含的头文件必须以“.h”为后缀 2、下列程序运行结果为( A )。 #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R main() { printf("L=%f S=%f\n",L,S); } A. L=18.849556 S=28.274333 B. 18.849556=18.849556 28.274333=28.274333 C. L=18.849556 28.274333=28.274333 D. 18.849556=18.849556 S=28.274333
15、当运行以下程序时,从键盘输入:apple↙ tample↙ ample 则下面程序的运行结果是________。 #include "stdio.h" main() { char s[80], *t; t=s; gets(t); while (*(++t)!='\0') if (*t=='a') break; else { t++; gets(t); } puts(t); }