C语言复习题整理_第1页
C语言复习题整理_第2页
C语言复习题整理_第3页
C语言复习题整理_第4页
C语言复习题整理_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、第 2部 分C语言程序设计习题与解答题解 1 绪 论习题一、选择题1一个完整的可运行的C 源程序中( B)。A.可以有一个或多个主函数C.可以没有主函数2构成C 语言源程序的基本单位是( D )。A.子程序B.过程B.必须有且仅有一个主函数D.必须有主函数和其他函数C.文本D.函数3某C 程序由一个主函数main( ) 和一个自定义函数max( ) 组成,则该程序(D )。A*总是从max()函数开始执行C.写在后面的函数先开始执行B.写在前面的函数先开始执行D*总是从 main()函数开始执行4 C 语言规定,一个C 源程序的主函数名必须为( C)。D functionA programB

2、includeC main5下列说法正确的是(C )。A.在书写C语言源程序时,每个语句以逗号结束B.注释时,/和*号间可以有空格C.无论注释内容的多少,在对程序编译时都被忽略D C 程序每行只能写一个语句6. C语言源程序文件的后缀是(C ),经过 Compile 后,生成文件的后缀是(A ),经过 Build 后,生成文件的后缀是( B )。A .objB .exeC .cD .doc7 Visual C+ IDE 的编辑窗口的主要功能是(A ),输出窗主要功是,输出窗口的主要功能是(D ),调试器,调试器(Debug)的主要功能是(。A.建立并修改程序C.跟踪分析程序的执行B.将C源程序

3、编译成目标程序D.显示编译结果信息(如语法错误等)8在Visual C+ 开发环境下,C 程序按工程( project )进行组织,每个工程可包括(D)C/CPP源文件,但只能有( A ) main函数。A1 个C3 个B 2 个D 1 个以上(含 1 个)在调试时没有提示出错,而且成功执行并计算出了结果,只是结果等于9调试程序时,如果某个语句后少了一个分号,调试时会提示错误,这种情况一般称之为(A )。而某个“计算2 的平方”的程序5 ,这种情况一般称之为( D )。A.语法错误B.正常情况C.编译器出错D.逻辑设计错误二、简答题.如何使用注释语句使用注释有何好处. C程序对书写格式有何要求

4、规定书写格式有何好处符号名包括模块名、常量名、标号名、子程序名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解.简述C程序上机调试的一般步骤 编辑,编译,连接,运行.简述C程序从.c源文彳到.exe可执行文件的生成过程习题一、选择题. C语言中最基本的非空数据类型包括( DA.整型、浮点型、无值型C.整型、浮点型、字符型. C语言中运算对象必须是整型的运算符是(A. %B, /.若已定义x和y为int类型,则执行了语句A. 1B, 2.若有以下程序段:题解2基本数据类型与运算符)。B,整型、字符型、无值型D.整型、浮点型、双精度型、字符型A )

5、。C.x=1 ; y=x+3/2 ;后 y 的值是(B )。C.D.D.int a=1,b=2,c;c=b*a;则执行后,c中的值是(0.能正确表示逻辑关系:A. a=10 or a=10 & a=0|a=10 II a=0)。C. _ok)。C. nD. zwdD. 2D. .设先有定义:int a=10;则表达式a+=a *=a的值为( DA. 10B.100C. 1000D.200.设先有定义: int a=10;则表达式(+a)+(a -)的值为(202122D. 19.有如下程序: #include main()int y=3,x=3,z=1;printf(%d%dn”,(+x,y+

6、),z+2);运行该程序的输出结果是(A.443311.假定 x、V、z、mi匀为int型变量,有如下程序段:x=2; y=3; z=1;m=(Vx)V: x;m=(zz)&(v=z)&x|y+z&v+z(x+V)z)&(V=z)&x|(V+z)&(y+z)=1&0&3|9&9=0|1=1.如果a=1,b=2,c=3,d=4 ,则条件表达式aba:(cdc:d 的值为A.B. 2C.D.A.15.设 int m=1,n=2;则m+=n的结果是( AB. 1C.D.二、填空题.表达式10/3的结果是10%3的结果是.执行t句:int a=12;a+=a-=a*a; 后的值是-2643.以下语句的

7、输出结果是-1short b=65535;printf(%d,b);4.以下程序的执行结果是X=3, a=2, b=2#include main()int a,b,x;x=(a=3,b=a-);printf(x=%d,a=%d,b=%dn,x,a,b);.以下程序的执行结果是0#includemain()float f1,f2,f3,f4;int m1,m2;f1=f2=f3=f4=2;m1=m2=1;printf(%dn,(m1=f1=f2)&(m2=f3f4);.以下程序的执行结果是n=1#include main() float f=;int n;n=(int)f%3;printf(n=

8、%dn,n);三、简答题2.简述转义字符的用途并举实例加以说明题解3控制结构习题一、选择题1.结构化程序模块不具有的特征是(B )。A.只有一个入口和一个出口B.要尽量多使用 goto语句C. 一般有顺序、选择和循环3种基本结构D.程序中不能有死循环. C语言中,逻辑真等价于( C )。A.整数1B.整数0.以下4条语句中,有语法错误的是( D )。A. if (ab) m=a;C.非0数B. if(a=0) m=a;4若i , j 均为整型变量,则以下循环* ( C )。D if (a=b;)=0) m=a;for (i=0,j=2; j=1; i+,j-)printf(%5d, %dn,

9、i, j);A.循环体只执行一次C.是无限循环5以下程序段,执行结果为(A )。B.循环体执行二次D.循环条件不合法a=1;doa=a*a; while(!a);A*循环体只执行一次C.是无限循环6* C 语言中 while 与 do-while 语句的主要区别是( AB.循环体执行二次D.循环条件不合法)。A* do-while 的循环体至少无条件执行一次B* do-while 允许从外部跳到循环体内C * while 的循环体至少无条件执行一次D * while 的循环控制条件比do-while的严格7*语句while (!a); 中条件等价于( D )。A* a!=0B* aC * a=

