计算机二级c语言程序填空,计算机二级C语言题库之程序填空.docx

计算机二级C语言题库之程序填空

找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1

#include

#include

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 = = i

printf("%d is a Armstrong number!\n",i);

}

}

输入1个整数后,输出该数的位数。(例:输入3214则输出4,输入-23156则输出5)。

#include

void main()

{ int n,k=0;

scanf("%d",&n);

while( _____1_____ ){ // n!=0

k++;

_____2_____; // n=n/10

}

printf("%d\n",k);

}

求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。

#include

#include

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

#include

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

#include

#include

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

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>=3

i++;

}

return n;

}

void main()

{ char a[80];

gets(a);

printf("%d",find(a));

}

输入的一个小写字母,将字母循环后移5个位置后输出。例如:"a"变成"f","w"变成"b"。

#include

void main()

{ char c;

c=getchar();

if(______1______) // c>='a'&&c<='u'

c=c+5;

else

if (c>='v' && c<='z')

______2______ // c=(c-'a'+5)%26+'a';

putchar(c);

}

将字符串s中所有的字符'c'删除。

#include

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

#include

#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

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 // 数组元素的删除

void f(int *a,int *m)

{ int i, j ;

for(i=0;i

if(a[i]<0) {

for(j=i--;j

_____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

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

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

_____2_____ // return y;

}

分别统计字符串中英文字母、数字、和其他字符出现的次数。

#include

#include

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]++;

else

n[2]++;

}

for(i=0;i<3;i++) printf("%d\n",n[i]);

}

将输入的十进制整数n通过函数DtoH函数转换为十六进制数,并将转换结果以字符串形式输出。(例如:输入十进制数79,将输出十六进制4f。)

# include

# include

char trans(int x)

{

if(x<10) return '0'+x;

else _______1________ // return 'a'+x-10;

}

int DtoH(int n,char *str)

{

int i=0;

while(n!=0)

{

________2________ // str[i]=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",str[k-i]);

}

将输入的十

进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。

#include

void Dec2Bin(int m)

{

int bin[32],j;

for(j=0;m!=0;j++)

{

bin[j]= ______1______; // m%2

m=m/2;

}

for( ; j!=0; j-- )

printf("%d", ______2______ ); // bin[j-1]

}

void main()

{

int n;

scanf("%d",&n);

Dec2Bin(n);

}

数列的第1、2项均为1,此后各项值均为该项前二项之和。计算数列第30项的值。

#include

_______1______ // long f(int n); 或者 long f(int);

void main()

{ printf("%ld\n",f(30)) ;

}

long f(int n)

{ if( ______2______ ) // n==1 || n==2

return 1;

else

return f(n-1)+f(n-2);

}

该程序计算四位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。

#include

struct STUDENT

{ char name[16];

int math;

int english;

int computer;

int average;

};

void GetAverage(struct STUDENT *pst) /* 计算平均成绩 */

{ int sum=0;

sum = ______1______; // pst->math+pst->english+pst->computer

pst->average = sum/3;

}

void main()

{ int i;

struct STUDENT st[4]={{"Jessica",98,95,90},{"Mike",80,80,90},

{"Linda",87,76,70},{"Peter",90,100,99}};

for(i=0;i<4;i++)

{ GetAverage(______2______); // st + i

}

printf("Name\tMath\tEnglish\tCompu\tAverage\n");

for(i=0;i<4;i++)

{ printf("%s\t%d\t%d\t%d\t%d\n",st[i].name,st[i].math,st[i].english,

st[i].computer,st[i].average);

}

}

输入m、n(要求输入数均大于0)。输出它们的最大公约数。

#include

void main()

{ int m, n, k;

while ( scanf("%d%d", &m, &n), ______1______ ); // m<=0||n<=0

for (___2___ ; n%k!=0 || m%k!=0 ; k--) ; // k=m>n?n:m

printf("%d\n", k);

}

求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。例如:b[1]=a[0]+a[1],……,b[9]=a[8]+a[9]。

#include

void main()

{ int a[10],b[10],i;

printf("\nInput 10 numbers: ");

for (i=0; i<10;i++) /* 数组输入 */

scanf("%d", &a[i]);

for (i=1; i<10; i++)

b[i]=______1______; /* 计算b数组中的元素 */ // a[i-1]+a[i]

for (i=1; i<10; i++)

{ printf("%3d",b[i]);

if (______2______) printf("\n"); /* 每行打印3个数据 */ // i%3= =0

}

}

输入整数n(n>0),求m使得2的m次方小于或等于n,2的m+1次方大于或等于n。

#include

void main()

{ int m=0,t=1,n;

while( _____ 1 ________); // scanf(“%d”,&n), n<=0 // 逗号表达式

while(!(t<=n&&t*2>=n)){

_____ 2 _____ // t=t*2;

m++;

}

printf(“%d\n”,m);

}

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值