c编程题分类.docx
《c编程题分类.docx》由会员分享,可在线阅读,更多相关《c编程题分类.docx(22页珍藏版)》请在冰豆网上搜索。
c编程题分类
一、程序题
(类型:
程序填空题、改错题和设计题)
第一组
1、下面程序是求[1,450]之间同时满足除3余2和除5余3条件的数的个数。
请将程序补充完整,并给出正确结果,填入相应窗口。
程序:
结果是:
30
#include
#include
#include
main()
{intcount;
inti;
sum=0
for(i=1;i<=450;i++)
{if(fmod(i,3)==2&&fmod(i,5)==3)
_____________
}
clrscr();
printf(“%d”,count);
}
3、下面程序是求[50,300]之间的所有偶数的平方和。
请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
程序:
结果是:
4525500
#include
#include
#include
main()
{
Intcount;
inti;
sum=0;
for(i=50;i<=300;i++)
{if(fmod(i,2)!
=0)
sum+=i*i;
}
第二组
1、程序是求s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+......+(1*2*3*....*n)/(3*5*7*.....(2*n+1))请修改程序中的错误,并运行修改后的程序。
当n=30时,程序的运行结果(按四舍五入保留10位小数)。
程序:
结果:
1.5707963267
#include
#include
#include
doublefun(intn)
{doubles,t;inti;
s=1.0;t=1.0;
for(i=1;i<=n;i++)
{t=t*i/(2*i+1);s=t;}
returns;
}
main()
{
printf("\n%12.10lf",fun(30));
}
2、下面的程序是计算如下公式的A30值。
A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),......请改正程序中的错误,并给出程序运行的正确结果(按四舍五入保留10位小数)。
程序:
结果为:
0.6180339887
#include
#include
#include
doublefun(intn)
{doubles,t,intii;
for(i=2;i<=n;i++)
A=1/(1+A);
return;
}
main()
{clrscr();
printf("%12.10lf\n",fun(30));
}
3、下面的程序是求表达式的值:
s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+......+(1*2*3*......*n)/(3*5*7*......(2*n+1))请将程序补充完整,并给出当n=25时,程序的运行结果(按四舍五入保留10位小数)程序:
结果:
1.5707963218
#include
#include
#include
doublefun(intn)
{doubles,t;inti;
s=1,0
t=1.0;
for(i=1;i<=n;i++)
t=t*i/(2*i+1);
s=t_
returns;
}
main()
{printf("\n%12.10lf",fun(25));}
4、下面的程序中,函数fun的功能是:
根据形参m,计算下面公式的值。
T=1+1/(2*3)+1/(3*4)+......+1/(m*(m+1))请改正程序中的错误,并运行改正后的程序。
当从键盘输入50时,给出程序运行的正确结果(按四舍五入保留6位小数)。
程序:
#include
#include
#include
doublefun(intm)
{doublet=1.0;inti=2;
for(i=2;i<=m;i++)
t+=1/(i*(i+1));
returnt;
}
main()
{intm;
clrscr();
printf("\n请输入一个整数:
");
scanf("%d",m);
printf("\n结果是:
%lf\n",fun(m));
}
第三组
1、斐波那契数列的前二项是1,1,以后每一项都是前面两项之和。
求10000000以内有多少个斐波那契数?
结果是:
35
2、已知fibonacci数列:
1,1,2,3,5,8,......,它可由下面公式表述:
F
(1)=1ifn=1F
(2)=1ifn=2F(n)=F(n-1)+F(n-2)
ifn>2以下程序是求F(35),请将程序补充完整,并给出正确结果,填入相应窗口。
程序:
结果:
9227465
#include
#include
main()
{
doublef1,f2;
inti;
fib[1]=1;
f2=1;
for(i=1;i<=17;i++)
{f1=f1+f2;_______________}
clrscr();
printf("\nthenumberis:
%12.0lf",f1);
}
3、已知:
f(0)=f
(1)=1f
(2)=0f(n)=f(n-1)-2*f(n-2)+f(n-3)(n>2)求f(0)到f(50)中的最大值。
结果是:
598325
第四组
1、所谓“水仙花数”是指一个三位数,其各位数字的三次方之和等于该数本身,例如:
153=1^3+3^3+5^3,故153是水仙花数,求[100,999]之间所有水仙花数之和。
结果:
1301
2、若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数”。
例如:
由于7396=86^2,且7+3+9+6=25=5^2,则称7396是“四位双平方数”。
若把所有“四位双平方数”按升序排列,求前5个“四位双平方数”的和。
结果:
10132
3、设有十进制数字a,b,c,d和e,它们满足下列式子:
abcd*e=bcde(a不等于0,e不等于0或1),求满足上述条件的所有四位数abcd的和。
结果:
3665
4、所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[2,1000]之间有多少个同构数。
结果:
6
5、某些分数的分子和分母都是二位正整数的真分数具有下列特点:
如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分子跟原分子相等。
例如,63/84=(6+3)/(8+4)。
试求所有具有这种特点的真分子(非约简真分数)的分子与分母之和的和。
结果:
10134
6、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。
例如:
由于3^2+4^2=5^2,则5为弦数,求[131,200]之间最小的弦数结果:
135
7、一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。
例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。
求[1,1000]之间的第二大完数。
结果是:
28
8、以下程序求10000以内的所有完全数之和,请将程序补充完整,并给出正确结果,填入相应窗口。
“完全数”是指:
一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:
6=1+2+3,则6就是一个完全数。
程序:
结果是:
8658
#include
#include
#include
main()
{intsum,n,m,s,k;
sum=0;
for(n=3;n<=10000;n++)
{_________
k=n/2+1;
for(m=1;mif(n%m==0)
s=s
9、已知24有8个正整数因子(即:
1,2,3,4,6,8,12,24),而24正好能被其因子数8整除,求正整数[10,100]之间有多少个正整数能被其因子的个数整除。
结果是:
12
10、已知24有8个因子(即:
1,2,3,4,6,8,12,24),而24正好被8整除。
求[10,200]之间有多少个整数能被其因子的个数整除,将下列程序补充完整,正确结果填入相应窗口。
程序:
结果是:
21
#include
#include
#include
main()
{inta,b,c,n,count=0;
for(a=10;a<=200;a++)
{________
for(c=1;c<=a;c++)
if(a%c==0)________
if(a%b==0){count++;}
11、求[200,300]之间第二大有奇数个不同因子的整数(在计算因子个数时,包括该数本身)。
结果是:
256
12、若某整数平方等于某两个正整数平方之和的正整数称为弦数。
例如:
由于3^2+4^2=5^2,则5为弦数,求[100,200]之间弦数的个数。
结果是:
55
13、A,B,C是三个小于或等于100正整数,当满足1/A^2+1/B^2=1/C^2关系时,称为倒勾股数。
求130B>C的倒勾股数有多少组。
结果是:
1
第五组
1、素数
下面的程序是求[20,700]之间所有的素数的个数。
请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
结果:
117
程序:
#include
#include
#include
intprime(intn)
{
intyes,i;
if(n<=1){return0;}
yes=0;;
for(i=2;i<=sqrt(n);i++)
if(n%i==0){yes=0;break;}
returnyes;
}
main()
{intcount=0,i;
clrscr();
for(i=20;i<=700;i++)
count=count+prime(i)//增加的
printf(“count=%d”,count);//增加的
}
2、下面的程序是求1000以内的最大的20个素数之和。
请修改程序中的错误,使它能得出正确的结果,并给出正确结果。
程序:
结果:
18580
#include
#include
#include
intfun(inthigh)
{intsum=0,n=0,j,yes;
while((high>=2)||(n<10))
{yes=1;
for(j=2;j<=sqrt(high);j++)
if(high%j==0)
yes=0;
break;
if(yes){sum+=high;n++;}
high--;
3、若两个素数之差为2,则称这两个素数为双胞胎数。
求出[200,1000]之内有多少对双胞胎数。
结果是:
20
4、梅森尼数是指能使2^n-1为素数的数n,求[2,21]范围内最大的梅素尼数?
结果是:
19
第六组
1、爱因斯坦走台阶:
有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少?
结果是:
119
2、穷举法
把一张一元钞票,换成一分、二分和五分硬币,每种至少5枚,问有多少种方案?
结果是:
205
3、下面的程序是求如下表达式的值。
S=sqrt(ln
(1)+ln
(2)+ln(3)+……+ln(n))请改正程序中的错误,并运行修改后的程序,当n=50时,给出程序运行结果(按四舍五入保留6位小数)。
程序:
结果是:
12.18515
#include
#include
#include
intfun(intn)
{ints=0;inti;
for(i=1;i<=n;i++)
s+=log(1.0*i);
s=sqrt(s);
returns;
}
main()
{clrscr();
printf("%lf\n",fun(50));
}
4、某一正整数,进行递减,每次将该数减半后再减一,当对该数进行第10次减半时发现该数只剩下1不能再减了,求该数。
结果是:
1534
5、已知A
结果是:
109
第七组:
综合题一
1、下面的程序是求500以内的所有的素数的个数。
请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
程序:
结果是:
95
#include
#include
#include
intprime(intn)
{intyes,i;
if(n<=1){return1;}
yes=1;
for(i=2;i<=sqrt(n);i++)
if(n%i==0){yes=0;break;}
returnyes;}
main()
{intcount=0,i;
clrscr();
for(i=2;i<=500;i++)
2、下面的程序是求如下表达式的值。
S=sqrt(ln
(1)+ln
(2)+ln(3)+……+ln(n))将程序补充完整,当n=40时,给出程序运行结果(按四舍五入保留6位小数)。
程序:
结果是:
10.503363
#include
#include
#include
doublefun(intn)
{doubles=0.0;
inti;
for(i=1;i<=n;i++)
s+=log(1.0*i);
________________
returns;
}
main()
{clrscr();
printf(___________);
}
3、若某整数平方等于某两个正整数平方之和的正整数称为弦数。
例如:
由于3^2+4^2=5^2,则5为弦数,求[100,200]之间弦数的个数。
结果是:
55
第八组:
综合题二
1、列程序的功能是求出以下分数序列的前25项之和,2/1,3/2,5/3,8/5,13/8,21/13,......请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。
程序:
结果是:
40.750431
#include
#include
fun(n)
{longa,b,c;
intk;doubles;
s=0.0;a=2;b=1;
for(k=1;k<=n;k++)
{s=s+(double)a/b;
c=a;a=a+b;b=c;
}
returns;
}
main()
{intn=25;
clrscr();
printf("\nresult:
%lf\n",fun(n));
}
2、下面程序是求[1,100]之间的所有整数的立方和。
请将程序补充完整,并给出正确结果,填入相应窗口。
程序:
结果是:
25502500
#include
#include
#include
main()
{longsum;
______________
sum=0;
for(i=1;i<=100;i++)
{_______________}
clrscr();
printf("%ld\n",sum);
}
3、有十进制数字a,b,c,d和e,它们满足下列式子:
abcd*e=bcde(a不等于0,e不等于0或1),求满足上述条件的所有四位数bcde的和。
结果是:
16659
二、选择题
1.在TC中,若k是int型变量,且有下面的程序片段:
intk=-2;
if(k<=0)
printf("####");
else
printf("&&&&");
上面程序片段的输出结果是()。
A有语法错误,无输出结果B&&&&C####&&&&D####
2.C语言程序是由()组成的。
A函数B过程C主程序和子程序D子程序
3.下列语句中符合C语言语法的赋值语句是()。
Aa=0x7bc=a7;Ba=0x7b=a7;
Ca=0x7b,c=a7;Da=0x7b,b,a7;
4.在TC中,已知:
unsignedintx=65535;则执行以下语句后的x值为()。
printf(“%d\n”,x);
A65535B1C无定值D-1
5.在C语言中,下列不正确的转义字符是()。
A'\\'B'\t'C'074'D'\0'
6.在C语言中,要求运算数必须是整型的运算符是()。
A/B%C7.在C语言中,以下一组运算符中,优先级最高的运算符是()。
A<=B%C=D&&
8.在TC中,若已定义x和y为double类型,则表达式:
x=1,y=x+3/2的值是()
A2.000000B2C1D2.5
9.在C语言中,能实现字符串连接的函数是()。
Astrcat()Bstrcmp()Cstrcpy()Dstrlen()
10.在TC中,为了判断两个字符s1和s2是否相等,应当使用()。
Aif(strcmp(s1,s2)==0)Bif(s1=s2)
Cif(strcpy(s1,s2))Dif(s1==s2)
11.在TC中,函数调用:
strcat(strcpy(str1,str2),str3)的功能是()。
A将串str1复制到串str2中后再连接到串str3之后
B将串str1连接到串str2之后再复制到串str3之后
C将串str2连接到串str1之后再将串str1复制到串str3中
D将串str2复制到串str1中后再将串str3连接到串str1之后
12.在C语言中,以下哪个函数用于将字符输出到标准输出设备()。
Aputchar()Bopen()Cread()Dgetw()
13.在TC中,下列关于switch语句和break语句的结论中,只有()是正确的。
A在switch语句中可以根据需要使用或不使用break语句
Bbreak语句是switch语句的一部分
C在switch语句中必须使用break语句
D其它三个结论中有两个是正确的
14.在TC中,设有如下定义:
inta=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:
(m=a>b)&&(n=c>d)后,n的值为()。
A1B3C2D0
15.在C语言中,当do-while语句中的条件为()时,结束该循环。
ATUREB1C0D非0
16.在C语言中,有表达式x=abs(8-10),则x的值为()。
A-2B2C18D80
17.在C语言中,有:
charstr[]="abcd";printf(%d\n",strlen(str));上面程序片段的输出结果是()。
A3B4C6D12
18.在TC中,下列语句的输出结果是()。
printf("%d\n",strlen("ATS\n012\1\\"));
A9B10C11D8
19.在TC中,表达式:
10!
=9的值是()。
ATUREB1C0D非零值
20.在TC中,假定有以下变量定义:
intk=7,x=12;则能使其值为3的表达式是()。
Ax%=(K%=5)Bx%=(k-k%5)
Cx%=k-k%5D(x%=k)-(k%=5)
21.在TC中,若u=1,v=2,w=3,则表达式w==(v=-u)执行完后w的值是( )。
A3B2C1D0
22.在TC中,若w=1,x=2,y=3,z=4;则条件表达式:
w>x?
w:
yy:
z的结果为()。
A4B2C3D1
23.在TC中,若x和y都是int型变量,x=100,y=200,下列语句的输出结果是()。
printf("%d\n",(x,y));
A100200B100C200
D输出格式符不够,输出不确定的值
24.在TC中,已知:
intx=10,y=3,z;则下列语句的输出结果是()。
printf(“%d\n”,z=(x%y,x/y));
A1B0C3D4
25.在C语言中,合法的数组定义是()。
Achara[]={0,1,2,3,4,5};Binta[5]={0,1,2,3,4,5};
Cints="string";Dinta[]="string";
26.在C语言中,定义数组inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},则a[3]的值为()。
A3B4C5D6
27.在C语言中,定义数组inta[2][4]={3,4,5,6,7,8,9,10},则a[0][3]的值为()。
A9B6C7D8
28.在TC中,若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()
AaBa>0Ca<0D