10、18*以下程序的运行结果为(D )。#include main( )int i=1,sum=0;while(i=100)sum+=i;i+;printf(1+2+3+.+99+100=%d, sum); A* 5050B* 1C* 09*以下程序的运行结果为(A )。D* a=0D.程序陷入死循环#include main( )int sum,pad;sum=pad=5;pad=sum+;pad+;+pad;printf(%dn, pad);C. 5D.A. 7B, 610.以下程序的运彳r结果为( d )。#include main()int a=2,b=10;printf(a=%d,b=%

11、dn”, a,b);A. a=%2,b=%10B, a=2,b=10a=%d,b=%dD. a=%d,b=%d.为了避免嵌套的if-else语句的二义性,C语言规定else总是( C )A.与缩排位置相同的if组成配对关系B.与在其之前未配对的if组成配对关系C.与在其之前未配对的最近的if组成配对关系d.与同一彳r上的if组成配对关系.对于for (表达式1;表达式3)可理解为( B )for (表达式 1; 0 ;表达式3)for (表达式 1; 1 ;表达式3)C. for (表达式1;表达式1;表达式3)for (表达式1;表达式3;表达式3)程序填空.下面程序的功能是计算n!#inc

12、lude main ()int i, n;long p;printf ( Please input a number:n);scanf (%d, &n);p=1;for (i=2; i=n; i+)p*=i 或 p=p*iprintf(n!=%ld, p);.下面程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高和最低成绩,当输入负数时结束输入。#include main () float score, max, min; printf ( Please input one score:n); scanf (%f, &score); max=min=score; while (score

13、=0) if (scoremax)max=score;if (scoremin) min=score;printf ( Please input another score:n); scanf (%f, &score); printf(nThe max score is %fnThe min score is %f, max, min); 3.下面程序的功能是:计算y二的值。要求从键盘上输入x的值,精度控制在内。#include #include main () float x , y=0, fz=-1, fm=-1, temp=1; printf ( Please input the val

