C语言程序设计期末复习资料2013版(5)

2020-05-05 13:43

}

28.编写函数mystrcpy(char*s1,char*s2),其功能与库函数strcpy( )的功能相同。

代码如下:

void newstrcpy(char *s1,char *s2) {

while(*s2)

{*s1=*s2;s1++;s2++;} *s1='\\0'; }

main()

{char a[100],b[100]; gets(a);gets(b); newstrcpy(a,b); puts(a); }

29.编写函数mystrcmp(char*s1,char*s2),其功能与库函数strcmp( )的功能相同。

代码如下:

int newstrcmp(char *s1,char *s2) {

int result;

while(*s1==*s2&&*s1) {s1++;s2++;} result=*s1-*s2; return result;} main()

{char a[100],b[100]; gets(a);gets(b);

printf(\

30.有一函数:

x x<1

Y={2x-1 1≤x<10 3x-11 x≥10 # include \main()

{ float x,y; scanf(\if (x<1) y=x;

if (x>=1&&x<10) y=2*x-1; if(x>=10)y=3*x-11;

printf(\31.求1!+2!+3!+......20! # include \main()

{ int n;double s,t;/*尽管结果实际是整型数,但受表达范围的限制, 应该将其定

义为双精度实型数*/ s=0;t=1.0;

for (n=1;n<=20;n++){t=t*n;s=s+t;/*此两句可谓妙也!在求下一项之时,利用前一项

已经有之结果*/}

printf(\}

32.用牛顿迭代方法求方程2X^3+4X^2+3X-6的根。 # include \# include \main()

{ float f1,f2,x1,x2;/*f1为原函数之值,f2为导函数之值*/ scanf(\

f1=2*x1*x1*x1-4*x1*x1+3*x1-6;

f2=6*x1*x1-8*x1+3;/*分别求出原函数和导函数之值*/

x2=x1-f1/f2;/*此为利用前一次近似值求下一个近似值的叠代公式,初始近似值

是任选的,从键盘输入*/ while (fabs(x2-x1)>=1e-5)/*如果相邻两次近似值之差不小于0.00001,则继续 叠代*/

{x1=x2;f1=2*x1*x1*x1-4*x1*x1+3*x1-6;

f2=6*x1*x1-8*x1+3;x2=x1-f1/f2;}/*脱离循环时即是满足精度要求的时候*/ printf(\输出之*/}

33.用Xn+1=(Xn+a/Xn)/2求a^(1/2)。 # include \# include \main()

{ float x,y0,y1,y2; scanf(\y1=(y0+x/y0)/2;

while (fabs(y1-y0)>=1e-5) {y0=y1;y1=(y0+x/y0)/2;} printf(\}

34.求分数序列2/1,3/2,5/3,8/5,13/8??前20项之和。

# include \main()

{float k,i,j,item;float s,t;

s=0;k=1;i=1;j=2;/*s用于累加,k用于记项数,i为每一项的分母,j为每项的分子*/

while (k<=20)

{t=j/i;s=s+t;item=i;i=j;j=item+j;k++;}/*用t=j/i求出每一项,而后累加到s 中

去.注意序列的规律:从第二项开始,每一项的分母是前一项的分子,每一项的分子是

前一项的分子与分母之和.故用i=j为下一项准备分母,j=item+j 为下一项准备分子.

item的作用是先把i原值保存起来.如果没有此项,而写成:i=j;j=i+j是否可行呢?请读者自己思考之*/ printf(\}

将一个数组中的值按逆序存放。 # include \ main()

{ int a[10],b[10];/*数组b为数组a的逆序存放*/ int i,j,k,t;

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

scanf(\输入数组a*/ for (i=0;i<=9;i++)

printf(\输出数组a*/ printf(\

for (i=0;i<=9;i++) b[9-i]=a[i];/*把数组a逆序放入数组b中*/ for (i=0;i<=9;i++)

printf(\输出数组b*/ printf(\}

35.打印出下列杨辉三角形。 1

1 1

1 2 1

1 3 3 1 ??

# include \main()

{ int m,n,c;

for (m=0;m<10;m++)/*m代表行数,m=0代表第0行,共10行*/ { c=1;printf(\输出每行第一个元素1,占4列宽*/

for (n=1;n<=m;n++)/*每一行的元素个数为m+1个,已经输出了一个*/

{c=c*(m-n+1)/n;printf(\利用公式计算新的元素,并输出之, 输出

每个元素均占4列宽度*/

printf(\

36.求两个数的最大公约和最小公倍(使用函数) int maxgongyue(a,b) int a,b;

{ int i,maxgong,min;

if (a>b) min=b;else min=a; for (i=1;i<=min;i++)

if (a%i==0&&b%i==0) maxgong=i; return(maxgong);} int mingongbei(a,b) int a,b;

{ int i,mingongbei,max,c; c=a*b;

if(a>b) max=a;else max=b; for (i=c;i>=max;i--)

if (i%a==0&&i%b==0) mingongbei=i; return(mingongbei);} main() {int x,y;

int maxgongyue1,mingongbei1; scanf(\

maxgongyue1=maxgongyue(x,y); mingongbei1=mingongbei(x,y);

printf(\}

37.写一个判数是否素数和程序。 # include \

extern int prime(x)/*定义判断一个数x是否是素数的函数*/ int x;

{int k,flag;/*flag为是否为素数的标志*/

flag=1;for (k=2;k

某一步除尽了,则flag变为0,说明x不是素数*/ if(x%k==0) flag=0; else continue; return(flag); }

定义一个带参数的宏,使两个参数的值互换。

# define swap(a,b) t=a;a=b;b=t/*宏定义:swap(a,b)代表t=a;a=b;b=t;*/ main()

{ int a,b,t;

printf(\scanf(\输入两数*/ swap(a,b);/*相当于t=a;a=b;b=t*/

printf(\输出结果*/ }

38.输入两个整数,求它们相除时的余数。

# define surplus(a,b) ((a)%(b))/*宏定义,surplus(a,b)代表两个表达式作求余

运算.之所以用((a)%(b)),乃因替换时可以有表达式的情况*/ main()

{ int a,b;printf(\scanf(\输入两数*/

printf(\输出结果*/ }

39.用宏定义求从三个数中找最大数

# include \自己撰写的文件*/

# define max(a,b) ((a)>(b)?(a):(b))/*宏定义:max(a,b)展开后为 ((a)>(b)?(a):(b)),即求a和b中较大者*/ main() {

int a,b,c;

scanf(\输入三个十进制整数*/

digit(max(max(a,b),c));}/*(max(max(a,b),c))为宏调用,即为a,b,c中最大数,此句是按整数十进制格式输入最大数*/ 40.排序问题

41.挑满足条件的数(最大、最小、能被某一数整除等等) 42.两全矩阵相加 43.两个矩阵相乘

**关于程序设计之典型问题 1.排序问题 2.穷举法 3.叠代法 4.递归

5.分段函数的计算

6.把程序结果保存到文件中


C语言程序设计期末复习资料2013版(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:试卷A答案与解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: