C语言基础练习题

1、输入三个正整数,判断用这三个整数做边长是否能构成一个直角三角形。

输入
输入三个正整数。

输出
能否构成直角三角形。如能输出:yes.若不能,输出:no。

 

样例输入
6 8 10

样例输出
yes

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if(a*a+b*b==c*c||c*c+a*a==b*b||c*c+b*b==a*a) printf("yes");
    else printf("no");
    return 0;
    }

 

2、给你三个正整数,判断用这三个整数做边长是否能构成一个三角形。

输入
输入为三个正整数(32-int),中间有一个空格隔开。

输出
如果能构成三角形,输出"Yes",否则输出"No"

样例输入
3 4 5

样例输出
Yes

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a) printf("Yes");
    else printf("No");
    return 0;
    }

 

3、给出三个整数,分别表示等差数列的第一项、最后一项和公差,求该数列的和。

 

输入
输入三个整数,之间用空格隔开。第1个数作为首项,第2个数作为末项,第3个数作为公差.

 

输出
输出占一行,包含一个整数,为该等差数列的和。

样例输入
2 11 3

样例输出
26

 

#include<stdio.h>
int main()
{
    int a,b,c,Sn,n;
    scanf("%d %d %d",&a,&b,&c);
    n=(b-a+c)/c;
    Sn=(n*(a+b))/2;
    printf("%d",Sn);
    return 0;
    }

4、输入x,计算正弦函数。结果保留三位小数

 

输入

输入一个实数x。

 

输出

输出一个实数,结果保留3位小数。

 

样例输入
1

样例输出
0.841
 


#include<stdio.h>
#include<math.h>
int main()
{
    double x,y;
    scanf("%lf",&x);
    y=sin(x);
    printf("%.3lf",y);
    return 0;
}

 

5、输入一个整数n和n个整数,输出这n个整数的和。

 

输入
输入有两行:第一行是一个正整数n,第二行是n个整数。

 

输出
输出一个整数,即n个数的和。输出单独占一行。 


样例输入
3
7 3 2


样例输出
12

 

#include<stdio.h>
int main()
{
    int s=0,n,a,i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a);
        s=s+a;
    }
    printf("%d",s);
    return 0;
}


6、已知:y是x的函数, 
当x<-2时,y=7-2x; 
当x>=-2,且x<3时,y=5-|3x+2|; 
当x>=3时,y=3x+4 

 

输入
任意输入一个整数x。

 

输出

输出为一个整数,即x对应的函数值。

 

样例输入
2

样例输出
-3
 

#include<stdio.h>
#include<math.h>
int main()
{
    int x,y;
    scanf("%d",&x);
    if(x<-2)
    {
        y=7-2*x;
        printf("%d",y);
    }
    if(x>=-2&&x<3)
    {
        y=5-fabs(3*x+2);
        printf("%d",y);
    }
    if(x>=3)
    {
        y=3*x+4;
        printf("%d",y);
    }
    return 0;

}



7、输入一个整数n,输出数列1+1/3+1/5+……前n项的和。 

 

输入
输入只有一个正整数n。

 

输出
结果保留2为小数,单独占一行

 

样例输入
3

样例输出
1.53
 

#include<stdio.h>
int main()
{
    int n,i;
    double y=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        y=y+1.0/(2*i-1);
    }
    printf("%.2lf",y);
    return 0;
}


8、要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

 

输入
China

 

输出
加密后的China

 

样例输入
China

样例输出
Glmre



 

#include<stdio.h>
int main()
{
    char c1,c2,c3,c4,c5;
    c1='C';c2='h';c3='i';c4='n';c5='a';
    c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;
    printf("%c%c%c%c%c",c1,c2,c3,c4,c5);
    return 0;
}

 

9、计算A+B 


输入
输入第1行为一个整数n(1≤n≤10),代表测试的组数。 
下面有n组测试数据,每组1行,为2个整数,为A, B。

 

