【例2】寫一函數(shù),用“起泡法”對輸入的10個字符按由小到大順序排序。
源程序如下:
/*起泡法排序*/
#define N 10
char str[N];
main()
{
int i,flag;
for (flag=1; flag = =1;)
{
printf(“\n輸入字符串,長度為10:\n”);
scanf(“%s”,&str);
if (strlen(str)>N)
printf(“超過長度,請重輸!”);
else
flag = 0;
}
sort(str);
printf(“\n排序結(jié)果:”):
for (i=0;i printf(“%c”,str[i]);
}
sort(str)
char str[N];
{
int i,j;
char t;
for (j=1;j for (i=0;(i if (str[i]>str[i+1])
{
t=str[i]; str[i]=str[i+1]; str[i+1]=t;
}
}
【例3】用牛頓迭代法求根。方程為ax3+bx2+cx+d=0,系數(shù)a、b、c、d由主函數(shù)輸入。求x在1附近的一個實根。求出根后,由主函數(shù)輸出。
源程序如下:
/*牛頓迭代法解方程*/
#include “math.h”
float solut(a,b,c,d)
float a,b,c,d;
{
float x=1,x0,f,f1;
do
{
x0=x;
f=((a*x0+b)*x0+c)*x0+d;
f1=(3*a*x0+2*b)*x0+c;
x=x0-f/f1;
}while(fabs(x-x0)>=1e-5);
return(x);
}
main()
{
float a,b,c,d;
printf(“\n輸入方程的系數(shù)a,b,c,d\n”);
scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);
printf(“\n方程是:%5.2fx^3+%5.2fx^2+%5.2fx+%5.2f=0”,a,b,c,d);
printf(“\nX=.7f\n”,solut(a,b,c,d));
}
在此題目中,方程的系數(shù)是未知的,這是與以前我們用牛頓迭代法的時候不同的地方。但原理、算法是相同的,這里我們用函數(shù)來求方程的根。也就是把牛頓迭代法用函數(shù)的形式表現(xiàn)出來。
【作業(yè)】
1.上機調(diào)試下面的程序,記錄系統(tǒng)給出的出錯信息,并指出出錯原因。
main()
{
int x,y;
printf("%d\n",sum(x+y));
int sum(a,b);
{
int a,b;
return(a+b);
}
}
2.定義一個函數(shù),功能是計算n個學生的成績中,高于平均成績的人數(shù),并作為函數(shù)值。用主函數(shù)來調(diào)用它,統(tǒng)計50個學生成績中,高于平均成績的有多少人?
3.編寫一個對n個數(shù)據(jù)從大到小的排序C函數(shù),再編寫一個計算最后得分的C函數(shù),計算方法是:去除一個最高分,去除一個最低分,其余的平均分為參賽選手的最后得分。并在主函數(shù)中調(diào)用它們對有n個評委評分,m個選手參賽的最后得分,從大到小排序輸出。
4.編寫一個計算n!的函數(shù),用主函數(shù)調(diào)用它,使之輸出7階楊輝三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
楊輝三角形是二項展開式(a+b)n的系數(shù),共有n+1項,n=0,1,…。楊輝三角形在數(shù)學上具有重要的意義,在高中階段已學過,系數(shù)是按照公式:am= ,其中am是展開式中的第m項系數(shù)。
5.編寫一個程序,包括主函數(shù)和如下子函數(shù)。
(1) 輸入10個無序的整數(shù);
(2) 用起泡方法從大到小排序;
(3) 要求輸入一個整數(shù),用折半查找法找出該數(shù),若存在,在主函數(shù)中輸出其所處的位置,否則,插入適當位置。
分析:input函數(shù)完成10個整數(shù)的錄入。sort函數(shù)完成起泡法排序,search函數(shù)完成輸入數(shù)的查找。
相關推薦:2010年9月計算機等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |