资源描述
《C语言程序设计》复习题库
1、计算下面公式值。T=1/1!+1/2!+1/3!+……+1/m!当m=5时成果(按四舍五入保存3位小数)。(注:所有变量用float数据类型定义!)答案:1.717
2、程序填空:用*号输出字母C图案。
#include "stdio.h"
#include "conio.h"
main()
{
_____________
printf(" *\n");
_____________
_____________
getch();
}
3、8232和9678,它们个、十、百、千各位数字之和是15倍数,8+2+3+2=15,9+6+7+8=30。编写程序,求四位数所有奇数中,这样数(各位数字之和是15倍数)总和。(注:所有变量用long数据类型定义!) 答案:1533459
4、/*下面程序功能是:计算并输出700以内最大10个能被13或者17整除自然数之和。请改正程序中错误,并运营,最后给出程序运营对的成果。(注:只有一处错误!)*/ 答案:6591
#include <stdio.h>
void main()
{
int total=0,mc=1,k=700;
int pm[10],count=0;
while( (k>=2) && mc<=10 )
{
if ((k%13==0) || (k%17==0))
{
pm[mc] = k;
mc++;
}
k--;
}
for( k=1;k<=10;k++ )
total += pm[k-1];
printf(" %d\n",total);
}
5、求x = 1+1/5+1/7+1/9+…近似值,直到最后一项绝对值不大于10-5为止。
6、计算如下公式A20值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),......(按四舍五入保存10位小数)。答案:0.
7、求[10,1600]之间能被7整除奇数之和。答案:90965
8、函数mystrlen(char *s)功能是求字符串s长度。请填空。
Int mystrlen(char *s)
{int num=0;
while( ) {____;}
return ( );
}
9、[100,500]之间同步满足除以7余5,除以5余3,除以3余1整数之和。答案:1042
10、求[100,999]之间所有素数个数。答案:143
11、编写程序,求满足下列条件所有四位数ABCD个数,该四位数是8倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。答案:110
12、/*数列1,2,1,4,7,12,23…具备这样特性,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7….。下列程序功能是求出该数列前10项和。请改正程序中错误,并运营修改后程序,给出程序成果。(注:只有一处错误!)*/
答案:311
#include <stdio.h>
void main()
{
long sum=0,a[30]={1,2,1};
int k,j;
for( k=3;k<10;k++ )
a[k] = a[k-1]+a[k-2]+a[k-3];
for( j=1;j<=10;j++ )
sum += a[j];
printf(" %ld\n",sum);
}
13、/*求1到之间双胞胎数对数。双胞胎数:两素数差为2称为双胞胎数。例如227和229是一对双胞胎数,它们都是素数且差为2。*/ 答案:61
#include <stdio.h>
int prime(int x)
{
int k;
for(k=2;k<x;k++)
if(__________) break;
if(k==x) return 1;
else return 0;
}
void main( )
{ int a,b,n=0;
int prime(int x);
for(a=2;a<=1998;a++)
{
if(prime(a)==1)
{ b=a+2;
if(__________) n++;
}
}
printf(" %d \n",n);
}
14、编写程序,记录200~400之间所有满足三个数字之积为42,三个数字之和为12数个数。答案:4
15、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生人数分派共有多少种不同解(去掉某类学生数为0解)?答案:9
16、爱因斯坦走台阶:有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件最小台阶数是多少?答案:119
17、/*求1000以内最大10个素数和。*/ 答案:9664
#include <stdio.h>
int prime(long n)
{
long k;
for(k=2;k<=n-1;k++)
if(____________) return 0;
return 1;
}
void main( )
{
long t,total=0,num=0;
int prime(long n);
for(t=1000;t>=2;t--)
{
if(____________)
{
total=total+t;num++;
}
if(num==10)break;
}
printf("\n%ld",total);
}
18、/*求1!+2!+3!+...+7!,7!表达7阶乘。*/ 答案:5913
#include <stdio.h>
long jc( long x)
{
long k,fac=1;
for(k=1;________;k++)
fac *=k ;
________;
}
void main( )
{
long n,sum=0;
long jc(long x);
for(n=1;n<=7;n++)
________;
printf("\n%ld",sum);
}
19、求10000以内所有完数之和,"完数"是指:一种数如果刚好与它所有真因子(不涉及该数自身)之和相等,如:6=1+2+3,则6就是一种完数。(注:所有变量用int数据类型定义!) 答案:8658
20、/*数列1,2,1,4,7,12,23…具备这样特性,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7….。下列程序先给出数列第一项(1)、第二项(2)、第三项(1),再逐渐计算其他项并保存在数组a中,最后求出该数列第25项。请改正程序中错误,并运营修改后程序,给出程序成果。(注:只有一处错误!)*/答案:1323525
#include <conio.h>
#include <stdio.h>
#define N 30
void main()
{
long a[N];
int k;
clrscr();
a[0] = 1; a[1] = 2; a[2]=1;
for( k=3;k<=20;k++ )
a[k] = a[k-1]+a[k-2]+a[k-3];
printf(" %ld\n",a[k-1]);
}
21、/*求区间[200,3000]中所有回文数和,回文数是正读与反读都是同样数,如525,1551。*/ 答案:87970
#include <stdio.h>
int hws(long n)
{
long x=n,t=0,k;
while(x>0)
{
k=x%10;
t = t*10 + k;
x=x/10;
}
if( ___________) return 1;
else return 0;
}
void main( )
{
long k,s=0;
int hws(long n);
for(k=200;k<=;k++)
if(___________)
s=s+k;
printf("\n%ld",s);
}
22、/*下面程序是求表达式值:
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.
#include <stdio.h>
double fun(int n)
{
double s=1.0,t=1.0;
int k;
double rtn=1.0;
for(k=1;k<=n;k++)
{
t = t*k;
s = s*(2*k+1);
_________________
}
return rtn;
}
void main()
{
double sum;
__________
printf("\n %.10lf",sum);
}
23、已知:Sn=2/1+3/2+4/3+…+(n+1)/n,求Sn不超过50最大值(按四舍五入方式精准到小数点后第三位)。答案:49.395
24、计算Y=X/1!-X^3/3!+X^5/5!-X^7/7!+……前20项值(已知:X=2)。规定:按四舍五入方式精准到小数点后第二位。答案: 0.91
25、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例:3^2+4^2=5^2,则5为弦数,求[131,200]之间最小弦数。答案:135
26、已知X,Y,Z为三个正整数,且X^2+Y^2+Z^2=25^2,求X+Y+Z最大值。答案:43
27、猴吃桃:有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得但是瘾,又多吃了一种。第二天接着吃了剩余桃子中一半,仍但是瘾,又多吃了一种。后来每天都是吃尚存桃子一半零一种。到第10天早上小猴子再去吃桃子时,看到只剩余一种桃子了。问小猴子第一天共摘下了多少个桃子。答案:1534
28、求[1,50]之间所有整数能构成直角三角形三边组数。例如:3*3+4*4=5*5,它们构成直角三角形,因此{3,4,5}作为一组,但{4,3,5}视为跟{3,4,5}相似一组。答案:20
29、15元钱换成1元、2元、5元票面,问有多少种不同兑换办法?输出所有兑换办法。 答案: 18种
30、用迭代法求x等于a开平方正数值。
迭代公式为:xn+1=1/(2*(xn+a/xn)),规定直到先后两次求出x差绝对值不大于10-5为止。A值从键盘输入。
31、求最大水仙花数,所谓水仙花数,指是一种三位数,其各个数字立方之和等于该数。 答案:407
32、一球从100米高度自由落下,每次落地后反跳回原高度一半,再落下。求它在第10次落地时,共通过多少米?第10次反弹多高?
答案: 299.609375 0.097656
33、编写程序,完毕如下功能,输入8个float类型实数,分别求最大值和最小值,保存三位小数输出最大值和最小值。
34、编写程序输出如下字符图形:
@ @ @ @ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @ @ @
…
@ @
@
35、计算:s=f(-30)+f(-29)+......+f(-1)+f(0)+f(1)+......+f(30)值。其中函数定义如下:f(x)=(x+1)/(x-2) 如果 x>1; f(x)=0 如果 x=0 或 x=2 ;f(x)=(x-1)/(x-2) 如果 x<0。(按四舍五入保存6位小数) 答案:65.223018
36、编写程序输出如下字符图形(最后一行19颗星):
* * *
* * * * *
* * * * * * *
…
* * * … * * * *
37、公司发放奖金依照利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元某些按10%提成,高于10万元某些,可提 成7.5%;20万到40万之间时,高于20万元某些,可提成5%;40万到60万之间时高于 40万元某些,可提成3%;60万到100万之间时,高于60万元某些,可提成1.5%,高于100万元时,超过100万元某些按1%提成,从键盘输入当月利润I,求应发放奖金总数?
38、计算下面公式值。 T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1)),当m=50时成果(按四舍五入保存6位小数)。(注:所有变量用double数据类型定义!) 答案:1.480392
39、程序填空:输入一行字符,分别记录出其中英文字母、空格、数字和其他字符个数。
程序分析:运用while语句,条件为输入字符不为'\n'.
#include "stdio.h"
#include "conio.h"
main()
{
char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
_________
else if(c==' ')
_________
else if(c>='0'&&c<='9')
_________
else
_________
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);
getch();
}
40、打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
41、求出[2,478]以内:
(1)最大素数。 *467
(2)素数数目。 *91
(3)所有素数之和。 *19580
42、已知:
(1)若N=10,求Y 。 *1304735
(2)若N=15,求Y。 *1.184172E+07
43、已知:,其中:X = 0.25,n = 1,2,┅,求:
(1) Y值(精准到小数点后第5位) *1.28767
(2) 与(1)匹配最小n *7
44、如下程序输入三个整数值给a,b,c,程序把b中值给a,把c中值给b,把a中值给c,互换后输出a、b、c值。例如:读入后,a=10、b=20、c=30;互换后,a=20、b=30、c=10。请填空。
#include<stdio.h>
main()
{int a,b,c,t;
printf("Enter a,b,c:");
scanf("%d%d%d", ___);
___;a=b;___;___;
printf("a=%d b=%d c=%d\n",a,b,c);
}
45.下面fun函数功能是从a数组中查找值为y元素;若找到,返回该元素下标值,若不存在值为y元素,返回0;数列放在a数组a[1]到a[n]中,a[0]元素用来作为暂时存储单元。请填空。
fun(int a[],int y,int n)
{int k=0;
a[0]=y;k=n;
while( ) k--;
return( );
}
46、/*下列程序功能是求出二阶Fibonacci数列前10之和,1,1,2,3,5,8…。请改正程序中错误,并运营修改后程序,给出程序成果。(注:只有一处错误!3是第四项,5是第五项。)*/ 答案:143
#include <stdio.h>
void main()
{
long sum=0,a[30]={1,1,2};
int k;
for( k=2;k<10;k++ )
a[k] = a[k-1]+a[k-2];
for( k=1;k<=10;k++ )
sum += a[k];
printf(" %ld\n",sum);
}
47、20,160]之间所有偶数平方和。答案:694380
48、求[10,]之间能被2或3或5整除数之和。答案:67795
49、求800以内最大20个素数之和。答案:14510
50、求当n=60时下式和:s=1+1/(1+2)+1/(1+2+3)+......+1/(1+2+3+......+n)(按四舍五入保存6位小数)。答案:1.967214
51、编写程序:输入x值,按照下列公式计算cos(x)
cos(x)=1-x2/2!+ x4/4!- x6/6!+... 精准到10-5。
/*C1 1.717*/
main()
{
int i;
long jc=1;
float s=0;
for(i=1;i<=5;i++)
{
jc=jc*i;
s=s+1.0/jc;
}
printf("%f",s);
}
/*C3 1533459*/
main()
{
long i,c=0,t=0,g,s,b,q;
for(i=1001;i<=9999;i=i+2)
{
g=i%10;
s=i/10%10;
b=i/100%10;
q=i/1000;
if((g+s+b+q)%15==0)
{
c++;
t=t+i;
}
}
printf("%ld",t);
}
/*C4 6591*/
main()
{
int i,s=0,c=0;
for(i=700;i>=1;i--)
if(i%13==0||i%17==0)
{
c++;
s+=i;
if(c==10)break;
}
printf("%d",s);
}
/*C5 6.058311*/
main()
{
long i=5;
double s=1;
while(1.0/i>=1e-5)
{
s=s+1.0/i;
i=i+2;
}
printf("%lf",s);
}
/*C6 0. */
main()
{
int i;
double a=1;
for(i=2;i<=20;i++)
{
a=1.0/(1+a);
}
printf("%.10lf",a);
}
/*C7 90965*/
main()
{
long i,s=0;
for(i=11;i<=1600;i=i+2)
if(i%7==0)
s=s+i;
printf("%ld",s);
}
/*C9 1042 */
main()
{
long i,s=0;
for(i=100;i<=500;i++)
if(i%5==3&&i%7==5&&i%3==1)
s=s+i;
printf("%ld",s);
}
/*C10 143*/
main()
{
int c=0,i,j,p;
for(i=100;i<=999;i++)
{
p=1;
for(j=2;j<i;j++)
if(i%j==0){p=0;break;}
if(p==1)c++;
}
printf("%d",c);
}
/*C11 110*/
main()
{
int c=0,i,q,b,s;
for(i=1000;i<=9999;i=i+8)
{
q=i/1000;
b=i/100%10;
s=i/10%10;
if(q+b==b+s)c++;
}
printf("%d",c);
}
/*C13 61*/
#include"fun.c"
main( )
{
int a,b,n=0;
int prime(int x);
for(a=2;a<=1998;a++)
if(prime(a)==1&&prime(a+2)==1)
n++;
printf("%d",n);
}
/*C14 4*/
main()
{
int c=0,i,g,s,b;
for(i=200;i<=400;i++)
{
g=i%10;
s=i/10%10;
b=i/100;
if(g+s+b==12&&g*s*b==42)
c++;
}
printf("%d",c);
}
/*C15 9*/
main()
{
int d,z,x,c=0;
for(d=1;d<=17;d++)
for(z=1;z<=25;z++)
{
x=30-d-z;
if(x>=0&&d*3+z*2+x==50)
c++;
}
printf("%d",c);
}
/*C16 119*/
main()
{
int tj,i,j;
for(tj=1;tj>=0;tj++)
if(tj%2==1&&tj%3==2&&tj%4==3&&tj%5==4&&tj%6==5&&tj%7==0)break;
printf("%d",tj);
}
/*C19 8658*/
main()
{
int i,s=0,w,j;
for(i=1;i<=10000;i++)
{
w=0;
for(j=1;j<i;j++)
if(i%j==0)w+=j;
if(w==i)s+=i;
}
printf("%d",s);
}
/*C20 1323525*/
main()
{
long a[25]={1,2,1};
int i;
for(i=3;i<25;i++)
a[i]=a[i-1]+a[i-2]+a[i-3];
printf("%ld",a[24]);
}
/*C22 1.*/
#define N 24
main()
{
int i,j;
double s=1,s1,s2;
for(i=1;i<=N;i++)
{
s1=1;
s2=1;
for(j=1;j<=i;j++)
{
s1*=j;
s2*=(2*j+1);
}
s+=(s1/s2);
}
printf("%.10lf",s);
}
/*C23 49.395*/
main()
{
int i=1;
double s=0;
do
{
s+=(1+1.0/i);
printf("\n%0.3lf",s);
i++;
}
while(s<50);
}
/*C24 0.91*/
#include<math.h>
main()
{
int x=2,i,j;
double jc(int i);
double y=0,fz;
for(i=1;i<=20;i++)
{
fz=pow(-1,i+1)*pow(x,2*i-1);
y+=fz/jc(2*i-1);
printf("\n%d,%.0lf/%.0lf",i,fz,jc(2*i-1));
}
printf("\n%.2lf",y);
}
double jc(int i)
{
int j;
double r=1;
for(j=1;j<=i;j++)
r*=j;
return r;
}
/*C25 135*/
#include<math.h>
main()
{
long a,b,c;
int xs=0;
for(c=131;c<=200;c++)
{
xs=0;
for(a=1;a<c;a++)
{
b=sqrt(c*c-a*a);
if(b*b+a*a==c*c)
{
xs=1;
break;
}
}
if(xs==1)
{
printf("%ld",c);
break;
}
}
}
/*C26 43*/
main()
{
int d=25;
int x,y,z,max=0;
for(x=1;x<d;x++)
for(y=1;y<d;y++)
for(z=1;z<d;z++)
if(x*x+y*y+z*z==d*d&&max<x+y+z)
max=x+y+z;
printf("%d",max);
}
/*C28 20*/
#include<math.h>
main()
{int a,b,c,n=0;
int xs=0;
for(c=1;c<=50;c++)
for(a=1;a<c;a++)
for(b=1;b<a;b++)
if(b*b+a*a==c*c)n++;
printf("%d",n);
}
/*C30 */
#include<math.h>
main()
{
double x1=1.0,x2;
double a;
scanf("%lf",&a);
while(1)
{
x1=1.0/2*(x1+a/x1);
if(fabs(x2-x1)<=1e-5) break;
else x2=x1;
}
printf("%lf",x1);
}
/*C35 67.223018*/
main()
{
double f(double x),s=0;
int i;
for(i=-30;i<=30;i++)
s=s+f(i);
printf("%lf",s);
}
double f(double x)
{
double y;
if(x==0||x==2)y=0;
else if(x>1)y=(x+1)/(x-2);
else if(x<0)y=(x-1)/(x-2);
return y;
}
/*C38 1.480392*/
main()
{
double t=1;
int m;
for(m=2;m<=50;m++)
t=t+1.0/(m*(m+1));
printf("%lf",t);
}
/*C41 467,91,19580*/
#include"fun.c"
main()
{
int i,c=0,s=0,max;
for(i=2;i<=478;i++)
if(prime(i))
{
max=i;
c++;
s+=i;
}
printf("%d,%d,%d",max,c,s);
}
/*C42 1304735*/
#define N 10
main()
{
int i;
double a,b,y=0;
for(i=1;i<=N;i++)
{
if(i%2==0)
{a=i/2.0;b=i*i*i;}
else
{a=i;b=i*i;}
y=y+(a-b)*(a-b);
}
printf("%lf",y);
}
/*C43 7*/
#define X 0.25
#include<math.h>
main()
{
double y=1,s=1.28767;
int i;
for(i=1;y<=s;i++)
y=y+(double)pow(X,i)/i;
printf("%d",i);
}
/*C46 143*/
#include <stdio.h>
void main()
{
long sum=0,a[30]={1,1,2};
int k;
for( k=2;k<10;k++ )
a[k]= a[k-1]+a[k-2];
for( k=0;k<=10;k++ )
sum += a[k];
printf(" %ld\n",sum);
}
/*C47 694380*/
main()
{
long i,s=0;
for(i=20;i<=160;i+=2)
s=s+i*i;
printf("%ld",s);
}
/*C48 1466295*/
main()
{
long i,s=0;
for(i=10;i<=;i++)
if(i%2==0||i%3==0||i%5==0)
s=s+i;
printf("%ld",s);
}
/*C49 14510*/
#include"fun.c"
main()
{
int i,c=0,s=0;
for(i=800;i>=1;i--)
if(prime(i)&&c<20)
{
c++;
s=s+i;
}
printf("\n%d",s);
}
/*C50 1.967213*/
#define N 60
main()
{
int i;
double s;
for(i=1;i<=60;i++)
s=s+1.0/((1+i)*i/2);
printf("%lf",s);
}
/*fun.c 自定义函数判断素数*/
int prime(int x)
{
int k;
for(k=2;k<x;k++)
if(x%k==0) break;
if(k==x) return 1;
else return 0;
}
展开阅读全文