14、ue of x:n); scanf (%f, &x); while ( abs(temp) fz=【6】-fz*x;语句对其运算进行判定后执行相应fm=fm+2; temp=fz/fm; y+=temp; printf(ny= %f, y); 4.下面的程序完成两个数的四则运算。用户输入一个实现两个数的四则运算的表达式,程序采用switch的运算并给出结果。#include main() float x,y; char op;printf(Please input Expression:);scanf(%f%c%f,&x,&op,&y);【7】switch (op)printf(%g%c%g=

15、%gn,【8】);9 break;case +:caseprintf(%g%c%g=%gn,x,op,y,x-y);break;printf(%g%c%g=%gn,x,op,y,x*y);break;if (【10(y=-1e-6)&(y=1e-6)printf(Division Error!n);elseprintf(%g%c%g=%gn,x,op,y,x/y);break;default:printf(Expression Error!n);casecase /:习题一、选择题D. 3. C语言中函数形参的缺省存储类型是(A.静态(static )C.寄存器(register ).函数调用

16、语句function(exp1,exp2), 18)A. 0B. 1.下面函数返回值的类型是( D )。square(float x)B )。B.自动(auto )D.外部(extern )中含有的实参个数为( C )。C. 2return x*x;B,是void型D,是int型A.与参数x的类型相同C.无法确定4. C语言规定,程序中各函数之间( D )A.不允许直接递归调用,也不允许间接递归调用B,允许直接递归调用,但不允许间接递归调用C.不允许直接递归调用,但允许间接递归调用D.既允许直接递归调用,也允许间接递归调用. 一个函数返回值的类型取决于( C )。A. return语句中表达式

17、的类型B.调用函数时临时指定C.定义函数时指定或缺省的函数类型D.调用该函数的主调函数的类型.下面叙述中,错误的是(C )。A.函数的定义不能嵌套,但函数调用可以嵌套B,为了提高可读性,编写程序时应该适当使用注释C.变量定义时若省去了存储类型,系统将默认其为静态型变量D.函数中定义的局部变量的作用域在函数内部.在一个源程序文件中定义的全局变量的有效范围为(A. 一个C程序的所有源程序文件C.从定义处开始到该源程序文件结束.某函数在定义时未指明函数返回值类型,且函数中没有A.没有返回值C.返回一个系统默认值.函数swap(int x, int y)可实现对C )。B.该源程序文件的全部范围D.函

18、数内全部范围return语句,现若调用该函数,则正确的说法是(D )B.返回一个用户所希望的值D,返回一个不确定的值a和b的值分别为( B )。x和y值的交换。在执行如下定义及调用语句后,int a=10, b=20;swap (a,b );A. 10 和 10B, 10 和 2010.下面错误的叙述是( D )。A.在某源程序不同函数中可以使用相同名字的变量B.函数中的形式参数是局部变量C.在函数内定义的变量只在本函数范围内有效D.在函数内的复合语句中定义的变量在本函数范围内有效二、程序填空1,求 s=1! +2! +3! +10!之和。程序如下:C. 20 和 10D. 20 和 20#i

19、nclude long int factorial(int n)int k=1;long int p=1;for(k=1; k=n; k+)【1】p=p*k;return p;main()int n;float sum=0;for(n=1;n=10;n+)2 sum=sum+factorial(n);printf(%n,sum);2.以下函数用以求x的y次方。double fun (double x, int y)int i;double m=1;i+ )for ( i=1; i3】=y 或 y+1m=4】m*xreturn m;三、阅读程序并写出运行结果.下面程序运行的结果是 2, 4,6,

20、8#include #define MAX_COUNT 4 void fun( );main() int n;for(n=1; n=MAX_COUNT; n+) fun(); void fun( )static int k;k=k+2;printf (%d, k);4.下面程序运彳T的结果是 _8, 17#include int fun(int x, int y)static int m=0, n=2;n+=m+1;m=n+x+y;return m;main()int j=4, m=1, k;k=fun(j, m);printf (%d, k);k=fun(j,m);printf(%dn, k

21、);题解 5习题一、选择题1 、,在下列数组定义、初始化或赋值语句中,正确的是()。2:34:56A int a8; a8=100;C int x =1,2,3,4,5,6;inti, a100;则下列语句中不正确的是(ABCDfor ( i=0; i100; i+ )for ( i=0; i100; i+ )scanf (%d, &a);for ( i=0; i100; i+ )char c =GOOD;不等价的是(A char c = G, O, O, D, 0;C char c4=GOOD;char c8=GOOD;A puts (c);C printf (%s, c);a 3=0,1,

22、2,3,4,5,6,7;A 2以下程序的运行结果是(ai=i;scanf ( %d, &ai );scanf ( %d, a+i );)。BB int x5=1,2,3,4,5,6;Dint n=8; int scoren;)。char c =GOOD;D char c5= G, O, O, D, 0;则下列语句中不正确 的是( D,则 a 数组中行的大小是()。B for ( i =0; ci!=D for ( i =0; ci!= 0; i + ))。B)。0;i + )printf (%c, ci);putchar ( c );C 4D.无确定值#include void f ( int

