C语言程序填空题介绍.doc
|导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include main() int a,b;scanf(“%d%d“,&a,&b);printf(“a=%d,b=%dn“,a,b);a= ; b= ; a= ;printf(“a=%d,b=%dn“,a,b);【3.2】下面程序的功能是根据近似公式:2/6 1/12+1/22+1/32+ +1/n2,求 值。#include double pi(long n) double s=0.0;long i;for(i=1;iamax) amax=x; if( ) amin=x;scanf(“%f“,&x);printf(“namax=%fnamin=%fn“,amax,amin);【3.7】下面程序的功能是将形参 x 的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为 0 的元素中。fun(int x,int b) int k=0,r;do r=x% ;bk+=r;x/= ;while(x);【3.8】下面程序的功能是输出 1 到 100 之间每位数的乘积大于每位数的和的数。例如数字 26,数位上数字的乘积 12 大于数字之和 8。main() int n,k=1,s=0,m;for(n=1;ns)printf(“%d“,n);【3.9】下面程序的功能是统计用 0 至 9 之间的不同的数字组成的三位数的个数。main() int i,j,k,count=0;for(i=1;imain() ; int i,j;printf(“Input 10 numbers pleasen“);for(i=0; ;i+ ) scanf(“%f“, &ai);printf(“n“);for(i=2; ;i+ ) for(j=0; ;j+ )if( ) x=aj; ;aj+1=x;printf(“The sorted 10 numbers;n“);for(i=0; ;i+ ) if( ) printf(“n“);printf(“%ft“,ai);printf(“n“);【3.13】下面程序的功能是读入 20 个整数,统计非负数个数,并计算非负数之和。#include “stdio.h“main() int i,a20,s,count;s=count=0;for(i=0;imain() char *s=“Beijing ligong daxue“;int i,j;for(i=j=0;si!='0';i+)if(si!= ' ') ;else ;sj= '0';printf(“%s“,s);【3.15】下面程序的功能是将字符串 s 中所有的字符'c' 删除。请选择填空。#includemain( ) char s80;int i,j;gets(s);for(i=j=0;si!= '0';i+ )if(si!= 'c') ;sj= '0';puts(s);【3.16】下面程序的功能是输出两个字符串中对应相等的字符。请选择填空。#include char x=“programming“;char y=“Fortran“;main() int i=0;while(xi!= '0' && yi!= '0')if(xi=yi)printf(“%c“, );elsei+;【3.17】下面程序的功能是将字符串 s 中的每个字符按升序的规则插到数组 a 中, 字符串 a 已排好序。#include main() char a20=“cehiknqtw“;char s=“fbla“;int i,k,j;for(k=0;sk!= '0' ;k+ ) j=0;while(sk>=aj && aj!= '0' )j+;for( ) ;aj=sk;puts(a);【3.18】下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的 ASCII 码之差。例如:输入的两个字符串分别为 “abcdefg“和“abceef“,则输出为-1。#include main() char str1100,str2100,c;int i,s;printf(“Enter string 1: “); gets(str1);|printf(“Enter string 2: “); gets(str2);i=0;while(str1i = str2i && str1i!= ) i+;s= ;printf(“%dn“, s);【3.19】下面的函数 expand 在将字符串 s 复制到字符串 t 时, 将其中的换行符和制表符转换为可见的转义字符表示,即用'n'表示换行符,用't'表示制表符。expand(char s,char t) int i,j;for(i=j=0;si!= '0';i+ )switch (si) case 'n': t = ;tj+ = 'n';break;case 't': t = ;tj+ = 't';break;default: t = si;break;tj = ;【3.20】下面的函数 index(char s, char t)检查字符串 s 中是否包含字符串 t,若包含,则返回 t 在 s 中的开始位置(下标值),否则送回-1。index(char s, char t) int i,j,k;for(i=0;si!= '0';i+ ) for(j=i,k=0; && sj=tk;j+,k+) ;if( ) return (i);return(-1);n【3.21】下面程序的功能是计算 S= k! 。k=0long fun(int n) int i;long s;for(i=1;i ;i+) s*=i;return( ) ;main() int k,n;long s;scanf(“%d“,&n);s= ;for(k=0;ksk) ;return(k);【3.23】下面程序的功能是由键盘输入 n,求满足下述条件的 x、y :nx 和 ny 的末 3 位数字相同,且 xy,x、y、n 均为自然数,并使 x+y 为最小。#include pow3(int n,int x) int i, last;for(last=1,i=1;idouble mysqrt( double a, double x0 ) double x1, y;x1 = ;if( fabs(x1-x0)>0.00001 )y = mysqrt( );else y = x1;return( y );main() double x;printf(“Enter x: “);scanf(“%lf“, &x);printf(“The sqrt of %lf=%lfn“, x, mysqrt( x, 1.0) );【3.25】以下程序是计算学生的年龄。已知第一位最小的学生年龄为 10 岁,其余学生的年龄一个比一个大 2 岁,求第 5 个学生的年龄。#include age( int n ) int c;if( n=1 ) c=10;else c= ;return(c);main() int n=5;printf(“age:%dn“, );【3.26】下面的函数 sum(int n)完成计算 1n 的累加和。sum(int n)| if(nvoid prt( char c, int n ) if( n>0 ) printf( “%c“, c );| ;main() int i, n;scanf(“%d“, &n);for( i=1; i2 ) invent ( ,n-2) ;else ;【3.35】从键盘上输入 10 个整数,程序按降序完成从大到小的排序。#include int array10;sort( int *p, int *q ) int *max, *s;if( )return;max=p; for( s=p+1; s *max )| ; swap( ) ;sort( ); swap( int *x, int *y ) int temp;temp=*x;*x=*y;*y=temp;main() int i; printf(“Enter data :n“); for( i=0; ivoid convert(char *a, int n) int i;if(i=n/10) !=0 ) convert( , i ); *a = ;char str10= “ “;main() int number;scanf(“%d“, &number);convert( str, number );puts(str);【3.37】下面程序的功能是实现数组元素中值的逆转。#include main() int i,n=10,a10=1,2,3,4,5,6,7,8,9,10;invert(a,n-1);for(i=0;iint a34=1,2,3,4,5,6,7,8,9,10,11,12, *p=a;main() int i,j;for(i=0;imain ( ) char str81, *sptr;int i;for(i=0;iwp) ;for(i=*n;i>=p;i-) ;wp=x;+*n;【3.41】下面程序的功能是从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按 ASCII 码值从小到大排序,并删去相同的字符。#include strmerge(a,b,c) /* 将已排好序的字符串 a、b 合并到 c */char *a,*b,*c ; char t,*w;w=c;while( *a!= '0' *b!='0' ) t= ?*a+:*bsj ) main( ) char s1100,s2100,s3200;printf(“nPlease Input First String:“);scanf(“%s“,s1);