程序设计基础(C)作业答案(带原题)

上传人:新**** 文档编号:138720501 上传时间:2022-08-22 格式:DOCX 页数:34 大小:89.87KB
收藏 版权申诉 举报 下载
程序设计基础(C)作业答案(带原题)_第1页
第1页 / 共34页
程序设计基础(C)作业答案(带原题)_第2页
第2页 / 共34页
程序设计基础(C)作业答案(带原题)_第3页
第3页 / 共34页
资源描述:

《程序设计基础(C)作业答案(带原题)》由会员分享,可在线阅读,更多相关《程序设计基础(C)作业答案(带原题)(34页珍藏版)》请在装配图网上搜索。

1、程序设计基础(C)作业第1章C语言的基本构成一、选择题1 .( A )是构成C语言程序的基本单位。(A)函数(B)过程(C)子程序(D)文件2 . ( B )是C语言提供的合法的数据类型关键字。(A) Float(B)signed(C) integer(D)Char3 .以下选项中不合法的用户标识符是(A )o(A) abc. c(B)file(C) Mam(D) PRINTF4 .以下选项中不合法的用户标识符是(AB )o(A) 123(B)prmtf(C) A$(D)Dun5 .合法的C语言长整型常数是(A )o(A) OL(B)5712700(D) 2.1869el0(C) 0.0548

2、387436. C语言中,要求运算数必须是整型的运算符是(A )o(A) %(C) 7.以下选项中正确的整型常量是(B )。(A) 12.(C) 1, 0008.以下选项中不正确的实型常量是(B )。(A) 2.607E-1(C) 77.779.C语言中运算对象必需是整型的运算符是(A) (C) *(B)(D) !(B) -20(D) 0458(B) 0.8103e2.(D) 456e-2(D )。(B)+(D) %二、程序调试题1 .编辑、调试以下程序步骤1:在Visual C+环境下新建文件可用开始程序f Microsoft Visual C+6. 0 Microsoft Visual C

3、+6. 0 f 文件f 新建f 文件f C+ Sourse File,输入文件 名exl-1. c,程序代码如下:# include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函 数*/int add(int x,int y)int z;z=x+y;return z;)int main()int add(int, int) ;/*函数的说明,告诉系统在主函数中要调用add函数*/int a, b, c;/*变量的定义*/scanf (/d %dn”, &a, &b);c=add(a, b);/* 函数调用 */printf (,z%d+%d=%dn,z, a, b, c);/*调

4、用系统输出函数printf,对为格式控制符,依次用后面的变量值填充,以整数形 式输出*/)请思考文件exl-l.c由几个函数构成?由2个函数构成调用了那几个系统函数?调用2个系统函数,分别是scanf和prmtf此程序中用到了哪几个保留字?哪几个用户自定义标识符?保留字:int, icturn自定义表示符:z, x, y, a, b, c步骤3:编译并运行程序,程序运行时输入两个整数,2040 ,观察程序运行的结果。20+40=602 .编辑、调试以下程序步骤1:在Visual C+环境下新建文件可用开始程序Microsoft Visual C+6. 0 Microsoft Visual C+

5、6. 0 f 文件f 新建f 文件C+ Sourse File,输入文件名 exl-2. c步骤2:在文本编辑器中输入以下C程序#include /*文件预处理,包含标准输入输出库,程序可调用输入、输出函 数*/#include int main()int and(int, int);int or (int, int);int a, b, c ;scanf (/d %d, &a, &b); c二and (a, b);/*函数调用/*函数的说明,告诉系统在主函数中要调用and函数*/ /*函数的说明,告诉系统在主函数中要调用and函数*/ /*变量的定义*/printf (,/%d & %d=%

