程序设计基础(C)作业答案(带原题)_第1页
程序设计基础(C)作业答案(带原题)_第2页
程序设计基础(C)作业答案(带原题)_第3页
程序设计基础(C)作业答案(带原题)_第4页
程序设计基础(C)作业答案(带原题)_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础(C)作业 第1章 C语言的基本构成 一、选择题 1.( A )是构成C语言程序的基本单位。 (A)函数 ( B) 过程 (C)子程序 ( D) 文件 2. ( B )是C语言提供的合法的数据类型关键字。 ( A) Float ( B) signed ( C) integer ( D) Char 3.以下选项中不合法的用户标识符是(A )。 ( A) abc . c ( B) file ( C) Main ( D) PRINTF 4.以下选项中不合法的用户标识符是(AB )。 ( A) l23 ( B) printf ( C) A ( D) Dim 5.合法的C语言长整型常数是(A

2、 )。 (A)0 L ( B) 5712700 ( C) ( D) 6. C语言中,要求运算数必须是整型的运算符是( A )。 ( A) % ( B) / ( C) ( D) ! 7 .以下选项中正确的整型常量是(B )。 ( A) 12. ( B) 20 ( C) l , 000 ( D) 0458 (A) 1( B). (C)( D) 456e 2 9. C语言中运算对象必需是整型的运算符是( D )。 (A) (B) + (C) *(D) % 二、程序调试题 1.编辑、调试以下程序 步骤1 :在Visual C+环境下新建文件可用 开始t 程序t Microsoft Visual C+

3、宀 Microsoft Visual C+ t 文件t 新建t 文件t C+ Sourse File,输入文件名, 程序代码如下: # include /*文件预处理, 包含标准输入输出库,程序可调用输入、输出函数 */ int add(i nt x,i nt y) int乙 z=x+y; return 乙 int main() intadd(i nt, in t); /* 函数的说明,告诉系统在主函数中要调用add函数*/ int a,b,c; /* 变量的定义*/ scan f(%d %dn, c=add(a,b); /* 函数调用*/ prin tf(%d+%d=%dn,a,b,c);

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

5、ual C+ t文件t新建t文件t C+ Sourse File,输入文件名 步骤2:在文本编辑器中输入以下C程序 #in clude /* 文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/ #i nclude int main() c=or(a,b); /* 函数调用*/ int an d(i nt,i nt);/* 函数的说明,告诉系统在主函数中要调用and函数*/ int or(i nt,i nt);/* 函数的说明,告诉系统在主函数中要调用and函数*/ int a,b,c;/* 变量的定义*/ scanf(%d %d, c=a nd(a,b);/* 函数调用*/ prin

6、tf(%d /*调用系统输出函数printf,%d 为格式控制符,依次用后面的变量值填充,以整数形式 输出*/ printf(%d | %d=%dn,a,b,c); 步骤3:文件t新建t文件C+ Sourse File,输入文件名1-2-2,源程序代码为: int and(int a,int b) int c; c=a return c; 步骤4:文件t新建t文件tC+ Sourse File,输入文件名1-2-3,源程序代码为: int or(int a,int b) int c; c=a|b; return c; 步骤5:点击编译图标 ,编译程序 步骤4:点击执行图标可,执行程序,当程序运

7、行时,键盘输入 20 40,按回车。 20 40 20 printf(t* * n); printf(t * * n); printf(t* * * * * * * * n) printf(t * * n); printf(t * * n); printf(t * * n); printf(t * * * n); printf(t * * * * n); printf(t* *n); 2 仿照例子,定义一个字符数组,从键盘输入一字符串,然后输出的程序。 #include int main() char s255; printf( 请输入 :); scanf(%s,s); printf( 你输入

8、的是 :%sn,s); return 0; 3 从键盘输入十六进制整数,转化为八进制数输出。 #include int main() int a; printf( 请输入一个十六进制数 :); scanf(%x, printf( 这个数转化为八进制数为 %on,a); return 0; 4 只定义两个整型数据并赋值,实现两个整型数的互换。 #include int main() int a = 10; int b = 20; a = aAb; b = bAa; a = aAb; printf(a = %d , b = %dn,a,b); return 0; 5 从键盘上输入一个整数,分别输出

