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