C语言程序设计填空题及答案复习用431.pdf
《C语言程序设计填空题及答案复习用431.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计填空题及答案复习用431.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、_ _ 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include main()int a,b;scanf(%d%d,&a,&b);printf(a=
2、%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;i=n;i+)s=s+;return();【3.3】下面的程序的功能是求一维数组中的最小元素。findmin(int*s,int t,int*k)int p;for(p=0,*k=p;pt;p+)if(sps*k);main()int a10,i,*k=&i;for(i=0;i10;i+)scanf(%
3、d,&ai);findmin(a,10,k);printf(%d,%dn,*k,a*k);【3.4】下面程序的功能是计算 1-3+5-7+-99+101 的值。main()int i,t=1,s=0;for(i=1;i0?t=-1:1;printf(%dn,s);【3.5】有以下程序段:s=1.0;for(k=1;kamax)amax=x;if()amin=x;scanf(%f,&x);printf(namax=%fnamin=%fn,amax,amin);【3.7】下面程序的功能是将形参 x 的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为 0 的元素中。
4、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;i=9;i+)for(j=0;j=9;j+)if()continue;else for(k=0;k=9;k+)if(
5、)count+;printf(%d,count);【3.10】下面程序的功能是输出 100 以内的个位数为 6、且能被 3 整除的所有数。main()int i,j;for(i=0;i+)j=i*10+6;if()countinue;printf(%d,j);【3.11】下面程序的功能是用辗转相除法求两个正整数m 和 n 的最大公约数。hcf(int m,int n)int r;if(mn)r=m;n=r;r=m%n;while()m=n;n=r;r=m%n;【3.12】下面程序的功能是使用冒泡法对输入的 10 个浮点数从小到大进行排序。排好序的 10 个数分两行输出。程序如下:#includ
6、e main();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.hmain()int i,a20,s,count;s=count=0;for(
7、i=0;i20;i+)scanf(%d,);for(i=0;i20;i+)if(ai0);s+=ai;count+;printf(s=%dt count=%dn,s,count);【3.14】下面程序的功能是删除字符串 s 中的空格。#include main()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
8、=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,);else i+;_ _ 【3.17】下面程序的功能是将字符串 s 中的每个字符按升序的规则插到数组 a 中,字符串 a 已排好序。#include main()char a20=cehiknqtw;char s=fbla;int i,k,j;for(k=0;sk
9、!=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=;p
10、rintf(%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 中的开始位置(下标值),否则送
11、回-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=0 long 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;k=n;k+)s+=;printf(%ldn,s);【3.22】下面程序的功能是显示具有 n 个元素的数组 s中的最大元素。#define N
12、 20 main()int i,aN;for(i=0;iN;i+)scanf(%d,&ai);_ _ printf(%dn,);fmax(int s,int n)int k,p;for(p=0,k=p;psk);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;i=x;i+)last=;return(last);main()int x,n,min,flag=1
13、;scanf(%d,&n);for(min=2;flag;min+)for(x=1;xmin&flag;x+)if(&pow3(n,x)=pow3(n,min-x)printf(x=%d,y=%dn,x,min-x);【3.24】下面的程序是用递归算法求 a 的平方根。求平方根的迭代公式如下:#include double 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,
14、&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(n=0)printf(data errorn);if(n=1);else;【3.27】下面的函数是一个求
15、阶乘的递归调用函数。facto(int n)if(n=1);else return();【3.28】组合问题,由组合的基本性质可知:(1)C(m,n)=C(n-m,n)(2)C(m,n+1)=C(m,n)+C(m-1,n)公式(2)是一个递归公式,一直到满足 C(1,n)=n 为止。当 n2*m 时,可先用公式(1)进行简化,填写程序中的空白,使程序可以正确运行。#includestdio.h main()int m,n;printf(Input m,n=);scanf(%d%d,&m,&n);printf(The combination numbeers is%dn,combin(m,n);
16、_ _ combin(int m,int n)int com;if(n2*m)m=n-m;if(m=0)com=1;else if(m=1);else;return(com);【3.29】下列函数是求一个字符串 str 的长度。int strlen(char*str)if()return(0);else return();【3.30】用递归实现将输入小于 32768 的整数按逆序输出。如输入 12345,则输出 54321。#includestdio.h main()int n;printf(Input n:);scanf(%d,);r(n);printf(n);r(int m)printf(
17、%d,);m=;if();【3.31】输入 n 值,输出高度为 n 的等边三角形。例如当 n=4 时的图形如下:*#include void prt(char c,int n)if(n0)printf(%c,c);main()int i,n;scanf(%d,&n);for(i=1;i=n;i+);printf(n);【3.32】下面的函数实现 N 层嵌套平方根的计算。double y(double x,int n)if(n=0)return(0);else return(sqrt(x+();【3.33】函数 revstr(s)将字符串 s 置逆,如输入的实参s 为字符串abcde,则返回时
18、s 为字符串edcba。递归程序如下:revstr(char*s)char*p=s,c;while(*p)p+;if(sp)c=*s;*s=*p;revstr(s+1);如下是由非递归实现的 revstr(s)函数:revstr(s)char*s;char*p=s,c;while(*p)p+;while(s2)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();s
19、ort();swap(int*x,int*y)int temp;temp=*x;*x=*y;*y=temp;main()int i;printf(Enter data:n);for(i=0;i10;i+)scanf(%d,&arrayi);sort();printf(Output:);for(i=0;i10;i+)printf(%d,arrayi);【3.36】下面函数的功能是将一个整数存放到一个数组中。存放时按逆序存放。例如:483 存放成384。#include void convert(char*a,int n)int i;if(i=n/10)!=0)convert(,i);*a=;ch
20、ar 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;i10;i+)printf(%4d,ai);printf(n);invert(int*s,int num)int*t,k;t=s+num;while()k=*s;*s=*t;*t=k;【3.38】下面程序通过指向整型的指针将数组 a34 的内容按行列的
21、格式输出,请给 printf()填入适当的参数,使之通过指针 p 将数组元素按要求输出。#include int a34=1,2,3,4,5,6,7,8,9,10,11,12,*p=a;main()int i,j;for(i=0;i3;i+)for(j=0;j4;j+)printf(%4d,);【3.39】下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。#include main()char str81,*sptr;int i;for(i=0;iwp);for(i=*n;i=p;i-);wp=x;+*n;【3.41】下面程序的功能是从键盘上输入两个字符串,对两个字
22、符串分别排序;然后将它们合并,合并后的字符串按 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+:*b*a?*b+:();/*将*a、*b 的小者存入 t*/if(*w 0)*w=t;else if(t *w)*+w=t;/*将与*w 不相同的 t 存入w*/while(*a!=0)/*以下将 a 或 b 中剩下的字符存入w*/if(*a!=*w)*+w=*a+;else a+;while(*b!=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 填空 答案 复习 431
限制150内