1 正负奇偶判断
描述
由键盘输入非零整数x,判断该数正负,正数输出positive,负数输出negative,接着判断该数的奇偶性,奇数输出odd,偶数输出even。
输出格式
注意,正负判断结果与奇偶判断结果之间用回车符分隔
输入样例
-43
输出样例
negative
odd
代码实现(参考):
--
2 数的排序
描述
由键盘输入三个整数a、b、c,按从小到大的顺序输出这三个数。
输入格式
三个数由逗句分隔
输入样例
65,45,90
输出样例
45,65,90
代码实现(参考):
--
3 判断点是否在圆上
描述
由键盘输入一个点的坐标, 要求编程判断这个点是否在单位圆(圆心在坐标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");
}
}
4 倒序
描述
由键盘输入10个整数,倒序输出。
输入样例
70
5
14
20
19
2
99
67
13
66
输出样例
66
13
67
99
2
19
20
14
5
70
代码实现(参考):
#include "stdio.h"
int main()
{
int a[10];
for(int i=0;i<10;i++){
scanf("%d",&a[i]);
}
for(int i = 9;i>=0;i--){
printf("%d\n",a[i]);
}
}
5 求最大公约数
描述
由键盘输入两个正整数m、n(m、n<1000000),计算它们的最大公约数。
输入样例
16,24
输出样例
8
代码实现(参考):
#include "stdio.h"
int main()
{
int m,n,min,max=1;
scanf("%d,%d",&m,&n);
min=m;
if(m>n)min=n;
for(int i =1 ;i<min;i++){
if(m%i==0&&n%i==0){
if(i>max){
max=i;
}
}
}
printf("%d",max);
}
6 计算阶乘
描述
输入正整数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));
}
7 计算数列和
描述
有数列:
编程实现,由键盘输入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);
}
}
8 正负数的绝对值
描述
从键盘输入10个整数,计算并输出其中正数的累加和与负数累加和的绝对值的差。
输入格式
10个整数,以空格分隔
输出格式
输出差值
输入样例
1 2 3 4 5 -1 -1 -1 -1 -1
输出样例
10
代码实现
#include <stdio.h>
#include <math.h>
int main()
{
int a[10],p=0,n=0;
for(int i = 0; i < 10; i++){
scanf("%d",&a[i]);
}
for(int i = 0; i < 10; i++){
if(a[i]>=0){
p+=a[i];
}
else{
n+=a[i];
}
}
n=abs(n);
printf("%d",p-n);
}
9 最小差值
描述
由键盘输入10个浮点数,任取其中两数相减求绝对值,求其中最小值(保留两位小数)
输入格式
10个浮点数,由空格分隔
输出格式
最小差值
输入样例
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 9
输出样例
0.20
代码实现(参考):
#include "stdio.h"
#include <math.h>
int main()
{
double a[10],min=999;
for(int i=0;i<10;i++){
scanf("%lf",&a[i]);
}
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(j==i)continue;
if(fabs(a[i]-a[j])<min){
min=fabs(a[i]-a[j]);
}
}
}
printf("%.2lf",min);
}
10 打印数字空心菱形
描述
由键盘输入n(n为奇数),打印如下图空心菱形
例n=7
1
2 2
3 3
4 4
3 3
2 2
1
输入格式
整数
输出格式
如题
输入样例
3
输出样例
1
2 2
1
代码实现(参考):
#include <stdio.h>
void printSpace(int n){
for(int i=0;i<n;i++){
printf(" ");
}
}
int main()
{
int n;
scanf("%d",&n);
int max=(n+1)/2;
for(int i = 1; i <= max; i++){
printSpace(max-i);
printf("%d",i);
if(i==1){printf("\n");continue;}
printSpace(2*i-3);
printf("%d",i);
printf("\n");
}
for(int i = max-1; i >=1; i--){
printSpace(max-i);
printf("%d",i);
if(i==1){printf("\n");continue;}
printSpace(2*i-3);
printf("%d",i);
printf("\n");
}
}
11 打印杨辉三角
描述
由键盘输入正数n(n<30),要求输出具有n行的杨辉三角。
输入样例
5
输出样例
1
1,1
1,2,1
1,3,3,1
1,4,6,4,1
代码实现(参考):
#include "stdio.h"
int main()
{
int i,t,n, a[40]={1};
scanf("%d", &n);
printf("1\n");
for (i=1; i<n; i++)
{
for (t=i; t>0; t--)
a[t]=a[t]+a[t-1];
printf("1");
for (t=1; t<=i; t++)
printf(",%d",a[t]);
printf("\n");
}
return 0;
}
12 回文串的判断
描述
回文串是指一个字符串从左读到右与从右读到左是一样的,现由键盘输入一行字符(最多不超过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评测
13 勾股数
描述
若三个正整数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);
}
}
}
}
}
14 计算数列和
描述
计算数列1,-1/2,1/3,-1/4,1/5,-1/6,…的前n项累加和,输出结果带8位小数。
输入格式
输入一个正整数n
输出格式
输出累加和
输入样例
1
输出样例
1.00000000
代码实现(参考):
#include "stdio.h"
int main()
{
int n;
double a=1.000,b=1.000,sn=0;
scanf("%d",&n);
for(int i = 0; i < n; i++){
sn += a/b;
a=-a;
b++;
}
printf("%.8lf",sn);
}
15 调整数字
描述
给你N个整数构成的数列,要求将数列中的所有负数调整到数列前面,将正数调整到数列后面
(保持负数之间先后顺序,且保持正数之间的先后顺序)
例如:原来是1,0,5,-2,0,-3,3.经过f处理后变成-2,-3,0,0,1,5,3
输入格式
第一行一个正整数N(N不大于20)
第二行是N个整数,每个整数由一个空格分隔
输出格式
处理后的数列,每个数之间由一个空格分隔
输入样例
7
1 0 5 -2 0 -3 3
输出样例
-2 -3 0 0 1 5 3
代码实现(参考):
#include "stdio.h"
int main()
{
int n,a[20],ne[20];
scanf("%d",&n);
for(int i = 0; i < n; i++){
scanf("%d",&a[i]);
}
int xb=0;
for(int i = 0; i < n; i++){
if(a[i] < 0){
ne[xb]=a[i];
xb++;
}
}
for(int i = 0; i < n; i++){
if(a[i] == 0){
ne[xb]=a[i];
xb++;
}
}
for(int i = 0; i < n; i++){
if(a[i] > 0){
ne[xb]=a[i];
xb++;
}
}
for(int i = 0; i < n; i++){
printf("%d ",ne[i]);
}
}