23、 b )int i=0;while(bi=10)bi+=2;i+;main( )int i, a = 1, 5,10, 9,13, 7;f (a+1);for(i=0; i6; i+)printf(%4d , ai);B 171211137A 271211139C. 1712111397.若执行以下程序段,其运行结果是(D )D. 1712913char c =a, b, 0, c, 0;printf ( %sn, c );A. ab cB. abC. abcD. ab8数组名作为参数传递给函数,作为实际参数的数组名被处理为(D )。A *该数组长度B-该数组元素个数C*该函数中各元素的值D*

24、该数组的首地址9.执行下面的程序段后,变量 k中的值为( D )。int k=3, s2=1;s0=k;k=s1*10;A, 不定值B. 33C. 3010.在定义D. 0int a54;之后;对a的引用正确的是(C )。A.a24B. a50C. a00D. a0,011.当接受用户输入的含空格的字符串时,应使用函数(B)。A.scanf()B. gets()C. getchar()D. getc()二、程序填空1.以下程序用来检查二维数组是否对称(即对所有 i , j都有aij=aji)#include main ()int a44=1,2,3,4, 2,2,5,6, 3,5,3,7, 8

25、,6,7,4;int i, j, found=0;for ( j=0; j4; j+ )for (i=0; i4; i+ )if (1 1aij!=aji )found=【2】1;break;if (found)break;if (found)printf ( 不对称 n);elseprintf(对称 n);5个数。2.以下程序是用来输入 5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把两者对调,然后输出调整后的#include main ()int a5, t, i, maxi, mini;for ( i=0; i5; i+ )scanf ( %d”, &ai);mini=m

26、axi=【3】0;for ( i=1; iai) mini=i;if ( aiamaxi)5】 maxi=iprintf (最小数的位置是 :3dn, mini );printf (最大数的位置是:3dn, maxi );t=amaxi;【6】amaxi=amini;amini=t;printf ( 调整后的数为:);for ( i=0; i5; i+ )printf ( %d , ai);printf (n);3,给定一 3 x 4的矩阵,求出其中的最大元素值,及其所在的行列号:main()int i,j,row=0,colum=0,max;static int a34=123,4,9,8,

