计算机二级C语言题库之程序填空找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1#include <stdio.h>#include<math.h>void 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 = = iprintf("%d is a Armstrong number!\n",i);}}输入1个整数后,输出该数的位数。
(例:输入3214则输出4,输入-23156则输出5)。
#include <stdio.h>void main(){ int n,k=0;scanf("%d",&n);while( _____1_____ ){ // n!=0k++;_____2_____; // n=n/10}printf("%d\n",k);}求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。
#include <stdio.h>#include <math.h>void main(){int n,s=0;scanf("%d",&n);______ 1 ______ // if (n<0) n=-n;while(n!=0) {______ 2 ______ // s+=n%10;n=n/10;}printf("%d\n",s);}调用函数f,将一个整数首尾倒置。
例如:若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。
#include <stdio.h>#include <math.h>long 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("%ld\t",f(12345)); printf("%ld\n",f(-34567));}调用函数f,从字符串中删除所有的数字字符。
#include <stdio.h>#include <string.h>#include <ctype.h>void f(char *s){ int i=0;while(s[i]!='\0'){if(isdigit(s[i])) ____1____(s+i,s+i+1); // strcpy___2___ i++;} // else}void main(){ char str[80];gets(str); f(str); puts(str);}调用find函数在输入的字符串中查找是否出现"the"这个单词。
如果查到返回出现的次数,如果未找到返回0。
#include <stdio.h>int find(char *str){ char *fstr="the";int i=0,j,n=0;while (str[i]!='\0'){for(______1______) // j=0; j<3; j++if (str[j+i]!=fstr[j]) break;if (______2______) n++; // j>=3i++;}return n;}void main(){ char a[80];gets(a);printf("%d",find(a));}输入的一个小写字母,将字母循环后移5个位置后输出。
例如:"a"变成"f","w"变成"b"。
#include <stdio.h>void main(){ char c;c=getchar();if(______1______) // c>='a'&&c<='u'c=c+5;elseif (c>='v' && c<='z')______2______ // c=(c-'a'+5)%26+'a';putchar(c);}将字符串s中所有的字符'c'删除。
#include <stdio.h>void main(){ char s[80];int i,j;gets(s);for(i=j=0; ______1______; i++) // s[i] != '\0'if(s[i] != 'c'){ s[j]=s[i];______2______ // j++;}s[j]='\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("%f\n",max);}输入三个整数,按由小到大的顺序输出这三个数。
#include <stdio.h>void 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(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(______2______) // if ( a>b )swap(&a,&b);printf("%d,%d,%d",a,b,c);}调用函数f,去除数组中的负数,输入数组x[7],输出结果为:1 3 4 6 #include <stdio.h> // 数组元素的删除void f(int *a,int *m){ int i, j ;for(i=0;i<*m;i++)if(a[i]<0) {for(j=i--;j<*m-1;j++) a[j]=a[j+1];_____1_____; // *m = *m-1;}}void main(){ int i,n=7,x[7]={1,-2,3,4,-5,6,-7};_______2_______; // f (x, &n) ;for(i=0;i<n;i++) printf("%5d",x[i]);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.h>float f(float, float*, int);void main(){ float b[5]={1.1, 2.2, 3.3, 4.4, 5.5 };printf("%f\n", f(1.7,b,5) );}float f( _______1________ ) // float x, float *a, int n{ float y=a[0], t=1; int i;for(i=1; i<n; i++) { t=t*x; y=y+a[i]*t; }_____2_____ // return y;}分别统计字符串中英文字母、数字、和其他字符出现的次数。
#include <stdio.h>#include <ctype.h>void main(){ char a[80]; int n[3]={0}, i; gets(a) ;________1________ // for ( i=0; a[i]!='\0'; i++){if (tolower(a[i])>='a' && tolower(a[i])<='z') /*统计字母个数*/ n[0]++;else if (________2________) /*统计数字个数*/ // a[i]>='0' && a[i]<='9'n[1]++;elsen[2]++;}for(i=0;i<3;i++) printf("%d\n",n[i]);}将输入的十进制整数n通过函数DtoH函数转换为十六进制数,并将转换结果以字符串形式输出。