湖科大信计专业大一下C语言实验简单30题
1、有一分数序列:2/1 , 3/2, 5/3, 8/5 …求这个序列的前20项之和为。 A、31.660259 B、331.660259 C、332.660259 D、32.660259
#include<stdio.h>
int main()
{
double a=2;
double b=1;
double sum=0;
double temp=0;
for(int i=1;i<=20;i++)
{
sum+=a/b;
temp=a;
a+=b;
b=temp;
}
printf("%lf",sum);
}
2、设某4位数的各位数字的平方和等于100,问: 1)共有多少个这种4位数; 2)最大的那个数。 A)47,9331 B) 47,9332 C)49,9331 D) 49,9332
#include<stdio.h>
int main()
{
int number;
int a,b,c,d;
int count=0;
for(number=1000;number<10000;number++)
{
a=number/1000;
b=(number/100)%10;
c=(number%100)/10;
d=number%10;
if(a*a+b*b+c*c+d*d==100)
{
count++;
printf("%d ",number);
}
}
printf("\n");
printf("个数为%d\n",count);
}
3、输出2000内的素数个数并求所有素数之和(1除外)。 A、277049 303 B、277050 303 C、277049 302 D、277050 302
#include<stdio.h>
#include<math.h>
int main()
{
int i,j;
int sum=0;
int count=0;
for(i=2;i<2000;i++)
{
for(j=2;j<2000;j++)
{
if(i%j==0)
break;
}
if(j>=i)
{
sum+=i;
count++;
}
}
printf("总数和是%d,个数是%d",sum,count);
}
4、四位正整数,末位是3且被7整除的数,问有多少个这种数的个数 A、127 B、128 C、129 D、130
#include<stdio.h>
int main()
{
int num;
int count=0;
for(num=1000;num<10000;num++)
{
int end=num%10;
if(end==3&&(num%7)==0)
{
count++;
}
}
printf("%d",count);
}
5、编程计算1!+2!+3!+……10! A)4037911 B)4037912 C)4037913 D)4037914
#include <stdio.h>
int main()
{
int a=1,i;
int sum=0;
int n;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
a*=i;
sum=sum+a;
}
printf("1!+2!+3!+...+%d!=%d\n",n,sum);
}
6、倒勾股数是满足下列公式:1/A2+1/B2=1/C2(设A>B>C)的一组(3个)整数(A,B,C),例如,(165,65,60)是倒勾股数,因为:1/1562+1/652=1/602,A,B,C之和小于100倒勾股数的有多少组? A、1 B、2 C、3 D、4
#include<stdio.h>
int main()
{
int count=0;
for(int C=1;C<=100;C++)
{
for(int B=C+1;B<=100;B++)
{
for(int A=B+1;A<=100;A++)
{
if(1.0/(A*A)+1.0/(B*B)-1.0/(C*C)==0&&A+B+C<=100)
{
count++;
}
}
}
}
printf("A,B,C之和小于100的倒勾股数有 %d 组",count);
}
7、其平方等于某两个正整数平方之和的正整数称为弦数。 例如,由于32+42=5^2 ,因此,5为弦数。求[121,300]之间:弦数的数目 A、97 B、98 C、79 D、179
#include <stdio.h>
int main()
{
int a,b,c;
int temp=0;
int count=0;
for(c=121;c<=300;c++)
{
for(a=1;a<=c;a++)
{
for(b=c;b>=1;b--)
{
if(a*a+b*b==c*c)
{
printf("%d ",c);
count++;
temp=1;
break;
}
}
if(temp==1)
{
break;
}
}
temp=0;
}
printf("\n");
printf("个数为%d",count);
}
8、设一个非线性方程f(x)=0,求方程的根的牛顿迭代公式为:x(n+1)=x(n)-f(x(n))/f’(x(n)) 请编程求方程f(x)=xsinx-1在[0,2]中的零点(精确到1E-5)。 A)1.114157 B)0.391021 C) 1.314729 D)-0.391021
#include<stdio.h>
#include<math.h>
int main()
{
double x1=0,x2=2,fx1,fx2;
while(fabs(x2-x1)>1e-5)
{
x1=fabs(x1+x2)/2;
fx1=x1*sin(x1)-1;
fx2=sin(x1)+x1*cos(x1);
x2=x1-fx1/fx2;
}
printf("%.6lf\n",x2);
return 0;
}
9、编程计算1!+2!+3!+……11! A) 43954713 B) 43954714 C) 43954715 D) 43954716
#include <stdio.h>
int main()
{
int a=1,i;
int sum=0;
for (i=1;i<12;i++)
{
a*=i;
sum=sum+a;
}
printf("1!+2!+3!+...+10!+11!=%d\n",sum);
}
10、若两素数之差为2,则称该两素数为双胞胎数,求出[2,300]之内有多少对双胞胎数。 A)16 B)17 C)18 D)19
#include<stdio.h>
int main()
{
int x,a,b,count=0,i=2,j=2;
for(x=2;x<=300;x++)
{
for(i=2;i<x;i++)
{
if(x%i==0)
break;
}
if(i==x)
{
a=i;
b=a+2;
for(j=2;j<=b;j++)
{
if(b%j==0)
break;
}
if(j==b)
{
printf("%d\t%d\n",a,b);
count++;
}
}
}
printf("\n共%d对。",count);
}
11、求出[2,478]以内的所有素数之和 A)19580 B)15980 C)19850 D)15890
#include<stdio.h>
#include<math.h>
int main()
{
int i,j;
int sum=0;
int count=0;
for(i=2;i<478;i++)
{
for(j=2;j<478;j++)
{
if(i%j==0)
break;
}
if(j>=i)
{
sum+=i;
count++;
}
}
printf("总数和是%d,个数是%d",sum,count);
}
12、所谓"水仙花数"指一个三位数,其各位数字立方和等于该数本身。(例如:153是一"水仙花数",因为153=13+33+5^3)。编一程序,求出[100,999]中所有水仙花数的和。 A) 1301 B)1302 C)1303 D)1304
#include<stdio.h>
int main()
{
int i,j,k,narcissistic_Number;
int sum=0;
printf("水仙花数是:\n");
for(narcissistic_Number=100;narcissistic_Number<=999;narcissistic_Number++)
{
i=narcissistic_Number/100;
j=narcissistic_Number/10-i*10;
k=narcissistic_Number%10;
if(narcissistic_Number==i*i*i+j*j*j+k*k*k)
{
printf("%d ",narcissistic_Number);
sum+=narcissistic_Number;
}
}
printf("\n");
printf("其和为%d",sum);
return 0;
}
13、回文数是指正读和反读都一样的数,如121等都是回文数,求[100,999]以内的所有回文数。 A) 50 B) 68 C) 80 D) 90
#include<stdio.h>
int main()
{
int number;
int count=0;
for(number=100;number<=999;number++)
{
if((number/100)==(number%10))
{
printf("%d ",number);
count++;
}
}
printf("\n");
printf("个数是%d",count);
}
14、求[100,999]之间能被21整除的数的个数 A)40 B)41 C)42 D)43
#include<stdio.h>
int main()
{
int number;
int count;
for(number=100;number<=999;number++)
{
if(number%21==0)
{
count++;
}
}
printf("个数为%d",count);
}
15、一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下, 求它在10次落地时,共经过()米 A、199.609375 B、199.902344 C、199.804688 D、199.60378
#include<stdio.h>
int main()
{
float mi=100;
int count;
float sum=100;
for(count=1;count<10;count++)
{
mi=mi/2.0;
sum+=(mi*2);
}
printf("%f",sum);
}
16、由1,2,3,4,5组成的五位数(数字不重复),共有120个,由小到大排列,12345是第一个,54321是最后一个,问第99个数是几 A、51320 B、51327 C、51324 D、51326
#include<stdio.h>
int main()
{
int i,j,k,m,n;
int count=0;
for(i=1;i<=5;i++)
{
for(j=1;j<=5;j++)
{
for(k=1;k<=5;k++)
{
for(m=1;m<=5;m++)
{
for(n=1;n<=5;n++)
{
if(i!=j&&i!=k&&i!=m&&i!=n&&j!=m&&j!=k&&j!=n&&k!=m&&k!=n&&m!=n)
{
count++;
printf("第%d个数是%d\n",count,10000*i+1000*j+100*k+10*m+n);
}
}
}
}
}
}
}
17、三位正整数,各位数字之和为14,求所有数之和 A、38462 B、38463 C、38464 D、38465
#include<stdio.h>
int main()
{
int number;
int sum=0;
for(number=100;number<=999;number++)
{
int a=number/100;
int b=(number/10)%10;
int c=number%10;
if(a+b+c==14)
{
sum+=number;
}
}
printf("最后和为%d",sum);
}
18、应用ex=1+x+x2/2!+x3/3!+…(前20项的和),求e3=() A、21.0855 B、20.0855 C、19.0855 D、18.0855
#include<stdio.h>
int main()
{
double sum;
double temp;
int n;
double x;
scanf("%lf %d",&x,&n);
temp=1;
sum=1;
int i;
for(i=1;i<n;i++)
{
temp=temp*(x/i);
sum=sum+temp;
}
printf("%.6lf\n",sum);
return 0;
}
19、已知: F(0)= F(2)=1 F(1)=0 F(N)=F(N-1)-2F(N-2)+F(N-3) (N>2) 求F(0)到F(200)之间零的个数 A) 2 B) 101 C)21 D) 12
#include<stdio.h>
int main()
{
int a[500];
a[0]=1,a[1]=0;a[2]=1;
int i;
int count=0;
for(i=3;i<=200;i++)
{
a[i]=a[i-1]-2*a[i-2]+a[i-3];
}
for(i=0;i<=200;i++)
{
if(a[i]==0)
{
count++;
}
}
printf("%d",count);
}
20、求[4,1500]范围内能被4整除,且其中至少有一位数字是8的数 总共有几个 A)122 B)123 C)124 D)125
#include<stdio.h>
int main()
{
int num;
int count=0;
for(num=4;num<=1500;num++)
{
if(num%4==0&&(num%10==8||num/10%10==8||num/100%10==8))
{
count++;
}
}
printf("4———1500内满足条件的数有 %d 个",count);
}
21、二分法求方程xcosx-2=0在(pi,2pi)之间的根为( ),精确到1E-5。 A、4.114182 B、5.124182 C、5.114182 D、6.114182
#include <stdio.h>
#include<math.h>
#define pi 3.14159
int f(double x)
{
return x*cos(x)-2;
}
int main()
{
float a,b,c;
a=pi;
b=2*pi;
c=(a+b)/2;
while(f(c)!=0)
{
if(f(a)*f(c)<0)
{
b=c;
c=(a+b)/2;
}
else
{
a=c;
c=(a+b)/2;
}
}
printf("%lf",c);
}
22、求出[100,500]以内同时满足除以7余5,除以5余3,除以3余1的所有整数的个数。 A) 1 B)2 C) 3 D) 4
#include<stdio.h>
int main()
{
int num;
int count=0;
for(num=100;num<=500;num++)
{
if(num%7==5&&num%5==3&&num%3==1)
count++;
}
printf("%d",count);
}
23、 , 其中X=0.37,n=0,1,2,3,…… , 当最后一项的绝对值小于10-6时,停止计算, 求Y值 (精确到小数点后第5位,四舍五入)。 A、0.68517 B、0.68519 C、0.68518 D、0.68520
#include<stdio.h>
#include<math.h>
#define x 0.37
int main()
{
int n;
float sum=1;
float y;
for(n=1;(pow(x,n)/n)>0.000001;n++)
{
y=pow(x,n)/n;
if(n%2!=0){
y=-y;
}
sum+=y;
}
printf("%.5f",sum);
}
24.运用如下公式计算圆周率的近似值,当最后一项的绝对值小于10-6时,停止计算。 ,
求值. A、3.141591 B、3.141592 C、3.141590 D、3.141593
#include<stdio.h>
#include<math.h>
int main()
{
double a=0.0,b=1.0,t=1.0;
for(int i=3;fabs(b)>1e-6;i+=2)
{
a+=b;
t=-t;
b=t/i;
}
printf("PI=%.6f\n",4*a);
return 0;}
25.计算式子的值(精确到小数点后第4位,四舍五入)。 A、53.2495 B、53.2496 C、53.2497 D、53.2490
#include<stdio.h>
int main()
{
float sum=1;
float i=3;
float j=2;
for(i=3,j=2;i<=101,j<=100;i+=2,j+=2)
{
sum+=i/j;
}
printf("%.4f",sum);
}
26.求出100到300之间满足如下条件: 各位数字之和为12,数字之积为42 的数的个数。 A、5 B、3 C、4 D、6
#include<stdio.h>
int main()
{
int number;
int count=0;
for(number=100;number<=400;number++)
{
int a=number/100;
int b=number/10%10;
int c=number%10;
if(a+b+c==12&&a*b*c==42)
{
count++;
}
}
printf("共有%d个满足条件的数",count);
}
27.编写程序,求1~100之间的全部同构数的个数。同构数是这样一组数;它出现在平方数的右边。例如:5是25的右边的数,25是625右边的数,5和25都是同构数。 A、5 B、3 C、4 D、6
#include<stdio.h>
int main()
{
int count=0;
for(int i=1;i<100;i++)
{
int num=i*i;
if(i<10)
{
int a=num%10;
if(i==a)
{
count++;
printf("%2d是%4d的同构数\n",i,num);
}
}
else if(i>=10&&i<100)
{
int b=num%100;
if(i==b)
{
count++;
printf("%2d是%4d的同构数\n",i,num);
}
}
}
printf("1--100内共有%d个同构数",count);
}
28.写一个函数计算2016以内最大的10个能被13或17整除的自然数之和。 A、19786 B、19766 C、19767 D、19788
#include<stdio.h>
int fun(int k){
int sum=0,mc=1;
int count = 0;
printf("k以内的10个能被13或17整除的自然数:\n");
while((k >= 2)&&(mc <= 10)){
if((k % 13 == 0)||(k % 17 == 0))
{
sum+=k;
mc ++;
count ++;
printf("\n");
printf("k = %d",k);
}
k --;
}
printf("\n");
printf("k以内的10个能被13或17整除的自然数的和: m = %d\n\n",sum);
return sum;
}
int main(){
fun(2016);
}
29.编写一个程序,求出1~100之间所有每位数的乘积大于每位数的和的数(例如:98满足9*8>9+8),则所有满足条件的数的和为( ) A、3876 B、3976 C、3768 D、3850
#include <stdio.h>
int main()
{
int i,a,b;
int sum=0;
for(i=1;i<=100;i++)
{
a=i%10;
b=i/10%10;
if((a*b)>(a+b))
{
sum+=i;
}
}
printf("其和值为%d",sum);
return 0;
}
30.编写程序,按照下列的计算公式计算的值,当计算到第八项时,的值为( )
A、3.141376 B、3.14159 C、3.141278 D、3.141514
#include<stdio.h>
#include<math.h>
#define i 2.0
int main()
{
float product=2;
float a[10];
a[1]=sqrt(2);
int j;
for(j=1;j<8;j++)
{
a[j]=sqrt(2+a[j-1]);
product*=i/a[j];
}
printf("%f",product);
}
|