C语言复习资料6Word文档下载推荐.docx
《C语言复习资料6Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言复习资料6Word文档下载推荐.docx(9页珍藏版)》请在冰点文库上搜索。
a[0][0]+12;
p++)
printf("
%5d"
*p);
}
2.将一个n×
n的矩阵行列转置后输出,转置功能由函数reverse实现,试编程。
#defineN3
voidreverse(floatx[][N],intn)
{inti,j;
floatt;
for(i=0;
i<
n;
i++)
for(j=i;
j<
j++)
{t=x[i][j];
x[i][j]=x[j][i];
x[j][i]=t;
}
voidprtable(floatx[][N],intn)
{for(j=0;
j++)
%10.4f"
x[i][j]);
\n"
);
main()
floata[][N]={{1,2,3},{4,5,6},{7,8,9}};
prtable(a,N);
reverse(a,N);
3.对非线性方程f(x)=0,可用牛顿迭代公式
求解,要求方程式用函数名f,导函数f’名为f1,迭代函数名为g,假设函数f和f’已有定义,编写出迭代函数g(x),精度小于10-5。
floatg(floatx)
{floatxi;
do
{xi=x-f(x)/f1(x);
x=xi;
}while(fabs(f(x))>
=1e-5);
returnx;
4.本程序的主程序为:
{intb[]={24,12,14,32,22,34};
%d\n"
f(b,6));
其中调用函数f,该函数有二个参数,依次为整型数组a和整型数n,函数的返回值是数组的a[0]到a[n-1]中的最大值。
试写出函数f。
要求循环结构需用for控制结构。
intf(inta[],intn)
{inti,max=-32768;
if(a[i]>
max)
max=a[i];
returnmax;
5.设有3名学生成绩存在如下的数组中:
:
intscore[3][4]={{65,57,70,60},{90,87,50,81},{90,65,100,98}}
编程输出有成绩低于60分的某学生所有成绩(按C语言的规则,允许第0行)。
{voidsearch(float(*p)[4],intn);
floatscore[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}};
search(score,3);
voidsearch(float(*p)[4],intn)
{inti,j,flag;
for(j=0;
{flag=0;
4;
if(*(*(p+j)+i)<
60)flag=1;
if(flag==1)
{printf("
No.%dfails,hisscoresare:
\n"
j+1);
for(i=0;
printf("
%6.1f"
*(*(p+j)+i));
6.编写完整的程序,用公式
计算e的近似值,直到某项小于10-7为止。
{doublee=1.0,u=1.0;
intn=1;
while(u>
=1.0e-7)
{u=u/n;
e=e+u;
n=n+1;
printf(“e=%8.6f\n”,e);
7.定义一个带参数的宏,其功能是求一个数的绝对值。
#defineABSX(x)(x)<
0?
–1*(x):
(x)
8.求出1—1000之间“水仙花数”。
要求的水仙花数是个三位数,它的各位数字之和等于该数本身,例如:
153=13+53+53,所以153是个水仙花数。
#include<
math.h>
{inti,j,k,num;
for(i=1;
i<
=9;
i++)
j<
j++)
for(k=0;
k<
k++)
{num=pow(i,3)+pow(j,3)+pow(k,3);
if(num==i*100+j*10+k)
%5d"
num);
9.应用递归算法求某数a的平方根。
求平方根的迭代公式如下:
=
stdio.h>
doublefun(doublea,doublex0)
{doublex1,y;
x1=(x0+a/x0)/2.0;
if(fabs(x1-x0)>
=1e-5)
y=fun(a,x1);
else
y=x1;
returny;
{doublex;
Enterx:
"
%lf"
x);
Thesquarerootof%lfis%lf\n"
x,fun(x,1.0));
10.将十进制正整数m转换成k(2<
=k<
=9)进制数,并按位输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制的表示是1000)。
voidfun(intm,intk)
{intaa[20],i;
m;
{aa[i]=m%k;
m/=k;
for(;
i;
i--)
%d"
aa[i-1]);
{intb,n;
clrscr();
Pleaseenteranumberandabase:
n,&
b);
fun(n,b);
11.求s=aa…aa-aaa…-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)。
例如,若a=3,n=6,则以上表达式为s=333333-33333-3333-333-33-3,其值是:
296298。
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
longfun(inta,intn)
{intj;
longs=0,t=0;
t=t*10+a;
s=t;
for(j=1;
{t=t/10;
s=s-t;
returns;
{inta,n;
\nPleaseenteraandn:
a,&
n);
Thevalueoffunctionis:
%ld\n"
fun(a,n));
12.编写函数fun的功能是:
从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
例如,当s中的数为7654321时,t中的数为642。
voidfun(longs,long*t)
{longs1=10;
s/=10;
*t=s%10;
while(s>
0)
{s=s/100;
*t=s%10*s1+*t;
s1=s1*10;
{longs,t;
\nPleases:
%ld"
s);
fun(s,&
t);
Theresultis:
t);