浙江省计算机二级C语言历年试卷.一、程序填空(1)找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1b=i_x0010_0/10;a*a*a+b*b*b+c*c*c = = i(2)输入1个整数后,输出该数的位数。
(例:输入3214则输出4,输入-23156则输出5)。
n!=0n=n/10(3)求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。
if (n<0) n=-n;s+=n_x0010_;(4)调用函数f,将一个整数首尾倒置。
例如:若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。
return -y ;m=m/10 ;(5)调用函数f,从字符串中删除所有的数字字符。
strcpyelse(6)调用find函数在输入的字符串中查找是否出现瑜敨这个单词。
如果查到返回出现的次数,如果未找到返回0。
j=0; j<3; j++j>=3(7)输入的一个小写字母,将字母循环后移5个位置后输出。
例如:慜变成晜,睜变成扜。
c>='a'&&c<='u'c=(c-'a'+5)&+'a';(8)将字符串s中所有的字符'c'删除。
s[i] != '\0'j++;(9)对x=1,2,……,10,求f(x)=x*x-5*x+sin(x)的最大值。
max=f(1);if (f(x)>max) max=f(x);(10)输入三个整数,按由小到大的顺序输出这三个数。
int *pa, int *pbif ( a>b )(11)调用函数f,去除数组中的负数,输入数64 3 1 ,输出结果为:x[7]组.*m = *m-1;f (x, &n) ;(12)调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x 当x=1.7时的值。
float x, float *a, int n return y;分别统计字符串中英文字母、数字、和其他(13) 字符出现的次数。
for ( i=0; a[i]!='\0'; i++)a[i]>='0' && a[i]<='9'函(14)DtoH将输入的十进制整数n通过函数并将转换结果以字符串形数转换为十六进制数,,将输出十六79式输出。
(例如:输入十进制数。
4f)进制'a'+x-10; returnstr[i]=trans(n_x0016_);Dec2Bin通过函数n(15)将输入的十进制正整数转换为二进制数,并将转换结输.出。
m%2bin[j-1](16)数列的第1、2项均为1,此后各项值均为该项前二项之和。
计算数列第30项的值。
long f(int n); 或者long f(int);n==1 || n==2(17)该程序计算四位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。
pst->math+pst->english+pst->computerst + i(18)输入m、n(要求输入数均大于0)。
输出它们的最大公约数。
m<=0||n<=0k=m>n?n:m(19)求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。
例如:b[1]=a[0]+a[1],……,b[9]=a[8]+a[9]。
a[i-1]+a[i]i%3= =0(20)输入整数n(n>0),求m使得2的m次方。
n次方大于或等于m+1的2,n小于或等于scanf(“%d”,&n), n<=0t=t*2;二程序改错(1)一输入个字符串,将组成字符串的所有非英文字母的字符删除后输出if (tolower(str[i])>='a' && tolower(str[i])<='z') str[k]=str[i]; k++;(2)输入一个字符串,将组成字符串的所有字符先按顺序存放到字符串t中,再将字符串中的字符按逆序连接到字符串t后面。
例如:输入??屄,则字符串t为????屁。
t[sl+i]=s[sl-1-i];t[sl+i ]='\0'; (3)运行时输入10个数,然后分别输出其中的最大值、最小值。
for(i=1; i<=10;i++) { if(i==1) { max=x;min=x;} (4)用选择法对10个整数按升序排序。
if( a[min]>a[j] ) min =j; temp=a[min];a[min]=a[i]; a[i]=temp;(5)输入x和正数eps,计算多项式1-x+x*x/2-x*x*x/3!+……的和直到末项的绝对值小于eps为止。
t=-t*x/i++ ; }while(fabs(t)>=eps);(6)运行时若输入a、n分别为3、6,则输出下列表达式的值:long 。
3+33+333+3333+33333+333333.s=0;t=t*10+1;(7)用递归法将一个六位整数n转换称字符串。
例如:输入123456,应输出字符串???尶。
*s=i_x0010_+'0';itoa(n,str+5);(8)输入n,再输入n个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。
structaxy{floatx,y;}*a;scanf(%f%f,&a[i].x,&a[i].y);(9)运行时输入n,则输出n的所有质数因子。
例如:n=13860,则输出2、2、3、3、5、7、11。
i=2; i++;三、编写程序(1)在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式╜層写入到考生文件夹中Paper子文件夹下的新建文件Design1.dat中FILE *p; int i;p=fopen(Design1.dat,w);for( i=1; ;i++)if (i%3==1 && i%5==3 && i%7==5 && i%9==7) break;fprintf(p,%d,i);fclose(p);的因子和等a对亲密数,则1为b、a若)2(.于b、b的因子和等于a、且a不等于b。
如:220、284是1对亲密数,284、220也是1对亲密数。
在6~5000内找出所有的亲密数对for(k=6;k<=5000;k++){ b=0; c=0;for(a=1;a<k;a++)if (k%a==0) b+=a;for(a=1;a<b;a++)if (b%a==0) c+=a;if(k==c&&k!=b)fprintf(p,m,%d\n,k,b);}fclose(p);}中每个字符的权s 设计程序:计算字符串(3)所谓权重值就是字符在字符串中的位置值重值,开1ASCII码值的乘积。
位置值从与该字符的始依此递增。
p=fopen(design.dat,w);for (i=0;s[i]!='\0';i++)w=(i+1)*s[i];{,w); fprintf( p,%d}fclose(p);}(4)将数组a的每一行均除以该行上绝对值最大的元素,然后将a数组写入for (i=0;i<3;i++){ x=a[i][0];for (j=1;j<3;j++)if (a[i][j]>x) x=a[i][j];for (j=0;j<3;j++) a[i][j]/=x;}(5)z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式╜?搥写min=f(1,1); x1=y1=1;for (x=1;x<=6;x++)for (y=1;y<=6;y++)if (f(x,y)<min){ min=f(x,y); x1=x; y1=y; }p=fopen(Design2.dat,w);fprintf(p,%d,%d,x1,y1);fclose(p);(6)z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x、y取值为区间[0,10]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式%d,%dz1=10*cos(-4)+5*sin(-2); x1=y1=0;for (x=0;x<=10;x++)for (y=0;y<=10;y++){ z=10*cos(x-4)+5*sin(y-2);if (z<z1) { z1=z; x1=x; y1=y; } }p=fopen(Design2.dat,w);fprintf(p,%d,%d,x1,y1);fclose(p);}(7)设计程序:数组元素x[i]、y[i]表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式╜屦写fprintf(p,%f,minc); for (i=0;i<10;i++)for (j=i+1;j<10;j++) // 注意:不能为for (j=0; j<10; j++){ c=len(x[i],y[i],x[j],y[j]);minc=c;if (c<minc)}p=fopen(Design.dat,w);fclose(p);}(8)设计程序:在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式╜?屦写for ( i=1; i<10; i++)if ( fabs(x[i]-v)<d){ d=fabs(x[i]-v);k=i; }p=fopen(Design.dat,w);fprintf(p,%.5f, x[k] );fclose(p);}(9)对x=1,2,…10,求函数的最大值,并将该数以f(x)=x-10*cos(x)-5*sin(x).3f 格式max=f(1); int i;for (i=2;i<=10;i++)x=f(i);{if (max<x) max=x;}p=fopen(Design1.dat,w);fprintf(p,%.3f,max);fclose(p);}float f(float x){ float t;t=x-10*cos(x)-5*sin(x);return t;}(10)将字符串s中的所有字符按ASCII 值从小到大重新排序后,将排序后的字符串写入到考生文件夹中Paper子文件夹下的新建文件Design2.dat。