输出
对每行输入,输出A+B的值,单独占一行。

 

样例输入
2
1 2
3 4

样例输出
3
7
 

#include"stdio.h"

 int main()

 {

 int a,b,n,i;

 scanf("%d",&n);

 for(i=1;i<=n;i++)

 {

 scanf("%d%d",&a,&b);

 printf("%d\n",a+b);

 }

 return 0;

 }

 

10、悟空第一天摘下桃子若干,当即吃掉一半,还不过瘾,又多吃一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?

 

输入
输入一个数n(1<=n<=30)。

 

输出
输出第一天的桃子个数。

 

样例输入
3

样例输出
10

 

#include<stdio.h>
int main()
{
    int n,i,x,y;
    scanf("%d",&n);
    for(i=1,x=1;i<=n-1;i++)
    {
        y=(x+1)*2;
        x=y;
    }
    printf("%d",y);
    return 0;
}


 

11、某公园门票的票价是每人50元,一次购票满30张,每张可以少收2元。试编写自动计费系统程序。

 

输入
输入一个正整数,表示购票的数量。


输出
输出一个实数,表示用户实际需要支付的金额,保留两位小数。

 

样例输入
30

样例输出
1440.00


 

#include<stdio.h>
int main()
{
    int n,m=50;
    float v;
    scanf("%d",&n);
    if(n<30)
    {
        v=m*n;
        printf("%.2f",v);
    }
    if(n>=30)
    {
        v=n*(m-2);
        printf("%.2f",v);
    }
    return 0;
}

 

12、商场夏季促销,购物500元以下,不打折;购物500元(含)以上,95折;购物1000元(含)以上,9折;购物3000元(含)以上,85折;购物5000元(含)以上,8折。根据消费金额,确定用户实际需要支付的数目。

 

输入
输入一个实数,表示消费金额。

 

输出
输出一个实数,表示用户实际需要支出的数目,保留两位小数。

 

样例输入
5100 

样例输出
4080.00
 

#include<stdio.h>
int main()
{
    int a;
    float b;
    scanf("%d",&a);
    if(a<500)
    {
        b=a;
        printf("%.2f",b);
    }
    if(a>=500&&a<1000)
    {
        b=0.95*a;
        printf("%.2f",b);
    }
    if(a>=1000&&a<3000)
    {
        b=0.9*a;
        printf("%.2f",b);
    }
    if(a>=3000&&a<5000)
    {
        b=0.85*a;
        printf("%.2f",b);
    }
    if(a>=5000)
    {
        b=0.8*a;
        printf("%.2f",b);
    }
    return 0;


}

 

13、给定一个百分制成绩, 请根据百分制成绩输出其对应的等级。转换关系如下: 
90分以上为’A’,80~89为’B’, 70~79为’C’, 60~69为’D’,60分以下为’E’。 


输入
一个百分制成绩(0~100的整数)。

 

输出
输出对应的等级

 

样例输入
100


样例输出
A


 

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    switch  (n/10)
    {
        case 10:   printf("A\n"); break;
        case  9:   printf("A\n"); break;
        case  8:   printf("B\n"); break;
        case  7:   printf("C\n"); break;
        case  6:   printf("D\n"); break;
        default:   printf("E\n");
    }
    return 0;
}

 

14、将三个整数从大到小排列。
 

输入

输入三个整数:x,y,z

 

输出

从大到小输出。


 

#include<stdio.h>
int main()
{
    int x,y,z,t;
    scanf("%d %d %d",&x,&y,&z);
    if(x<y)
    {
        t=x,x=y,y=t;
    }
    if(x<z)
    {
        t=x,x=z,z=t;
    }
    if(z>y)
    {
        t=y,y=z,z=t;
    }
    printf("%d %d %d",x,y,z);
    return 0;
}

 

15、给出三角形的三条边,求三角形的面积。

 

