C语言第七章习题带答案

上传人:dax****eng 文档编号:144552315 上传时间:2022-08-27 格式:DOC 页数:10 大小:57.01KB
返回 下载 相关 举报
C语言第七章习题带答案_第1页
第1页 / 共10页
C语言第七章习题带答案_第2页
第2页 / 共10页
C语言第七章习题带答案_第3页
第3页 / 共10页
点击查看更多>>
资源描述
练习7-1答案选择题1已知:int *p, a;,则语句“p=&a;”中的运算符“&”的含义是( D )。A位与运算B逻辑与运算C取指针内容D取变量地址2已知:int a, x;,则正确的赋值语句是( C )。Aa=(a1+a2)/2;Ba*=*a+1;Ca=(x=1, x+, x+2);Da=good;3已知:int a, *p=&a;,则下列函数调用中错误的是( D )。Ascanf(%d, &a);Bscanf(%d, p);Cprintf(%d, a);Dscanf(%d, *p);4已知:char *p, *q;,选择正确的语句( C )。Ap*=3;Bp/=q;Cp+=3;Dp+=q;5已知:int x;,则下面的说明指针变量pb的语句( C )是正确的。Aint pb=&x;Bint *pb=x;Cint *pb=&x;D*pb=*x;练习7-2答案一、选择题1设有说明int (*ptr)M;,其中的标识符ptr是( C )。AM个指向整型变量的指针B指向M个整型变量的函数指针C一个指向具有M列的二维数组的一行的指针D具有M个指针元素的一维数组的指针2已知:double *p6;,它的含义是( C )。Ap是指向double型变量的指针Bp是double型数组Cp是指针数组Dp是数组指针3已知:char s10, *p=s,则在下列语句中,错误的语句是( B )。Ap=s+5;Bs=p+s;Cs2=p4;D*p=s0;4已知:char s100; int i;,则在下列引用数组元素的语句中,错误的表示形式是( D )。Asi+10B*(s+i)C*(i+s)D*(s+)+i)5已知:char b5, *p=b;,则正确的赋值语句是( C )。Ab=abcd;B*b=abcd;Cp=abcd;D*p=abcd;6下列对字符串的定义中,错误的是( A )。Achar str7=FORTRAN;Bchar str=FORTRAN;Cchar *str=FORTRAN;Dchar str=F, O, R, T, R,A,N,0;7已知:char s20=programming, *ps=s;,则不能引用字母o的表达式是( A )。Aps+2Bs2Cps2Dps+=2,*ps8已知:char *s;,正确的语句是( B )。As=computer;B*s=computer;C*s=computer;D*s=A;9已知:char c8=beijing, *s=c; int i;,则下面的输出语句中,错误的是( B )。Aprintf(%sn, s);Bprintf(%sn, *s);Cfor (i=0; i7; i+)Dfor(i=0; i7; i+) printf(%c, ci); printf(%c, si);10已知:char *aa2=abcd, ABCD;,则以下说法正确的是( D )。Aaa数组元素的值分别是abcd序列和ABCD序列Baa是指针变量,它指向含有两个数组元素的字符型一维数组Caa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址Daa数组的两个元素中各自存放了字符a和A的地址11已知:int a34, *p=&a00; p+=6;,那么*p和( D )的值相同。A*(a+6)B*(&a0+6)C*a1+2Da1212已知:int a=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, *p=a;,则值为3的表达式是( A )。Ap+=2, *(p+)Bp+=2, *+pCp+=3, *p+D*(&a00+6)13已知:int *p;,则变量p是( B )。A指向int的指针B指向指针的指针Cint型变量D以上三种说法均是错误的14已知:int a=1, 2, 3, 4, y, *p=&a1;,则执行语句y=(*-p)+;之后,变量y的值为( A )。A1B2C3D415已知:int b=1, 2, 3, 4, y, *p=b;,则执行语句y=*p+;之后,变量y的值为( A )。A1B2C3D416已知:int x=1, 3, 5, 7, 9, 11, *ptr=x;,则能够正确引用数组元素的表达式是( B )。AxB*(ptr-)Cx6D*(-ptr)17已知:int x=1, 3, 5, 7, 9, 11, *ptr=x;,则不能够正确引用数组元素的表达式是( B )。A*(ptr-)B*(-ptr)C*(ptr+)D*(+ptr)18若有以下语句且0=k6,则正确表示数组元素地址的表达式是( C )。static int x=1, 3, 5, 7, 9, 11, *ptr=x, k;Ax+B&ptrC&ptrkD&(x+1)19已知:int i, x34;,则不能将x11的值赋给变量i的语句是( C )。Ai=*(*(x+1)+1);Bi=x11;Ci=*(*(x+1);Di=*(x1+1);20已知:int a23=2, 4, 6, 8, 10, 12;,正确表示数组元素的地址是( A )。A*(a+1)B*(a1+2)Ca1+3Da0021已知:int*p;,使用如下语句动态申请一个int型的存储单元,应当使用( D )。p=( )malloc(sizeof(int);AintBint *C(* int)D(int *)二、填空题22阅读程序,下面程序的输出结果是( 15 )。#include main()static int a23=1, 2, 3, 4, 5, 6;int m, *ptr;ptr=&a00;m=(*ptr)*(*(ptr+2)*(*(ptr+4);printf(%dn, m);23下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串则是( 0 或 0 )、是( + )。main()char str81, *sptr;int i;for (i=0; i80; i+)stri=getchar();if (stri=n) break;stri= ;sptr=str;while (*sptr) putchar(*sptr );24在下面的程序中若第一个printf语句的输出为ffe2,则其余语句的输出结果分别为:是( fff4 )、是( a )、是( 0 )、是( b )。main()static int a=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *p=a;printf(%xn, p);/*输出结果为ffe2*/printf(%xn, p+9);/*输出 */printf(%xn, *p+9);/*输出 */printf(%xn, *(p+9);/*输出 */printf(%xn, *+p+9);/*输出 */25下面程序的输出结果,是( m )、是( a )、是( w )、是( z )、是( mnopqr )。#include char *pp23=abc, defgh, ijkl, mnopqr, stuvw, xyz;main()printf(%cn, *(pp+1);/*输出 */printf(%cn, *pp0);/*输出 */printf(%cn, (*(*(pp+1)+1)4);/*输出 */printf(%cn, *(pp12+2);/*输出 */printf(%sn, *(pp+1);/*输出 */三、读程序,写结果26下面程序的运行结果是:( 1357 9111315 17192123 )。(注:表示空格。)#include main()int a34=1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23;int *p, i;for (p=a, i=0; p&a00+12; p+, i+)if (i%4=0) printf(n);printf(%4d, *p);27下面程序的运行结果是( 3,3,3 )。#include main()int a=2, *p, *pp;pp=&p; p=&a;a+;printf(%d,%d,%dn, a, *p, *pp); 练习7-3答案一、选择题1main(argc, argv)中形式参数argv的正确说明形式应当为( A ).Achar *argvBchar argvCchar argvDchar *argv2说明语句int (*p)();的含义是( C )。Ap是一个指向一维数组的指针变量Bp是指针变量,指向一个整型数据Cp是一个指向函数的指针,该函数的返回值是一个整型D以上都不对3说明语句int *(*p)();的含义是( D )。Ap是一个指向int型数据的指针Bp是指针变量,它构成了指针数组Cp是一个指向函数的指针,该函数的返回值是一个整型Dp是一个指向函数的指针,该函数的返回值是一个指向整型的指针4已知函数说明语句void *f();,则它的含义是( A )。A函数f的返回值是一个通用型指针B函数f的返回值可以是任意的数据类型C函数f无返回值D指针f指向一个函数,该函数无返回值5函数的功能是交换变量x和y中的值,并且通过正确调用返回交换的结果。能正确执行此功能的函数是( D )。Afuna(int *x, int *y)Bfunb(int x, int y) int *p; int t; *p=x; *x=*y; *y=*p; t=x; x=y; y=t; Cfunc(int *x, int *y)Dfund(int *x, int *y) *x=*y; *y=*x; *x=*x+*y; *y=*x-*y; *x=*x-*y; 6阅读程序,下面程序的输出结果是( B )。假设可执行文件的文件名为:PROG.EXE运行时键入的命令行为:PROG -386 NET3#include main(int argc, char *argv)int i;for (i=0; iargc; i+) printf(%sn, argvi);A-386BPROG.EXECPROG.EXEDPROG NET3 -386 - -386 NET3 386 NET3 NET37下面程序的运行结果是( A )。#include f(int x, int y)return(y-x);main()int a=5, b=6, c=2;int f();int (*g)()=f;c=(*g)(a, b);printf(%dn, c);A1B2C3D前面三个答案均是错误的8若用数组名作为函数调用的实参,传递给形参的是( A )。A数组的首地址B数组第一个元素的值C数组中全部元素的值D数组元素的个数二、填空题9下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,则是( 2 )、是( 2 )。fun(int x, int b)int k=0, r;dor=x% ;bk+=r;x/= ; while(x);10函数expand(char s, char t)在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符,即用n表示换行符,用t表示制表符。则是( j+ )、是( )、是( j+ )、是( )、是( j+ )、是( 0 )。expand(char s, char t)int i, j;for (i=j=0; si!=0; i+)switch (si)case n: t = ; tj+=n; break;case t: t = ; tj+=t; break;default: t =si; break;tj= ;三、读程序,写结果11以下程序的运行结果是( 10 7 5 3 -7 )。main()int a5=5, 10, -7, 3, 7, i, j, t;sort(a);for (i=0; i=4; i+) printf(%d , ai);sort(int a)int i, j, t;for (i=0; i4; i+)for (j=0; j4-i; j+)if (ajaj+1) t=aj; aj=aj+1; aj+1=t; 12以下程序的运行结果是( -1 3 6 8 9 )。main()int a5=9, 6, 8, 3, -1, i, j, t, p;sort(a);for (i=0; i=4; i+) printf(%d , ai);sort(int a)int i, j, t, p;for (j=0; j4; j+)p=j;for (i=j; i=4; i+) if (aiap) p=i;t=ap; ap=aj; aj=t;13以下程序的运行结果是( sum=6 )。main()int a33=1, 3, 5, 7, 9, 11, 13, 15, 17; int sum;sum=func(a);printf(nsum=%dn, sum);func(int a3)int i, j, sum=0;for (i=0; i3; i+)for (j=0; j3; j+)aij=i+j;if (i=j) sum=sum+aij;return(sum);14下面程序的运行结果是:( before swap a=5,b=10 in swap x=10,y=5 after swap a=10,b=5 )。#include main()int a, b;a=5; b=10;printf(before swap a=%d,b=%dn, a, b);swap(&a, &b);printf(after swap a=%d,b=%dn, a, b);swap(int *px, int *py)int temp;temp=*px;*px=*py;*py=temp;printf(in swap x=%d,y=%dn, *px, *py);15下面程序的运行结果是( 0 1 2 3 )。#include func(int b)int j;for (j=0; j4; j+) bj=j;main()int a4, i;func(a);for (i=0; i4; i+) printf(%d , ai);16运行下面程序,如果从键盘上输入字符串qwerty和字符串abcd,则程序的运行结果是( 10 )。#include strle(char a, char b)int num=0, n=0;while (anum!=0) num+;while (bn) anum=bn; num+; n+; return(num);main()char str181, str281;gets(str1);gets(str2);printf(%dn, strle(str1, str2);17下面程序的运行结果是( AGAAGAG )。#include #include void fun(char *w, int m)char s, *p1, *p2;p1=w;p2=w+m-1;while (p1p2) s=*p1+; *p1=*p2-; *p2=s; main()static char a=ABCDEFG;fun(a, strlen(a);puts(a);
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!