6、dnz,, a, b, c);/*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式 输出*/c=or (a, b) ;/* 函数调用 */printf (,z%d I | %d=%dnz,, a, b, c);步骤3:文件f 新建f 文件f C+ Sourse File,输入文件名exl-2-2. c,源程序代 码为:int and(int az int b)(int c;c=a& &b;return c;步骤4:文件f 新建f 文件f C+SoutseFile,输入文件名exl-2-3.c,源程序代码为:int or (int a,int b)int c;c

7、=a|b;return c;步骤5:点击编译图标,编译程序1-2.c步骤4:点击执行图标!,执行程序1-2.C ,当程序运行时,键盘输入20 40,按回车。 20 4020 & 40=120 | 40=1您可以输入其它的整数,观察程序的执行结果。303 & 0=03 | 0=0第2章 输入输出程序设计1.用pnntf输出一个中空的五角星。#iiiclude void main()pnntf(Mt*1T);pnntf(Mt* *nM);pnntf(Ht*1T);pnntf(Ht* * * * * * * W)pnntf(Ht *pnntf(Ht *n)pnntf(Ht*1T);pnntf(Ht

8、*iT);pnntf(Ht * * *1Tpnntf(Ht*ttinclude int main()printf(Mt*nM);printf(Mt * * nfi);printf(Mt *nM);printF(Mt * * * * * * nM);printf(Mt * n#);printfCXt *nM);printFCAt *nf);printf(Mt *nM);printf(Mt * * *n”);printf(Mt*nM);return 0;2 .仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。#include intchar s255;pnntf(请输入:);s

9、canf(”%s”,s);pnntf(你输入的是:%sn”,s);return 0:3 .从键盘输入十六进制整数,转化为八进制数输出。#include intmt a;pnntf(请输入一个十六进制数:);scanf(%x&a);pnntf(这个数转化为八进制数为011月);return 0:4 .只定义两个整型数据并赋值,实现两个整型数的互换。include int maiii()iiit a = 10;mt b = 20;a = azb;b = bAa;a = azb;priiitf(na = %d , b = %dn”,a,b); return 0;)5 .从键盘上输入一个整数,分别输出

10、8、16进制数的程序。include mt maiii()mt a;printff请输入一个十进制数:);scanf(d”,&a);pnntf(这个数转化为八进制数为on,a); pnntf(这个数转化为八进制数为xn”,a);return 0;)6 .从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。#mclude mt mam()mt a;scanf(,%d,&a);piintf(百位数 9%dn,a/l 00);pnntf(十位数为 %diT,a% 100” 0);pnntf( 个位数为 diT,a% 10);return 0;)7 .以下程序输出结果是(9,10 )o#incl

11、udevoid main()(int i=010,j=10;printf(n%dz %dnH, j- );8 .运行程序,屏幕提示“您是一个学生吗”,您输入V或宜进行回答,屏幕输出您的选项。#mclude mt mam()char s;pnntf(你是学生吗(Y/N) :f,);scanf(八%s”,&s);或s = Y | s = y)printf(你是学生n)else/priiitf(n你不是学生n”);return 0;9 .从键盘输入一个角度x,求10*sin(x)的值。#iiiclude#include intimt a;double 1 = 10 * sin(a);pnntff%f

12、iV,i);return 0;)第3章循环程序设计1 .执行语句for (i=0; i+5;);后,变量i的值是(A )。(A) 6(B) 5(C) 4(D) 02 .若int i=0;下列语句计算1+2+10的是(C )。(A) while (s+=i) ;(B ) for (;i=10;i+r s+=i)(C) for ( ; i=10; s+=if i+)(D) for ( ; i9; s+=i)3 .若int i, x;则语句for (i=x=0; i9; i+=+x);的循环体要执行(4 )次。10.以下不是死循环的语句是(D )。(A) for (;x+);(B ) while(1

13、) (x+;(C) do i+; while (1)(D ) for (x=-10;x+;)4 .以下for语句的循环次数是多少?int j=3;for(;i=j ; i, j ) printf;执行了 3次5 .下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:for (int i=0;6; i+)printf (%d hi i)6 .写出以下程序运行的结果,此程序实现了什么功能?#include void main() int a10 = 2,4,0,-5,10,6,-8, 9,6,7;int i, count=0;for(i=0;i10;i+)if (a i=0)

14、 count+;else continue;printf(%dn H, count);该程序实现的功能为:计算数组a中包含几个07 .写出以下程序的功能。#include void main()int a10 = (2r4z0/-5z106/-8/9,6,7,tmpz k; for (k=0;k10/2;k+)(tmp=ak;ak=a10-k-l;a 10-k-l=tmp;此程序实现功能:将数组颠倒8 .写出以下程序运行后的输出结果。#include void main()int iz j;for(i=0;i6;i+)(for (j=0;ji;j+) printf(H H);for(j=0;j

15、2*(5-i)-1;j+) printf (H*H);printf(nH);输出倒三角形9 .请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检验。#iiiclude#iiiclude void maiii() Iiiit i,s;while(i=100)i+;void niaui()int i,s;制sF;while(i=100);s=s+i;printff1+2+3+,+99+100=%d n”,s);IIprintf( 1+2+3+.+99+100=%dn”,s);(2)#iiicludevoid main()int i,s;SiBs=0;while(i=100)s=s+i