9、8、16 进制数的程序。 #include int main() int a; printf( 请输入一个十进制数 :); scanf(%d, printf( 这个数转化为八进制数为 %on,a); printf( 这个数转化为八进制数为 %xn,a); return 0; 6 从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。 #include int main() int a; scanf(%d, printf(百位数为%dn,a/100); printf(十位数为%dn,a%100/10); printf(个位数为%dn,a%10); return 0; 7 以下程序输出结果是(

10、9,10 )。 #include void main() int i=010,j=10; printf(%d,%dn,+i,j- ); printf( 你是学生吗 (Y/N):); scanf(%s, if(s = Y | s = y) printf( 你是学生 n); else printf( 你不是学生 n); return 0; 9. 从键盘输入一个角度x,求10*s in(x)的值。 #include #include int main() int a; scanf(%d, double r = 10 * sin(a); printf(%fn,r); return 0; 第3章循环程序

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

12、(x=-10;x+;) C) doi+;while(1) 4. 以下for语句的循环次数是多少 int i,j=3; for(;i=j;i-,j-) printf(%d,i); 执行了 3次 5. 下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整: for(int i=0;i6 ;i+) printf(%d,hii) 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(ai=0) count+;

13、else continue; printf(%dn , count); 该程序实现的功能为:计算数组a中包含几个0 7. 写出以下程序的功能。 #include void main() int a10=2,4,0,-5,10,6,-8,9,6,7,tmp,k; for (k=0;k10/2;k+) tmp=ak; ak=a10-k-1; a10-k-1=tmp; 此程序实现功能:将数组颠倒 for(i=0;i6;i+) for(j=0;ji;j+) printf(); for(j=0;j2*(5-i)-1;j+) printf(*); printf(n); 输岀倒三角形 * kkkkkkk 9

14、.请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检验。 (1) #in clude void mai n() #in clude int i,s; i=1; s=0; while(i=100); s=s+i; i+; printf(“ 1+2+3+ .+99+100=%dn ” ,s); void mai n() int i,s; i=1; s=0; while(i=100) #in clude void mai n() printf(“ 1+2+3+ .+99+100=%dn ” ,s); int s = 0; s=s+i; i+; printf( “ 1+2+3+ .+99

15、+100=%dn ”,s); 1*3*5*7*9=945 10. 输入一个基数,例如输入9,输出为:求1*3*9的值。输出为: #in clude int mai n() int a,b; b = 1; scan f(%d, for(i nt i = 1;i = a; i+=2) b = b * i; prin tf(%dn,b); return 0; 1!+2!+3!+ +5! 11. 输入一个510之间的整数n,求1!+2!+3!+n!。例如输入5,输出为: =153 #in clude int mai n() int a,b,c; b = 1; c = 0; scanf(%d, for(

16、int i = 1; i = a; i+) for(int j = 1; j = i; j+) b = b * j; c = c + b; b = 1; printf(%dn,c); return 0; 12在屏幕上输出以下内容 1 12 123 1234 12345 123456 1234567 #include int main() for(int a = 1; a = 9; a+) for(int b = 1; b = a; b+) printf(%d,b); printf(n); return 0; 13.求2+4+6+98+100的和,用多种 for表达式来完成。 #include

17、int main() int sum = 0; for(int a = 2; a = 100; a+=2) sum += a; printf(%d,sum); return 0; 14 输入一行字符,统计它有多少个字母 #include int main() int count = 0; char s255; scanf(%s,s); for(int i = 0; i = a printf(%d,count); return 0; 第4章分支程序设计 0 时结束。 1输入若干整数给 x ,使用 if 语句输出 x 的绝对值,当输入 #include int main() int x; scan

