题目描述
有一个圆,圆心坐标是(0,0),半径r=4.5,任意输入一个点的坐标(x,y),判断这个点是在圆内,圆周上,还是在圆外。
输入要求
两个浮点数x,y
输出要求
如果在圆内,输出in
如果在圆外,输出out
如果在圆上,输出on
假如输入
1.0 1.0
应当输出
in
#include<stdio.h> #include<stdlib.h> int cmp(const void*a,const void*b) { return *(int*)a-*(int*)b; } int main(){ int n,t,i,m=0,it[501]; while(scanf("%d %d",&n,&t)!=EOF){ m=0; for(i=0;i<n;i++) scanf("%d",it+i); qsort(it,n,sizeof(int),cmp); for(i=0;i<n;i++) if(it[i]>t)t+=2; else m++; t+=m; printf("%d ",t);} return 0; } |
题目描述
用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10的-n次方为止(绝对值小于10的-n次方的这项不计算在内)。
输入要求
输入若干组精度要求n(3<=n<=8),n=0时退出,n超出范围输出“Error!”。
输出要求
输出各组不同精度要求的值。
假如输入
7
0
应当输出
3.141592
#include <stdio.h> #include <math.h>
int main( ) { int k,s=1; double n,t,pi; scanf("%d",&k); while (k!=0) { if (k>=3 && k<=8) { n=1,t=1,pi=0; while((fabs(t))>pow(10,-k)) { pi=pi+t; n=n+2; s=-s; t=s/n; } pi=pi*4; printf("%lf ",pi); } else printf("Error! "); scanf("%d",&k); } return 0; } |
题目描述
著名意大利数学家斐波那契(Fibonacci)1202年提出一个有趣的问题。
某人想知道一年内一对兔子可以生几对兔子。他筑了一道围墙,把一对大兔关在其中。已知每对大兔每个月可以生一对小兔,而每对小兔出生后第三个月即可成为“大兔”再生小兔。问一对小兔一年能繁殖几对小兔?
输入要求
多个正整数n(1<=n<=80),表示需要求第n个月新增的兔子对数。
输出要求
对于输入的n,求第n个月新增的兔子对数。当n=0时输入结束,该数据不作处理。
假如输入
16
0
应当输出
987
#include <stdio.h>
int main(){ #ifndef ONLINE_JUDGE freopen("in", "r", stdin); #endif
// r[i][0] is the number of rabbits which born on current month // r[i][1] is the number of rabbits which are 2 months old // r[i][2] is the number of rabbits which are months old (old rabbits can fertility bunny) long long r[81][3] = {{0,0,1}}; for(int i=1; i<=80; i++){ r[i][1] = r[i-1][0]; r[i][2] = r[i-1][1] + r[i-1][2]; r[i][0] = r[i][2]; } int n; while(scanf("%d", &n), n){ printf("%lld ", r[n][0]); }
return 0; } |
题目描述
输入三个自然数N,i,j(l≤i≤N,1≤j≤N),输出在一个N×N格的棋盘中,与格子(i,j)同行、同列、同一对角线的所有格子的位置。例如,n=4,i=2,j=3表示棋盘中的第二行第三列的格子,如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图:
当n=4,i=2,j=3时,输出的结果是:
(2,1) (2,2) (2,3) (2,4) {同一行上格子的位置}
(1,3) (2,3) (3,3) (4,3) {同列列上格子的位置}
(1,2) (2,3) (3,4) {左上到右下对角线上的格子的位置}
(4,1) (3,2) (2,3) (1,4) {左下到右上对角线上的格子的位置}
输入要求
只有1行,共3个数,分别为N(1≤N≤10000),i,j的值。
输出要求
按照题目描述的格式输出。
假如输入
4 2 3
应当输出
(2,1)(2,2)(2,3)(2,4)
(1,3)(2,3)(3,3)(4,3)
(1,2)(2,3)(3,4)
(4,1)(3,2)(2,3)(1,4)
#include<stdio.h> #include<string.h> int main(){ int N,a,b,c,d; while(scanf("%d%d%d",&N,&a,&b)!=EOF){ c=b-a; d=b+a; int i,j; for(i=1;i<=N;i++) printf("(%d,%d)",a,i); puts(""); for(i=1;i<=N;i++) printf("(%d,%d)",i,b); puts(""); for(i=1;i<=N;i++) if(i+c>=1&&i+c<=N) printf("(%d,%d)",i,i+c); puts(""); for(i=N;i>=1;i--) if(d-i>=1&&d-i<=N) printf("(%d,%d)",i,d-i); puts("");} return 0; } |
题目描述
输入整数R,输出小于等于R的满足X2+Y2=Z2的所有正整数X,Y,Z。
输入要求
只有一个数:R(5≤R≤I000000)。
输出要求
只有一个数:表示共有多少组满足条件的勾股数。
假如输入
10
应当输出
2
#include<stdio.h> #include<math.h> int main() { int r,i=0,x,y,z; scanf("%d",&r); for(x=1;x<=r;x++){ for(y=1;y<=r;y++){ for(z=1;z<=r;z++){ if(x*x+y*y==z*z) i=i+1; } } } i=i*0.5; printf("%d",i); return 0; } |
题目描述
桐桐在研究素数时,发现有些素数很特别,例如131,它是素数,同时,它又是回文数:从左边读和从右边读都是同一个数。桐桐想把不大于n的所有既是回文数又是素数的数求出来,你能帮助她吗?
输入要求
输入数据有多组,每组只有一个整数n(2≤n≤10^6)。
输出要求
输出满足题设条件的数,每行输出5个数。
假如输入
100
应当输出
2 3 5 7 11
#include<stdio.h> #include<math.h> int prime(int m); int isCircle(int m); int reverse(int i);
int main( ) { int m,count; long n; while (scanf("%ld",&n)!=EOF){ count=0; for(m=2;m<=n;m++) { if(prime(m)!=0) { if(isCircle(m)) { if (count==0) printf("%d",m); else printf(" %d",m); count++; if (count==5) {printf(" ",m);count=0;}
} } } if (count!=0) printf(" ",m); } return 0; }
int prime(int m) { int i,n; if(m==1) return 0; n=sqrt(m); for(i=2;i<=n;i++) if(m%i==0) { return 0; } return 1; } int isCircle(int m) { int a; a=reverse(m); if(a==m) return 1; else return 0; }
int reverse(int i) { int a,j=0; a=i; while(a) { j=j*10+a%10; a=a/10; } return j; } |
题目描述
用泰勒展开式计算sin和cos值,当最后一项的绝对值小于0.00001时,累加结束
输入
输入两个正整数x和y,中间有一个空格
输出
sin(x)和cos(y),中间有一个空格
输入
30
30
输出
0.500000
0.866025
提示:
const double PI=3.1415926;
弧度计算公式:x*PI/180, 其x代表你的输入;
代码
#include<stdio.h> const double PI=3.1415926; double mysin(double); double mycos(double); double myabs(double); int main( ) { double a,b; scanf_s("%lf%lf",&a,&b); printf("%.6lf ",mysin(PI*a/180)); printf("%.6lf ",mycos(PI*b/180)); return 0; }
double mysin(double x) { double sum=x,x_pow=x,item=x; int n=1,s=1,a=1; while(myabs(item)>0.00001) { s=s*(n+1)*(n+2); x_pow*=x*x; a=(-1)*a; item =x_pow/s*a; sum+=item; n+=2; } return sum; }
double mycos(double x) { double sum=1,x_pow=1,item; int n=0,s=1,a=-1; do { s=s*(n+1)*(n+2); x_pow*=x*x; item =x_pow/s*a; sum+=item; a=(-1)*a; n+=2; }while(myabs(item)>0.00001); return sum; }
double myabs(double x) { return ((x>=0)?x:-x); } |
题目描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。
输入要求
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)
输出要求
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
假如输入
100 120
300 400
121 200
应当输出
no
370 371
153
提示
while (scanf_s("%d%d",&m,&n)!=EOF)
#include <stdio.h> int main() { int m,n; while (scanf("%d%d",&m,&n)!=EOF) { int i,j,count=0,b[3],a[5],t; for (i=m; i<=n; i++){ b[0] = i/100; b[1] = i/10%10; b[2] = i%10; t = b[0]*b[0]*b[0]+b[1]*b[1]*b[1]+b[2]*b[2]*b[2]; if (i==t) a[count++] = i; } for (j=0; j<count-1; j++) printf("%d ",a[j]); if (count) printf("%d ",a[count-1]); else printf("no "); } return 0; } |