c语言重零开始习题集(编辑修改稿)内容摘要:

(i=k+1) printf(%d is a prime number、 \n,m)。 else printf(%d is not a prime number 、 \n,m)。 } 9.例:对一段电文进行加密,将电文中的大写字母变为其后的第 3 个字母。 最后的三个字母 X,Y,Z 变为 A,B,C。 include main( ) { char ch。 printf(请输入你要加密的电文: \n)。 while((ch=getchar()!=39。 \n39。 )) { if(ch=39。 A39。 amp。 amp。 ch=39。 Z39。 ) ch=ch+3。 if(ch39。 Z39。 amp。 amp。 ch=39。 Z39。 +3) ch=ch26。 printf(%c,ch)。 } } 10.编程对输入的三个数进行由小到大排序。 main( ) { int x,y,z,t。 printf(请输入三个数: )。 scanf(%d,%d,%d,amp。 x,amp。 y,amp。 z)。 if(xy) {t=x。 x=y。 y=t。 } if(xz) {t=x。 x=z。 z=t。 } if(yz) {t=y。 y=z。 z=t。 } printf(x=%d,y=%d,z=%d,x,y,z)。 } 11*、 两个乒乓球对进行比赛,各出 3 人,甲队为 A,B,C 三人,乙队为 x,y,z 三人,已抽签决定比赛名单。 有人向队员打听比赛的名单, A说他不和 x比, C说他不和 x,z 比,请编程序找出 3 对赛手的名单。 main( ) { char i,j,k。 /*i 是 A的对手; j 是 B 的对手; k 是 C 的对手 */ for(i=39。 x39。 i=39。 z39。 i++) for(j=39。 x39。 j=39。 z39。 j++) if(i!=j) for(k=39。 x39。 k=39。 z39。 k++) if(i!=kamp。 amp。 j!=k) 14 if(i!=39。 x39。 amp。 amp。 k!=39。 x39。 amp。 amp。 k!=39。 z39。 ) printf(A%c\tB%c\tC%c\n,i,j,k)。 } 12*、 有一分数序列: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13,… 求这个数列的前 20 项之和。 main( ) { int i,t,n=20。 float a=2,b=1,s=0。 for(i=1。 i=n。 i++) {s=s+a/b。 t=a。 a=a+b。 /*将前一项分子与分母之和作为下一项的分子 */ b=t。 /*将前一项的分 子作为下一项的分母 */ } printf(sum=% 4f\n,s)。 } 习题四 一. 阅读程序,写出执行结果。 1.下面程序的输出结果是: 4 include f(int a) { int b=0。 static c=3。 a=c++,b++。 return ( a )。 } main( ) { int a=2, i, k。 for (i=0。 i2。 i++) k=f (a++)。 printf(%d\n,k)。 } 2.下面程 序的输出结果是: 84 include int d=1。 fun(int p) { int d=5。 d+=p++。 printf(%d,d)。 } main( ) { int a=3。 fun(a)。 d+=a++。 15 printf(%d\n,d)。 } 下述程序的运行结果是 : Yes、 No、 Yes、 No、 Yes include define TRUE 1 define FALSE 0 int fun(int num) { int answer。 if (num%2) answer=TRUE。 else answer=FALSE。 return answer。 } void main( ) { int i。 for(i=1。 i6。 i++) { if (fun(i) ==TRUE) printf(Yes、 )。 else printf(No、 )。 } } 二.程序填空题。 1.下面程序的功能是:有 n个人坐在一起,问第 n个人多少岁。 他 说比第 n1个人大 1岁,依次问下去,每个人总说比他前面的人大 1岁,最后问到第一个人,他说是 6岁。 请问第 n个人多少岁。 在程序空白处填上合适的内容。 int age(int n) { int c。 if (n==1) c=6。 else c=age(n1)+1。 return(c)。 } main( ) { int n。 scanf(%d, amp。 n)。 printf(第 n个人的岁数是: %d\n, age(n) )。 } 2. 下面程序完 成“根据半径计算圆面积的功能”, 请填空。 define PI define S(r) PI*r*r main( ) { float a,area。 scanf(%f,amp。 a)。 area=S(a)。 printf(r=%f,area=%f\n,a,area)。 } 16 下面的 isprime函数“判断 m是否素数 ,若是,函数返回 1,否则返回 0”。 请填空。 include int isprime( int m ) { int i,k。 k=sqrt(m)。 for (i=2。 i=k。 i++) if ( m%i==0 ) break。 if (i=k+1) return(1)。 else return(0)。 } 三.编程题 1. 求圆台的表面积 s 和体积 v。 已知,圆台的上半径 r1=,下半径 r2= 6,圆台的高h=。 参考圆台的表面积 s 和体积 v 的计算公式: s=π (r12+r22)+ π (r1+r2)L v=π h(r12+r22+ r1*r2)/3 L=sqrt(h2+(r1 r2)2) include include define PI define r1 define r2 define h define L sqrt(h*h+(r1r2)*(r1r2)) define S PI*(r1*r1+r2*r2)+PI*(r1+r2)*L define V PI*h(r1*r1+r2*r2+r1*r2)/3 main( ) { printf(%f,%f,S,V)。 } 2. 定义一个函数 d(n,m),能够完成求整数 n的从右数第 m个数字的值。 例如: d(12345,4)=2。 define N 10 include int dtake(char s[],int m) { char i。 if(strlen(s)m||m=0) return(1)。 i=s[strlen(s)m]。 return( i )。 } main( ) { char str[N],t。 int m。 printf(please input num:)。 17 scanf(%s,str)。 printf(please input the num`s position that you want to take:)。 scanf(%d,amp。 m)。 t=dtake(str,m)。 printf(you want the num is %c,t)。 } 用递归的方法求 fibonacci数列:1,1,2,3,5,8 …… 的第40项的数。 fibonacci数列定义如下: F1=1 (n=1) F2=1 (n=2) Fn=Fn1+Fn2 (n=3) define N 40 long int fibo(int n) { long f。 i f(n= =1||n= =2) return(1)。 else f=fibo(n1)+fibo(n2); return(f)。 } main( ) { printf(“%ld”,fibo(N))。 } 已知 f(x,n)=n+(n1)+(n2)+… +1+x 计算 x=, n=10 及 x= n=20 时的 f 的值。 将 f 定义成函数做(用两种办法:循环方法 和递归方法)。 方法一:循环的方法 include define N 10 define t float f(float x,int n) { int sum=0,i。 for(i=n。 i=1。 i) sum=sum+i。 return (sum+x)。 } main() { float fa=f(t,N)。 printf(%f,fa)。 } 方法二:递归的方法 18 include define N 10 define t float f(float x,int n) { int sum=0。 if(n==1) return (1+ x)。 else sum=n+f(x,n1)。 return sum。 } main() { float fa=f(t,N)。 printf( % 2f,fa)。 } 设计一个头文件 ,定义整型、实型、字符型的输出格式,在另一个程序文件中包含,并使用头文件中定义的输出格式输出 10, , ‟A‟。 define INTEGER(d) printf(%d\n,d) define FLOAT(f) prinrf(%f\n,f) define STRING(s) printf(%s\n,s)/*以上为 的内容 */ include int main(void) { int d,num。 float f。 char s[80]。 printf(Choose data format:1integer,2float,3string)。 scanf(%damp。 num)。 switch(num) {case 1: {printf(input integer:)。 scanf(%d,amp。 d)。 INTEGER(d)。 break。 } case 2: { printf(input float:)。 scanf(%f,amp。 f)。 FLOAT(f)。 break。 } case 3: {printf(input string:)。 scanf(%s,amp。 s)。 STRING(s)。 19 break。 } default:printf(input error! )。 } 用条件编译方法实现以下功能: 输入一个字符,可以任选两种方式输出:一为大写变小写输出;一为小写变大写输出。 /*本程序当 change 为 1 时,将小写字母转换为大写 当 change 为 0 时,将大写字母转换为小写 */ include include define change 1 main( ) {char c。 printf(Please input the char:\n)。 c=getchar( )。 if( change) if((c=39。 a39。 )amp。 amp。 (c=39。 z39。 )) c=c32。 else if((c=39。 A39。 )amp。 amp。 (c=39。 Z39。 )) c=c+32。 endif printf(The changed char is %c\n,c)。 } 习题五 一、 选择填空题 以下对一维整型数组 a 的正确说明的是 D A) int a( 10 )。 B) int n=10。 a[n]。 C ) int n。 D) define SIZE 10 scanf (%d, amp。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。