输入
输入三角形的三条边长(实数),数据之间用空格隔开。

 

输出
输出三角形的面积,结果保留2位小数。

 

样例输入
2.5 4 5

样例输出
4.95


 

#include<stdio.h>
#include<math.h>
int main()
{
    float a,b,c,s,m;
    scanf("%f %f %f",&a,&b,&c);
    s=0.5*(a+b+c);
    m=sqrt(s*(s-a)*(s-b)*(s-c));
    printf("%.2f",m);
    return 0;

}

 

16、有一天橘子想吃水饺。就与花妈一同去买了许多水饺。到了要吃的时候,因为柚子也要一起吃,而且为了公平起见,希望吃的一样多,所以就准备三个盘子,然后,所以把所有的水饺,平均的分配在这三个盘子里,可是:因为买的是20个。所以最后,每盘装了6个,而且最后会剩下2个。

就在准备开始享用的时候,柚子提出一个问题:如果买的是10个水饺,那每个盘子放几个水饺?又会剩几个呢?接着又问:如果买的是n个水饺,每个放几个?又会剩几个?

此时的橘子很想赶快吃到水饺。聪明的你,请快点帮忙橘子解决这个问题。

 

输入
有多组数据,每组数据有一个大于或等于0的整数数字,代表花妈买水饺的数量N( 0<=N <=10)。


输出
每个样本就一行输出,请依题意先输出每盘数量,再输出一个逗号”,”后,再输出最后所剩的数量。


样例输入
10


样例输出
3,1

 

#include<stdio.h>
int main()
{
    int n,a,b;
    while(scanf("%d",&n)!=EOF)
    {
        a=n/3;
        b=n%3;
        printf("%d,%d\n",a,b);

    }
    return  0;
}






 

17、已知两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。(求多组数据)

 

输入
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。

 

输出
对于每组输入数据,输出一行,结果保留两位小数。

样例输入
0 0 0 1
0 1 1 0

样例输出
1.00
1.41
 

#include<stdio.h>
#include<math.h>
int main()
{
    double x1,y1,x2,y2,d;
    while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF)
    {
        d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
        printf("%.2lf\n",d);

    }
    return 0;
}

 

18、输入一个整数n,输出数列1-1/3+1/5-……前n项的和。

 

输入
输入只有一个整数n。


输出
结果保留2为小数,单独占一行。

 

样例输入
3

样例输出
0.87


 

#include<stdio.h>
#include<math.h>
int main()
{
    int n,i;
    double y=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        y=y+pow(-1.0,i-1)/(2*i-1);
    }
    printf("%.2lf",y);
    return 0;
}

 

19、输入一个英文字母(可能是大写,也可能是小写),输出该字母在字母表中的序号(’a’和’A’的序号为1)。


输入
输入只有一个英文字母。

 

输出
输出一个整数,表示该字母在字母表的序号,输出单独占一行。

 

样例输入
D

样例输出
4

#include<stdio.h>
int main()
{
char x;
scanf("%c",&x);
if(x>='a'&&x<='z')
printf("%d\n",x-96);
else if(x>='A'&&x<='Z')
printf("%d\n",x-64);
else printf("*");
return 0;
}

 

20、输入n和n个学生成绩(实数),输出不及格率。


输入
输入的第一行是一个整数n,第二行是n个实数,用空格隔开。

 

输出
输出一个实数,表示不及格率,结果保留2位小数,单独占一行。

 

样例输入
8
98  45 86 79 56 75 90 70


样例输出
0.25

(注意,不及格率为0时,输出0.00)


 

#include<stdio.h>
int main()
{
    int n,i;
    double a[1000];
    int b=0;
    scanf("%d",&n);
    for(i=0;i<n;++i)
    {
        scanf("%lf",&a[i]);
        if(a[i]<60)
        {
            b++;
        }
    }
    printf("%.2f\n",b*1.0/n);
    return 0;

}

 