27、7,6,10,-10,-4,4;【7】max=a00;for(i=0;i=2;i+)for(j=0;jmax)【9】max=aij; row=i;colum=j;printf(max=%d,row=%d,colum=%d,max,row,colum);4.下述函数用于确定给定字符串的长度,请完成程序。strlen ( chars)int i=0;while (【10 si!= 0return (【11i);5.以下程序的功能是从键盘上输入若干个字符(以回车键作为结束)组成一个字符数组,然后输出该字符数组中的字符串,请填空#include main () char str81; int i;fo

28、r ( i=0; i80; i+ ) stri=getchar( ); if (stri= n)break; stri= 0; 【12】i=0;while ( stri!= 0 )putchar(13 stri+);三、阅读程序并写出运行结果.写出下列程序的运行结果并分析。#include main() static int a45=12340,220,0,0,3,4,5,0,0,6,0,0,0,0; int j,k;for (j=0;j4;j+) for(k=0;k5;k+) if (ajk=0) break; printf( %d,ajk); printf(n);.写出下列程序的运行结果并

29、分析。#include main ( )int a66,i,j;for (i=1 ;i6 ; i+)for ( j=1;j6;j+)aij= i*j;for (i=1 ;i6 ; i+)for ( j=1;j6;j+)printf( %-4d ,aij ) ;printf(n);3写出下列程序的运行结果并分析。#include main ( )int a =1,2,3,4,i,j,s=0;j=1;for ( i=3;i=0;i- )s=s+ai*j;j=j*10;printf(s=%dn,s);4写出下列程序的运行结果并分析。#include main( )int a=0,2,5,8,12,1

30、5,23,35,60,65;int x=15,i,n=10,m;i=n/2+1;m=n/2;while(m!=0)if(xai)i=i+m/2+1;m=m/2;elsebreak;printf(place=%d,i+1);5写出下列程序的运行结果并分析。#include main( )int a=1,2,3,4,i,j,s=0;j=1;for(i=3;i=0;i-)s=s+ai*j;j=j*10;printf(s=%dn,s);6写出下列程序的运行结果并分析。#include main( )char str=1a2b3c;int i;for(i=0;stri!=0;i+)if(stri=0&s

31、tri=9)printf(%c,stri);printf(n);四、编程题1编一程序,用简单选择排序方法对10 个整数排序(从大到小)。排序思路为:首先从n 个整数中选出值最大的整数,将它交换到第一个元素位置,再从剩余的n-1 个整数中选出值次大的整数,将它交换到第二个元素位置,重复上述操作n 次后,排序结束。2编写一程序,实现两个字符串的连接(不用strcat( ) 函数)。习题解答3:三、阅读程序并写出运行结果4:答案是:place=65:答案是:s=12346:答案是:123四、编程题1编一程序,用简单选择排序方法对10 个整数排序(从大到小)。排序思路为:首先从n 个整数中选出值最大的

