C期末考试必须掌握的部分程序及清单1.docx
《C期末考试必须掌握的部分程序及清单1.docx》由会员分享,可在线阅读,更多相关《C期末考试必须掌握的部分程序及清单1.docx(10页珍藏版)》请在冰豆网上搜索。
![C期末考试必须掌握的部分程序及清单1.docx](https://file1.bdocx.com/fileroot1/2022-11/27/0471e5e7-0fc4-410d-bda4-847ccc6fd07a/0471e5e7-0fc4-410d-bda4-847ccc6fd07a1.gif)
C期末考试必须掌握的部分程序及清单1
C语言考试必须掌握的部分程序
请首先掌握本清单中前面最简单的程序,逐步增加掌握后面复杂程序。
最好是不用死记程序,而是掌握会编就行,尤其是前面简单程序。
由于上机考试可以调试运行程序,因此程序题目会比教材例题略难,具体是模拟试卷中一般难度(指针内容很少),请参考《C语言复习》PPT后面程序部分及模拟试卷。
分支=========================================
输入三个整数x,y,z,把这三个数由小到大输出。
main()
{intx,y,z,t;
if(x>y){【?
】}//t=x;x=y;y=t;
if(x>z){【?
】}//t=x;x=z;z=t;
if(y>z){【?
】}//t=y;y=z;z=t;
printf("smalltobig:
%d%d%d\n",x,y,z);
}
判断闰年,教材P4.8程序3
#include
intmain()
{
intyear,leap;//leap为1则闰年,为0则不是。
printf("enteryear:
");
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||(year%400==0))
leap=1;
else
leap=0;
if(leap)
printf("%dis",year);
else
printf("%disnot",year);
printf("aleapyear.\n");
return0;
}
求一元二次方程的解,教材P108例4.9
#include
#include
intmain()
{
doublea,b,c,disc,x1,x2,realpart,imagpart;
scanf("%lf,%lf,%lf",&a,&b,&c);
printf("Theequation");
if(fabs(a)<=1e-6)
printf("isnotaquadratic\n");
else
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("hastwoequalroots:
%8.4f\n",-b/(2*a));
else
if(disc>1e-6)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("hasdistinctrealroots:
%8.4fand%8.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("hascomplexroots:
\n");
printf("%8.4f+%8.4fi\n",realpart,imagpart);
printf("%8.4f-%8.4fi\n",realpart,imagpart);
}
}
return0;
}
循环=========================================
输入n,输出1~n之间能被3整除的数,每行一个。
#include
Voidmain()
{inti,n;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
if(i%3==0)printf(“%d\n”,i);
}
输入n,求1~n的累加和,并输出。
#include
voidmain()
{
inti,n,sum=0;
scanf(“%n”,&n);
for(i=1;i<=n;i++)
sum=sum+i;
printf(“sum=%d\n”,sum);
}
输出菲波纳契数列前20个数,每行4个(教材例5.8P135程序)。
#include
intmain()
{intf1=1,f2=1;
inti;
for(i=1;i<=20;i++)
{printf("%12d%12d",f1,f2);
if(i%2==0)printf("\n");
f1=f1+f2;
f2=f2+f1;
}
return0;
}
求两个数的最大公约数、最小公倍数(教材P140第3题,程序见学习辅导;函数)
#include
main()
{
intm,n,r,p,gcd,lcm;
scanf("%d%d",&m,&n);
if(mp=m*n;
r=m%n;
while(【?
】)//r!
=0
{m=n;n=r;【?
】;}//r=m%n
gcd=【?
】;//n
lcm=p/gcd;
printf("gcd=%d,lcm=%d\n",【?
】);//gcd,lcm
}
主函数中输入一个整数n,判断是否素数,并输出。
(教材P137例子5.9)
#include
#include
intmain()
{intn,i,k;
printf("pleaseenteraintegernumber:
n=?
");
scanf("%d",&n);
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i<=k)printf("%disnotaprimenumber.\n",n);
elseprintf("%disaprimenumber.\n",n);
}
主函数中,输出100~200间的全部素数(教材p137例5.10)。
#include
#include
intmain()
{intn,k,i,m=0;
for(n=101;n<=200;n=n+2)
{k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>=k+1)
{printf("%d",n);
m=m+1;
}
if(m%10==0)printf("\n");
}
printf("\n");
return0;
}
判断素数的函数,对参数判断是否素数,若是素数返回1,否则返回0。
#include
intprime(intn)
{inti,k;
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)return0;
return1;
}
译密码,将键盘输入字母按规律转换成密码(P138例子5.11改进的程序)。
#include
intmain()
{charc;
while((c=getchar())!
='\n')
{if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
{c=c+4;
if(c>='Z'&&c<='Z'+4||c>'z')
c=c-26;
}
printf("%c",c);
}
printf("\n");
return0;
}
输出所有水仙花数,每行一个(教材P140第8题,程序见学习辅导;水仙花函数)
#include
intmain()
{inti,a,b,c;
for(i=100;i<1000;i++)
{a=i%10;
b=i/10%10;
c=i/100;
if(i=a*a*a+b*b*b+c*c*c)
printf(“%d\n”,i);
}
return0;
}
输出9×9乘法表
#include
main()
{inti,j,result;
printf("\n");
for(i=1;【?
】;i++)//填i<10
{for(j=1;j<10;【?
】)//j++
{result=i*j;
printf("%d*%d=%-3d",i,j,【?
】);//result
}
printf("\n");
}
}
数组=========================================
将一维整型20个元素的数组a元素按五个一行输出(参见教材P146例6.2);
求一维整型数组a的元素累加和
#include
voidmain()
{inta[10],i;
for(i=0;i<10;i++)//输入10个整数
scanf(“%d”,&a[i]);
sum=0;
for(i=0;i<10;i++)//求和
sum=sum+a[i];
for(i=0;i<10;i++)//输出10个元素,每个数占4位,总共占一行
printf(“%4d”,a[i]);
printf(“\n”);
printf(“sum=%d\n”,sum);//输出累加和
}
求一维整型数组a的元素中的最大值
#include
voidmain()
{inta[10],i,max;
for(i=0;i<10;i++)//输入10个整数
scanf(“%d”,&a[i]);
for(i=0;i<10;i++)//求和
sum=sum+a[i];
for(i=0;i<10;i++)//输出10个元素,每个数占4位,总共占一行
printf(“%4d”,a[i]);
printf(“\n”);
printf(“sum=%d\n”,sum);//输出累加和
}
对一维整型数组a的元素按升序排序(冒泡法见教材P148、选择法见P168第2题)
将二维数组行列互换(教材P152例子6.4)
求二维数组的最大值及其行号列号(教材P153例子6.5)
输出二维数组元素
输入一行字符,统计其中的单词个数(教材P165例子6.8)
找出二维数组中的鞍点(教材P169第8题)
一维数组中折半查找(见教材P169第9题)
函数===========================================
求两个整数参数m,n的最大公约数函数(教材P218第1题)
intgcd(intm,intn)
{intp,r;
if(mp=m*n;
r=m%n;
while(r!
=0)
{m=n;n=r;r=m%n;}
returnn;
}
判断素数函数(教材P218第3题)
#include
intprime(intn)
{inti,k;
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)return0;
return1;
}
判断水仙花数函数
intdaf(intn)
{inta,b,c;
a=n/100;
b=n/10%10;
c=n%10;
if(n==a*a*a+b*b*b+c*c*c)return1;
elsereturn0;
}
将一维int数组元素反序
voidinvert(inta[],intn)//两个参数,a是字符数组,n是数组长度。
{inti,t;
for(i=0;i{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
将一维字符数组中字符串反序(教材P218第5题)
#include”string.h”
voidinvert(chars[])
{
inti,n=strlen(s);//strlen为求字符串长度的函数
for(i=0;i{t=s[i];s[i]=s[n-1-i];s[n-1-i]=t;}
}
选择法排序函数(教材P196例子7.12)
voidsort(inta[],intn)
{inti,j,k,t;
for(i=0;i{k=i;
for(j=i+1;jif(a[j]t=a[k];a[k]=a[i];a[i]=t;
}
}
递归函数求n!
(教材P187例子7.7)
intfac(intn)
{intf;
if(n<0)
printf("n<0,dataerror!
");
elseif(n==0||n==1)
f=1;//数学规定0!
和1!
都是1
else
f=fac(n-1)*n;
returnf;
}