21、输入一个整数n和n个整数,输出这n个整数的最大值。

 

输入
输入有两行:第一行是一个正整数n,第二行是n个整数。

 

输出
输出包含一个整数,即n个数中的最大值,单独占一行。

 

样例输入
4
3 7 5 6

样例输出
7

#include<stdio.h>
int main()
{
    int n,a,i,max;
    scanf("%d %d",&n,&a);
    max=a;
    for(i=1;i<=n-1;i++)
    {
        scanf("%d",&a);
        if(a>max)
        {
            max=a;
        }
    }
    printf("%d",max);
    return 0;
}

 

22、求奇数的乘积(多实例测试)
给你n个整数,求他们中所有奇数的乘积 


输入
输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。

 

输出
输出每组数中的所有奇数的乘积,对于测试实例,输出一行。

 

样例输入
3 1 2 3
4 2 3 4 5

样例输出
3
15

#include<stdio.h>
int main()
{
	int a,c=1,n,i;
	while(scanf("%d",&n)!=EOF)
	{
		c=1;
		for(i=1;i<=n;i++)
		{
			scanf("%d",&a);
			if(a%2==1||(-a)%2==1)
			{
			    c*=a;
			}
		}
		printf("%d\n",c);
	}
	return 0;
}

23、打印九九乘法表
 

输入


输出

9X9乘法表

 

样例输出
1*1=1   
2*1=2   2*2=4   
3*1=3   3*2=6   3*3=9   
4*1=4   4*2=8   4*3=12  4*4=16  
5*1=5   5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  

 

#include<stdio.h>
int main()
{

    int k,j,m;
    for(k=1;k<=9;k++)
    {
        for(j=1;j<=k;j++)
        {
            m=k*j;
            printf("%d*%d=%-4d",k,j,m);
        }
        printf("\n");
    }
    return 0;
}

 

24、输入两个正整数m和n,求其最大公约数和最小公倍数。

 

输入

两个整数

 

输出

最大公约数,最小公倍数

 

样例输入
5 7

样例输出
1 35

提示


 

#include<stdio.h>
int main()
{
    int a,m,n;
    scanf("%d %d",&m,&n);
    for(a=n;a>=1&&a<=n;a--)
        if((m%a==0)&&(n%a==0))break;
    printf("%d ",a);
    printf("%d",m*n/a);
    return 0;
}

 

25、打印图形

编写程序输出一下图形: 

** 

*** 

**** 

***** 

****** 

******* 

 

输入


输出


** 

*** 

**** 

***** 

****** 

******* 

 

样例输出
*
**
***
****
*****
******
*******

 

#include<stdio.h>
int main()
{
    int i,j;
    for(i=1;i<=7;i++)
    {
        for(j=1;j<=i;j++)
            printf("*");
        printf("\n");

    }
    return 0;
}

 

26、给你一个年份和月份,求该月有多少天 

 

输入
一个年份(正整数),一个月份(1-12),中间有一个空格隔开

 

输出
该月的天数,单独占一行。

 

样例输入
2012 2

样例输出
29

 

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d%d",&a,&b);
    if(b==1||b==3||b==5||b==7||b==8||b==10||b==12)
    c=31;
    else if(b==4||b==6||b==9||b==11)
    c=30;
    else
    {
        if(a%4==0)
        {
            if(a%100==0&&a%400!=0)
            c=28;
            else
            c=29;
        }else
        c=28;
    }
    printf("%d",c);
    return 0;
}

 

27、统计给定的n个数中,负数、零和正数的个数。
 

输入
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
 

输出
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
 


6 0 1 2 3 -1 0
5 1 2 3 4 0.5

 

例样输出
1 2 3
0 0 5


 

