IT认证历年计算机二级C程序设计试题总结.docx
《IT认证历年计算机二级C程序设计试题总结.docx》由会员分享,可在线阅读,更多相关《IT认证历年计算机二级C程序设计试题总结.docx(99页珍藏版)》请在冰豆网上搜索。
IT认证历年计算机二级C程序设计试题总结
1、求1+2+3+……….+100。
(循环)
#include
voidmain()
{
inti,sum=0;
for(i=1;i<=100;i++)
sum=sum+i;
printf("%d",sum);
}
2、求1*2*3*……….*10。
(循环)
voidmain()
{
inti=0,j=1;
for(i=2;i<=10;i++)
{
j*=i;
}
printf("%d",j);
return0;
}
3、输入三个数字,输出他们的最大值。
(if)
#include
voidmain()
{inta,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d",d);
getch();/*暂停看运行结果*/
}
intmax(intx,inty,intz)
{intu;
if(x>=y&&x>=z)
u=x;
elseif(y>=x&&y>=z)
u=y;
else
u=z;
return(u);
4.用起泡法对十个数据排序(数组实现)
#include
main()
{inti,j,t;
staticinta[10]={5,7,4,2,3,6,1,0,9,8};
for(j=0;j<9;j++)
{for(i=0;i<9-j;i++)
{if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;
}
}
}
for(i=0;i<10;i++)
printf("%2d",a[i]);
}
5、输入十个数字,逆序输出。
(数组实现)
#include
main()
{inta[10],i=0;
for(i=0;i<=9;i++)
scanf("%f",&a[i]);
printf("\n");
for(i=9;i>=0;i--)
printf("%f",a[i]);
}
6输入两个数,交换他们的值并输出。
(元素交换)
#include
intmain()
{
intm,n,temp;
scanf("%d%d",&m,&n);
if(m{
temp=m;
m=n;
n=temp;
}
printf("%d",m);
return0;
}
7.输出9*9乘法表。
(双层循环)
#include
voidmain()
{
inti=1;
for(i;i<=9;i++)
{
intj=1;
for(j;j<=i;j++)
{
printf("%d*%d=%d",i,j,i*j);
}
printf("\n");
}
}
8.输入一行字符,将所有的小写字母转换成大写字母,大写字母转换成小写字母,其余字符不变。
输出转变后的这行字符。
#include"stdio.h"
voidmain()
{
chara[n];
inti;
scanf("%s",a);
printf("大写为:
");
for(i=0;i<=n;i++)
{
if(a[i]<='z'&&a[i]>='a')
a[i]=a[i]-32;
printf("%c",a[i]);
}
printf("\n小写为:
");
for(i=0;i<=3;i++)
{
a[i]=a[i]+32;
printf("%c",a[i]);
}
}
9、编写一个简单计算器程序,要求能够完成两个数的+,-,*,/四种运算。
输出运算式及运算结果。
(switch)
6.2
#include"stdio.h"
main()
{charc;inti=0,j=0,k=0,l=0;
while((c=getchar())!
=’\n’)
{if(c>=65&&c<=90||c>=97&&c<=122)i++;
elseif(c>=48&&c<=57)j++;
elseif(c==32)k++;
elsel++;}
printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);
}
6.6
#include"math.h"
main()
{intx=100,a,b,c;
while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;
if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d",x);x++;}
}
6.7
main()
{intm,i,j,s;
for(m=6;m<10000;m++)
{s=1;
for(i=2;iif(m%i==0)s=s+i;
if(m-s==0)
{printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}
}
}
或
main()
{intm,i,j,s;
for(m=6;m<1000;m++)
{s=m-1;
for(i=2;iif(m%i==0)s=s-i;
if(s==0)
{printf("%5ditsfastorsare1",m);for(j=2;jprintf("%d",j);printf("\n");}
}
}
6.8
main()
{inti=1,n;doublet,x=1,y=2,s,sum=0;
scanf("%ld",&n);
while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}
printf("%f\n",sum);
}
11,P128例6.10(译码)
#include
voidmain()
{
charc;
while((c=getchar())!
='\n')
{
c=c+4;
if(c>'Z'+4||c>'z')
c=c-26;
}
printf("%c",c);
}
printf("\n");
}
12,P1115.55.6(switch)
5.5
#include
main()
{intx,y;
printf("输入x:
");
scanf("%d",&x);
if(x<1)
{y=x;
printf("x=%3d,y=x=%d\n",x,y);
}
elseif(x<10)
{y=2*x-1;
printf("x=%3d,y=2*x-1=%d\n",x,y);
}
else
{y=3*x-11;
printf("x=%3d,y=3*x-11=%d\n",x,y);
}
}
5.6
#include
main()
{floatscore;
chargrade;
case2:
printf("请输入学生成绩:
");
scanf("%f",&score);
while(score>100||(score<0)
{printf("\n输入有误,请重新输入:
");
scanf("%f",&score);
}
switch((int)(score/10))
{case10:
case9:
grade=’A’;break;
case8:
grade=’B’;break;
case7:
grade=’C’;break;
case6:
grade=’D’;break;
case5:
case4:
case3:
case1:
case0:
grade=’E’;
}
printf("成绩是%5.1f,相应的等级是%c。
\n",score,grade);
}
13,P108例5.5(一元二次方程求根)例5.6(求闰年)
5.5
#include
voidmain()
{
intyear,leap;
scanf("%d",&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap=1;
else
leap=0;
}
else
leap=1;
}
else
leap=0;
if(leap)
printf("%dis",year);
else
printf("%disnot",year);
printf("aleapyear.\n")
}
5.6
14,P31例2.17例2.18
2.17
输出50个学生中成绩高于80分者的学号和成绩
2.18
输出2000——2500年每一年是否闰年
#include
voidmain()
{
intyear;
year=2000;
go:
if(((year%4==0)&&(year%100!
=0))||(year%400==0))
printf("%disrunnian",year);
if(year<=2500)
year=year++;
if(year>2500)
gotoend;
gotogo;
end:
getch();
}
1.输入两个正整数,m和n,求其最大公约数和最小公倍数。
#include
voidmain()
{
inthcf(int,int);/*函数声明*/
intlcd(int,int,int);/*函数声明*/
intu,v,h,l;
printf("Pleaseinputtwonumbers:
\n");
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%d\n",h);
l=lcd(u,v,h);
printf("L.C.D=%d\n",l);
}
inthcf(intu,intv)
{
intt,r;
if(v>u)
{t=u;u=v;v=t;}
while((r=u%v)!
=0)
{u=v;v=r;}
return(v);
}
intlcd(intu,intv,inth)
{
return(u*v/h);
}
2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
#include
intletter,digit,space,others;
voidmain()
{
voidcount(char[]);
chartext[80];
printf("Pleaseinputstring:
\n");
gets(text);
printf("string:
\n");
puts(text);
letter=0;
digit=0;
space=0;
others=0;
count(text);
printf("letter:
%d,digit:
%d,space:
%d,others:
%d\n",letter,digit,space,others);
}
voidcount(charstr[])
{
inti;
for(i=0;str[i]!
='\0';i++)
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++;
elseif(str[i]>='0'&&str[i]<='9')
digit++;
elseif(str[i]==32)
space++;
else
others++;
}
3.输入一个正整数求出它是几位数;输出原数和位数。
#include
intdigit;
voidmain()
{
voidcount(char[]);
chartext[80];
printf("Pleaseinputnumbers:
\n");
gets(text);
printf("Numbers:
\n");
puts(text);
digit=0;
count(text);
printf("digit:
%d\n",digit);
}
voidcount(charstr[])
{
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='0'&&str[i]<='9')
digit++;
}
4.输入一个正整数,输出原数并逆序打印出各位数字。
#include
voidinvertLongInt(long);
voidmain()
{
unsignedlongiNumber;
printf("Pleaseinputanumber:
\n");
scanf("%ld",&iNumber);
printf("Theinputnumberis:
%ld\n",iNumber);
printf("Theinversenumberis:
");
invertLongInt(iNumber);
}
voidinvertLongInt(longx)
{
if(x>=0&&x<=9)
printf("%d\n",x);
else
{
printf("%d",x%10);
invertLongInt(x/10);
}
}
5.从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。
6.从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。
将结果输出。
7.求1!
+2!
+3!
+……+20!
,将结果输出。
#include
voidmain()
{
floats=0,t=1;
intn;
for(n=1;n<=20;n++)
{
t=t*n;
s=s+t;
}
printf("1!
+2!
+3!
+……+20!
=%e\n",s);
}
8.打印以下图案:
*
***
*****
*******
#include
voidmain()
{
inti,j;
printf("Thepictureis:
\n");
staticcharpicture[4][7]={{'','','','*'},
{'','','*','*','*'},{'','*','*','*','*','*'},{'*','*','*','*','*','*','*'}};
for(i=0;i<=3;i++)
{
for(j=0;j<=6;j++)
printf("%c",picture[i][j]);
printf("\n");
}
}
9.打印以下图案:
*
**
***
****
#include
voidmain()
{
inti,j;
printf("Thepictureis:
\n");
charpicture[4][4]={{'*'},
{'*','*'},{'*','*','*'},{'*','*','*','*'}};
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
printf("%c",picture[i][j]);
printf("\n");
}
}
10.求下列试子的值:
1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。
#include
voidmain()
{
floatsum=1.0,t,s=1;
inti;
for(i=1;i<=100;i++)
{
t=s/i;
sum=sum+t;
s=-s;
}
printf("1-1/2+1/3-1/4+……+1/99-1/100=%5.4f\n",sum);
}
11.打印出100~999之间的所有水仙花数。
#include
voidmain()
{
inti,j,k,n;
printf("100~999之间的所有水仙花数are:
\n");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d",n);
}
printf("\n");
}
12.求Sn=a+aa+aaa+…+aa…a之值,n,a由键盘输入。
#include
voidmain()
{
inta,n,i=1,sn=0,tn=0;
printf("a,n=:
");
scanf("%d,%d",&a,&n);
while(i<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++i;
}
printf("a+aa+aaa+…+aa…a=%d\n",sn);
}
13.打印以下图案:
*******
*******
*******
*******
#include
voidmain()
{
chara[7]={'*','*','*','*','*','*','*'};
inti,j,k;
charspace='';
printf("Thepictureis:
");
for(i=0;i<4;i++)
{
printf("\n");
printf("");
for(j=1;j<=i;j++)
printf("%c",space);
for(k=0;k<7;k++)
printf("%c",a[k]);
}
printf("\n");
}
14.打印以下图案:
1
121
12321
1234321
15.打印以下图案:
1234321
12321
121
1
16.编写一个统计学生成绩程序,完成以下功能:
输入4个学生的2门课成绩;求出全班的总平均分,将结果输出。
#include
#defineN4
structstudent
{
charnum[3];
charname[4];
floatscore[2];
floatavr;
}
stu[N];
voidmain()
{
inti,j;
floatsum,average;
for(i=0;i{
printf("inputscoresofstudent%d:
\n",i+1);
printf("name:
");
scanf("%s",stu[i].name);
for(j=0;j<2;j++)
{
printf("score%d:
",j+1);
scanf("%f",&stu[i].score[j]);
}
}
average=0;/*计算*/
for(i=0;i{
sum=0;
for(j=0;j<2;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/2;
average+=stu[i].avr;
}
average/=N;
printf("Namescore1score2average\n");
for(i=0;i{
printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<2;j++)
printf("%9.2f",stu[i].score[j]);
printf("%8.2f\n",stu[i].avr);
}
printf("average=%5.2f\n",average);
}
17.打印以下图案:
*****
*****
*****
*****
*****
#include
voidmain()
{
chara[5]={'*','*','*','*','*'};
inti,j,k;
charspace='';
printf("Thepictureis:
");
for(i=0;i<5;i++)
{
printf("\n");
printf("");
for(j=1;j<=i;j++)
printf("%c",space);
for(k=0;k<5;k++)
printf("%c",a[k]);
}
printf("\n");
}
18.给出年、月、日,计算该日是该年的第几天。
#include
voidmain()
{
intsum_day(int,int);
intleap(intyear);
intyear,month,day,days;
printf("inputdate(year,month,day):
");
scanf("%d,%d,%d",&year,&month,&day);
printf("%d/%d/%d",year,month,day);
days=sum_day(month,day);
if(leap(year)&&month>=3)
days=days+1;
printf("isthe%dthdayinthisyear.\n",days);
}
intsum_day(intmonth,intday)
{
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
inti;
for(i=1;iday+=day_tab[i];
return(day);
}
intleap(intyear)
{
intleap;
leap=year%4==0&&year%100!
=0||year%400==0;
return(leap);
}
19.求一个3*3的整型