16、;i+;Iprintff 1+2+3+99+100=%dW”,s);while(i=100)s=s+i;ifprintff1+2+3+,+99+100=%dn”,s);I(3)#iiiclude void main()iiit i=l,s;ints = 0;while(i=100);Is=s+i;ifA printf(“ 1+2+3+.+99+100=%d W”,s);M10 .输入一个基数,例如输入9,输出为:求1*3*9的值。输出为:1*3*5*7*9=945 #mcludemt mam()mt a,b;b=l;scanf(n%d,&a);fbr(iiit i = l;i = a; i+=

17、2)b = b * i;)pnntff%diT,b);return 0;11 .输入一个510之间的整数n,求l!+2!+3!+n!例如输入5,输出为:1!+2!+3!+5 ! =153#iiiclude intmt a,b,c;b = l;c = 0;scanf(n%d,&a);fbr(iiit i = 1; i = a; i+)fbr(mtj = 1; j = i;j+)(b = b *j;)c = c + b;b=l;)pnntff%diT,c);return 0;12 .在屏幕上输出以下内容112123123412345123456123456712345678123456789#in

18、cludeint mainOfor (int a = 1; a = 9; a+)(for(int b = 1; b = a; b+) printf b);) return 0;)13 .求2+4+6+98+100的和,用多种for表达式来完成。#mcludeintmt sum = 0;fbr(int a = 2; a = 100; a+=2)sum += a;)printf(d”,sum);return 0;14 . 输入一行字符,统计它有多少个字母?#includeint mainO(int count = 0;char s255;scanf(乐s”,s);for(int i = 0; i

19、=,a,& si = A & si = Z)(count+;)printf (,%d/z, count);return 0;第4章分支程序设计1.输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。#iiicludemt mam()(int x;scanff%d”.&x);for (;x;scanf(d”,&x)iif (x 0)pnntf(%dn”,x);elseprmtf(%dn,-x);)return 0;2 .输入一批数,输出比相邻数大的数,当输入0时结束。#iiicludemt mam()int a;int b = 0;scanff%cT.&a);b = a;for (;a

20、;scanf(H%d,&a)if (a b)pnntfC%dfa);b = a;return 0;3 .将输入字符的大写字符转换成小写字符输出,小写字符原样输出。#iiicludehit mam()(clw c;while (c = getcharQ) != n)if(c = W & c V= Z)c+=32;)putchar(c);return 0;)4 .输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个 数。#iiicludehit mam()(clw c;int dx = O.xx = O,sz = O,qt = 0;while (c = getcharQ)

21、!= n)if(c = W & c = a* & c = O & c = 9)SZ+;) elseqt+;)pnntf(包含大写字母d个,小写字母d个,数字%d个,其他字符d j.n,dx,xx,sz,qt); retiiin 0;5 .编写程序,计算分段函数:x+5xy = 2x 1 x 10x-10#mcludemt (double x,y; scanff%P,&x);if (x = 1) y = x + 5; else if (x 10) y = 2 * x; elsey = 3/(x-10); pnnrfVPy); return 0;6 .根据输入的百分制按五分制的成绩输出。百分制与五

