每章堂上练习合集

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);
}

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值