32、整数,将它交换到第一个答案是:1234答案是:2345468106912158121620101520251:2:12345答案是:s=022n 次后,排序结束。元素位置,再从剩余的n-1 个整数中选出值次大的整数,将它交换到第二个元素位置,重复上述操作/*/#include#define N 10void smp_selesort(int r ,int n)/*简单选择排序*/ int i,j,k;int temp;for(i=0;in;i+)for(j=i+1;jn;j+)if(rirj)temp =ri;ri=rj;rj= temp;main( )int i,aN;printf(请输入d

33、个整数:n,N);for(i=0;iN;i+)scanf(%d,&ai);smp_selesort(a,N);/* 调用排序函数 */printf( 排序后的输出为: n);for(i=0;iN;i+)printf(%5d,ai);2编写一程序,实现两个字符串的连接(不用strcat( ) 函数)。/*/#includemain( )char str150,str250;int i=0,j=0;printf(请输入字符串1: );scanf(%s,str1);printf(请输入字符串2: );scanf(%s,str2);while(str1i!=0) i+;while(str1i+=str

34、2j+)!=0);printf( 连接后的字符串为: %s,str1);题解 6 指 针习题一、选择题1若已定义int a=8, *p=&a; ,则下列说法中不正确的是(D )。A. *p = a=8B* p=&aC* *&a=*pD *&a=&*a2若已定义short a2=8,10,*p=&a0; ,假设 a0 的地址为2000,则执行p+后,指针p 的值为( C )。A 2000B 2001C 2002D 20033若已定义int a8=0,2,3,4,5,6,7,8 ;*p=a; ,则数组第2 个元素“2 ” 不可表示为(C)。A a1B p1C *p+1D *(p+1)4若已定义in

35、t a,*p=&a,*q=&p; ,则不能表示变量 a 的是(C )。A *&aB *pC *qD *q5设已定义语句int*p10, (*q)10; ,其中的p 和 q分别是( D)。10 个指向整型变量的指针 指向具有10 个整型变量的函数指针 一个指向具有10 个元素的一维数组的指针 具有 10 个指针元素的一维数组A.、B.、C、D.、)。6若已定义int a24= 80, 81, 82, 83 , 84, 85, 86, 87 , (*p)4=a;则执行 p+; 后, *p 代表的元素是( CA 80B 81C 84D 857执行语句char a10=abcd; *p=a ;后,(p

36、+4) 的值是(B)。A abcdB 0C dD.不能确定8设已定义int a32=10,20,30,40,50,60;和语句 (*p)2=a; ,则 *(*(p+2)+1) 的值为( A)。9以下程序的运行结果是(A 60B 30C 50D不能确定C )。#include main(int a43= 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12;int *p4, i;for(i=0; i4; i+)pi=ai;printf(%2d,%2d,%2d,%2dn, *p1, (*p)1, p32, *(p3+1);A4, 4, 9, 8B.程序出错C 4, 2,12,11D

37、1, 1, 7, 510以下各语句或语句组中,正确的操作是()。Achar s4=abcde;Bchar *s; gets(s);Cchar *s; s=abcde;D char s5; scanf(%s, &s);)。11以下程序的运行结果是(#include main (char *s=xcbc3abcd;int a, b, c, d;a=b=c=d=0;for ( ; *s ; s+ )switch ( *s )casec:c+;caseb:b+;default :d+;casea:a+;break;printf(a=%d,b=%d,c=%d,d=%dn, a, b, c, d);ACa

38、=a的个数、 b=b,c 的个数、 c=c 的个数、a=1,b=5,c=3,d=8a=9,b=5,c=3,d=812若有以下程序:#include main ( int argc, char *argv )d=非a的个数)B a=1,b=2,c=3,d=3D a=0,b=2,c=3,d=3while ( -argc )printf ( %s, argvargc);printf ( n);该程序经编译和连接后生成可执行文件。现在如果在A. AABBCCB. AABBCCSDOSS示符下键入 S AA BBCC后回车,则输出结果是( C )C. CCBBAAD. CCBBAAS13.若有定义 ch

39、ar *language =FORTRAN, BASIC, PASCAL, JAVA, C;则language2的值是:一个字符一个地址一个字符串D.不定值14.若有以下定义和语句,则对a数组元素地址的正确引用是( C )int a23, (*p)3;P=a;A.*(p+2)B.p2C.p1+1D. (p+1)+215.若有 int max( ), (*p)();,为使函数指针变量p指向函数 max,正确的赋值语句是(A )。A.p=max;B. *p=max;C. p=max(a, b);D. *p=max(a, b);16.若有定义int a35, i, j;(且 0V i3, 0 :j5

40、),则 aij不正确的地址表示是( D )。A.&aijB. ai+jC. *(a+i)+jD. *(*(a+i)+j)17.设先有定义:char s10;char *p=s;则下面不正确的表达式是( B )A. p=s+5B* s=p+s18.设先有定义:char *s;则下面正确的表达式是(B )。A. s=computerC. *s=computer二、程序填空1,定义 compare ( char *s1, char *s2 )C.s2=p4D. *p=s0B. *s=computerD. *s=c函数,实现比较两个字符串大小的功能。以下程序运行结果为-32 ,请用正确答案填空。#in

41、clude main ()printf ( %dn, compare ( abCd, abc);compare ( char *s1, char *s2 )while ( *s1&*s2&【1】*s1=*s2)s1+; s2+; return *s1-*s2; .以下程序用来输出字符串。#include main () char *a尸for, switch, if, while;char *p;for ( p=a; pa+4; p+ ) printf ( %sn,2】*p);.以下程序的功能是从键盘上输入若干个字符(以回车键作为结束)组成一个字符数组,然后输出该字符数组中的字符串,请填空#i

42、nclude main () char str81,*p; int i;for (i=0;i80;i+) stri=getchar( ); if (stri=n ) break; stri= 0;【3】p=str;while(*p) putchar(*p【4+);.下面是一个实现把t指向的字符串复制到s的函数,请完成程序。strcpy ( char*s, char *t )while ( (【5】*s+ = *t+ ) !=0);.下面count函数的功能是统计子串substr在母串str中出现的次数。count(char *str, char *substr) int i,j,k,num=0

43、;for (i=0;【6stri!=0; i+)for (【7】j=i, k=0 ; substrk=strj; k+, j+)if (substr【8】k+1=0)num+;break; return(num);.下面connect函数的功能是将两个字符串s和t连接起来。connect (char *s, char *t)char *p=s;while (*s)9 s+;while (*t)*s=10*t;s+;t+;*s=0;【11】return (p);三、阅读程序并写出运行结果.运行如下程序并分析其结果。#include main ()void fun ( char *s );stat

44、ic char str =123;fun ( str );void fun ( char *s )if ( *s )fun ( +s );printf ( %sn,-s );2运行如下程序并分析其结果。#include void sub ( int *x, int y, int z )*x = y - z;main ( )int a, b, c;sub ( &a, 10, 5 );sub ( &b, a, 7 );sub ( &c, a, b );printf ( %d,%d,%dn, a, b, c );3下列程序的功能是保留给定字符串中小于字母n 的字母。请写出其结果并分析。#includ

45、e void abc ( char *p )int i, j;for ( i=j=0; *(p+i)!=0; i+ )if ( *(p+i)n )*(p+j)=(p+i);j+;*(p+j)=0;main( )char str =morning;abc ( str );puts ( str );4运行如下程序并分析其结果。#include main ( )char *a4=Tokyo,Osaka ,Sapporo ,Nagoya ;char *pt;pt=a;printf(%s,*(a+2);5*设如下程序的文件名为,编译并连接后在DOS提示下键入命令:myprogram one two th

46、ree ,则执行结果是什么。#include main (int argc, char *argv )int i;for (i=1; iargc; i+)printf (%s%c, argvi, (iargc-1) : n);四、编程题1编一程序,求出从键盘输入的字符串的长度。3输入一个字符串,按相反次序输出其中的所有字符。5编写一个密码检测程序,程序执行时,要求用户输入密码(标准密码预先设定),然后通过字符串比较函数比较输入密码和标准密码是否相等。若相等,则显示“口令正确”并转去执行后继程序;若不相等,重新输入, 3 次都不相等则终止程序的执行。习题解答三、阅读程序并写出运行结果1运行结果是

47、:3231232运行结果是:5, -2,73答案是:mig4答案是:Sapporo5答案是:one two three四、编程题1编一程序,求出从键盘输入的字符串的长度。/*/#include#include main( ) char str50,*p;int length=0;printf( 请输入一个字符串 n);gets(str);p=str;while(*p!=0) p+; length+; printf( 输入的字符串的长度为 %dn,length);3输入一个字符串,按相反次序输出其中的所有字符。/*/#include#include main ( ) char str81,*p;