22、分制之间的关系见下表。百分制五分制90-100580-89470-79360 692601#iiicludemt(int a;scanf(M%cl,&a);if (a 90)pnntff5iT);else if (a 80)pnntff4iT);else if (a 70)pnntff3iT);else if (a 60)pnntff2iT); elsepnntfflW)return 0;7、用switch完成:读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2, 则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。#iiiclude#iiicl

23、ude mt(int a,b;scanf(H%d.%d,&a,&b);switch(a)case l:prmtf(ny=sin(x)=%fsin(b);break:case 2:priiitf(,ycos(x)=%f,cos(b);break;case 3ny=tan(x)=%f tan(b);break;default:pimtf(neiiorH);bieak;retuin 0;8、用switch完成:输入星期1到星期5,输出它们对应的颜色星期1: blue星期2: ied星期 3: white星期 4: yellow星期 5: green#mcludeintmt a;scanf(,%d,&

24、a);switch(a)case 1 :printf(“星期一:bluen);break;case 2:pnntf(“星期二:led山)break;case 3:printf(“星期三:whiteiT);break;case 4:printfC星期四:ydlown)bieak;case 5星期五:greennn);break;defaultzprintfCenorW9ibreak;)return 0;9、用switch完成:从键盘输入A、B、C、D四个等级中的一个,转化输出等级输出A优秀B良好C中等D及格E不及格#iiiclude mt mam()char a;scanf(s”,&a);swi

25、tch(a)case Apdntf(“优秀n);bfeak;case Bprintf(良好n)break;case Cprintf(“中等n)break;case Dpiintf(及格rT);break;case E:printf(不及格n”);break;default:prmtf(nenofuin);bieak;return 0;第5章数组及其应用1 .从键盘输入12个数,分别为:900,2,3,58,34,76,87,72,90,20,78,30,找出最大和最小数。#mcludemt mam()(inta12;for (mt i = 0;i 12; i+)int max=a0 jnni=

26、a0;fbr(intj = l;j max) max = aj;if (aj min)min = a|j;)piintf(最大值为& 最小值为dn”,max,min);return 0;)2 .采用遍历查找,在数组 aSIZE=2, 3,20,58, 72, 76,78.87,90,900中,找出偶数。#iiiclude#define SIZE 100hit mam()(mt aSIZE = 2,3,20,58,72,76,78,87,90,900;for (mt i = 0;i 10; i+) if(ai % 2 = 0)return 0;3 .采用折半查找,在数组aSIZE=2, 3,20

27、,58, 72, 76,78,87,90,900中,找到87,然后进行删 除。#iiicludedefine SIZE 11define FOUND 87mt mam()(mt aSIZE = 2, 3,20,58, 72, 76,78,87.90.900;int low = OJugh = SIZE-1 jnid;nud = (low + high) / 2;while (low high) if(aimd FOUND)high = nud;mid = (liigh + low) / 2;)elsebreak;for (mt j = nud; j 9; j+)aU=aj+l;retuin 0

28、;第6章函数及其应用练习与实践一、阅读程序,写出程序运行的结果。1 .写出以下程序的执行结果。#include float aver(int a) (int k,sum=0;float ave;for(k=0;k10;k+) sum+=*(a+k);ave=(float)sum/10;return (ave);)int main()( float ave; static b=78, 8 9, 98,76, 78,45,88, 81, 92,85; ave=aver(b);printf (nave=%fn!ave);)提示:数组b的首地址传递给形参a, *(a+k)就是数组元素bk. 81.00

29、00002 .阅读程序,写出程序的执行结果。#include void abc ( char str ) int a, b ;for (a = b = 0 ; stra ! =101; a+ )if (stra != 1cz) strb+ = stra;strb=l0,;)int main() (char str =nabcdefn ;abc(str);printf (nstr =%s 11 , str );return 0;提示:数组str的首地址传递给形参str, str a就是实参中的数组元素str a,当 数组元素不为上,时进行复:制。str =abdef3 .写出以下程序的执行结果。

