1 判断点是否在圆上
描述
由键盘输入一个点的坐标, 要求编程判断这个点是否在单位圆(圆心在坐标0,0)上,点在圆上输出Y, 不在圆上输出N。
使用小数点后3位精度进行判断。
输入样例
0.707,0.707
输出样例
Y
#include <stdio.h>
#include <math.h>
int main()
{
double x,y,r;
scanf("%lf,%lf",&x,&y);
r=x*x+y*y;
if(fabs(1-r)<=0.009){
printf("Y");
}
else{
printf("N");
}
}
2 回文串的判断(加强版)
描述
回文串是指一个字符串从左读到右与从右读到左是一样的,现由键盘输入一行字符(最多不超过80个字符,以回车结束),
判断能否通过去掉0个或1个字符,使得字符串成为回文串,如果可以输出Y,否则输出N
输入格式
一行字符
输出格式
Y或N
输入样例
abca
输出样例
Y
提示
提示,去掉c字符,即可成为回文串
代码实现(参考):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int rebackstr(char a[]){
char b[80];
int lena=strlen(a);
for(int i=0;i<lena;i++){
b[lena-i-1]=a[i];
}
for(int i=0;i<lena;i++){
if(a[i]!=b[i])return 0;
}
return 1;
}
void strdelchar(char a[],int n,char b[]){
int lena = strlen(a);
int i;
for(i=0;i<lena;i++){
if(i>=n)b[i]=a[i+1];
else b[i]=a[i];
}
b[i]='\0';
}
int main()
{
char a[80],b[80];
scanf("%s",a);
if(rebackstr(a)){printf("Y");return 0;}
int lena=strlen(a);
for(int i=0;i<lena;i++){
strdelchar(a,i,b);
if(rebackstr(b)){printf("Y");return 0;}
}
printf("N");
return 0;
}
没有经过OJ评测
3 回文串(题目编号:1145):
描述:
读入一行字符串(不多于80个字符,以回车结束),判断该字符串是否为回文串(即从左向右拼写与从右向左拼写是一样的),是则输出Y,不是则输出N。
输入格式:
一行字符串
输出格式:
是则输出Y,不是则输出N
输入样例:
abba
输出样例:
Y
提示:
input:
abcba
output:
Y
或
input:
abc
output:
N
系统标程(参考):
#include "stdio.h"
#include "string.h"
main()
{
int i, j;
char buf[100];
scanf("%s",buf);
for(i=0, j=strlen(buf)-1;i<j; i++, j--)
if(buf[i]!=buf[j]) break;
if(i>=j)
printf("Y");
else
printf("N");
}
回文串是真的做了无数遍
4 勾股数
描述
若三个正整数a、b、c,其中a<=b<=c,满足a2+b2=c2,其中表示上标,称这三个数为“勾股数”,例如:3、4、5是勾股数。编程输出不大于n的所有勾股数。
输入格式
输入一个数(n<=100)
输出格式
输出所有勾股数,按第1个数字由小到大排列(若第1个数字相同,按第2个数字排)
输入样例
16
输出样例
3 4 5
5 12 13
6 8 10
9 12 15
#include "stdio.h"
int main()
{
int n;
scanf("%d",&n);
for(int i=1; i<=n; i++){
for(int j=i; j<=n; j++){
for(int k=j; k<=n; k++){
if(i*i+j*j==k*k){
printf("%d %d %d\n",i,j,k);
}
}
}
}
}
5 计算阶乘
描述
输入正整数n(n<12),计算n!(注n!=123*…*n)
输入样例
3
输出样例
6
代码实现(参考):
#include <stdio.h>
int F(int n){
int j = 1;
for(int i = 1; i <= n; i++){
j *= i;
}
return j;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",F(n));
}
6 计算数列和
描述
有数列:
编程实现,由键盘输入n,计算输出数列前n项和。(结果保留四位小数,提示:要使用double,否则精度不够)
输出格式
请按格式输出
输入样例
20
输出样例
32.6603
代码实现(参考):
#include "stdio.h"
int main()
{
int n;
scanf("%d",&n);
double a=2,b=1,sn=0,t;
for(int i = 1; i<=n; i++){
sn+=a/b;
t=a;
a=a+b;
b=t;
}
printf("%.4lf",sn);
}
}