C语言程序设计(1-6章)_第1页
C语言程序设计(1-6章)_第2页
C语言程序设计(1-6章)_第3页
C语言程序设计(1-6章)_第4页
C语言程序设计(1-6章)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计(1-6章)C语言程序设计第1章概论1.1C语言有哪些主要特点?其主要用途是什么?1.2程序设计语言的主要构成要素有哪些?1.3程序设计语言的实现都有哪些方法?1.4程序设计语言按照实现方法可分为哪几种类型?1.5为什么要学习程序设计语言?1.6将C语言和你所掌握的高级语言做一比较。1.7C程序的主要构成单位是什么?1.8C语言的保留字和特定字有何区别?1.9下面哪些是合法的C语言一般标识符?std-sex,Std-num,2.13,_2.13,name,int,Int,var-num,yes_or_no,select,File_name,_DATA,define,a+c,new,ok?1.10C程序从编辑到执行要经过哪些步骤?1.11C函数主要由哪几部分构成?复合语句在C语言中是用什么标界的?又称为什么?1.12填空。1.一个C程序是由若干个函数构成的,其中必须有一个函数。2.一个C语句最少应包含一个。1.13单项选择。1.C语言程序的基本单位是()。(1)子程序(2)程序(3)过程(4)函数2.合法的C语言标识符是()。(1)_a1(2)a+b(3)3abc(4)AB,CD答案:C语言主要用于编写系统软件,其主要特点如下:语言简洁,紧凑,使用灵活运算符丰富具有数据类型构造和流控结构能力语言生成的代码质量高可移植性好语言语法限制不严格,程序设计自由度大1.2程序设计语言的主要构成要素有:数据。运算(操作)控制结构存储答理固运算环境。1.3程序设计语言的实现方法主要有:1.翻译或编译。2.软件模拟(软件解释)。1.4程序设计语言的按照实现方法有编译型和解释型两种。1.5略1.6略1.7C程序的主要构成单位是函数。C语言程序设计(1-6章)全文共32页,当前为第1页。1.8C程序的保留字和特定字的区别是,保留字不能用来表示用户自定义的对象,而特定字却不受此限(尽管不提倡这样做)。C语言程序设计(1-6章)全文共32页,当前为第1页。1.9合法的一般标识符如下:name,int,yes_or_no,select,File_name,_DATA,new1.10要经过编辑程序一C预处理程序一C编译程序一汇编程序一连接程序一执行。1.11函数主要由返回值类型,函数名及参数列表构成。复合语句是用{}来标界的,又称为作用域。1.121.main2.;1.131.(4)2.(1)第2章C语言的基本数据类型和变量的存储类2.1填空1.‘a’占_______字节。2.“a”占_______字节。3.字符串“ab\072cdef”的长度_______。4.字符串“\”33abcdef”的长度_______。5.字符串“abc\0defgh”的长度_______。6.字符串“\\033abceL”的长度_______。7.字符串“\\\n33abcd”的长度_______。8.字符串“\033abcdef”的长度_______。9.格式字符%d表示输出_________型数据。10.格式字符%f表示输出_________型数据。2.2何为常量?何为变量?变量的命名规则是什么?2.3指出下列变量定义的错误所在。1.charactera1,a2,a3;2.chara1,inti;3.a1,a2,a3:char;4.integeri1,i2,i3;5.realr1,r2;6.doubleinta1,a2;7.doublefloatf1,f2;8.floatif;2.4指出下列符号,数字串所属的数据类型:0,0.0,012,102,0x123,0XABC,2E-6,6.02e23,‘a’,-128,+1,35C语言中的八进制和十六进制常数为什么不以字母‘O’和‘H’为前缀而要以‘O’和‘Ox’为前缀呢2.6既然变量名不管是什么,在编译之后都变成了地址,那么为什么要限制其不能为保留字呢?2.7用作变量名的标识符的长度是由操作系统决定的还是由C编译程序决定的?2.8任何类型的数据在计算机内部都是采用什么形式存储的?为什么要说明变量的类型?2.9C语言为什么要规定“先定义,后使用”,这样有什么好处。2.10将下面的十进制常数分别表示为C语言中的八进制和十六进制常数:C语言程序设计(1-6章)全文共32页,当前为第2页。32,75,-617,10,-128,1024,-1234,256C语言程序设计(1-6章)全文共32页,当前为第2页。2.11字符常量以字符串常量有什么区别?如何区分普通整型常量和长整型常量?C中实型常量有无float和double之分?2.12填空1.在________定义的变量的作用域局部于该函数。2.某函数内定义的变量的作用域是____________3.一个函数内部定义的变量是___________.4.C语言中的存储类别包含________,_________,____________和_____________.2.13单项选择一个文件中定义的全局变量的作用域为()(1)本程序的全部范围(2)本文件的全部范围(3)函数内全部范围(4)从定义该变量的位置开始开始到本文件结束2.14变量都具有哪些属性?如何确定一个变量的属性?2.15变量的存储类有哪几种?试指出各种变量的作用域。2.16采用静态存储分配的变量有哪些?采用动态存储分配的变量有哪些?2.17变量的“定义”和“说明”是否是同一种概念?如不同,试指出他们之间的区别?2.18判断下列说法是否正确:1.一个函数中定义的变量对其他函数都是可见的。2.一个函数中定义的变量对其他函数都是不可见的。3.一个函数中说明的变量对其他函数都是可见的。4.一个函数中说明的变量对其他函数都是不可见的。5.main函数中定义的auto变量对其他函数来说都是可见的。6.main函数中定义的auto变量对其他函数来说都是不可见的。7.main函数中定义的static变量对其他函数来说都是可见的。8.main函数中定义的static变量对其他函数来说都是不可见的。9.在一个函数中可以通过保留字extern来定义外部变量。10.同一个函数中的变量不能重名。2.19在程序中用一条赋值语句对变量赋初值和在定义该变量时对其初始化有何不同?答案:2.11.12.23.84.105.106.107.98.89.十进制整10.十进制实2.2略,2.3将有错误的纠正如下:1.charal,a2,a3;2.charal;int1;3.chara1,a2,a3;4.intil,i2,i3;5.floatrl,r2;6.doubleal,a2;或intal,a2;7.doublefl,f2;或floatf1,f2;8.if为保留字,不能用作变量名.2.4略。2.5避免和变量名发生混淆。C语言程序设计(1-6章)全文共32页,当前为第3页。2.6便于C编译程序在对源程序编译时正确地区分保留字和变量。C语言程序设计(1-6章)全文共32页,当前为第3页。2.7由C编译程序决定。2.8采用二进制形式存储,说明变量的类型是为了对变量进行存储分配和合法的操作。2.9便于C编译程序在对源程序的编译时进行语法检查。2.10(32)10=(40)8=(20)16(75)10=(113)8=(4b)16(-617)10=(37777776627)8=(fffffd97)16(10)10=(12)8=(a)16(-128)10=(37777777600)8=(ffffff80)16(1024)10=(2000)8=(400)l6(-1234)10=(37777775456)8=(fffffb2e)16(256)10=(400)8=(100)16提示:用户可以在MSVC+t-6.0的环境下使用printf(”%o\n”,X);printf(”%x\n”,X);实际验证一下,同学们可能觉得,负数的结果有些不可思议,原因就在于负数在计算机中使用补码存储的。2.11字符串常量没有特定的词来定义,需要用数组来定义,字符常量用“char”来定义。字符串常量用“双引号”,而且字符串使用‘\0'作为结束符。字符常量用“单引号”。字符串是由字符常量组成的。在MSVC++6.0环境下,普通整型和长整型的长度是一样的。2.12.1.函数内2.定义该变量的语句所在的“块”3.局部变量4.Auto,register.,static和extern2.13(1)2.14略2.15略2.16采用静态存储分配的变量有static和extem变量,采用动态存储分配的变量有auto和register变量。2.17变量的“定义”和“说明”是有区别的,变量只能被“定义”一次,但却能被“说明”多次。变量的“定义”决定了变量真正的类型和存储分配。2.181.错2.对3.对4.错5.错6.对7.错8.对9.错10.错2.19变量的“初始化”总是在对变量存储分配后紧跟着进行的。如果变量采用“静态存储分配”,则其“初始化”是在编译时完成;如果变量采用“动态存储分配”,则其“初始化”是在运行时完成。而用赋值语句对变量“赋值”则总是在运行时完成。第3章运算和表达式3.1写出下列表达式运算之后a的值(设开始时a=5)1.a+=a2.a=(a--)+33.a++4.a%=a5.a=a+=2*36.a+=a-=a*=a=63.2写出下面程序的执行结果Main(){intm,n,k;k=0;n=k+1;m=k*=2;printf(“m=%d,n=%d,k%=d\n”,m,n,k);C语言程序设计(1-6章)全文共32页,当前为第4页。}C语言程序设计(1-6章)全文共32页,当前为第4页。3.3求下列表达的值(设a=5,b=3;floatx=2.5,y=3.7)1.(x*a++)-y)/2.0+a%b2.(x+y)/2-a%23.(int)(x+y)*(a+b)/3+‘a’-‘d’4.(a+b)-(int)(x+y)+515.++a*b--/x-y6.++a,b*=2,x+y,x-y,x+y+a+b3.4C语言在有了+,-,*,/,=运算符之后,为什么还要提供++,--,+=,-=,*=和/=运算符?3.5单项选择1.表达式求值()x+a%3*(int)(x+y)%2/4其中x=2.5,a=7,y=4.7(1)2.5(2)2.75(3)3(4)3.52.表达式求值()a/b?a+b:b-a其中a=2,b=4(1)0.5(2)6(3)2(4)03.表达式求值()(a+b)/2+(int)x%(int)y其中a=2,b=3,x=3.5,y=2.5(1)3(2)3.5(3)4.25(4)2.54.表达式求值()2+(x++>y?3.0:5.0)/2其中x=3,y=3(1)3.5(2)3(3)4(4)4.55.表达式求值()1/2*x+20%3*(x=y)/16其中x=3.0,y=4(1)0.5(2)2.0(3)0.0(4)1.56.表达式求值()a++-c+b++其中a=3,b=-4,c=5(1)-3(2)-4(3)-5(4)-67.表达式求值()++a-c+b++其中a=3,b=-4,c=5(1)-3(2)-4(3)-5(4)-68.表达式求值()a+b,b*5,a=b+4其中a=3,b=-4(1)-1(2)-20(3)0(4)-43.6给出例3.7和例3.8的执行结果,并对结果进行合理的解释答案:3.11.102.73.64.05.116.03.2m=0;n=1;k=03.31.12.652.2.13.134.535.3.56.18.23.4简化程序书写,提高代码生成质量3.51.(1)2.(3)3.(1)4.(4)5.(1)6.(4)7.(2)8.(3)3.6例3.7x=66,i=4,j=5例3.8x=116,i=4,j=5第4章语句及控制结构4.1填空C语言程序设计(1-6章)全文共32页,当前为第5页。1.程序的三种控制结构是___________,____________和_________C语言程序设计(1-6章)全文共32页,当前为第5页。2.一个赋值表达式最后加一个________就成了_________语句4.2单项选择1.求标有/**/语句的执行次数()intx=10;while(x++<20)x+=2;/**/(1)10(2)11(3)4(4)32.求标有/**/语句的执行次数()Inty=0,x=2;do{y=x*x;/**/}while(++y<5);(1)5(2)4(3)2(4)13.求标有/**/语句的执行次数()Inty,I;For(i=0;i<20;i++){If(i%2==0)continue;y+=I;/**/}(1)20(2)19(3)10(4)94.求标有/**/语句的执行次数()Inty,I;For(i=0;i<20;i+=2){If(i%5!=0)break;y+=I;/**/}(1)20(2)19(3)5(4)15.求标有/**/语句的执行次数()Intx,y;For(x=0,y=10;x++<y;y++)X*=2;/**/(1)10(2)4(3)17(4)36.求标有/**/语句的执行次数()Intx=5,y=-5;While(x*y)y++;/**/(1)10(2)9(3)5(4)67.求标有/**/语句的执行次数()Intx=1;While(x++<20)x+=3;/**/(1)4(2)5(3)6(4)74.3C语言主要有哪几种控制结构?C语言程序设计(1-6章)全文共32页,当前为第6页。4.4简答题C语言程序设计(1-6章)全文共32页,当前为第6页。1.用while语句构造一个for语句。2.用for语句构造一个while语句。3.写出for语句的工作流程。4.简述break和continue语句的作用。5.用if和goto语句构成do-while语句。6.简述switch语句的功能。7.试比较while和do-while语句的异同。4.5打印出1900-2000年中所有的闰年。4.6编写一个求两个正整数a,b最高公因数的程序。4.7编写一个求两个正整数a,b最小公因数的程序。4.8编写一个程序,其反复从键盘上读入字符,如果读入的是英文,则将其大小写互换,然后输出。否则,按原样输出。输入空格符时,程序结束。4.9今有物,不知其数;三三数之剩二,五五数之剩二。问至少物几何?4.10编写一个程序,验证4-100的每一个偶数都可以表示为两个素数之和。4.11甲,乙,丙三人分一堆西瓜。这堆西瓜中的一半又半个分给甲,剩下的再一半又半个分给乙,剩下的分给丙,但每次分时并没有切开西瓜,问甲乙丙各得几个西瓜。4.12求1-1/2+1/3-1/4+…+1/99-1/100,怎样写程序才能减少误差?4.13小鸡每只0.5元,母鸡每只2元,公鸡每只3元,100元钱要买100只鸡,问共有几种买法?4.14编写程序,求一个求菲波那奇数列1,1,2,3,5,8,13,21,…第20项的结果并将结果输出。4.15读入一行字符,对其中的元音字符‘a’‘o’‘e’‘i’‘u’进行计数,并输出结果。4.16编写程序,从键盘上读入10个整数,然后求出它们之间的最大者并输出(读入整形变量x可调用scanf库函数,形式为scanf(“%d,&x”))。4.17设计一个C程序,输出序列中前n个数,该序列满足:(1)数1在序列中。(2)若x在序列中,则2x,3x,5x也在序列中。(3)序列中无其他数。4.18阅读程序,写出运行结果1.main(){Inti,s=0;i=1;do{if(i%3==0)s+=i;i++;}while(i<20);Printf(“s=%d\n”,s);}2.main(){Inti,s=0;i=0;lp:if(i%4==0)s+=i;C语言程序设计(1-6章)全文共32页,当前为第7页。i++;C语言程序设计(1-6章)全文共32页,当前为第7页。if(i<30)gotolp;printf(“s=%d\n”,s);}3.main(){Inti,n,s=0;For(i=0;i<20;i++)If(i%2==0)s+=i;Printf(“s=%d\n”,s);}4.main(){Inti,n,s=0;i=1;while(i<20){s+=i;i+=2;}Printf(“s=%d\n”,s);}答案:4.11.顺序,分支,循环2.分号,表达式语句4.21.(3)2.(4)3.(3)4.(4)5.(4)6.(3)7.(2)4.3顺序,分支,循环4.41.For(e1;e2;e3)s;可表示为:e1;while(e2){s;e3;}2.While(e)s;可表示为:For(;e;)s;3.For(e1;e2;e3)s;的流程是:(1)求解表达式e1.(2)如果表达式e2为“假”,则结束;否则转(3)(3)执行语句s(4)求解表达式e3,转(2)4.break是结束循环,即跳出循环语句;continue则是结束本次循环,继续执行下一次循环。5.Dos;while(e);可表示为:Loop:S;If(e)gotoloop;C语言程序设计(1-6章)全文共32页,当前为第8页。6.并逐个与其后的常量表达式值比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如果表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。C语言程序设计(1-6章)全文共32页,当前为第8页。7.While是“先判断,后执行”,而dowhile是“先执行,后判断”4.5#include“stdio.h”Voidmain(){Intyear=1990;While(year<=2000){If((year%4==0&&year%100)||year%400==0)Printf(“%d\n”,year);year++;}}4.6#include“stdio.h”#include“stdlib.h”Voidmain(){inta,b,r;Printf(“inputintegera:”);Scanf(“%d”,&a);Printf(“inputintegerb:”);Scanf(“%d”,&b);If(!(a>0&&b>0)){Printf(“aandbmustbepositive!\n”);exit(1);}While(r=a%b){a=b;b=r;}Printf(“result=%d\n”,b);} 4.7设正整数a,b的最高公因数和最小公倍数分别为d,t,则有ab=dt,即有t=(ab)/b,程序如下:#include“stdio.h”#include“stdlib.h”Voidmain(){inta,b,r;Printf(“inputintegera:”);Scanf(“%d”,&a);Printf(“inputintegerb:”);C语言程序设计(1-6章)全文共32页,当前为第9页。Scanf(“%d”,&b);C语言程序设计(1-6章)全文共32页,当前为第9页。If(!(a>0&&b>0)){Printf(“aandbmustbepositive!\n”);exit(1);}p=a*b;While(r=a%b){a=b;b=r;}Printf(“result=%d\n”,p/b);} 4.8#include“stdio.h”#include<conio.h>Voidmain(){charch;While((ch=getch())!=‘’)If(ch>=‘a’&&ch<=‘z’)Putchar(ch-‘a’+‘A’);Elseif(ch>=‘A’&&ch<=‘Z’)Putchar(ch-‘A’+‘a’);ElsePutchar(ch)}将上面程序中的getch()用getchar()替换后,看看结果有什么不同。4.9#include“stdio.h”Voidmain(){intn=2;While(!(n%3==2&&n%5==3&&n%7==2))n++;Printf(“result=%d\n”,n);}4.10#include“stdio.h”is_prime(intn){intI;For(i=2;n%i;)i++;If(i==n)Return(1);ElseReturn(0);}Voidmain()C语言程序设计(1-6章)全文共32页,当前为第10页。{inti,j,n;C语言程序设计(1-6章)全文共32页,当前为第10页。Printf(“4=2+2\n”);For(n=6;n<=100;n+=2){i=3;j=n-i;while(!is_prime(i)||!is_prime(j)){i+=2;j=n-i}Printf(“%d=%d+%d\n”,n,i,j);}}4.11#include“stdio.h”#include“stdlib.h”Voidmain(){inta,b,c,n;Printf(“inputtotlenumberofthewater-melon:”);Scanf(“%d”,&n);If(n%2==0)gotoerr;a=n/2+1;n=n-a;If(n%2==0)gotoerr;b=n/2+1;c=n-b;printf(“A=%d,B=%d,C=%d\n”,a,b,c);exit(0);err:printf(“cannotdividethewater-melonstoA,B&Cwithoutcutting!\n”);}4.12为了减少误差,应尽量避免两个相近的数相减。为此编程如下:#include“stdio.h”#include“stdlib.h”Voidmain(){floati,s1=0,s2=0;For(i=1;i<=100;i+=2){s1+=1/i;s2+=1/(i+1);}Printf(“result=%f\n”,s1-s2);}由于1-1/2+1/3+1/4+…+1/99-1/100C语言程序设计(1-6章)全文共32页,当前为第11页。=(1+1/2+…+1/99-1/100)-2(1/2+1/4+…+1/98-1/100)C语言程序设计(1-6章)全文共32页,当前为第11页。=1/51+1/52+1/53+…+1/99+1/100故也可编程如下:#include“stdio.h”Voidmain(){floati,s=0;For(i=51;i<=100;i++)s+=1/i;Printf(“result=%f\n”,s);}4.13#include“stdio.h”Voidmain(){inti,j,k;For(i=0;i<=33;i++)For(j=0;j<=33;j++){k=100-i-j;if(i*3+j*2+k*0.5==100)printf(“cock=%d,hen=%d,chick=%d\n”,i,j,k);}}4.14#include“stdio.h”Voidmain(){inti,j,r,n=20;For(i=1;j=1;n>2;--n){r=i+j;i=j;j=r;}Printf(“%d\n”,r);}4.15#include“stdio.h”#include<conio.h>Voidmain(){charch;Inta,o,e,i,u;a=o=e=i=u=0;while((ch=getch())!=‘\r’)switch(ch){Case‘a’:a++;break;C语言程序设计(1-6章)全文共32页,当前为第12页。Case‘o’:C语言程序设计(1-6章)全文共32页,当前为第12页。o++;break;Case‘e’:e++;break;Case‘i’:i++;break;Case‘u’:u++;}Printf(“thennumberof‘a’=%d\n”,a);Printf(“thennumberof‘o’=%d\n”,o);Printf(“thennumberof‘e’=%d\n”,e);Printf(“thennumberof‘i’=%d\n”,i);Printf(“thennumberof‘u’=%d\n”,u);}4.16#include“stdio.h”Voidmain(){inti,x,max;Scanf(“%d”,&max);For(i=0;i<10;i++){Scanf(“%d”,&x);If(x>max)max=x;}Printf(“Maxone=%d\n”,max);}4.17#include“stdio.h”#include“stdlib.h”Voidmain(){inti,j,n;Printf(“inputthenumbern:”);Scanf(“%d”,&n);If(n<=0){Printf(“nmustbeapositiveinteger!\n”);Exit(1);}i=0;while(n){j=++i;while(j%2==0)j/=2;while(j%3==0)j/=3;while(j%5==0)j/=5;if(j==1){C语言程序设计(1-6章)全文共32页,当前为第13页。printf(“%d\n”,i);C语言程序设计(1-6章)全文共32页,当前为第13页。n--;}}}4.181.s=632.s=1123.s=904.s=100第五章数组5.1填空标准C可以对_______或________数组在定义时赋初值。5.2选择题1.设有数组定义:Chararray[]=“China”;则数组array所占的空间为______(1)4字节(2)5字节(3)6字节(4)7字节2.下列定义数组的语句中不正确的是_______(1)staticinta[2][3]={1,2,3,4,5,6};(2)staticinta[2][3]={{1},{4,5}};(3)staticinta[][3]={{1},{4}};(4)staticinta[][]={{1,2,3}{4,5,6}};3.以下能正确定义数组并正确赋初值的语句是_________(1)intN=5,b[N][N];(2)inta[1][2]={{1},{3}};(3)intc[2][]={{1,2},{3,4}};(4)intd[3][2]={{1,2},{34}};4.以下为一维整型数组a的正确说明是_______(1)inta(10)(2)intn=10,a[n](3)intn;(4)#defineSIZE10;Scanf(“%d”,&n);inta[SIZE];Inta[n];5.以下为二维整型数组a的正确说明是_______(1)inta[3][](2)floata(3,4)(3)doublea[1][4](4)floata(3)(4)6.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为_______(假设a[0][0]位于数组的第一个位置上)(1)i*m+j(2)j*m+1(3)i*m+j-1(4)i*m+j+17.若二维数组a有m列,则在a[i][j]前的元素个数为_______(1)j*m+i(2)i*m+1(3)i*m+j-1(4)i*m+j+18.用数组名作为函数调用时的实参,实际上传递给形参色是_______(1)实参数组全部元素的值(2)实参数组第一个元素的值(3)实参数组的首地址(3)实参数组元素的个数5.3已知a是一个二维数组,问a[2]的含义是什么?5.4填上适当的语句或表达式,使其能完成相应的功能。1.从键盘上输入一个字符串,然后将其反序,最后输出Main(){intn;chara[60];C语言程序设计(1-6章)全文共32页,当前为第14页。Inti,j;charch;C语言程序设计(1-6章)全文共32页,当前为第14页。gets(a);n=______;for(i=0,j=n-1;i<j;_______){Ch=a[i];a[i]=a[j];a[j]=ch;}Puts(a);}2.输入9个实数给一个3*3的矩阵,然后求出此矩阵两条对角线元素值的和Main(){floata[3][3],sum=0;Inti,j;For(i=0;i<3;i++)for(j=0;j<3;j++)scanf(“%f”,______);For(i=0;i<3;i++)sum+=_______;Printf(“Sum=%f\n”,sum);}3.求某天(年月日)是星期几的函数Voidmain(){intn;/*年*/inty;/*月*/intr;/*日*/intfirst;/*该年1月1日是星期几*/intI,leap,s;scanf(“%d,%d,%d,%d”,&n,&y,&r,&first);staticintmon[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31};______________;s=________________;for(i=1;i<y;i++)s+=mon[leap][i];s+=_______;printf(“%d”,s);}5.5用筛法求100以内的素数。5.613个小孩围成圈玩游戏。从第3个人开始循环报数,报数为”5”者出圈,接着从下一个人开始重新报数,报数为”5”者再出圈….,直到所有人都出圈为止。求他们的出圈顺序。5.7编写程序实现strcpy()函数的功能5.8输入一个字符串,输出其反序5.9输入一个字符串,然后判定它是否为一个palindrome。所谓palindrome,是指其从正反两个方向看都是一样的(不分大小写),如”madam“C语言程序设计(1-6章)全文共32页,当前为第15页。5.1015个教徒和15个非教徒在海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:30人围成一圈,从第一个人开始依次报数,当数到第13人就将他扔入大海,接着从下一个人开始重新报数,当再数到第13人时将其又扔下海,如此循环进行直到仅剩15个人为止。问怎样排法才能使每次投入大海的都是非C语言程序设计(1-6章)全文共32页,当前为第15页。5.11阅读程序,写出运行结果Main(){inta[11],i,j,t;For(i=1;i<11;i++)scanf(“%d”,&a[i]);For(j=1;j<=9;j++)For(i=1;i<=10-j;i++)If(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}For(i=1;i<11;i+=2)printf(“%d”,a[i]);}输入:104115-110-10-111005.12从键盘输入100个整数,然后将它们从小到大排序并输出。答案:5.1静态,外部5.21.(3)2.(4)3.(4)4.(4)5.(3)6.(4)7.(2)8.(3)5.3a[2]是数组a第三行的首地址。5.41.Strlen(a)i++,j—2.&a[i][]j(i==1?a[i][j]:a[i][0]+a[i][2-i])3.Leap=(n%4==0&&n%100)||n%400==0R((first+(s-1)%7)>7?first+(s-1)%7-7:first+(s-1)%7)5.5#include”stdio.h”#include”math.h”Is_prime(intn){intk,i=1;K=sqrt((double)n);While(++I<=k)If(n%i==0)return(0);Return1;}Voidmain(){intn;For(n=2;n<=100;n++)C语言程序设计(1-6章)全文共32页,当前为第16页。If(is_prime(n))printf(“%d\n”,n);}C语言程序设计(1-6章)全文共32页,当前为第16页。5.6#include”stdio.h”Voidmain(){charname[14][10];Intflag[14],I,j,n;Printf(“Inputthenamesofthepeople:\n”);For(i=1;i<=13;i++){Scanf(“%s”,&name[i]);Flag[i]=1;}N=0;i=3;j=1;While(1)While(j<5){I=(i+1>13?1:i+1);J+=flag[i];}Puts(name[i]);Flag[i]=0;N++;If(n==13)break;J=0;}}5.7Char*strcpy(char*s1,char*s2){char*p;P=s1;While(*p++=*s2++);Return(s1);}5.8#include”stdio.h”Voidmain(){chars[51],*I;Printf(“Inputasringlessthan50characters:\n”);Gets(s);I=s;While(*I,)i++;While(--i>=s)putchar(*I);Putchar(‘\n’);}5.9#include”stdio.h”C语言程序设计(1-6章)全文共32页,当前为第17页。#incude”string.h”C语言程序设计(1-6章)全文共32页,当前为第17页。Is_pal(char*s){char*p,*q;P=s;Q=s+strlen(s)-1;While(p<q)if(*p++)!=(*q--))return(0);Return(1);}Voidmain(){chars[51],*i=0;Printf(“Inputastringlessthan50characters:\n”);Gets(s);If(is_pal(s))Puts(“isaPalidrome!”);ElsePuts(“isnotaPalindrome!”);}5.10参见习题5.75.11-11-115115.12#include”stdio.h”Voidmain(){Inta[100],I,j,t;Printf(“Input10integers:\n”);For(i=0;i<100;i++)Scanf(“%d”,&a[i]);For(i=0;i<99;i++)For(j=99;j>I;j--)If(a[j-1]>a[j]){T=a[j];A[j]=a[j-1];A[j-1]=t;}Printf(“Thesortofthemis:\n”);For(i=0;i<100;i++)Printf(“%d”,a[i]);Printf(“\n”);}第六章函数6.1填空1.在定义一个函数时如果不加类型说明,则它的隐含类型为________C语言程序设计(1-6章)全文共32页,当前为第18页。2.为了明确表示函数没有返回值,可用________来进行函数类型定义。C语言程序设计(1-6章)全文共32页,当前为第18页。3.函数的返回值是通过______语句返回到调用函数中的。4.C语言规定下述情况下可以不在调用函数前对被调函数作类型说明:若函数值是整型或字符型;或者_____.5.调用函数只可得到一个______。6.在定义函数时,如果冠以关键字void,表示此函数__________。6.2单项选择。1.一个函数返回值的类型是由()决定的。(1)return语句中表达式类型(2)定义函数时所指定的函数类型(3)调用该函数的主调函数的类型(如果被4)在调用函数时临时指定2.如果被调用函数(非void类型)中没有return,则其()。(1)不带回值(2)带回一个不确定的值(3)只带回零值(4)带回全部数值3.下面叙述中,不正确的是()(1)函数可以有参数,也可以没有参数(2)调用函数时,只能使之出现在表达式中(3)函数中可以没有return(4)main()也是一个函数4.以下正确的函数声明形式是()(1)doublefun(intx,inty)(2)doublefun(intx;inty)(3doublefun(intx,inty)(4))doublefun(intx,y)5.以下正确的函数形式是()(1)doublefun(intx,inty){z=x+y;returnz;}(2)fun(intx,y){intz;returnz;}(3)dun(x,y){intx,y;doublez;z=x+y;returnz;}(4)doublefun(intx,inty){doublez;z=x+y;returnz}6.下面函数调用语句含有实参的个数为()Func((exp1,exp2),(exp3,exp4,exp5));1(2)2(3)4(4)57.求标有/**/语句执行后X的值()Main(){staticintx=5;F(x);If(x>0){Intx;x=20;}X++;/**/}F(x);Intx;{x++;}5(2)6(3)25(4)26C语言程序设计(1-6章)全文共32页,当前为第19页。8.求标有/**/语句执行后X的值()C语言程序设计(1-6章)全文共32页,当前为第19页。Main(){staticintx=-5;F(x);If(x<0){Intx;x=10;}++x;/**/}F(x);Intx;{x--;}-4(2)-5(3)10(4)119.求标有/**/语句执行后X的值()Intx;Main(){intx=20;If(x>0){intx;x=30}F();Printf(“%d\n”,x);/**/}20(2)21(3)30(4)510.求标有/**/语句执行后X的值()Intx=5;Main(){intx=20;If(x>0){intx=30;}Fun();}F();{x++;/**/}5(2)6(3)20(4)216.3C函数可以分为哪几种?各函数之间的关系如何?C语言以函数为程序的基本单位有什么好处?6.4C函数有哪儿种调用方式?6.5

