高考C语言题库.docx
《高考C语言题库.docx》由会员分享,可在线阅读,更多相关《高考C语言题库.docx(143页珍藏版)》请在冰点文库上搜索。
高考C语言题库
1电子工业出版社
1.1教材
第5章控制结构程序设计
例5.1用if语句编写比较a和b两个数的大小,且把大者赋给l
main()
{
inta,b,l;
scanf("%d%d",&a,&b);
if(a>b)l=a;
elsel=b;
printf("l=%d\n",l);
}
例5.2编写比较a,b两个数的大小,且把大者赋给x,小者赋给y
main()
{
inta,b,x,y;
scanf("%d%d",&a,&b);
if(a>b){x=a;y=b;}
else{x=b;y=a;}
printf("x=%dy=%d",x,y);
}
例5.3编写一程序,根据学生的考分来划分成绩的优、良、及格和不及格。
优、良、及格、不及格,我们分别用5、4、3、2四个等级来表示,且按如下规定划分:
分数等级
100~905
89~754
74~603
59~02
main()
{
intscore,snum;
chargrade;
scanf("%d,%d",&snum,&score);
if(score>89)grade='5';
elseif(score>74)grade='4';
elseif(score>59)grade='3';
elsegrade='2';
printf("%d:
%c\n"snum,grade);
}
例5.4编写一程序,把三个整数中最大的打印出来
main()
{
inta,b,c,m;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
if(a>c)m=a;
}
else
{
if(b>c)m=b;
elsem=c;
}
printf("m=%d",m);
}
例5.5编一程序,打印某年某月的天数
main()
{
inty,m,length;
scanf("%d%d",&y,&m);
switch(m)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
length=31;break;
case4:
case6:
case9:
case11:
length=30;break;
case2:
if((y%4==0&&y%100!
=0)||y%400==0)length=28;
elselength=29;break;
default:
printf("error,pleaseagain\n");
}
printf("Thelengthof%d%dis%d\n",y,m,length);
}
}
例5.6要求程序运行时在屏幕上显示出下面的菜单:
1.加法练习
2.减法练习
3.乘法练习
4.除法练习
5.退出
如果按“1”健,则显示出一道加法练习题,
并判断输入的运算结果是否正确;
如果按“2”健,则显示出一道减法练习题···;
以此类推,按“5”健时,结束程序的运行。
#include
main()
{
charchoice;
intnum;
printf("\n\n\n");
printf("\t\t1.加法练习\n");
printf("\t\t2.减法练习\n");
printf("\t\t3.乘法练习\n");
printf("\t\t4.除法练习\n");
printf("\t\t5.退出\n");
printf("\n请选择(12345)");
choice=getch();
switch(choice)
{
case'1':
printf("\n\n10+27=");
scanf("%d",&num);
if(num==10+27)puts("正确!
");
elseputs("错误!
");
break;
case'2':
printf("\n\n63-20=");
scanf("%d",&num);
if(num==63-20)puts("正确!
");
elseputs("错误!
");
break;
case'3':
printf("\n\n2*16=");
scanf("%d",&num);
if(num==2*16)puts("正确!
");
elseputs("错误!
");
break;
case'4':
printf("\n\n36/12=");
scanf("%d",&num);
if(num==2*16)puts("正确!
");
elseputs("错误!
");
break;
case'5':
break;
default:
printf("选择出错!
");
}
}
例5.7显示输出三角形99乘法表程序
#include
main()
{
inti,j;
for(i=1;i<=9;i++)
for(j=1;j<=i;j++)
{
printf("%d",i*j);
if(i==j)printf("\n");
}
}
5.8用循环控制分行输出count=10、count=20、count=30.
#include
main()
{
intcount;
for(count=1;count<=3;count++)
printf("count=%d\n",count*10);
}
5.9用近似公式e=1+1/1!
+1/2!
+···1/n!
求自然对数的底e的值,取n为10(n愈大愈接近e的真值),用一层循环实现:
#include
main()
{
intn;
floate,p;
e=p=1.0;
for(n=1;n<=10;n++)
{
p*=n;
e=e+1.0/p;
}
printf("e=%10.7f\n",e);
}
运行结果:
e=2.7182810
例5.10求3-100之间的所有素数,按每行4列输出
#include
main()
{
inti,m,k,j=0;
for(m=3;m<=100;m++)
{
k=0;
for(i=2;i<=m-1;i++)
if(m%i==0)
{
k=1;
break;
}
if(k==0)
{
printf("%3d",m);
j=j+1;
if(j%4==0)
printf("\n")
}
}
}
例5.11“当型”的循环结构程序
#include
main()
{
intcount=1;
while(count<=3)
printf("count=%d\n",count++*10);
}
5.12令i的初值为0,测试i是否小于5;若为真,则显示i的值;然后i的值递增1,再进行测试,直到i小于5不成立,显示:
停止循环.
#include
main()
{
inti=0;
while(i<5)
printf("%d\n",i++);
printf("停止循环。
\n");
}
5.13华氏温度F与摄氏温度C的关系是:
c=5/9*(F-32),如果已知F为-10,20,50,···,200,用C程序求出各华氏温度所对应的摄氏温度。
#include
main()
{
floatfa,ce;
fa=-10;
while(fa<=200)
{
ce=(5.0/9.0)*(fa-32.0);
printf("%4.0f%6.1f\n",fa,ce);
fa=fa+30;
}
}
例5.14从键盘依次输入学生的成绩,并进行计数、累加,当输入-1时,停止输入,进行输出学生的数量、总成绩和平均成绩。
#include
main()
{
intn=0;
floatt=0,x;
scanf("%f",&x);
while(x!
=-1)
{
n+=1;
t+=x;
scanf("%f",&x);
}
printf("n=%dt=%6.2fpj=%6.2f\n",n,t,t/n);
}
例5.15“直到型”的循环结构程序#include
main()
{
inti=0;
do
{
printf("%d\n",i++);
}while(i<5);
printf("停止循环\n");
}
例5.16使用while语句#include
main()
{
intx,y,z;
scanf("%d,%d",&x,&y);
while(x!
=0&&y!
=0)
{
z=x+y;
printf("z=%d\n",z);
scanf("%d,%d",&x,&y);
}
}
例5.17使用do-while语句
#include
main()
{
intx,y,z;
do
{
scanf("%d,%d",&x,&y);
z=x+y;
printf("z=%d\n",z);
}
while(x!
=0&&y!
=0);
}
例5.18求100以内(含100)偶数之和的C程序用while语句实现
#include
main()
{
intx,y;
x=y=0;
while(x<100)
{
++x;
++x;
y+=x;
}
printf("2+4+6+···+98+100=%d\n")
}
例5.19求100以内(含100)偶数之和的C程序用do-while语句实现#include
main()
{
intx,y;x=y=0;
do
{
++x;
++x;
y+=x;
}while(x<100)
printf("2+4+6+···+98+100=%d\n",y);
}
例5.20利用break跳转的程序
#include
main()
{
inti;
for(i=1;i<6;i++)
{
if(i==3)break;
}
printf("Inthebreakloop,inowis%d\n"i);
}
例5.21利用continue跳转的程序
#include
main()
{
inti;
for(i=1;i<6;i++)
{
if(i==3)continue;
printf("Inthecontinueloop,iisnow%d\n",i);
}
}
例5.22用goto语句构成循环求1到100的整数和
#include
main()
{
inti=1,sum=0;
loop:
sum=sum+i;
i++;
if(i<=100)gotoloop;
else
printf("1+2+3+···+100=%d",sum);
}
习题4.1.1计算球体体积
for循环
#include
main()
{
intr;
floatv;
for(r=1;r<=100;r+=2)
{
v=4/3*3.14*pow(r,3);
printf("r=%d,v=%f\n",r,v);
}
}
while循环
#include
main()
{
intr;
floatv;
r=1;
while(r<=100)
{
v=4/3*3.14*pow(r,3);
printf("r=%d,v=%f\n",r,v);
r+=2;
}
}
习题4.1.2s=13+23+33+···+103
for循环
main()
{
ints,i;
s=0;
for(i=13;i<=103;i+=10)s=s+i;
printf("s=%d\n",s);
}
while循环
main()
{
ints,i;
s=0;
i=13;
while(i<=103)
{
s+=i;
i+=10;
}
printf("s=%d\n",s);
}
习题4.2找出学生成绩中的最高分和最低分的程序.
main()
{
intmax,min,n;
printf("请输入成绩,-1结束:
");
scanf("%d",&n);
max=min=n;
while(n!
=-1)
{
if(n>max)max=n;
if(nscanf("%d",&n);
}
printf("最高分:
%d,最低分:
%d\n",max,min);
}
习题4.3输出“水仙花数”的程序.
#include
main()
{
intn,a,b,c;
for(n=100;n<=999;n++)
{
a=n/100;
b=n%10;
c=(n%100-b)/10;
if(pow(a,3)+pow(b,3)+pow(c,3)==n)printf("%d\n",n);
}
}
上机实习1.2验证2000年为闰年通过求余运算判断能否整除。
若a%b的值为0,则表明a能被b整除。
main()
{
intyear=2000,b;
b=(year%4==0&&year%100!
=0)||(year%400==0)
printf("%d\n",b);
}
上机实习2输出某月的天数
main()
{
intm,days;
printf("输入月份:
");scanf("%d",&m);
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
days=31;
elseif(m==4||m==6||m==9||m==11)
days=30;
else
days=29;
printf("%d月份有%d天\n",m,days);
}
上机实习3.2.输入一个百分制成绩,输出用A、B、C、D、E表示成绩的等级.已知90分以上为A,80至89分为B,70至79分为D,60分以下为E。
main()
{
intgrade;
printf("输入成绩:
");
scanf("%d",&grade);
grade=grade/10;
switch(grade)
{
case10:
case9:
printf("等级为A");break;
case8:
printf("等级为B");break;
case7:
printf("等级为C");break;
case6:
printf("等级为D");break;
default:
printf("等级为E");
}
}
上机实习3.3.输入一个实数后,屏幕上显示如下菜单:
1.输出相反数
2.输出平方数
3.输出平方根
4.退出
若按1键,则输出该数的相反数;若按2键,则输出该数的平方数;···。
按1~4之外的其他键时,显示出错。
#include
main()
{
floatn,c,sq,sqr;
inti;
while
(1)
{
printf("输入一个实数:
");
scanf("%f",&n);
printf("1.输出相反数\n2.输出平方数\n3.输出平方根\n4.退出");
scanf("%d",&i);
switch(i)
{
case1:
printf("相反数为:
%f\n",-n);break;
case2:
printf("平方数为:
%f\n",n*n);break;
case3:
printf("平方根为:
%f\n",sqrt(n));break;
case4:
exit(0);
default:
printf("输入错误!
\n");}
}
}
上机实习4.1.2打印直角三角形
打印如下图形:
*
**
***
*****
main()
{
inti,j;
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
printf("");
for(k=0;k
printf("*");
printf("\n");
}
}
上机实习4.2.输入一组学生成绩,统计出及格人数和不及格人数。
当输入成绩为-1时结束输入。
main()
{
intgrade,n1,n2;
n1=n2=0;
printf("输入一组学生成绩:
\n");
scanf("%d",&grade);
while()
{
if(grade>=60)n1++;
else;
scanf("%d",&grade);
}
printf("及格人数为:
%d\n不及格人数为:
%d",n1,n2);
}
上机实习4.3.输入10个学生成绩,要求统计出及格人数和不及格人数
main()
{
intgrade,n1,n2,i;
n1=n2=0;
for(i=1;i<=10;i++)
{
scanf("%d",&grade);
if(grade>=60)n1++;
elsen2++;
}
printf("及格人数为:
%d\n不及格人数为:
%d",n1.n2);
}
上机实习5.2.输入一组学生成绩,统计出及格人数和不及格人数。
当输入成绩为-1时结束输入
main()
{
intgrade,n1,n2;
n1=n2=0;
printf("输入一组学生成绩:
\n");
scanf("%d",&grade);
while()
{
if(grade>=60)n1++;
else;
scanf("%d",&grade);
}
printf("及格人数为:
%d\n不及格人数为:
%d",n1,n2);
}
上机实习5.3.打印出10行杨辉三角形
01234
01
111
2121
31331
414641
···
⑴main()
{
intl,c;
longintv;
clrscr();
for(l=1;l<=10;l++)
{v=1;
printf("%d",v);
for(c=2;c<=l;c++)
{v=v*((l-1)-(c-1)+1)/(c-1);
if(v<100)
if(v<10)
printf("%ld",v);
else
printf("%ld",v);
elseprintf("%ld",v);
}
printf("\n");
}
}
使用数组的方法
⑵main()
{
staticintm,n,b[10][10];
b[0][1]=1;
clrscr();
for(m=1;m<=10;m++)
{for(n=1;n<=m;n++)
{b[m][n]=b[m-1][n-1]+b[m-1][n];
printf("%-5d",b[m][n]);
}
printf("\n");
}
}
(3)
#defineN10
main()
{
inti,j,a[N][N];
for(i=0;i{
a[i][i]=1;
a[i][0]=1;
}
for(i=2;ifor(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i{for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
第6章数组
例6.2输入10个学生的成绩,求这10个学生的总成绩和平均成绩
#defineN10
main()
{
inti,score[N],sum=0;
floataverage;
printf("输入%d个学生的成绩:
\n",N);
for(i=0;iscanf("%d",&score[i]);
for(i=0;isum+=score[i];
average=(float)sum/N;
printf("总成绩为:
\n平均成绩为:
%d%.2f",sum,average);
}
例6.3分别输入5个学生的语文成绩、数学成绩和C语言成绩,求每个学生的总成绩和平均成绩
#defineN5
main()
{
intscore1[N],score2[N],score3[N],sum[N];
inti;
for(i=0;i{
printf("输入第%d个学生的三门成绩:
",i+1);
scanf("%d%d%d",&score1[i],&score2[i],&score3[i]);
sum[i]=score1[i]+score2[i]+score3[i];
}
for(i=0;i{
printf("第%d个学生的总成绩和平均成绩分别为:
%d%.2f\n"i+1,sum[i],sum[i]/3.0);
}
}
例6.4逆序输出数组中各元素的值
main()
{
inta[5]={10,13,2,16,3};
inti;
printf("数组a中各元素的值分别为:
");
for(i=0;i<5;i++)
printf("%5d",a[i]);
printf("\n");
printf("逆序输出的结果为:
");
for(i=4;i>=0;i--)
printf("%5d",a[i]);
}
例6.5输入一组整数,输出其中最大值
main()
{
intnum[10],i;
intmax;
printf("输入十个整数:
\n");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
max=num[0];
for(i=1;i<10;i++)
if(num[i]>max)max=num[i];
printf("最大值=%d\n",max);
}
例6.6用选择法对10个数排序(按从小到大的顺序)
main()
{
intnum[10],t;
inti,j;
printf("输入10个整数:
\n");
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(num[j]{
t=num[i];
num[i]=num[j];
num[j]=t;
}
printf("排序后的结果为:
\n");
for(i=0;i<10;i++)
printf("%d",num[i]);
}
例6.7二维数组的引用
main()
{
inta[3][4];
inti,j;
printf("输入二维数组中各元素的值");
for(i=0;i<3;i++)
for(j=0;j<4