C语言复习范围答案.docx
《C语言复习范围答案.docx》由会员分享,可在线阅读,更多相关《C语言复习范围答案.docx(18页珍藏版)》请在冰豆网上搜索。
C语言复习范围答案
C语言复习范围
一、选择题(每小题1分,共30分)
二、程序填空题(每空1分,共10分)
三、程序运行结果题(每小题2分,共10分)
四、编程题(每小题5分,共20分)
1.判断100~200之间的所有素数并输出。
#include
#include
voidmain()
{intm,k,i,n=0;
for(m=101;m<=200;m=m+2)
{k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1){printf("%d″,m);n=n+1;}
if(n%10==0)printf(″\n″);
}
printf("\n");
}
2.将一个3×3矩阵转置并输出。
#include
voidmain()
{
inta[3][3],i,j,x;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j
{x=a[j][i];
a[j][i]=a[i][j];
a[i][j]=x;
}
printf("\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
3.编写一个求两个数最大值的函数,在主函数输3个整数,调用该函数输出其中最大值。
#include
intmax(inta,intb)
{
returna>b?
a:
b;
}
voidmain()
{
inta,b,c,z;
scanf("%d%d%d",&a,&b,&c);
z=max(max(a,b),c);
printf("最大的数是%d\n",z);
}
4.编程程序,判断某一年是否是闰年。
#include"stdio.h"
voidmain()
{
intyear;
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||year%400==0)
printf("%d是闰年。
",year);
else
printf("%d不是闰年。
",year);
}
5.编程求
。
#include"stdio.h"
voidmain()
{
inti,s=0;
for(i=1;i<=50;i++)
s=s+i;
for(i=1;i<=50;i++)
s=s+i*i;
printf("%d\n",s);
}
6.将一个二维数组行和列的元素互换,存到另一个二维数组中。
例如:
。
#include
voidmain()
{
inta[2][3]={1,2,3,4,5,6},i,j,b[3][2];
for(i=0;i<=1;i++)
for(j=0;j<=2;j++)
b[j][i]=a[i][j];
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%d",b[i][j]);
printf("\n");
}
}
7.把100~200之间的不能被3整除的数输出。
#include
voidmain()
{
inti;
for(i=101;i<=200;i++)
if(i%3!
=0)
printf("%d",i);
}
8.求一个3×3的整数矩阵主对角线元素之和。
#include
voidmain()
{
inta[3][3]={1,2,3,4,5,6,7,8,9},i,s=0;
for(i=0;i<=2;i++)
s=s+a[i][i];
printf("%d\n",s);
}
9.编写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
#include
intprime(intn)
{
intflag=1,i;
for(i=2;i<=n/2&&flag==1;i++)
if(n%i==0)flag=0;
return(flag);
}
voidmain()
{
intn;
scanf("%d",&n);
if(prime(n))
printf("%disaprime.\n",n);
else
printf("%disnotaprime\n",n);
}
10.编程实现顺序输出26个大写英文字母。
(A的ASCII为65)
#include
voidmain()
{
charch;
for(ch='A';ch<='Z';ch++)
printf("%c",ch);
}
11.求1~100之间的奇数和并输出。
#include
voidmain()
{
inti,s=0;
for(i=0;i<=100;i++)
if(i%2!
=0)
s=s+i;
printf("%d",s);
}
12.编程求出3×3矩阵副对角线元素之和。
#include
voidmain()
{
inta[3][3]={1,2,3,4,5,6,7,8,9},i,s=0;
for(i=0;i<=2;i++)
s=s+a[i][2-i];
printf("%d\n",s);
}
13.编写一个求2个数中最大值Max的函数,然后用这个函数求4个数的最大值。
#include
intmax(intx,inty)
{
return((x>y)?
x:
y);
}
voidmain()
{
inta,b,c,d,m,n;
scanf("%d%d%d%d",&a,&b,&c,&d);
m=max(a,b);
n=max(c,d);
printf("max=%d\n",max(m,n));
}
14.编程求n!
#include
voidmain()
{
inti=1,fact=1,n;
scanf("%d",&n);
while(i<=n)
{fact=fact*i;
i++;
}
printf("%d",fact);
}
15.编写程序输出100-200间的所有素数。
#include
#include
voidmain()
{intm,k,i,n=0;
for(m=101;m<=200;m=m+2)
{k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1){printf("%d″,m);n=n+1;}
if(n%10==0)printf(″\n″);
}
printf("\n");
}
16.用数组实现菲波那契数列(即第1项和第二项均为1,从第三项开始每项等于前两项之和)。
#include
voidmain()
{
inti;
intf[10]={1,1};
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<10;i++)
{
printf(″%12d″,f[i])
if((i+1)%5==0)printf(″\n″);
}
}
17.输入一个华氏温度,要求输出摄氏温度。
公式为
输出要有文字说明,取2位小数。
#include
voidmain()
{
floatc,f;
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("c=%5.2f\n",c);
}
18.编程程序,输入一个整数,打印出它是奇数还是偶数。
#include
voidmain()
{
inti;
scanf("%d",&i);
if(i%2!
=0)
printf("%d是奇数。
",i);
else
printf("%d是偶数。
",i);
}
19.试求出1000以内的“完全数”。
(提示:
如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。
如:
6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。
)
#include
voidmain()
{inti,a,m;
for(i=1;i<=1000;i++) /*判断i是否完数*/
{
for(m=0,a=1;a<=i/2;a++)
if(i%a==0)m=m+a; /*如a是i的因子,则累加到m*/
if(m==i)
printf("%4d",i);/*如因子和m与自身相等,则是完数,输出*/
}
}
20.写一函数,计算x的n次方。
#include
intf(inta,intn)
{
inti,f=1;
for(i=1;i<=n;i++)
f=f*a;
return(f);
}
voidmain()
{
intx,i;
scanf("%d%d",&x,&i);
printf("%d",f(x,i));
}
21.有一分数序列
...求出这个数列的前20项之和。
#include
voidmain()
{
inti,t,n=20;
floata=2,b=1,s=0;
for(i=1;i<=n;i++)
{
s=s+a/b;
t=a;
a=a+b; /*将前一项分子与分母之和作为下一项的分子*/
b=t; /*将前一项的分子作为下一项的分母*/
}
printf("sum=%9.6f\n",s);
}
22.求一个4×3数组所有元素中最大的值并输出。
#include
voidmain()
{
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},i,j,max;
max=a[0][0];
for(i=0;i<=3;i++)
for(j=0;j<=2;j++)
if(maxmax=a[i][j];
printf("%d\n",max);
}
23.编写一个求阶乘的函数,在主函数输入一个整数,调用该函数输出该数的阶乘。
#include
intfac(intn)
{
inti,f=1;
for(i=1;i<=n;i++)
f=f*i;
return(f);
}
voidmain()
{
inti,a;
scanf("%d",&a);
printf("%d=%d\n",a,fac(a));
}
24.编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include
#include
voidmain()
{
voidinverse(charstr[]);
charstr[100];
printf("Inputstring:
");
scanf("%s",str);/*输入一字符串str*/
inverse(str);/*对数组str中的元素逆序存放*/
printf("Inversestring:
%s\n",str);/*输出转换后的字符串*/
}
voidinverse(charstr[])/*函数定义*/
{
chart;
inti,j;
for(i=0,j=strlen(str);i{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
25.编写程序,要求输入正整数a和b,若
大于100,则输出
百位以上的数字,否则输出两数之和。
#include
voidmain()
{
inta,b,x,y;
printf("inputa、b:
");
scanf("%d%d",&a,&b);
x=a*a+b*b;
if(x>100) /*若a2+b2>100*/
{
y=x/100; /*y为a2+b2百位以上的数字*/
printf("%d",y);
}
elseprintf("%d",a+b);
}
26.编程求100~999之间的所有水仙花数,即各位数字的立方和恰好等于该数本身的数。
#include
voidmain()
{inti,a,b,c,cnt;
for(i=100;i<=999;i++)
{a=i/100;
b=i/10-i*10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf(“%d,”,i);
}
27.输出下三角的“九九乘法表”。
#include
voidmain()
{
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%2d",j,i,i*j);
printf("\n");}
}
28.编写一个求阶乘的函数,在主函数中输入一个整数n调用该函数求出n!
。
#include
intf(intm)
{
intf=1,i;
for(i=2;i<=m;i++)
f=f*i;
return(f);
}
voidmain()
{
intn;
scanf("%d",&n);
printf("%d\n",f(n));
}
29.输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母,如果不是,不转换。
然后输出最后得到的字符。
#include
voidmain()
{
charch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
ch=ch+32;
printf("%c",ch);
}
30.把100~200之间的不能被3整除的数输出。
#include
voidmain()
{
inti;
for(i=101;i<=200;i++)
if(i%3!
=0)
printf("%d",i);
}
31.用起泡法对10个数进行排序(升序)。
#include
#defineNUM10
voidmain()
{
inti,j,t,a[NUM];
printf("\ninput10numbers:
\n");
for(i=0;iscanf("%d",&a[i]);
for(j=1;jfor(i=0;iif(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("Thesortednumbers:
\n");
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
32.编写一个求两个自然数最大公约数的函数,在主函数中输入两个自然数m,n,调用该函数求最大公约数。
#include
voidmain()
{inthcf(intu,intv);
intu,v;
scanf("%d%d",&u,&v);
printf("gongyueshushi:
%d\n",hcf(u,v););
}
inthcf(intu,intv)
{intt,r;
if(u{t=u;u=v;v=t;}
while((r=u%v)!
=0)
{u=v;v=r;}
return(v);
}
33.编程求
。
#include
voidmain()
{
inti;
floats=0.0f;
for(i=1;i<=10;i++)
s=s+1.0/i;
printf("%f",s);
}
34.编程将数组a[6]={3,6,9,5,4,8}逆序输出。
v#include
vvoidmain()
v{
vinti,a[6]={3,6,9,5,4,8};
vfor(i=5;i>=0;i--)
vprintf("%d",a[i]);
vprintf("\n");
v}
35.编程求5!
▪#include
▪voidmain()
▪{
▪inti=2,fact=1;while(i<=5)
▪{
▪fact=fact*i;
▪i++;
▪}
▪printf("%d\n",fact);
▪}
36.编写一个求2个数中最小值Min的函数,然后用这个函数求4个数的最小值。
#include
min(intx,inty)
{
return(x>y?
y:
x);
}
voidmain()
{
inta,b,c,d,i,j;
scanf("%d%d%d%d",&a,&b,&c,&d);
i=min(a,b);
j=min(c,d);
printf("%d",min(i,j));
}
37.有3个整数a、b、c,由键盘输入,输出其中最大的数。
#include
voidmain()
{
inta,b,c,max;
scanf("%d%d%d",&a,&b,&c);
max=a;
if(max
max=b;
if(maxmax=c;
printf("%d\n",max);
}
38.写一函数,计算
的值,在主函数中输入一x的值调用该函数求出相应的函数值并在主函数中输出。
#include
floatf(floatx)
{
return(x*x+5*x+6);
}
voidmain()
{
floatx;
scanf("%f",&x);
printf("%f\n",f(x));
}
39.以下三角形式输出“九九乘法表”。
#include
voidmain()
{
inti,j;
for(i=1;i<=9;i++)
{for(j=1;j<=i;j++)
printf("%d*%d=%2d",j,i,i*j);
printf("\n");
}
}
40.求1~100之间的能被3整除的数的和并输出。
#include
voidmain()
{
inti,s=0;
for(i=1;i<=100;i++)
if(i%3==0)
s=s+i;
printf("%d\n",s);
}