当前位置:文档之家› 计算机等级考试c语言

计算机等级考试c语言

计算机等级考试c语言
计算机等级考试c语言

1. /*求菲玻那契数列的前20项。菲玻那契数列前2项分别是1,1,从第3项开始,各项分别

是其前2项之和。*/

#include

void fibonacci(int f[])

{ int i;

/************Fill in the blanks************/

for(i=2;i<20;i++)

/************Fill in the blanks************/

f[i]=f[i-1]+f[i-2];

}

main()

{ int f[20]={1,1},i;

fibonacci(f);

printf("\n菲玻那契数列的前20项为: ");

for(i=0;i<20;i++){

if(i%5==0) printf("\n");

/************Fill in the blanks************/

printf("%12d",f[i]);

}

getch();

}

2. /*求广义菲玻那契数列的第n项。广义菲玻那契数列前3项分别是1,1,1,从第4项开始,

各项分别是其前3项之和。广义菲玻那契级数的前n项为:1,1,1,3,5,9,17,31,……。

例如,若n = 20,则应输出

广义菲玻那契级数的第20项为: 46499。*/

#include

long fibonacci(int n)

{ long a=1,b=1,c=1,d;

int i;

/************Fill in the blanks************/

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

{

/************Fill in the blanks************/

d=a+b+c;

a=b;

b=c;

c=d;

}

/************Fill in the blanks************/

return d;

}

main()

{ int n=20;

printf("广义菲玻那契级数的第%d项为: %ld\n",n,fibonacci(n));

getch();

}

5. /*在sum函数中,根据整型形参m,计算如下公式的值。

1 1 1 1

y = ------- + --------- + --------- + …… + -------

100*100 200*200 300*300 m*m 例如,若形参m = 2000,则程序输出:

The result is: 0.000160。*/

#include

/************Fill in the blanks************/

double sum(int m)

{ int i;

double y,d;

/************Fill in the blanks************/

y=0;

for(i=100;i<=m;i+=100){

d = (double)i * (double)i ;

y += 1.0/d;

}

/************Fill in the blanks************/

return(y);

}

main( )

{ int n = 2000 ;

printf("\nThe result is: %lf\n",sum(n));

getch();

}

11. /*统计子字符串substr在字符串str中出现的次数。

例如,若字符串为This is a C Program,子字符串为is,则应输出2。*/ #include

int count(char str[],char substr[])

{ int i,j,k,num=0;

/************Fill in the blanks************/

for(i=0;str[i]!='\0';i++)

for(j=i,k=0;substr[k]==str[j];k++,j++)

/************Fill in the blanks************/

if(substr[k+1]=='\0')

{

num++;

break;

}

/************Fill in the blanks************/

return num;

}

main()

{

char str[80],substr[80];

printf("Input a string: ");

gets(str);

printf("Input a substring: ");

gets(substr);

printf("The result is: %d\n",count(str,substr));

getch();

}

13. /*有一个3×4的矩阵,求所有元素中的最小值。*/

#include

min_value(int array[][4])

