C语言复习资料文档格式.docx

上传人:b****5 文档编号:21614811 上传时间:2023-01-31 格式:DOCX 页数:29 大小:23.02KB
下载 相关 举报
C语言复习资料文档格式.docx_第1页
第1页 / 共29页
C语言复习资料文档格式.docx_第2页
第2页 / 共29页
C语言复习资料文档格式.docx_第3页
第3页 / 共29页
C语言复习资料文档格式.docx_第4页
第4页 / 共29页
C语言复习资料文档格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言复习资料文档格式.docx

《C语言复习资料文档格式.docx》由会员分享,可在线阅读,更多相关《C语言复习资料文档格式.docx(29页珍藏版)》请在冰豆网上搜索。

C语言复习资料文档格式.docx

,&

a,&

b,&

c);

if(fabs(a)<

=EPS)/*a=0时,输出"

不是二次方程"

*/

{

printf("

Itisnotaquadraticequation!

\n"

exit(0);

}

disc=b*b-4*a*c;

/*计算判别式*/

p=-b/(2*a);

q=sqrt(fabs(disc))/(2*a);

if(fabs(disc)<

=EPS)/*判别式等于0时,输出两相等实根*/

x1=x2=%.2f\n"

p);

else

{

if(disc>

EPS)/*判别式大于0时,输出两不等实根*/

{

printf("

x1=%.2f,x2=%.2f\n"

p+q,p-q);

}

else/*判别式小于0时,输出两共轭复根*/

x1=%.2f+%.2fi,"

p,q);

x2=%.2f-%.2fi\n"

return0;

3循环控制结构

例6.1三种循环语句:

前n项和的计算

①#include<

inti,n,sum;

Inputn:

%d"

n);

sum=0;

/*累加和变量初始化为0*/

for(i=1;

i<

=n;

i++)

sum=sum+i;

/*做累加运算*/

}

sum=%d\n"

sum);

②#include<

i=1;

while(i<

=n)

i++;

/*累加计数器加1*/

③#include<

/*累加求和变量初始化为0*/

do{

}while(i<

=n);

例6.4嵌套循环:

前n项阶乘之和

inti,j,n;

longp,sum=0;

/*累加求和变量sum初始化为0*/

p=1;

/*每次循环之前都要将累乘求积变量p赋值为1*/

for(j=1;

j<

=i;

j++)

p=p*j;

/*累乘求积*/

sum=sum+p;

/*累加求和*/

1!

+2!

+…+%d!

=%ld\n"

n,sum);

例6.10猜数游戏最终版:

time.h>

intmagic,guess,counter=0,ret;

charreply;

/*保存用户输入的回答*/

srand(time(NULL));

magic=rand()%100+1;

do{

Pleaseguessamagicnumber:

ret=scanf("

guess);

while(ret!

=1)/*若存在输入错误,则重新输入*/

{

while(getchar()!

='

\n'

/*清除输入缓冲区中的非法字符*/

printf("

ret=scanf("

}

counter++;

if(guess>

magic)

Wrong!

Toobig!

elseif(guess<

Toosmall!

else

Right!

}while(guess!

=magic&

&

counter<

10);

/*猜不对且未超10次继续猜*/

counter=%d\n"

counter);

Doyouwanttocontinue(Y/Nory/n)?

/*提示是否继续*/

scanf("

%c"

reply);

/*%c前有一个空格*/

}while(reply=='

Y'

||reply=='

y'

/*输入Y或y则程序继续*/

4函数

例7.4函数调用复用:

组合数的计算

unsignedlongFact(unsignedintn);

intmain()

intm,k;

unsignedlongp;

Inputm,k(m>

=k>

0):

%d,%d"

m,&

k);

}while(m<

k||m<

=0||k<

0);

p=Fact(m)/(Fact(k)*Fact(m-k));

p=%lu\n"

/*函数功能:

用迭代法计算无符号整型变量n的阶乘*/

unsignedlongFact(unsignedintn)

unsignedinti;

unsignedlongresult=1;

for(i=2;

i++)

result*=i;

returnresult;

例7.6函数的递归调用和递归函数:

Fibonacci(斐波那契)数列

longFib(inta);

intn,i,x;

&

x=Fib(i);

/*调用递归函数Fib()计算Fibonacci数列的第n项*/

Fib(%d)=%d\n"

i,x);

return0;

用递归法计算Fibonacci数列中的第n项的值*/

longFib(intn)

if(n==0)return0;

/*基线情况*/

elseif(n==1)return1;

elsereturn(Fib(n-1)+Fib(n-2));

/*一般情况*/

5数组

例8.5向函数传递一维数组:

从键盘输入某班学生某门课的成绩(已知每班人数最多不超过40人,具体人数由键盘输入),试编程计算其平均分