C函数由哪儿部分构成?何为形参?何为实参?

形实结合有哪儿种方式?6.6

编写完成如下功能的函数:1.求两个整数之和,结果也为整型。2.求两个浮点数之和,结果也为浮点型。3.求两个整数之积,结果为长整型。4.求两个浮点数之积,结果为双精度型。5.求三个整数的最大者。6.求三个整数的最小者7.已知三边长,求三角形的面积,8.判断一个数是否素数,如果是返回1,否则返回0。6.7编写一个程序,它从键盘上读人一个整数,然后将该整数的所有正因子输出C语言程序设计(1-6章)全文共32页,当前为第20页。6.8编写一个求n!的递归函数。C语言程序设计(1-6章)全文共32页,当前为第20页。6.9编写一个求菲波那奇数列中第n项fn的函数,已知:f1=1,f2=1,fn=fn-1+fn-2(n>=3)6.10编写一个程序,它从键盘分别读人一个学生的五科考试成绩,然后计算、输出该学生的总成绩、平均成绩、最高成绩和最低成绩。要求用函数调用来完成所要求的计算。6.11写出下面程序的运行结果1.intk=0;Main(){inti=4;Func(i);Printf(“%d,%d\n”I,k);}Func(m)Intm;{M+=k;K+=m;{chark=’B’;Printf(“%d\n”,k-‘A’);}Printf(“%d,%d\n”,m,k);2.main(){intn;For(n=1;n<=5;++n)printf(“\n%d”,ss(n));}ss(n)Intn;{intI;,sum=0;For(i=1;i<=n;sum+=i*i);Return(sum);3.intsum(intn){intI,s=0;I=1;While(i<=n){s+=I;i++;}Return(s);Main(){printf(“%d\n”,sum(5));}4.若输入的值是-125,写出下面程序的运行结果#include”stdio.h”#include”math.h”Voidfun(intn){intk,r;C语言程序设计(1-6章)全文共32页,当前为第21页。For(k=2;k<=sqrt(n);k++)C语言程序设计(1-6章)全文共32页,当前为第21页。{r=n%k;While(r==0){printf(“%d”,k);N=n/k;If(n>1)printf(“*”);R=n%k;}}If(n!=1)printf(“%d\n”,n);}Voidmain(){intn;Scanf(“%d”,&n);Printf(“%d=”,n);If(n<0)printf(“-”);N=fabs(n);fun();}5.写出下面程序的运行结果。Inti=0;Fun1(int1){i=(i%i)*(i*i)/(2*i)+4;Printf(“i=%d\n”,i);Return(i);}Fun1(int1){i=i<=2?5:0;Return(i);}Main(){inti=5;Fun2(i/2);printf(“i=%d\n”,i);Fun2(i=i/2);printf(“i=%d\n”,i);Fun2(i/2);printf(“i=%d\n”,i);Fun1(i/2);printf(“i=%d\n”,i);}6.写出下面程序的功能。Func(intn){inti,j,k;i=n/100;j=n/10-i*10;k=n%10;C语言程序设计(1-6章)全文共32页,当前为第22页。if((i*100+j*10+k)==i*i*i+j*j*j+k*k*k)returnn;C语言程序设计(1-6章)全文共32页,当前为第22页。return0;}Main(){intn,k;For(n=100;n<1000;n++)If(k=func(n))printf(“%d”,k);}6.12写一个函数,以字符的形式读入一个十六进制数(它以字符‘h’或‘H’结尾,如1ABH),并输出相应的十进制数。6.13阿克曼函数A(m,n)的定义如下:n+1若m=0A(m,n)={A(m-1,1)若n=0A(m-1,A(m,n-1))其他试编写一个求A(m,n)的函数。6.14编写一个程序,它从键盘读入4个字符,然后将这4个字符的所有可能排列输出。6.15改错。1.下面的程序或者有语法错误,或者完不成特定的功能,请改正(只允许改变一个语句)。Autointmax(inta,intb){registerinttemp;If(a>b)temp=a;Elsetemp=b;Return(temp);C语言程序设计(1-6章)全文共32页,当前为第23页。}C语言程序设计(1-6章)全文共32页,当前为第23页。2.下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是________.Voidadd(floata,floatb){floatc;c=a+b;returnc;}3.下面add函数的功能是求两个参数的和。判断下面程序的正误,如果错误请改正过来。Voidadd(inta,intb){intc;c=a+b;return(c);}4.下面函数fun的功能是:将长整型数中偶数位置上的数依次取出,构成一个新数返回,如当s中的数为:87653142时,则返回的数为:8642;判断下面程序的正误,如果错误请改正过来。Longfun(longs){longt,sl=1;Intd;t=0;while(s>0){d=s%10;if(d%2=0)}t=d*sl+t;sl*=10;C语言程序设计(1-6章)全文共32页,当前为第24页。}C语言程序设计(1-6章)全文共32页,当前为第24页。s/=10;}Return(t);}6.16填空。1.填上适当的语句或表达式,使其能完成相应的功能。判断year是否为闰年的函数,若是则返回1,否则返回0。Leap(________)Intyear;{______________________;}2.以下程序将选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。Sub(intk,intn){inta1,a2;a2=_____________;a1=k-____________;if((k%3==0&&a2==5)||(k%3==0&&a1==5)){printf(“%d”,k);n++;Returnn;}Elsereturn-1;}Voidmain()C语言程序设计(1-6章)全文共32页,当前为第25页。{intn=0,k,m;C语言程序设计(1-6章)全文共32页,当前为第25页。For(k=10;k<=99;k++){m=sub(k,n);If(m!=-1)n=m;}Printf(“\nn=%d”,n);}6.17有20级楼梯,一次可以迈一级或二级,则爬完次楼梯有几种方法。6.18编写程序或函数。1.用递归函数求1n=0p(n,x)={xn=1((2n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/nn>12.用递归函数求以下函数f(n)的前十项和。f(n)=f(n-1)+2*f(n-2)n>2f(1)=f(2)=13.用递归函数求以下函数f(n)的前十项和。f(n)=n*f(n-1)+3n>1f(1)=24.用递归函数求以下函数f(n)的前十项和。f(n)=2n-1+f(n-1)n>1f(1)=05.用递归函数求以下函数f(n)的前十项和。f(n)=2*f(n-1)n>1C语言程序设计(1-6章)全文共32页,当前为第26页。f(1)=1C语言程序设计(1-6章)全文共32页,当前为第26页。6.19将数轴上的点1,2,3,…,n涂成白色或黑色,但不允许相邻的两个点都是黑色,共有多少中着色方法?6.20在开始时电梯里共有n个人,共有k个楼层可停。设k<=n,且在每层都有人下电梯,问共有多少种可能的下法(只考虑每层所下的人数,而不必关心具体下的是何人)?试编写程序求n=8,k=5时的下法总数。6.21编写代码实现把字符串s1插入到字符串s的第i个位置上。6.22编写代码在有序数组a中折半查找数x(n是数组a中元素的个数)。答案:6.11.int2.void3.return4.被调函数在调用函数之前定义5.返回值6.不返回值,只能以过程方式调用6.21.(2)2.(2)3.(2)4.(1)5.(4)6.(2)7.(2)8.(1)9.(1)10.(2)6.3C函数可分为库函数和用户自定义函数两种。各函数之间的关系是平等的,无主次之分。以函数作为程序的基本单位可以将大的程序分解为一个个小的函数,便于程序的编写阅读和维护。6.4C函数可有“过程调用”和“函数调用”两种方式.6.5C函数由”函数头”和“函数体”构成。定义函数时函数名后圆括号中的参数为“形参”,调用函数时函数名后圆括号中的参数为“实参”。形实结合主要有“值传递”和“地址传递”两种方式,但C语言只用到“值传递”,而“地址传递”在C语言中是利用“指针”来间接实现的。6.61.f(intx,inty){Return(x+y);}2.Floatf(floatx,floaty){

Return(x+y);}3.longf(intx,inty){

Return(x*y);}4.doublef(intx,inty)C语言程序设计(1-6章)全文共32页,当前为第27页。{

Return(x*y);C语言程序设计(1-6章)全文共32页,当前为第27页。}5.Max(intx,inty,intz){If(y>x)x=y;If(z<x)Return(z);Return(x);}6.Min(intx,inty,intz){If(y>x)x=y;If(z<x)Return(z);Return(x);}7.Doubletri_area(floata,floatb,floatc){floats;s=(a+b+c)/2;return(sqrt(s*(s-a)*(s-b)*(s-c)));}8.Is_prime(intn){inti;For(i=2;n%i;)i++;If(i=

温馨提示

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

评论

0/150

提交评论