#include<stdio.h>
int main()
{
    int n,i,d=0,e=0,f=0;
    double a;
    while(scanf("%d",&n)!=EOF)
    {
        d=0,e=0,f=0;
        if(n==0)break;
        for(i=1;i<=n;i++)
        {

            scanf("%lf",&a);

            if(a<0)
            {
                d=d+1;
                //printf("%d\n",d);
            }
           else if(a==0)
            {
                e=e+1;
               // printf("%d\n",e);
            }
            else if(a>0)
            {
                f=f+1;
               // printf("%d",f);
            }
          // printf("%d %d %d\n",d,e,f);
        }
       printf("%d %d %d\n",d,e,f);
    }
    return 0;

 

28、用筛法求之N内的素数。 

输入

 

输出

0~N的素数 

 

样例输入
100


样例输出
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97


 

#include <stdio.h>
int main()
{
    int a,i,n;
    scanf("%d",&n);
    for (a=2;a<=n;a++)
    {
        for (i=2;i<a;i++)
        {
            if (a%i==0)
                break;
        }
        if(i==a)
            printf("%d\n",a);
    }
    printf("\n");
    return 0;
}

 

29、n到m求和

输入

输出

 

样例输入
1 5
2 9


样例输出
15
44

#include<stdio.h>
int main()
{
    int i,m,n,sum;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        sum=0;
        for(i=n;i<=m;i++)
        {
           // s=0;
            sum=sum+i;
        }
        printf("%d\n",sum);

    }
    return 0;
}

 

30、给你一个具体的日期,计算该日期是该年的第几天。

 

输入
输入一个日期,格式为:Year-month-day。year是小于9999的正整数。

 

输出
一个整数,表示该日期是该年的第几天。

 

样例输入
2012-3-1

样例输出
61

#include<stdio.h>
int main()
{
int year,moth,day;;
int mo[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int d,i;
scanf("%d-%d-%d",&year,&moth,&day);
d=day;
if(year%400==0||(year%4==0&&year%100!=0))
mo[1]=29;
for(i=0;i<moth-1;i++)
d+=mo[i];
printf("%d",d);
}

 

31、用选择法对10个整数从小到大排序。

 

输入

10个整数

 

输出

排序好的10个整数

 

样例输入
4 85  3 234 45 345 345 122 30 12

样例输出
3
4
12
30
45
85
122
234
345
345

#include<stdio.h>
main()
{
        int a[10],i,j,t;

        for(i=0;i<10;i++)
             scanf("%d",&a[i]);
        for(i=0;i<10;i++)
            for(j=i+1;j<10;j++)
                if (a[i]>a[j])   {
                   t=a[i];   
                   a[i]=a[j];   
                    a[j]=t;  }
           for(i=0;i<10;i++)      
           printf("%d\n",a[i]);
            return 0;
}

 

32、一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数

 

输入

M N

 

输出

它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行

 

样例输入
1000 5

样例输出
31.25 2875.00
 

#include<stdio.h>
int main()
{
    double M,N,i,h,t,Sn;
    scanf("%lf %lf",&M,&N);
    h=M/2;
    Sn=M;
    for(i=2;i<=N;i++)
    {
        t=M/2;
        h=t/2;
        Sn=Sn+t*2;
        M=t;


    }
    printf("%.2lf %.2lf",h,Sn);
    return 0;
}

 

33、已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。

 

输入
输入 k

 

输出
屏幕输出 n

 

样例输入
1


样例输出
2


 

#include<stdio.h>
int main()
{
    int k,i;double sn=0.0;
    scanf("%d",&k);
    for(i=1;sn<=k;i++)
    {
        sn=sn+1.0/i;
    }
    printf("%d",i-1);
return 0;
}

 

34、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

 

输入

N

 

输出

桃子总数

 

样例输入
10

样例输出
1534

#include<stdio.h>
int main()
{
    int n,i,a,b;
    scanf("%d",&n);
    for(i=1,a=1;i<=n-1;i++)
    {
        b=(a+1)*2;
        a=b;
    }
    printf("%d",b);
    return 0;
}

 

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值