{ int i,j,min;

min=array[0][0];

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

/************Fill in the blanks************/

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

if(array[i][j]

/************Fill in the blanks************/

min=array[i][j];

/************Fill in the blanks************/

return(min);

}

main()

{ int a[3][4]={{-11,23,15,37},{29,48,6,-8},{15,17,34,12}}; printf("矩阵中所有元素的最小值=%d\n",min_value(a)); getch();

}

14. /*求班级学生考试成绩的平均值。*/

#include

float average(float array[],int n)

{ int i;

float aver,sum=array[0];

/************Fill in the blanks************/

for(i=1;i

sum=sum+array[i];

/************Fill in the blanks************/

aver=sum/n;

/************Fill in the blanks************/

return (aver);

}

main()

{ float score_1[5]={98.5,97,91.5,60,55};

float score_2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};

printf("班级A学生考试成绩的平均值= %6.2f\n",average(score_1,5)); printf("班级A学生考试成绩的平均值= %6.2f\n",average(score_2,10)); getch();

}

17. /*求出以下分数序列的前n项之和。

2 3 5 8 13 21

┄┄, ┄┄, ┄┄, ┄┄, ┄┄, ┄┄, ……

1 2 3 5 8 13

例如,若n = 5,则应输出:8.391667。*/

#include

/************Fill in the blanks************/

double sum(int n)

{ int a,b,c,k;

double s;

/************Fill in the blanks************/

s=0;

a=2;

b=1;

for(k=1;k<=n;k++){

s=s+(double)a/b;

c=a;

/************Fill in the blanks************/

a=b+c;

b=c;

}

return s;

}

main()

{ int n=5;

printf("\nThe value of function sum is: %lf\n",sum(n));

getch();

}

20. /*输出M行M列整数方阵,并计算主对角线上各元素之和。*/

#include

#define M 5

/************Fill in the blanks************/

int count(int n,int a[M][M])

{ int i,sum=0;

for(i=0;i

sum += a[i][i];

/************Fill in the blanks************/

return(sum);

}

main( )

{ int arr[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}}; int i,j;

printf("\n%d×%d 数组元素为:\n",M,M);

for(i=0;i

for(j=0;j

/************Fill in the blanks************/

printf("%4d",arr[i][j]);

printf("\n");

}

printf ( "主对角线上各元素之和为: %d",count(M,arr));

getch();

}

24./*求出数组arr中的最大数,并把最大数和arr[0]中的数进行交换。*/ #include

#define N 20

/*************Fill in the blanks*************/

Void swap(int a[],int n)

{int k,m,t;

m=0;

/*************Fill in the blanks************/

for(k=0;k

if(a[k]>a[m])m=k;

t=a[0];

/************Fill in the blanks************/

a[0]=a[m];

a[m]=t;

}

Main()

{int I,n=10,arr[N]={0,5,12,10,23,6,9,7,10,8};

printf(“\n交换前:”);

For(i=0;i

Swap(arr,n);

printf(“\n交换后:”);

for(i=0;i

printf(“\n”);

}

3. /*将一个二维数组a的行和列元素互换,存到另一个二维数组b中。*/

#include

void trans(int a[2][3],int b[3][2])

{/* 本函数将二维数组a的行和列元素互换,存到二维数组b中*/

/**********Error**********/

int i,j;

for(j=0;j<3;j++)

/**********Error**********/

b[j][i]=a[i][j];

}

main()

{ int a[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j;

printf("数组a:\n");

for(i=0;i<2;i++){

for(j=0;j<3;j++)

printf("%5d",a[i][j]);

printf("\n");

}

trans(a,b);

printf("数组b:\n");

for(i=0;i<3;i++){

for(j=0;j<2;j++)

printf("%5d",b[i][j]);

printf("\n");

}

getch();

}

6. /*比较数组a[]和数组b[]中,a[i]>b[i]、a[i]=b[i]和a[i]

其中comp函数的功能是:当x>y时,返回1;当x=y时,返回0;当x=y时,返回0。*/ #include

/**********Error**********/

int comp(int x,int y)

{ int flag;

if(x>y) flag=1;

/**********Error**********/

else if(x==y) flag=0;

else flag=-1;

return(flag);

}

main()

{ int i,n=0,m=0,k=0;

int a[10]={5,-23,5,21,6,18,9,12,23,7};

int b[10]={6,-9,64,23,-52,0,9,8,-35,12};

printf("数组a:\n");

for(i=0;i<10;i++) printf("%4d",a[i]);

printf("\n");

printf("数组b:\n");

for(i=0;i<10;i++) printf("%4d",b[i]);

printf("\n");

if(comp(a[i],b[i])==1) n=n+1;

else if(comp(a[i],b[i])==0) m=m+1;

else k=k+1;

}

printf("a[i]>b[i]%2d 次\na[i]=b[i]%2d 次\na[i]

getch();

}

9. /*应用冒泡排序算法,对数组a[]中的元素从小到大进行排序。*/

#include

void sort(int a[],int n)

{ int i,j,t;

for(j=0;j

for(i=0;i

if(a[i]>a[i+1]){

t=a[i];

/**********Error**********/

a[i]=a[i+1];

/**********Error**********/

a[i+1]=t;

}

}

main()

{ int k,a[10]={6,-9,78,23,-12,0,9,8,-3,12};

printf("数组a:\n");

for(k=0;k<10;k++)

printf("%d ",a[k]);

sort(a,10);

printf("\n从小到大排序:\n");

for(k=0;k<10;k++)

printf("%d ",a[k]);

printf("\n");

getch();

}

12. /*求二维数组a[3][3]中各列元素的平均值,并依次存储在一维数组b[3]中。*/

#include

void fun(int a[3][3],float b[3])

{ int i,j;

for(i=0;i<3;i++){

for(j=0;j<3;j++)

/**********Error**********/

b[j]+=a[i][j];

}

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

b[i]/=3;

}

main()

{ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},i;

float b[3]={0,0,0};

fun(a,b);

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

printf("%4.1f ",b[i]);

printf("\n") ;

getch();

}

15. /*将每个英语单词的第一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。

例如,若输入:I am a student to take the examination.,

则应输出:I Am A Student To Take The Examination.。*/

#include

/**********Error**********/

void change(char s[])

{ int i,k;

k=0;

/**********Error**********/

for(i=0;s[i]!='\0';i++)

if(k)

{if(s[i]==' ') k=0;}

else if(s[i]!=' ')

{k=1;

s[i]=toupper(s[i]);

}

}

main()

{ char str[80];

printf("\nPlease enter an English text line: ");

gets(str);

printf( "Before changing:\n %s",str);

change(str);

printf("\nAfter changing:\n %s\n",str);

getch();

}

18. /*计算两个双精度数的和的平方根。

例如,若输入:23.18,32.4721,则输出:z=7.460034。*/

#include

/**********Error**********/

double count(double a,double b)

{ double c;

c=sqrt(a+b);

return c;

}

main()

{ double x,y,z;

printf("Enter x,y:");

scanf("%lf,%lf",&x,&y);

z=count(x,y);

printf ("z=%f\n",z);

getch();

}

22. /*输入一行字符,统计其中大写字母、小写字母、空格、数字及其它字符个数。*/

#include

int upper,lower,digit,space,other;

/************Error************/

count(char str[])

{ int i=0;

while(str[i]!='\n')

{ if((str[i]>='A')&&(str[i]<='Z'))

upper++;

else if((str[i]>='a')&&(str[i]<='z'))

lower++;

/************Error************/

else if(str[i]==' ')

space++;

else if((str[i]>='0')&&(str[i]<='9'))

digit++;

else

other++;

i++;

}

}

main()

{ int i=0;

char s[80];

printf("\n请输入一行字符:");

while((s[i]=getchar())!='\n') i++;

upper=lower=digit=space=other=0;

count(s);

printf("其中,大写字母个数:%d,小写字母个数:%d,空格个数:%d,数字个数:%d,其它字符个数:%d",upper,lower,space,digit,other);

getch();}

23. /*输入一个字符串(不超过80个字符),按逆序存放。*/

#include

/************Error************/

void inverse(char str[])

{ int i,j;

char t;

for(i=0,j=strlen(str);i

t=str[i];

/************Error************/

str[i]=str[j-1];

str[j-1]=t;

}

}

main()

{ char str[80];

int i=0;

printf("\n请输入一个字符串:");

while((str[i]=getchar())!='\n') i++;

str[i]='\0';

inverse(str);

printf("此字符串的逆序为:%s",str);

getch();

}

4. /*找出数组arr[]中的最大元素。

suffix函数的功能是:求出形参数组a[]中最大元素的下标。其中,形参n为数组元素的个数。

例如, 数组元素为: 56 178 6 123 87 243 161 124 78 143

则输出结果为:

数组arr的最大元素为: arr[5]=243 */

#include

int suffix(int a[],int n)

{ int i,k,max;

max=a[0];

for(i=1;i

if(max

return k;

}

main()

{ void CHECK();

int arr[10]={56,178,6,123,87,243,161,124,78,143},k;

clrscr();

k=suffix(arr,10);

printf("数组arr的最大元素为: arr[%d]=%d\n",k,arr[k]) ;

getch();

7. /*将1 到n 之间,能同时被7 和11 整除的整数存储到形参数组a[]中,并返回这些整数

的个数。

例如:当n = 1000 时,程序输出:77 154 231 308 385 462 539 616 693 770 847 924 */

#include

int fun(int a[],int n)

{ int i; int k=0;

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

if(i%7==0&&i%11==0)

{a[k]=i;

k++;

}

return k;

}

main()

{ void CHECK();

int arr[20],i,k,n;

clrscr();

n=1000;

k=fun(arr,n);

for(i=0;i

printf("%4d",arr[i]);

getch();

}

8. /*计算N×N的二维数组的所有数组元素的平均值。

例如:a 数组中的值为

|0 1 2 7 9|

|1 9 7 4 5|

a = |2 3 8 3 1|

|4 5 6 8 2|

|5 9 1 4 1|

则平均值为: 4.280000。*/

#include

#define N 5

float count(int a[N][N])

{ int i,j;

float sum=0,ave;

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

for(j=0;j<5;j++)

sum=sum+a[i][j];

ave=sum/(N*N);

return ave;

main()

{ void CHECK();

int arr[N][N]={{0,1,2,7,9},{1,9,7,4,5},{2,3,8,3,1},{4,5,6,8,2},{5,9,1,4,1}}; clrscr();

printf("二维数组arr的元素的平均值为:%f\n",count(arr)) ;

getch();

}

10. /*计算1到形参n之间,能被3和7整除的整数的和,并作为函数值返回。

例如,n为1800时,程序输出:

1到1800之间,能被3和7整除的整数的和为: 76755 */

#include

long sum(int n)

{

int i;

long sum=0;

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

if(i%3==0&&i%7==0)

sum=sum+i;

return(sum);

}

main()

{ void CHECK();

int n=1800;

clrscr();

printf("1到%d之间,能被3和7整除的整数的和为: %ld\n",n,sum(n)) ; getch();

}

16. /*计算

1 1 1 1 1

1 - --- + --- - --- + --- - ... ---

2 3 4 5 n

例如,n=100时,运算结果为:0.688172。*/

#include

float count(int n)

{ int i;

float sign=1; float sum=0;

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

{

sum=sum+sign/i;

sign=(-1)*sign;

}

return sum;

main()

{ void CHECK();

int n=100;

clrscr();

printf(" 1 1 1 1 1\n");

printf("1 - --- + --- - --- + --- - ... --- = %f\n",count(n));

printf(" 2 3 4 5 %d\n",n);

getch();

}

19. /*计算n!。例如,给n输入5,则输出5!=120。*/

#include

long count(int n)

{ int i;

long s=1;

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

s=s*i;

return s;

}

main()

{ void CHECK();

int n;

clrscr();

printf("Input N:");

scanf("%d", &n);

printf("%d! =% ld\n",n,count(n));

getch();

}

21. /*将字符串s中的内容按逆序重新存储。

例如,若字符串s中的内容为abcd,则应将字符串s中的内容变为:dcba*/ #include

void invert(char str[],int n)

{int i;char temp;

for(i=0;i

{temp=str[i];

str[i]=str[n-1-i];

str[n-1-i]=temp; }

}

main()

{ void CHECK();

char s[10]="abcd";

int n=4;

clrscr();

printf("处理前字符串=%s\n", s);

invert(s,n);

printf("处理后字符串=%s\n", s);

getch();

}

25./*计算正整数num的各位上的数字的乘积。

例如,若输入:2418,则输出应该是:64。若输入:106,则输出应该是:0。*/

#include

long count(long num)

{int n;

long s=1;

while(num!=0)

{

n=num%10;

s=s*n;

num=num/10;

}

return s;

}

main()

{void CHECK();

long n ;

clrscr();

printf(“\Please enter anumber:”);

scanf(“%ld”,&n);

printf(“%ld\n”,count(n));

CHECK();

}

26./*统计形参s[]所指字符串中数字字符出现的次数。

例如,形参s[]所指的字符串为:sjk7gr7we98yv98y3。输出结果为:字符串sjk7gr7we98yv98y3中数字字符出现的次数为:7*/

#include

#define N 80

int count(char s[])

{

int I,k=0;

for(i=0;s[i]!’\0’;i++)

if(s[i]>=’0’&&s[i]<=’9’)

k++;

return k;

}

main()

{void CHECK();

char arr[N]=”sjk7gr7we98yv98y3”;

clrscr();

printf(“字符串%s中数字字符出现的次数为: %d\n”,arr,count(arr));

CHECK();

}

27./*将小写字母转化为大写字母。

例如,C Language,转换为C LANGUAGE。*/ #include

void change(char s[])

{

int I;

for(i=0;s[i]!=’\0’;i++)

if(s[i]>=’a’&&s[i]<’z’)

s[i]=s[i]-32;

}

main()

相关主题
文本预览
相关文档 最新文档