#defineN40

intAverage(intscore[],intn);

/*Average()函数原型*/

voidReadScore(intscore[],intn);

/*ReadScore()函数原型*/

intscore[N],aver,n;

ReadScore(score,n);

/*数组名作为函数实参调用函数ReadScore()*/

aver=Average(score,n);

/*数组名作为函数实参调用函数Average()*/

Averagescoreis%d\n"

aver);

计算n个学生成绩的平均分*/

intAverage(intscore[],intn)/*Average()函数定义*/

inti,sum=0;

for(i=0;

n;

sum+=score[i];

returnsum/n;

输入n个学生的某门课成绩*/

voidReadScore(intscore[],intn)/*ReadScore()函数定义*/

inti;

Inputscore:

score[i]);

例8.8交换法排序:

从键盘输入某班学生某门课的成绩(已知每班人数最多不超过40人),当输入为负值时,表示输入结束,试编程将分数按从高到低的顺序进行排序输出。

用函数编程实现排序功能

intReadScore(intscore[]);

voidDataSort(intscore[],intn);

/*DataSort()原函数型*/

voidPrintScore(intscore[],intn);

/*PrintScore()函数原型*/

intscore[N],n;

n=ReadScore(score);

/*调用函数ReadScore()输入成绩,返回学生人数*/

Totalstudentsare%d\n"

n);

DataSort(score,n);

/*调用函数DataSort()进行成绩排序*/

Sortedscores:

PrintScore(score,n);

/*调用函数Printscore()输出成绩排序结果*/

输入学生某门课的成绩,当输入负值时,结束输入,返回学生人数*/

intReadScore(intscore[])/*ReadScore()函数定义*/

inti=-1;

/*i初始化为-1,可保证循环体内i增1后数组下标从0开始*/

}while(score[i]>

=0);

/*输入负值时结束成绩输入*/

returni;

/*返回学生人数*/

按交换法将数组score的元素值元素按从高到低排序*/

voidDataSort(intscore[],intn)/*DataSort()函数定义*/

inti,j,temp;

n-1;

for(j=i+1;

j++)

if(score[j]>

score[i])/*按数组score的元素值从高到低排序*/

{

temp=score[j];

score[j]=score[i];

score[i]=temp;

}

打印学生成绩*/

voidPrintScore(intscore[],intn)/*PrintScore()函数定义*/

%4d"

score[i]);

例8.8选择法排序(题目同上)

按选择法将数组score的元素值元素按从高到低排序*/

voidDataSort(intscore[],intn)

inti,j,k,temp;

k=i;

score[k])/*按数组score的元素值从高到低排序*/

k=j;

/*记录最大数下标位置*/

}

if(k!

=i)/*若最大数所在的下标位置不在下标位置i*/

{

temp=score[k];

score[k]=score[i];

score[i]=temp;

例8.9在上题基础上同时输入学号并一同输出排序

intReadScore(intscore[],longnum[]);

/*ReadScore()函数原型*/

voidDataSort(intscore[],longnum[],intn);

/*DataSort()原函数型*/

voidPrintScore(intscore[],longnum[],intn);

/*PrintScore()函数原型*/

longnum[N];

n=ReadScore(score,num);

/*输入成绩和学号,返回学生总数*/

DataSort(score,num,n);

/*成绩排序*/

PrintScore(score,num,n);

/*输出成绩排序结果*/

输入学生的学号及其某门课成绩,当输入负值时,结束输入,返回学生人数*/

intReadScore(intscore[],longnum[])/*ReadScore()函数定义*/

Inputstudent'

sIDandscore:

%ld%d"

num[i],&

/*以长整型格式输入学号*/

}while(num[i]>

0&

score[i]>

/*返回学生总数*/

按选择法将数组score的元素值按从高到低排序*/

voidDataSort(intscore[],longnum[],intn)/*DataSort()函数定义*/

inti,j,k,temp1;

longtemp2;

=i)/*若最大数不在下标位置i*/

/*交换成绩*/

temp1=score[k];

score[k]=score[i];

score[i]=temp1;

/*交换学号*/

temp2=num[k];

num[k]=num[i];

num[i]=temp2;

打印学生学号和成绩*/

voidPrintScore(intscore[],longnum[],intn)/*PrintScore()函数定义*/

%10ld%4d\n"

num[i],score[i]);

/*以长整型格式打印学号*/

例8.10线性查找(或称顺序查找):

从键盘输入某班学生某门课的成绩(已知每班人数最多不超过40人),同时输入学生的学号,当输入为负值时,表示输入结束,试编程从键盘输入任意一个学号,查找该学生的成绩

/*输入负值时结束

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1