48、int i;for ( i=0;i=0 ) putchar(*(p+i) );5编写一个密码检测程序,程序执行时,要求用户输入密码(标准密码预先设定),然后通过字符串比较函数比较输入密码和标准密码是否相等。若相等,则显示“口令正确”并转去执行后继程序;若不相等,重新输入, 3 次都不相等则终止程序的执行。/*/#include #include #include /* 字符串比较函数 */int strcompare(char *str1,char *str2)while(*str1=*str2 & *str1!=0 & *str2!=0)str1+;str2+;return *str1-*s

49、tr2;main( )char password20=c program;char input_pass20;int i=0;while(1)printf( 请输入密码 n);gets(input_pass);if(strcompare(input_pass,password)!=0)printf( 口令错误,按任意键继续);elseprintf( 口令正确! );break;/* 输入正确的密码,中止循环 */getch( );i+;if(i=3) exit(0);/* 输入正确密码所进入的程序段*/* 定义字符数组input_pass*/* 输入密码 */题解 7 结构与共用/* 检验密码 */* 输入 3 次错误的密码,退出程序 */习题一、选择题1下面正确的叙述的是( D )。A.结构一经定义,系统就给它分配了所需的内存单元B.结构体变量和共用体变量所占内存长度是各成员所占内存长度之

温馨提示

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

最新文档

评论

0/150

提交评论