30、#includeint sort(int bz int n,int x) int k;for(k=n-l;k=0;k-)if (bkx) bk+l=bk;else break;bk+1=x; return 0;)int main()int irj;static int a 5 = 8Z 5,4,1,6;int b8;b0=a0;for(i=l;i5;i+) sort(b,i,ai);for(j=0;j=i;j+) printf (,f%d f,fbi);printf (nn,f);) return 0;)提示:循环体中if (bkx) bk+l=bk;else break;如果bkx成立,执行

31、语句b k+l=bk;表示数组元素b向后移,不满足时插入x, 即从大到小排序。5 54 4 41111111114 .写出以下程序的执行结果。#include int fun (int x) int p;if (x=0| |x=l) return 3;elsep=x-fun (x-2);return p;)int main()(printf(nn%dnzfun(9);return 0;提示:fun (9) =9-fun (7) z . . ., fun (1) =375 .写出以下程序的执行结果,并说明其作用是什么?#includeint f (int n)(if (n=10)f(n/10);

32、printf (,f%d!n%8);return 0;int main()(f(1234);printf(nnH);return 0;提示:在函数f中,程序运行借助了堆栈,依次入栈的数据分别为1234、123、12,最后 n=l, n对8取余输出,然后数据依次出栈对8取余输出。1432二、程序设计1 .编写一个函数,计算x的n次的平方。提示:fbr(y=l j=O;in;i-H-)y=y*x;#mcludemt )(int x,n,y,i;scanff%d/、%d&x,&n);fbr(y=l j=O;in;i-H-)y = y * x;)pnntf(u%d 的(1 次方是:dn”,x,n,y)

33、;return 0;2 .编写一个函数,计算对角线上元素之和。提示:fdr(s=05i=0;in;i+)for(j=0jnj+)1f(E s=s+aij;#iiicludemt mam()(inta1010;int i = 0j=0;int sum = 0;fbr (i = 0; i 10; i+) for(j = 0j10;j+)= (i+l)*(j+l); printf(%dt,ai|j);) pnntffW);for (i=0;i10;i-H-)for(j=0j10j+)sum += aij;)pnntf(“对角线和为8口”川。1);return 0;3 .编写一个函数int mven

34、(char str口),将一个字符串的内容颠倒过来。 提示:先求字符串sti的长度n, fbt(i=o;ivn/2;i+)ai与交换#iiicludemt mvert(chai- sti)char ch;mt i;for (i = O;(ch=stri) != 0;i+);for(intj = 0;j0;#iiicludemt mam()(char str255;int index.num;gets(str);scanf(H%d,%d,&iiidex,&num);int i=0j = 0;char ch;fbi (;(ch=stii)!=,(r;i+);for (j = 0j i)str0 =

35、 0;puts(str);return 0;5 .编写一个程序,从键盘输入的字符串,删去非数字字符,转换成整型数输出。 提示:fbr(s=0,1=0 , j=0 ; stri;i+)s=s*10+stri-0,;#iiicludemt ) (char str255;gets(str);int i=0j = 0;int s = 0;char ch;for (;(ch=stri)!=0t;i+) if(ch= O & ch = 9) (s = s * 10 + ch - 5 ) pimtfT%dn”,s);return 0;6 .用递归的方法编写一个函数sum (mtn),求1至n的累加和。 提示

36、:f(n)=n+f(n-l)#iiiclude mt sum(int n) (int a = 0;if (n = 1) a = 1; else(a = n+ sum(n - 1); return a;mt )int n;scanfV%d,&n);int s = sum(n);pnnrff%dn”,s);return 0;第7章变量存储类型与多文件系统1 .写出以下程序的执行结果。#include int x; void fun() (printf(%d ”,x+);)void main()( int x=l;( extern int x; printf(H%d,z+x); fun();)提示:

37、在函数fun中及语句块 (extern int x; printf(H%d,z+x);中使用的x是外部变量,在语句块: if(x=l) int x=2;printf(H%d,H,x+);中使用的是刚刚定义乂=2的变量。1,12 .写出以下程序的执行结果。#include int kk () int x = 4 ;static int y ;y = 5 ;x*= 2 ;y*= 2; return(x+y);)void main() int j z s = 0 ;for ( j = 0 ; j 2 ;)s = kk ();printf ( H s = % d n ,s ); )提示:虽然两次调用函

38、数kk(),但变量定义语句static inr y ;只执行一次,而变量赋值语句 每次都要执行。S = 183 .写出以下程序的执行结果。#include int t() (int x = 0 ;static int y = 4 ;y += +x ; return x+y;)void main()( printf(n%d n ( t( ), t ();提示:语句printf (Yd n”,(t( ), t ();中(t (),匕()屈于“,”号表达式,即两次调 用函数5 ),在函数5 )中,y为静态内部变量,因而语句static int y = 4 ;只执行一次。7第8章文件1 .下述程序从终

39、端读入文本(用$作为文本结束标志)兔制到一个名为。ut.dat的新文件中, 请补全程序。#include int main() FILE *fp; char ex; if( (fp=fopen( out,dac,)=NULL) return 0;while ( (cx=getchar( )! = *$) fputc (cxz fp);fclose (fp);return 1; 提示:第1个空格是打开文件读,第2个空格是关闭文件。2 .下面的程序用来统计文件中字符的个数,请补全程序。#include int main() FILE *fp; long num=0; if(fp=fopen(nfn

40、ame.dat,r)=NULL) (printf(nCan * Z open file!nH); exit(0);while ( ! f eof (fp) )(fgetc (fp);num+;printf(num=%dnH,num);fclose (fp);return 1;提示:第1个空格表示文件没有结束,循环将持续。3 .以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符,依次存放到该文件 中,用的乍为结束输入的标志,请补全程序。#includevoid main()FILE *fp;char ch,fname10;printf(HInput the name of filenH

41、);gets(fname);if ( (fp=fopen ( out) =NULL)printf(HCannot opennH);exit(0);printf (HEnter datan);while( (ch=getchar ( )! = #)fputc (ch , fp);fclose(fp);提示:文件名是从键盘读入的,因而文件名是用变量表示的,文件是打开写。4 .下述程序从一个二进制文件中读入结构体数据,并把读出的数据显示在屏幕上。请补全 程序。 include struct rec int a;float b; ;void recout(FILE *fp)(struct rec r;

42、do f read (&r, sizeof (struct rec) ,1, fp);if ( feof (p)break;printf(n%d,%fz r.r.b);while(1);void main() FILE *fp;fp=fopen(,file.dar HrbH);recout (fp);fclose (fp);提示:在fread语句中,(1)中为存放所读出结构数据的内存地址,当然此数据是赋给变量r, (2)中 是读出结构体变量数据的个数,(3)是与循环中止有关的判断,(4)为中止循环。5 .从键盘输入一个字符串,并逐个将字符串的每个字符传送到磁盘文件“ll.txt”中,字符串 的

43、结束标记为“用。include #include void maiiiQFILE *fp;char ch;fp=fbpen(Hll.txt,7,ab+H);if (3= NULL) piiiitf(nOpen file failed!n); exit(O);)while (ch = getchai。)!= #)fputc(ch.fp);fclose(fp);)6 .有一文本文件ll.txt,请编写一个程序将文件中的英文字母及数字字符显示在屏幕上。 提示:include #include void maiiiQFILE *fp;char ch;q)=fbpen(nll.txt,7,rb,t);i

44、f (3= NULL) piiiitf(nOpen file failed!n); exit(O);ch = fgetc(fp);if (ch = A & ch = a & ch = O & ch v= 9)(putchar(ch);)fclose(fp);7 .把文本文件ll.txt中的数字字符复制到文本文件12.txt中。#iiiclude #include void maiiiQ(FILE *fin.*fout;clw ch;fui=fbpen(Hll.txt,7,ibn);fout = fbpen(H12.txf7,ab+H);if (fill = NULL | fout = NULL

45、)priiitf(nOpen file failed!);exit(O);while (!feof(fin)(ch = fgetc(fui);if(ch=O & ch=9)(fputc(ch,fbut);)fclose(fiii);fclose(fbut);8 . x从。到360度的sin(x)值写入到文件16.txt中,并将大于0的值显示在屏幕上。#iiiclude #include #include #define PI 3.1415926void maiiiQFILE *fp;double y;fp=fbpen(H16.txtH;,ab+M);if (3= NULL)iprintffOp

46、un file failed!n); exit(O);for (mt i = 0; i o)fprintf(stdout,l%lfn,y);)fclose(fp);)指针与数组1 .下列程序输出的结果是(D )o#include void f (int * x ) (*x = 10 ;)void main() (int a,*p=&a; f (P);printf (n%d+(*p);)(A)输出的值是随机值(B)因输出语句错误而不能执行者(C)输出值为10(D)输出值为11提示:指针x指与指针p指向同一个变量,10赋给指针x所指的地址上的内容,+(*p) 是指指针p所指地址上内容2 .下列程序

47、片段中不正确的字符串赋值或初始化方式是(C(A) char *str; str=Hstiiiign;(B) charstr7=s,t,T,i,n,g,0;(C) char str10; str=,stiiiign;(D) char str =Hstnngn;提示:字符串赋值只能在初始化时进行。3 .如有定义:int x=2, *p=&x;以下哪些表达式的含义是不正确的。D(A) *&p(B) *&x(C) &*p(D) &*x提示:指针可以作取地址运算,变量不能作取内容运算。4 .如有定义int a5;(其中:0V=i5),不能表示数组元素的是(B )。(A) * (a+i)(B) a5(C)

48、 a0(D) ai提示:数组元素的下标从0开始。5 .若有以下定义和语句,inta10, 1:且0=110,则对数组元素地址的正确表示是(D )。(A) a+(B) (a+1)(C) * (a+1)(D) &a提示:一旦数组定义,数组的首地址是一个常量,不能作+运算,而a+i表示数组第1个元 素的地址。6 .有以下定义及语句,则对数组a元素的不正确引用的表达式是(A )oint a 4 5 ; *p2 , j ;for (j = 0 ; j 4 ; j+)p(j=aj;(A) p00(B) *(a+3)4(C ) *(pl+2)(D) *(&a00+3)提示:p为指针数组,此题中也都能表示数组

49、元素,&a00 等同于a0-r0o二、程序阅读与填空题1 .分析下列程序,输出结果是()。#includevoid main()(int *plz x=10;float *p2,y=2.5;pl=&x;p2=&y;printf(%d, %fnHz+(*pl)z (*p2)+ );)提示:+都作用在内容上,前一项是先+再输出,后一项是先输出再+。11, 2.5000002 .下列程序输出结果是()o#include void main()(int a = 1, 2, 3, 4 5 6, *p=a;printf(n%d,%dnH,*pf *(p+3);)提示:语句* (p+3)+=2;指p+3的地

50、址上的内容加2,然后输出p及p+3的地址上内容。1,43 .下列程序输出结果是()o#includevoid main()(int a =1,2,3,4,5,6;int x,yr *p;p=&a0;x=*(p+2);y=*(p+4);printf(*p=%d,x=%dz y= %dnH,*p,xr y); )提75: p+2是指*p=lfx=3,y=54,下列程序输出结果是()o#include void main()(int a = 10,20,30, 40, 50,60;int *p;p=a;printfn *p);printfn *(+p);printf(*%d,n *+p);print

51、fn * (p);p+=3;printf(*%df %d nH, *pz *(a+3);)提示:F+p)、*+p都表示指针p向大地址方向移动,然后再取内容,要注意的是后一语句的输出 受前一语句的影响。*10*20*30*30;*50,405,下列程序输出的结果是()。#include void del ( char *str ) (int a, b ;for(a = b = 0 ; stra!=10; a+ ) if (* (str+a) ! = ,c,) (str+b+)=*(str+a);strb=,0,;void main()char str =abcdefH ;del (str);printf(Hstr =%s , str );提示:在函数del中s匕r+a地址上的内容不为字符,/时不匏制,实际上是指删除指针str所指的字 符串中的字符飞,。str=abdef6 .以下程序输出的结果是()。#include #include void fun ( char r int m) ( char

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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