C语言复习资料.docx

上传人:b****5 文档编号:8478574 上传时间: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

C语言复习资料

C语言复习资料

1简单的算术运算和表达式

例3.7强制类型转换:

#include

main()

{

intm=5;

printf("m/2=%d\n",m/2);

printf("(float)(m/2)=%f\n",(float)(m/2;

printf("(float)m/2=%f\n",(float)m/2);

printf("m=%d\n",m);

}

2选择控制结构

例5.4多分支控制的条件语句:

从键盘任意输入a,b,c的值,编程并计算一元二次方程ax2+bx+c=的根(分a=0,Δ>,=,<0讨论)

#include

#include

#include

#defineEPS1e-6

main()

{

floata,b,c,disc,p,q;

printf("Pleaseenterthecoefficientsa,b,c:

");

scanf("%f,%f,%f",&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时,输出两相等实根*/

{

printf("x1=x2=%.2f\n",p);

}

else

{

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

{

printf("x1=%.2f,x2=%.2f\n",p+q,p-q);

}

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

{

printf("x1=%.2f+%.2fi,",p,q);

printf("x2=%.2f-%.2fi\n",p,q);

}

}

return0;

}

3循环控制结构

例6.1三种循环语句:

前n项和的计算

①#include

main()

{

inti,n,sum;

printf("Inputn:

");

scanf("%d",&n);

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

for(i=1;i<=n;i++)

{

sum=sum+i;/*做累加运算*/

}

printf("sum=%d\n",sum);

}

②#include

main()

{

inti,n,sum;

printf("Inputn:

");

scanf("%d",&n);

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

i=1;

while(i<=n)

{

sum=sum+i;/*做累加运算*/

i++;/*累加计数器加1*/

}

printf("sum=%d\n",sum);

}

③#include

main()

{

inti,n,sum;

printf("Inputn:

");

scanf("%d",&n);

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

i=1;

do{

sum=sum+i;/*做累加运算*/

i++;/*累加计数器加1*/

}while(i<=n);

printf("sum=%d\n",sum);

}

例6.4嵌套循环:

前n项阶乘之和

#include

main()

{

inti,j,n;

longp,sum=0;/*累加求和变量sum初始化为0*/

printf("Inputn:

");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

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

for(j=1;j<=i;j++)

{

p=p*j;/*累乘求积*/

}

sum=sum+p;/*累加求和*/

}

printf("1!

+2!

+…+%d!

=%ld\n",n,sum);

}

例6.10猜数游戏最终版:

#include

#include

#include

main()

{

intmagic,guess,counter=0,ret;

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

srand(time(NULL));

do{

magic=rand()%100+1;

do{

printf("Pleaseguessamagicnumber:

");

ret=scanf("%d",&guess);

while(ret!

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

{

while(getchar()!

='\n');/*清除输入缓冲区中的非法字符*/

printf("Pleaseguessamagicnumber:

");

ret=scanf("%d",&guess);

}

counter++;

if(guess>magic)

printf("Wrong!

Toobig!

\n");

elseif(guess

printf("Wrong!

Toosmall!

\n");

else

printf("Right!

\n");

}while(guess!

=magic&&counter<10);/*猜不对且未超10次继续猜*/

printf("counter=%d\n",counter);

printf("Doyouwanttocontinue(Y/Nory/n)?

");/*提示是否继续*/

scanf("%c",&reply);/*%c前有一个空格*/

}while(reply=='Y'||reply=='y');/*输入Y或y则程序继续*/

}

4函数

例7.4函数调用复用:

组合数的计算

#include

unsignedlongFact(unsignedintn);

intmain()

{

intm,k;

unsignedlongp;

do{

printf("Inputm,k(m>=k>0):

");

scanf("%d,%d",&m,&k);

}while(m

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

printf("p=%lu\n",p);

return0;

}

/*函数功能:

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

unsignedlongFact(unsignedintn)

{

unsignedinti;

unsignedlongresult=1;

for(i=2;i<=n;i++)

result*=i;

returnresult;

}

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

Fibonacci(斐波那契)数列

#include

longFib(inta);

intmain()

{

intn,i,x;

printf("Inputn:

");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

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

printf("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人,具体人数由键盘输入),试编程计算其平均分

#include

#defineN40

intAverage(intscore[],intn);/*Average()函数原型*/

voidReadScore(intscore[],intn);/*ReadScore()函数原型*/

intmain()

{

intscore[N],aver,n;

printf("Inputn:

");

scanf("%d",&n);

ReadScore(score,n);/*数组名作为函数实参调用函数ReadScore()*/

aver=Average(score,n);/*数组名作为函数实参调用函数Average()*/

printf("Averagescoreis%d\n",aver);

return0;

}

/*函数功能:

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

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

{

inti,sum=0;

for(i=0;i

{

sum+=score[i];

}

returnsum/n;

}

/*函数功能:

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

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

{

inti;

printf("Inputscore:

");

for(i=0;i

{

scanf("%d",&score[i]);

}

}

例8.8交换法排序:

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

用函数编程实现排序功能

#include

#defineN40

intReadScore(intscore[]);/*ReadScore()函数原型*/

voidDataSort(intscore[],intn);/*DataSort()原函数型*/

voidPrintScore(intscore[],intn);/*PrintScore()函数原型*/

intmain()

{

intscore[N],n;

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

printf("Totalstudentsare%d\n",n);

DataSort(score,n);/*调用函数DataSort()进行成绩排序*/

printf("Sortedscores:

");

PrintScore(score,n);/*调用函数Printscore()输出成绩排序结果*/

return0;

}

/*函数功能:

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

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

{

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

do{

i++;

printf("Inputscore:

");

scanf("%d",&score[i]);

}while(score[i]>=0);/*输入负值时结束成绩输入*/

returni;/*返回学生人数*/

}

/*函数功能:

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

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

{

inti,j,temp;

for(i=0;i

{

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()函数定义*/

{

inti;

for(i=0;i

{

printf("%4d",score[i]);

}

printf("\n");

}

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

#include

#defineN40

intReadScore(intscore[]);/*ReadScore()函数原型*/

voidDataSort(intscore[],intn);/*DataSort()原函数型*/

voidPrintScore(intscore[],intn);/*PrintScore()函数原型*/

intmain()

{

intscore[N],n;

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

printf("Totalstudentsare%d\n",n);

DataSort(score,n);/*调用函数DataSort()进行成绩排序*/

printf("Sortedscores:

");

PrintScore(score,n);/*调用函数Printscore()输出成绩排序结果*/

return0;

}

/*函数功能:

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

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

{

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

do{

i++;

printf("Inputscore:

");

scanf("%d",&score[i]);

}while(score[i]>=0);/*输入负值时结束成绩输入*/

returni;/*返回学生人数*/

}

/*函数功能:

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

voidDataSort(intscore[],intn)

{

inti,j,k,temp;

for(i=0;i

{

k=i;

for(j=i+1;j

{

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

{

k=j;/*记录最大数下标位置*/

}

}

if(k!

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

{

temp=score[k];

score[k]=score[i];

score[i]=temp;

}

}

}

/*函数功能:

打印学生成绩*/

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

{

inti;

for(i=0;i

{

printf("%4d",score[i]);

}

printf("\n");

}

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

#include

#defineN40

intReadScore(intscore[],longnum[]);/*ReadScore()函数原型*/

voidDataSort(intscore[],longnum[],intn);/*DataSort()原函数型*/

voidPrintScore(intscore[],longnum[],intn);/*PrintScore()函数原型*/

intmain()

{

intscore[N],n;

longnum[N];

n=ReadScore(score,num);/*输入成绩和学号,返回学生总数*/

printf("Totalstudentsare%d\n",n);

DataSort(score,num,n);/*成绩排序*/

printf("Sortedscores:

\n");

PrintScore(score,num,n);/*输出成绩排序结果*/

return0;

}

/*函数功能:

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

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

{

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

do{

i++;

printf("Inputstudent'sIDandscore:

");

scanf("%ld%d",&num[i],&score[i]);/*以长整型格式输入学号*/

}while(num[i]>0&&score[i]>=0);/*输入负值时结束成绩输入*/

returni;/*返回学生总数*/

}

/*函数功能:

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

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

{

inti,j,k,temp1;

longtemp2;

for(i=0;i

{

k=i;

for(j=i+1;j

{

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

{

k=j;/*记录最大数下标位置*/

}

}

if(k!

=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()函数定义*/

{

inti;

for(i=0;i

{

printf("%10ld%4d\n",num[i],score[i]);/*以长整型格式打印学号*/

}

}

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

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

#include

#defineN40

intReadScore(intscore[],longnum[]);/*ReadScore()函数原型*/

voidDataSort(intscore[],longnum[],intn);/*DataSort()原函数型*/

voidPrintScore(intscore[],longnum[],intn);/*PrintScore()函数原型*/

intmain()

{

intscore[N],n;

longnum[N];

n=ReadScore(score,num);/*输入成绩和学号,返回学生总数*/

printf("Totalstudentsare%d\n",n);

DataSort(score,num,n);/*成绩排序*/

printf("Sortedscores:

\n");

PrintScore(score,num,n);/*输出成绩排序结果*/

return0;

}

/*函数功能:

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

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

{

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

do{

i++;

printf("Inputstudent'sIDandscore:

");

scanf("%ld%d",&num[i],&score[i]);/*以长整型格式输入学号*/

}while(num[i]>0&&score[i]>=0);/*输入负值时结束

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

当前位置:首页 > 初中教育

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

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