1、计算机二级 C 语言题库之程序填空找 Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1#include stdio.h#includemath.hvoid main() int i,a,b,c;for(i=100;i=999;i+) a=i/100;_1_ / b=i%100/10;c=i%10;if (_2_) / a*a*a+b*b*b+c*c*c = = i printf(%d is a Armstrong number!n,i);输入 1 个整数后,输出该数的位数。 (例:输入 3214 则输出 4,输入-23156 则输出 5) 。#include stdi
2、o.hvoid main() int n,k=0;scanf(%d,n);while( _1_ ) / n!=0k+;_2_; / n=n/10printf(%dn,k);求输入的整数各位数字之和,如输入 234 则输出 9,输入-312 则输出 6。#include stdio.h#include math.hvoid main()int n,s=0;scanf(%d,n);_ 1 _ / if (n0) n=-n;while(n!=0) _ 2 _ / s+=n%10;n=n/10;printf(%dn,s);调用函数 f,将一个整数首尾倒置。例如:若程序输入 12345,则输出 5432
3、1;若程序输入-34567,则输出 -76543。#include stdio.h#include math.hlong f(long n) long m,y=0; m=fabs(n);while(m!=0) y=y*10+m%10; _1_ / m=m/10 ;if(n=0) return y;else _2_ / return -y ;void main()printf(%ldt,f(12345); printf(%ldn,f(-34567);调用函数 f,从字符串中删除所有的数字字符。#include stdio.h#include string.h#include ctype.hvoi
4、d f(char *s) int i=0;while(si!=0)if(isdigit(si) _1_(s+i,s+i+1); / strcpy_2_ i+; / elsevoid main() char str80; gets(str); f(str); puts(str);调用 find 函数在输入的字符串中查找是否出现the这个单词。如果查到返回出现的次数,如果未找到返回 0。#include stdio.hint find(char *str) char *fstr=the;int i=0,j,n=0; while (stri!=0)for(_1_) / j=0; j3; j+if (
5、strj+i!=fstrj) break;if (_2_) n+; / j=3i+;return n;void main() char a80;gets(a);printf(%d,find(a);输入的一个小写字母,将字母循环后移 5 个位置后输出。例如:a 变成f,w变成b。#include stdio.hvoid main() char c;c=getchar();if(_1_) / c=ac=uc=c+5;elseif (c=v c=z)_2_ / c=(c-a+5)%26+a;putchar(c);将字符串 s 中所有的字符 c删除。#include stdio.hvoid main(
6、) char s80;int i,j;gets(s);for(i=j=0; _1_; i+) / si != 0if(si != c) sj=si;_2_ / j+;sj=0;puts(s);对 x=1, 2,10,求 f(x)=x*x-5*x+sin(x)的最大值。#include stdio.h#include math.h#define f(x) x*x-5*x+sin(x)void main() int x; float max;_1_ / max=f(1);for(x=2;x=10;x+)_2_ / if (f(x)max) max=f(x);printf(%fn,max);输入三个
7、整数,按由小到大的顺序输出这三个数。#include stdio.hvoid swap(_1_) / int *pa, int *pb /*交换两个数的位置*/int temp;temp = *pa;*pa = *pb;*pb = temp;void main() int a,b,c,temp;scanf(%d%d%d,a,b,c);if(ab)swap(a,b);if(bc)swap(b,c);if(_2_) / if ( ab )swap(a,b);printf(%d,%d,%d,a,b,c);调用函数 f,去除数组中的负数,输入数组 x7,输出结果为: 1 3 4 6#include s
8、tdio.h / 数组元素的删除void f(int *a,int *m) int i, j ;for(i=0;i*m;i+)if(ai0) for(j=i-;j*m-1;j+) aj=aj+1;_1_; / *m = *m-1;void main() int i,n=7,x7=1,-2,3,4,-5,6,-7;_2_; / f (x, n) ;for(i=0;in;i+) printf(%5d,xi);printf(n);调用函数 f 计算代数多项式 1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x 当 x=1.7 时的值。#include stdio.hflo
9、at f(float, float*, int);void main() float b5=1.1, 2.2, 3.3, 4.4, 5.5 ;printf(%fn, f(1.7,b,5) );float f( _1_ ) / float x, float *a, int n float y=a0, t=1; int i;for(i=1; in; i+) t=t*x; y=y+ai*t; _2_ / return y;分别统计字符串中英文字母、数字、和其他字符出现的次数。#include stdio.h#include ctype.hvoid main() char a80; int n3=0,
10、 i; gets(a) ;_1_ / for ( i=0; ai!=0; i+)if (tolower(ai)=a tolower(ai)=z) /*统计字母个数*/n0+; else if (_2_) /*统计数字个数*/ / ai=0 ai=9n1+;elsen2+;for(i=0;i3;i+) printf(%dn,ni);将输入的十进制整数 n 通过函数 DtoH 函数转换为十六进制数,并将转换结果以字符串形式输出。 (例如:输入十进制数 79,将输出十六进制 4f。 )# include stdio.h# include string.hchar trans(int x)if(x10
11、) return 0+x;else _1_ / return a+x-10;int DtoH(int n,char *str)int i=0;while(n!=0)_2_ / stri=trans(n%16);n/=16;i+; return i-1;void main()int i,k,n;char *str; scanf(%d,n);k=DtoH(n,str);for (i=0;i=k;i+) printf(%c,strk-i);将输入的十进制正整数 n 通过函数 Dec2Bin 转换为二进制数,并将转换结果输出。#include stdio.hvoid Dec2Bin(int m)int bin32,j;for(j=0;m!=0;j+)