1 在屏幕上原样显示字符
描述
请在屏幕上原样显示如下字符:
I said:"My file is in C:\temp"
单词之间有1个空格,单词与标点之间无空格,不要有多余的空行和空格。
输入格式
无
输出格式
如题
#include <stdio.h>
int main ()
{
printf ("I said:\"My file is in C:\\temp\"\n");
return 0;
}
2 计算两点直线距离
由键盘输入平面上的两个点坐标,计算并输出该两点的直线距离。 输入格式 两个点坐标,第一行为第一个点的横纵坐标,第二行为第二个点的横纵坐标,以空格分隔 输出格式 直线距离,保留并显示两位小数 输入样例 1 1 2 2 输出样例 1.41
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
//输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
double sqr(double x1,double y1,double x2,double y2)
{
double len;
len =sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
return len;
}
int main()
{
double x1,y1,x2,y2,len;
while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF){ //*
len =sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%.2lf",len);
}
return 0;
}
3 两圆是否相交
描述
给出平面坐标中两个圆的圆心坐标与半径,判断这两个圆是否相交(即圆边有交点),是则输出yes,否则输出no。
输入格式:两行,每行三个数,分别为X坐标,Y坐标以及半径
输出格式:yes或no
输入样例
1.1 1.1 1.1 2.2 2.2 1.5
输出样例
yes
#include <stdio.h>
#include <math.h>
int main(void)
{
float x1, y1, x2, y2, r1, r2;
scanf("%f %f %f", &x1, &y1, &r1);
scanf("%f %f %f", &x2, &y2, &r2);
float len = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
if (len < (r1+r2)&&len>abs(r1-r2))
{
printf("yes\n");
}
else
printf("no\n");
return 0;
}
4 求因子个数
描述:由键盘输入一个int类型的正整数n,求n有多少个不同的正整数因子。 注:能整除N的数称为N的因子
输入格式:正整数
输入样例:24
输出样例:8
#include <stdio.h>
int main()
{
int n,i,count=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
//一定要记住i只是循环次数,计数器要再定义一个count
{
if(n%i==0)
count++;
}
printf("%d",count);
return 0;
}
5 不重复的3位数
描述:输出由数字0,1,2,3,4,5组成的所有各数字不同的三位数。
输出格式
要求:按由小到大的数字输出 输出样例
102 103 104 105 120 123 ......
#include <stdio.h>
int main()
{
int i, j, k;
for (i = 1; i <= 5; i++) //百位从1`4枚举
for (j = 0; j <= 5; j++) //十位从0~4枚举
for (k = 0; k <= 5; k++) //个位从0~4枚举
if (i != j && i != k && j != k) //确保百位十位个位互不相同
{
printf("%d \n", i * 100 + j * 10 + k); //输出该符合条件的三位数
}
return 0;
}
6 圆覆盖的坐标点
描述:从键盘输入平面坐标中一个圆的圆心坐标和半径,问这个圆覆盖了平面上横坐标在[0,100],纵坐标在[0,100]这个 范围内多少个整数坐标点。
输入格式
第一行为两个浮点数,为圆的中心坐标点x和y,以空格分隔 第二行一个浮点数为圆的半径
输出格式:圆覆盖的整数坐标点数
输入样例
0 0.5 1
输出样例
2
7 计算菲波拉契数列前N项和
描述:菲波拉契数列为给定前2项,从第3项开始每一项是其前两项之和,如下 1 1 2 3 5 8 13 ...... 现要求从键盘输入自然数N(N<40),求菲波拉契数列前N项和。
输入格式:输入一个自然数N
输出格式:输出菲波拉契数列前N项和
输入样例:3
输出样例:4
#include<stdio.h>
int Fibon(int n)
{
if(n <= 2)
{
return 1;
}
else
{
return Fibon(n - 2) + Fibon(n - 1); //这一项等于它前两项之和
}
}
int Sum(int n)
{
int sum = 0;
sum = Fibon(n + 2) - 1; //斐波那契数列前n项和公式
return sum;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",Sum(n));
return 0;
}
21
从键盘输入一个整数(int类型),输出该整数是几位数。
输入格式:一个整数,有可能负
输出格式:输出该整数是几位数
输入样例:-134
输出样例:3
#include <stdio.h>
int main()
{
long n , m;
int count = 0;
printf("请输入一个整数:");
scanf("%ld",&n);
m = n;
if(n<0){
n = -n;
}
do
{ n = n/10;
count++;
}while(n!=0);
printf("整数%ld有%d位数\n",m ,count);
return 0;
}
8 求最大数字字符
描述:从键盘输入一个int类型的正整数,输出构成该数的最大数字字符。
输入格式:一个正整数
输出格式:最大数字字符
输入样例:4574323
输出样例:7
提示(注:因为4574323由2、3、4、5、7这五种数字字符构成,最大的为字符7)
#include <stdio.h>
#include <string.h>
int main()
{
int i=0,m=0;
char a[80];
scanf("%s",a);
while(a[i]!='\0'){
if(a[i]-'0'>m){
m=a[i]-'0';
}
i++;
}
printf("%d",m);
return 0;
}
9 最近对问题
描述:由键盘输入n(n<50)个点的坐标x,y(x,y<1000,浮点数),计算出最近两个点的距离。(保留三位小数)
输入格式:输入第一个整数为有n个点,此后分别为n个的坐标x y
输入样例
3 0 0 1 2 2 2
输出样例:1.000
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
double distance(double x1, double y1, double x2, double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
int n,i,j;
double sands;
scanf("%d",&n);
double a[50][2];
for(i=0;i<n;i++)
{
for(j=0;j<2;j++)
{
scanf("%lf",&a[i][j]);
}
}
double len=distance(a[0][0],a[0][1],a[1][0],a[1][1]);
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
sands=distance(a[i][0],a[i][1],a[j][0],a[j][1]);
if(sands<len)
len=sands;
}
}
printf("%.3lf",len);
}
10 字符串处理,字符变换
描述:输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。
输入格式:一行字符,以回车结束
输出格式:按题意要求输出结果
输入样例:aaaBBB
输出样例:AAAbbb
#include <stdio.h>
int main()
{
char c[500];
int i;
gets(c);
for(i=0;c[i];i++)
{
if(c[i]>='A'&&c[i]<='Z')
c[i]+=32;
else if(c[i]>='a'&&c[i]<='z')
c[i]-=32;
}
puts(c);
return 0;
}
14 [填空题]最近对问题
描述: 下列程序,实现由键盘输入n(n<50)个点的坐标x,y(x,y<1000),计算出最近两个点的距离。(保留三位小数) 请填空:
#include "stdio.h"
#include "math.h"
int d(int x,int y,int m,int n){
int i,j;
i=x-m;
j=y-n;
return i*i+j*j; //距离平方
}
int main()
{
int i,j;
int x[50],y[50];
float ff;
int m,min=0,n;
scanf("%d",&i);
j=0;
while(j<i)
{
scanf("%d%d",&x[j],&y[j]);
j++; //输入点的个数
}
for(j=0;j<i;j++)
{
for(m=j+1;m<i;m++)
if(min==0||d(x[j],y[j],x[m],y[m])<min)
min=d(x[j],y[j],x[m],y[m]); //最小值
}
ff=sqrt(min);
printf("%.3f",ff);
}