C语言复习资料.docx
- 文档编号:8478574
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:29
- 大小:23.02KB
C语言复习资料.docx
《C语言复习资料.docx》由会员分享,可在线阅读,更多相关《C语言复习资料.docx(29页珍藏版)》请在冰豆网上搜索。
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);/*输入负值时结束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习资料