18、f(%d, for (;x;scanf(%d, else printf(%dn,-x); return 0; 0 时结束。 2输入一批数,输出比相邻数大的数,当输入 #include int main() int a; int b = 0; scanf(%d, b = a; for (;a;scanf(%d, b = a; return 0; 3将输入字符的大写字符转换成小写字符输出,小写字符原样输出。 #include int main() char c; while (c = getchar() != n) if (c = A putchar(c); return 0; 4输入一批字符,按

19、回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个 数。 #include int main() char c; int dx = 0,xx = 0,sz = 0,qt = 0; while (c = getchar() != n) if (c = A else qt+; printf( 包 含 大 写 字 母 %d 个 , 小 写 字 母 %d 个 , 数 字 %d 个 , 其 他 字 符 %d 个.n,dx,xx,sz,qt); return 0; 5编写程序,计算分段函数: x 5 x 1 y 2x 1 x 10 3 x 10 x 10 #in clude int mai n(

20、) double x,y; scan f(%f, if (x = 1) y = x + 5; else if (x 10) y = 2 * x; else y = 3/(x-10); prin tf(%f,y); return 0; 6 根据输入的百分制按五分制的成绩输出。百分制与五分制之间的关系见下表。 百分制 五分制 90 100 5 80 89 4 70 79 3 60 69 2 60 1 #in clude int mai n() int a; scan f(%d, if (a 90) prin tf(5n); else if (a 80) prin tf(4n); else if (

21、a 70) prin tf(3n); else if (a 60) prin tf(2n); else printf(1n); return 0; 7、 用switch完成:读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入 2,则计算 cos(x) ,若输入 3,则计算 tan(x) ,若输入其他值,则显示错误信息。 #include #include int main() int a,b; scanf(%d,%d, switch(a) case 1:printf(y=sin(x)=%f,sin(b);break; case 2:printf(y=cos(x)=%f,cos

22、(b);break; case 3 :printf(y=tan(x)=%f,tan(b);break; default:printf(error);break; return 0; 8、用 switch 完成:输入星期 1 到星期 5,输出它们对应的颜色 星期 1 : blue 星期 2: red 星期 3: white 星期 4: yellow 星期 5: green #in clude int mai n() int a; scan f(%d, switch(a) case 1:printf(星期一:bluen);break; case 2:printf(星期二:redn);break;

23、case 3:printf(星期三:whiten);break; case 4:printf(星期四:yellown);break; case 5:printf(”星期五:greenn);break; default:pri ntf(err orn );break; return 0; 9、用switch完成:从键盘输入A B、C D四个等级中的一个,转化输出 等级 输出 A 优秀 B 良好 C 中等 D 及格 E 不及格 #in clude int mai n() char a; scan f(%s, switch(a) 优秀 n”);break; 良好 n”);break; 中等 n”);

24、break; 及格 n”);break; 不及格 n);break; case A:pri ntf( case B:pri ntf( case C:pri ntf( case D:pri ntf( case E:pri ntf( default:pri ntf(errorn);break; return 0; 第5章数组及其应用 ,找出最大和最小 1.从键盘输入 12 个数,分别为:900,2,3,58,34,76,87,72,90,20,78,30 数。 #in clude int mai n() int a12; for (int i = 0; i 12; i+) scanf(%d, in

25、t max=a0,min=a0; for (int j = 1; j max) max = aj; if (aj min) min = aj; printf(最大值为 d,最小值为 dn,max,min); return 0; 中,找出偶数。 2 .采用遍历查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900 #include #define SIZE 100 int main() int aSIZE = 2,3,20,58,72,76,78,87,90,900; for (int i = 0; i 10; i+) if (ai % 2 = 0) printf

26、(%dt,ai); return 0; 3 .采用折半查找,在数组aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找到 87,然 后进行删除。 #include #define SIZE 11 #define FOUND 87 int main() int aSIZE = 2, 3,20,58, 72, 76,78,87,90,900; int low = 0,high = SIZE-1,mid; mid = (low + high) / 2; while (low high) if (amid FOUND) high = mid; mid = (high + l

27、ow) / 2; else break; for (int j = mid; j 9; j+) aj=aj+1; return 0; 第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,89,98,76,78,45,88,81,92,85; ave=aver(

28、b); printf(ave=%fn,ave); 提示:数组b的首地址传递给形参a, *(a+k)就是数组元素bk. 2阅读程序,写出程序的执行结果。 #include void abc( char str ) int a, b ; for(a = b = 0 ; stra!=0; a+ ) if(st ra!= c ) strb+ = stra; strb=0; int main( ) char str =abcdef ; abc(str); printf(str =%s , str ); return 0; 提示: 数组 str 的首地址传递给形参 str ,stra 就是实参中的数组元素

29、 stra ,当数组 元素不为 c 时进行复制。 str =abdef 3写出以下程序的执行结果。 #include int sort(int b,int n,int x) int k; for(k=n-1;k=0;k-) if(bkx) bk+1=bk; else break; bk+1=x; return 0; int main( ) int i,j; static int a5=8,5,4,1,6; int b8; b0=a0; for(i=1;i5;i+) sort(b,i,ai); for(j=0;j=i;j+) printf(%d ,bi); printf(n); return 0

30、; 提示:循环体中 if(bkx) bk+1=bk; else break; 如果bkx成立,执行语句bk+1=bk;表示数组元素b向后移,不满足时插入 x,即 从大到小排序。 5 5 4 4 4 1 1 1 1 1 1 1 1 1 4写出以下程序的执行结果。 #include int fun(int x) int p; if(x=0|x=1) return 3; else p=x-fun(x-2); return p; int main( ) printf(n%d,fun(9); return 0; 提示: fun(9)=9-fun(7),.,fun(1)=3 7 5写出以下程序的执行结果,

31、并说明其作用是什么 #include int f(int n) if(n=10) f(n/10); printf(%d,n%8); return 0; int main( ) f(1234); printf(n); return 0; 提示:在函数f中,程序运行借助了堆栈,依次入栈的数据分别为1234、123、12,最后n=1, n对8取余输出,然后数据依次出栈对 8取余输出。 1432 二、程序设计 1编写一个函数,计算 x 的 n 次的平方。 提示: for(y=1,i=0;in;i+) y=y*x; #include int main( ) int x,n,y,i; scan f(%dA

32、%d, for(y=1,i=0;in;i+) y = y * x; printf(%d的次方是:dn,x,n,y); return 0; 2编写一个函数,计算对角线上元素之和。 提示: for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; #include int main( ) int a1010; int i = 0,j=0; int sum = 0; for (i = 0; i 10; i+) for(j = 0;j 10; j+) aij = (i+1)*(j+1); printf(%dt,aij); printf(n); for (i=

33、0;i10;i+) for (j=0;j10;j+) if (i = j) sum += aij; printf( 对角线和为 %dn,sum); return 0; 3编写一个函数 int invert( char str ),将一个字符串的内容颠倒过来。 提示:先求字符串 str 的长度 n, for(i=0;in/2;i+)ai与 an-1-i 交换 #include int i; int invert(char str) char ch; for (i = 0;(ch=stri) != 0;i+); for (int j = 0; j i/2; j+) ch = strj; strj

34、= stri-1-j; stri-j-1 = ch; puts(str); return 0; int main( ) char str255; gets(str); invert(str); return 0; 4编写函数,删除字符串中,从指定位置m开始的n个字符。删除成功,函数返回被删除 字符串;否则返回空的值。 提示: for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i= 0 ; #include int index,num; gets(str); scanf(%d,%d, int i=0,j = 0; char ch; for (;(c

35、h=stri)!=0;i+); for (j = 0;j i) str0 = 0; puts(str); return 0; 5编写一个程序,从键盘输入的字符串,删去非数字字符,转换成整型数输出。 提示: for(s=0 , i=0 , j=0 ; stri;i+) if(stri=0 #include int main( ) char str255; gets(str); int i=0,j = 0; int s = 0; char ch; for (;(ch=stri)!=0;i+) if (ch = 0 printf(%dn,s); return 0; 6用递归的方法编写一个函数 sum

36、( int n ),求 1 至 n 的累加和。 提示: f(n)=n+f(n-1) #include int sum(int n) int a = 0; if (n = 1) a = 1; else a = n + sum(n - 1); return a; int main( ) int n; scanf(%d, int s = sum(n); printf(%dn,s); return 0; 第7章变量存储类型与多文件系统 1写出以下程序的执行结果。 #include int x; void fun( ) printf(%d ,x+); void main( ) int x=1; exte

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

38、= kk ( ); printf( s = % d n ,s ); 提示:虽然两次调用函数 kk() ,但变量定义语句 static int y ; 只执行一次,而变量赋值语句每次 都要执行。 S = 18 3写出以下程序的执行结果。 #include int t() int x = 0 ; static int y = 4 ; y += +x ; return x+y; void main() printf(”d n,( t( ), t(); 提示:语句printf(%d n,(t(), t();中(t( ),t()属于“,”号表达式,即两次调用函数 t(), 在函数t()中,y为静态内部变

39、量,因而语句static int y = 4 ;只执行一次。 7 第8章文件 1下述程序从终端读入文本(用$作为文本结束标志)复制到一个名为的新文件中,请补全 程序。 #include int main() FILE *fp; char cx; if(fp=fopen( ,a+)=NULL) return 0; while(cx=getchar( )!=$) fputc(cx,fp); fclose(fp) ; return 1; 提示:第1个空格是打开文件读,第2个空格是关闭文件 2下面的程序用来统计文件中字符的个数,请补全程序。 #include int main() FILE *fp;

40、long num=0; if(fp=fope n(,r)=NULL) printf(Cant open file!n); exit(O); while(!feof(fp) ) fgetc(fp); num+; printf(num=%dn,num); fclose(fp); return 1; 提示:第1个空格表示文件没有结束,循环将持续。 3 .以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符,依次存放到该文 件中,用#作为结束输入的标志,请补全程序。 #include void main() FILE *fp; char ch,fname10; printf(Input the

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

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

43、FILE *fp; char ch; fp=fopen(,ab+); if (fp = NULL) printf(Open file failed!); exit(0); while (ch = getchar() != #) fputc(ch,fp); fclose(fp); 6 有一文本文件,请编写一个程序将文件中的英文字母及数字字符显示在屏幕上。 提示: #include #include void main() FILE *fp; char ch; fp=fopen(,rb); if (fp = NULL) printf(Open file failed!); exit(0); whi

44、le (!feof(fp) ch = fgetc(fp); if (ch = A fclose(fp); 7把文本文件中的数字字符复制到文本文件中。 #include #include void main() FILE *fin,*fout; char ch; fin=fopen(,rb); fout = fopen(,ab+); if (fin = NULL | fout = NULL) printf(Open file failed!); exit(0); while (!feof(fin) ch = fgetc(fin); if (ch = 0 fclose(fin); fclose(f

45、out); 0 的值显示在屏幕上。 8. x从0到360度的sin(x)值写入到文件中,并将大于 #include #include #include #define PI void main() FILE *fp; double y; fp=fopen(,ab+); if (fp = NULL) printf(Open file failed!); exit(0); for (int i = 0; i 0) fprintf(stdout,%lfn,y); fclose(fp); 第9章指针与数组 1下列程序输出的结果是(D )。 #include void f(int * x ) *x =

46、10 ; void main() int a,*p= f(p); printf(%d,+(*p); (A)输出的值是随机值(B)因输出语句错误而不能执行者 (C)输出值为10( D)输出值为11 提示:指针x指与指针p指向同一个变量,10赋给指针x所指的地址上的内容,+(*p) 是指指针 p 所指地址上内容 +。 2下列程序片段中不正确的字符串赋值或初始化方式是(C )。 ( A) char *str; str=string; ( B) char str7=s,t,r,i,n,g,0; ( C) char str10; str=string; ( D) char str =string; 提示

47、:字符串赋值只能在初始化时进行。 3. 如有定义:int x=2 , *p=以下哪些表达式的含义是不正确的。D ( A) *(其中:0v= i5 ),不能表示数组元素的是(B )。 ( A) * ( a+i )( B) a5( C) a0( D) ai 提示:数组元素的下标从 0开始。 5. 若有以下定义和语句,int a10 ,i ;且0=i10 ,则对数组元素地址的正确表示是(D )。 (A) a+(B)(a+1)(C) *(a+1)(D) *p2,j; for (j = 0 ; j 4 ; j+) pj=aj; ( A) p00 ( C) *(p1+2) 提示:p为指针数组,此题中 ai

48、j、pij 元素, float *p2,y=; p1= p2= printf(%d, %fn,+(*p1), (*p2)+ ); 提示: +都作用在内容上,前一项是先 +再输出,后一项是先输出再 + 11, 2.下列程序输出结果是()。 #include void main() int a =1 ,2,3,4,5,6 ,*p=a; printf(%d,%dn,*p,*(p+3); 提示:语句*(p+3)+=2;指p+3的地址上的内容加2,然后输出p及p+3的地址上内容。 1,4 3下列程序输出结果是()。 #include void main() int a =1,2,3,4,5,6; int

49、 x,y,*p; p= x=*(p+2); y=*(p+4); printf(*p=%d,x=%d,y= %dn,*p,x,y); 提示:p+2是指 int *p; p=a; printf(*%d,n,*p); printf(*%d,n,*(+p); printf(*%d,n,*+p); printf(*%d,n,*(p-); p+=3; printf(*%d,%d n,*p,*(a+3); 提示:*(+p)、*+p都表示指针p向大地址方向移动,然后再取内容,要注意的是后一语句的输出受 前一语句的影响。 *10 *20 *30 *30; *50,40 5下列程序输出的结果是()。 #inclu

50、de void del( char *str ) int a, b ; for(a = b = 0 ; stra!=0; a+ ) if(*(str+a) !=c ) *(str+b+)=*(str+a); strb=0; void main( ) char str =abcdef ; del(str); printf(str =%s , str ); 提示:在函数del中str+a地址上的内容不为字符c时不复制,实际上是指删除指针 str所指的字符 串中的字符 c。 str=abdef 6以下程序输出的结果是()。 #include #include void fun( char *w ,i

51、nt m) char s, *p1 , *p2; p1 = w; p2= w+m-1; while(p1p2) s = *p1+; *p1= *p2- ; *p2 = s ; void main( ) char a = ABCDEFG; fun(a ,strlen(a); puts(a); 提示:当执行s=*p1+;语句时,指针pl所指的地址上内容赋给s时,指针pl后移,语句*卩仁*p2-;指 针p2所指的内容赋给pl所指的地址上后,p2前移后再执行*p2 = s语句。 AGAAGAG 7以下程序输出的结果是 ()。 #include void main( ) int a33 = 2,0,8,

52、4,6; int i,*p = for(i = 0;i3;i+) if (i = 0) aii+1=*p+1; else +p; printf(%d,*p); printf(n); for(j=i;j n ;j+) 当i=2时,+p,指针p指向a02 238 low=0; high=n-1; while low high mid=(low+high)/2; if(keyamid) low = mid ; else return mid ; return(-1); 提示:用low、high、mid分别表示数组a低地址端、高地址端、中间元素的下标,只要低地址端下标 小于高地址端下标循环一直持续,如果中间元素大于所查找的数,表示所查找的数在以low、high为边界的 左侧,如果中间元素小于所查找的数,表示所查找的数在以low、high为边界的右侧,如都不是表示已找到。 9下述函数从一个数组v中删除值为key的元素。数组的元素个数由指针 n指明,请填空。 void delnode(double v,int *n) int i,j,k=-1; for(i= *n

温馨提示

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

评论

0/150

提交评论