资源描述
一、程序题
(类型:程序填空题、改错题和设计题)
第一组
1、下面程序是求[1,450]之间同时满足除3余2和除5余3条件的数的个数。请将程序补充完整,并给出正确结果,填入相应窗口。 程序: 结果是:30
#include <conio.h>
#include <stdio.h>
#include <math.h>
main()
{ int count;
int i;
__________
for (i=1;i<=450;i++)
{ if (fmod(i, 3)= =2 && fmod(i, 5)= =3)
_____________
}
clrscr();
printf(“%d”,count);
}
3、下面程序是求[50,300]之间的所有偶数的平方和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。 程序: 结果是:4525500
#include <conio.h>
#include <stdio.h>
#include <math.h>
main()
{
long sum;
int i;
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 <conio.h>
#include <stdio.h>
#include <math.h>
double fun(int n)
{
double s, t; int i;
s=1.0; t=1.0;
for(i=1;i<=n; i++)
{ t=t*n/(2*n+1); s=t; }
return s;
}
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 <conio.h>
#include <stdio.h>
double fun(int n)
{ int A=1;int i;
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 <conio.h>
#include <stdio.h>
#include <math.h>
double fun(int n)
{ double s, t; int i;
____________
t=1.0;
for(i=1;i<=n; i++)
t=t*i/(2*i+1);
______________
return s;
}
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 <conio.h>
#include <stdio.h>
double fun(int m)
{ double t=1.0; int i=2;
for(i=2;i<=m;i++)
t+=1/(i*(i+1));
return t;
}
main()
{ int m;
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)=1 if n=1 F(2)=1 if n=2 F(n)=F(n-1)+F(n-2)
if n>2 以下程序是求F(35),请将程序补充完整,并给出正确结果,填入相应窗口。 程序:结果:9227465
#include <math.h>
#include <stdio.h>
main()
{
double f1,f2;
int i;
_________
f2=1;
for (i=1;i<=17;i++)
{ f1=f1+f2; _______________ }
clrscr();
printf("\n the number is :%12.0lf",f1);
}
3、已知 : f(0)=f(1)=1 f(2)=0 f(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 <conio.h>
#include <stdio.h>
#include <math.h>
main()
{ int sum,n,m,s,k;
sum=0;
for (n=3;n<=10000;n++)
{ _________
k=n/2+1;
for (m=1;m<k;m++)
if (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 <conio.h>
#include <stdio.h>
#include <math.h>
main()
{ int a,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关系时,称为倒勾股数。求130<A+B+C<150且A>B>C的倒勾股数有多少组。结果是:1
第五组
1、素数
下面的程序是求[20,700]之间所有的素数的个数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。结果:117
程序:
#include <conio.h>
#include <stdio.h>
#include <math.h>
int prime(int n)
{
int yes, i;
if(n<=1) {return 0;}
yes=0; ;
for(i=2; i<=sqrt(n); i++)
if(n%i==0){ yes=0; break;}
return yes;
}
main( )
{ int count=0, i;
clrscr();
for(i=20;i<=700; i++)
count=count+prime(i) //增加的
printf(“count=%d”,count); //增加的
}
2、下面的程序是求1000以内的最大的20个素数之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果。 程序:结果:18580
#include <conio.h>
#include <stdio.h>
#include <math.h>
int fun(int high)
{ int sum=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 <conio.h>
#include <stdio.h>
#include <math.h>
int fun(int n)
{ int s=0; int i;
for(i=1;i<=n;i++)
s+=log(1.0*i);
s=sqrt(s);
return s;
}
main()
{clrscr();
printf("%lf\n",fun(50));
}
4、某一正整数,进行递减,每次将该数减半后再减一,当对该数进行第10次减半时发现该数只剩下1不能再减了,求该数。 结果是:1534
5、已知A<B, A和B均为正整数,且A*B=2698,求A+B的最小值。 结果是:109
第七组:综合题一
1、下面的程序是求500以内的所有的素数的个数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。 程序: 结果是:95
#include <conio.h>
#include <stdio.h>
#include <math.h>
int prime(int n)
{ int yes, i;
if(n<=1) {return 1;}
yes=1;
for(i=2; i<=sqrt(n); i++)
if(n%i==0){ yes=0; break;}
return yes; }
main()
{ int count=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 <conio.h>
#include <stdio.h>
#include <math.h>
double fun(int n)
{ double s=0.0;
int i;
for(i=1;i<=n;i++)
s+=log(1.0*i);
________________
return s;
}
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 <conio.h>
#include <stdio.h>
fun(n)
{ long a,b,c;
int k; double s;
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;
}
return s;
}
main()
{ int n=25;
clrscr();
printf("\n result: %lf\n",fun(n));
}
2、下面程序是求[1,100]之间的所有整数的立方和。请将程序补充完整,并给出正确结果,填入相应窗口。 程序: 结果是:25502500
#include <conio.h>
#include <stdio.h>
#include <math.h>
main()
{ long sum;
______________
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型变量,且有下面的程序片段:
int k = -2;
if (k<=0)
printf("####");
else
printf("&&&&");
上面程序片段的输出结果是( )。
A 有语法错误,无输出结果 B &&&& C ####&&&& D ####
2. C语言程序是由( )组成的。
A 函数 B过程 C主程序和子程序 D 子程序
3. 下列语句中符合C语言语法的赋值语句是( )。
A a=0x7bc=a7 ; B a=0x7b=a7;
C a=0x7b,c=a7; D a=0x7b, b,a7;
4. 在TC中,已知: unsigned int x=65535;则执行以下语句后的x值为 ( ) 。printf(“%d\n”,x);
A 65535 B 1 C 无定值 D -1
5. 在C语言中,下列不正确的转义字符是( )。
A '\\' B '\t' C '074' D '\0'
6. 在C语言中,要求运算数必须是整型的运算符是( ) 。
A / B % C < D |
7. 在C语言中,以下一组运算符中,优先级最高的运算符是( )。
A <= B % C = D &&
8. 在TC中,若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是( )
A 2.000000 B 2 C 1 D 2.5
9. 在C语言中,能实现字符串连接的函数是( )。
A strcat() B strcmp() C strcpy() D strlen()
10. 在TC中,为了判断两个字符s1和s2是否相等,应当使用( )。
A if (strcmp(s1,s2)==0) B if (s1=s2)
C if (strcpy(s1,s2)) D if (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语言中,以下哪个函数用于将字符输出到标准输出设备( )。
A putchar() B open() C read() D getw()
13. 在TC中,下列关于switch语句和break语句的结论中,只有( )是正确的。
A 在switch语句中可以根据需要使用或不使用break语句
B break语句是switch语句的一部分
C 在switch语句中必须使用break语句
D 其它三个结论中有两个是正确的
14. 在TC中,设有如下定义: int a=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m=a>b)&&(n=c>d)后,n的值为( )。
A 1 B 3 C 2 D 0
15. 在C语言中,当do-while语句中的条件为( )时,结束该循环。
A TURE B 1 C 0 D 非0
16. 在C语言中,有表达式 x=abs(8-10), 则x的值为( )。
A -2 B 2 C 18 D 80
17. 在C语言中,有:char str[]="abcd"; printf(%d\n",strlen(str)); 上面程序片段的输出结果是( )。
A 3 B 4 C 6 D 12
18. 在TC中,下列语句的输出结果是( )。
printf("%d\n", strlen("ATS\n012\1\\"));
A 9 B 10 C 11 D 8
19. 在TC中,表达式: 10!=9 的值是( )。
A TURE B 1 C 0 D 非零值
20. 在TC中,假定有以下变量定义: int k=7 ,x=12; 则能使其值为 3 的表达式是( )。
A x%=(K%=5) B x%=(k-k%5)
C x%=k-k%5 D (x%=k)-(k%=5)
21. 在TC中,若u=1,v=2,w=3,则表达式w==(v=-u)执行完后w 的值是( )。
A 3 B 2 C 1 D 0
22. 在TC中,若w=1, x=2 , y=3, z=4; 则条件表达式: w>x ? w : y<z ? y:z 的结果为( )。
A 4 B 2 C 3 D 1
23. 在TC中,若x和y都是int型变量,x=100,y=200,下列语句的输出结果是( )。printf("%d\n",(x,y));
A 100 200 B 100 C 200
D输出格式符不够,输出不确定的值
24. 在TC中,已知: int x=10, y=3 , z; 则下列语句的输出结果是 ( ) 。 printf(“%d\n”, z=(x%y,x/y));
A 1 B 0 C 3 D 4
25. 在C语言中,合法的数组定义是( )。
A char a[]={0,1,2,3,4,5}; B int a[5]={0,1,2,3,4,5};
C int s="string"; D int a[]="string";
26. 在C语言中,定义数组int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},则a[3]的值为( )。
A 3 B 4 C 5 D 6
27. 在C语言中,定义数组int a[2][4]={3,4,5,6,7,8,9,10},则a[0][3]的值为( )。
A 9 B 6 C 7 D 8
28. 在TC中,若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( )
A a B a>0 C a<0 D a=0
29. 在TC中,表示关系 X<=Y<=Z 的表达式为( )。
A (X<=Y)AND(Y<=Z) B (X<=Y)&&(Y<=Z)
C (X<=Y<=Z) D (X<=Y)&(Y<=Z)
30. 在TC中,表示关系 x<y<z 所对应的表达式是( )。
A x < y < z B !(x >= y) || !(y >= z)
C (x < y) || (y < z) D (x < y) && (y < z)
31. 在TC中,下列符号中可以作为函数名的是( )。
A x-a B $abc C 5as D _sysf
32. C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是( )。
A 值传递 B 地址 C 由实参传给形参,并由形参传回给实参
D 由用户指定传递方式
33. 在TC中, 若有定义和语句: char s[10];s="abcd";printf("%s\n",s); 则结果是( )(以下u代表空格)。
A 编译不通过 B 输出a
C 输出abcduuuuu D 输出abcd
34. 在C语言中,定义 char a[]={'a','b','l','l','o'},已知字符'b'的ASCII码为98,则 printf("%d\n",a[0]); 的值为( )。
A 98 B a C 97 D b
35. 在TC中,若定义 int a[4][6],则数组 a 有( )个元素。
A 10 B 35 C 24 D 30
36. 在TC中,若有以下定义:char a; int b; float c; double d; 则表达式a*b+d-c值的类型为( )。
A float B int C char D double
37. 在C语言中,若a=0x21,则printf("%d",a);输出值为( )。
A 20 B 33 C 32 D 21
38. 在C语言中,执行语句:for(i=1;i<4;i++);后,变量i的值是( )。
A 3 B 4 C 5 D 不定
39. 在C语言中,执行语句:for(j=1;j<=4;++j);后,变量j的值是( )。
A 5 B 4 C 3 D 不定
40. 在TC中,执行语句: for (i=1;i++<4;);后,变量i的值是( )。
A 3 B 4 C 不定 D 5
41. 在TC中,与语句 "while(!x)" 等价的语句是( )。
A while (x==0) B while (x!=0)
C while (x!=1) D while (~x)
42. 在TC中, while(x)中的x与下面条件表达式等价的是( )。
A X==0 B X==1 C X!=1 D X!=0
43. 在TC中,执行下面程序片段的结果是( )。
int x=13;
do { printf("%2d",--x);} while(!x);
A 打印出212 B 打印出12
C 不打印任何内容 D 陷入死循环
44. 在TC中,若i,j已定义为int类型,且内循环体不改变i,j的值,则以下程序段中内循环体的总的执行次数是( )。
for(i=5;i;i--)
for(j=0;j<4;j++) {…}
A 20 B 25 C 24 D 30
45. 在TC中,若x=0,y=1,则语句while(x==y){x++; break;} 循环体执行次数 是( )。
A 0 B 2 C 1 D 3
46. 在TC中,设k为整型变量,则下面while循环共执行( )次。
k=2; while(k!=0) printf("%d",k), k--; printf("\n");
A 无限多 B 2 C 1 D 0
47. 在TC中,设已定义k为int整型变量,则有下面while循环执行( )次。 k=10; while(k=0) k=k-1;
A 一次也不执行 B 无限循环
C 执行10次 D 执行1次
48. 在C语言中,若i=3,则语句 while (i) { i--; break;}的循环次数为( )。
A 0 B 3 C 2 D 1
49. 在TC中,若已知int a,x; 以下( )是正确的赋值语句。
A a=-a=(x=1,x++,x+2) B a*=*a+1
C a=(a[2]+a[2]/2) D a="good"
50. 在TC中,不能把字符串 "Hello!" 赋给数组b的语句是( )。
A char b[10];b="Hello!";
B char b[10]={'H','e','l','l','o','!'};
C char b[10];strcpy(b,"Hello!");
D char b[10]="Hello!";
51. 在TC中,假定所有变量均已正确说明,下列程序段运行后x的值是 ( )。 a=b=c=0;x=35; if(!a) x=3; else x=4;
A 34 B 4 C 35 D 3
52. 在C语言中,执行下面语句后,输出的结果是( )。
int x=10,y=3; printf("%d\n",y=x/y);
A 0 B 3 C 1 D 不确定的值
53. 在TC中,定义 int *swap() 指的是( )。
A 指一个返回整型值的函数swap B 说法均错
C 指一个指向函数swap()的指针,函数返回一个整型值
D 指一个返回指向整型值指针的函数swap
54. 在TC中,设有如下定义: int (*ptr)(); 则以下叙述中正确的是( )。
A ptr是指向一维组数的指针变量
B ptr是指向函数的指针,该函数返回一个int型数据
C ptr是指向int型数据的指针变量
D ptr是一个函数名,该函数的返回值是指向int型数据的指
55. 在TC中,若 int x=2, y=2, z=2 ; 则表达式 z+=++x+y++的值为( )。
A 7 B 6 C 5 D 8
56. 在TC中,设x,y,z,t均为int型变量,则执行以下语句后,t的值为( ) x=y=z=1; t=++x||++y&&++z;
A 不定值 B 2 C 1 D 0
57. 在TC中,若有定义 int y=2; int z=5 ,x=-4; 则表达式y+=abs(x)+x+z的值为( )。
A 6 B 9 C 8 D 7
58. 在TC中,若有定义:static int x[2][3]={2,3,4,5,6,7},则表达式*x[0]的值为( )
A 3 B 2 C 4 D 5
59. 在TC中,设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )。
A k=*p1+*p2; B p1=p2; C p2=k; D k=*p1*(*p2);
60. 在TC中,已知定义:int b[]={1,2,3,4},y,*p=b;执行y=*p++后,y的值为( )。
A 3 B 2 C 1 D 4
61. 在TC中,若有以下定义: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;则结果数值为4的表达式是( )。
A a[g-c] B a[4] C a['d'-c] D a['d'-'c']
62. 在TC中,以下程序运行后,输出结果是( ) 。
main( ){ char *s="abcde"; s+=2; printf("%ld \n",s);}
A cde B 字符c的ASCII码值 C 出错 D 字符C的地址
63. 在TC中,以下程序运行后,输出结果是( ) 。
main( ){ char *s="abcde"; s+=2; printf("%c \n",*s);}
A cde B c C 出错 D 字符C的地址
64. 在TC中,以下程序运行后,输出结果是( ) 。
main( ){ char *s="abcde"; s+=2; printf("%s \n",s);}
A cde B 字符c的ASCII码值 C 出错 D 字符C的地址
选择题参考答案
01-05 DACDC 06-10 BBAAA
11-15 DAACC 16-20 DBABD
21-25 ACCCA 26-30 BBABD
31-35 DAACC 36-40 DBBAD
41-45 ADBAA 46-50 BADAA
51-55 DBDBA 56-60 CDBCC
61-64 CDBA
15
展开阅读全文