C语言练习题集锦汇总

C语言练习题集锦汇总

1. 从键盘上输入两个整数,求出它们的和
 
#include "stdio.h"
 
void main()
 
{
 
int x,y,s;
 
scanf("%d",&x);
 
scanf("%d",&y);
 
s=x+y;
 
printf("\\n s=%d",s);
 
}
 
2. 已知三角形的底和高,求出三角形的面积。
 
#include "stdio.h"
 
void main()
 
{
 
int x,y;
 
float s;
 
x=4;
 
y=5;
 
s=x*y/2.0;
 
printf("\\n s=%f",s);
 
}
 
3. 从键盘上输入三角形的底和高,求出三角形的面积。
 
#include "stdio.h"
 
void main()
 
{
 
int x,y;
 
float s;
 
scanf("%d",&x);
 
scanf("%d",&y);
 
s=x*y/2.0;
 
printf("\\n s=%f",s);
 
}
 
4. 已知三角形的三边长,求出三角形的面积。
 
#include "stdio.h"
 
#include "math.h"
 
void main()
 
{
 
int a,b,c;
 
float p,s;
 
a=3;
 
b=4;
 
c=5;
 
p=(a+b+c)/2.0;
 
s=sqrt(p*(p-a) *(p-b) *(p-c));
 
printf("\\n s=%f",s);
 
}
 
5. 已知二元一次方程的三个系数,求方程的一个根。
 
#include "stdio.h"
 
#include "math.h"
 
void main()
 
{
 
int a,b,c;
 
float root;
 
a=3;
 
b=4;
 
c=5;
 
root=(-b-sqrt(pow(b,2)-4*a*c))/(2.0*a);
 
printf("\\n root=%f",root);
 
}
 
6. 编程实现符号函数。当x <0 ,则sgn(x)=-1, 当x >0 ,则sgn(x)=+1, 当x =0 ,则sgn(x)=0
 
#include "stdio.h"
 
void main()
 
{
 
float x;
 
int y;
 
scanf("%f",&x);
 
if (x>0);
 
y=1;
 
if (x==0);
 
y=0;
 
if (x<0);
 
y=-1;
 
printf("\\n x=%f ,sgn(x)=%d",x,y);
 
}
 
或者:
 
#include "stdio.h"
 
void main()
 
{
 
float x;
 
int y;
 
scanf("%f",&x);
 
if (x>0);
 
y=1;
 
else if (x==0);
 
y=0;
 
else;
 
y=-1;
 
printf("\\n x=%f ,sgn(x)=%d",x,y);
 
}
 
或者:
 
#include "stdio.h"
 
void main()
 
{
 
float x;
 
int y;
 
scanf("%f",&x);
 
y=(x>0) ? 1: (x==0) ? 0 : -1;
 
printf("\\n x=%f ,sgn(x)=%d",x,y);
 
}
 
7. 从键盘上输入数字星期,在屏幕上显示英文星期。
 
#include "stdio.h"
 
void main()
 
{
 
float x;
 
scanf("%f",&x);
 
switch( x )
 
{
 
case0:printf("Sunday.\\n");break;
 
case1:printf("Monday.\\n");break;
 
case2:printf("Tuesday.\\n");break;
 
case3:printf("Wednesday.\\n");break;
 
case4:printf("Thursday.\\n");break;
 
case5:printf("Friday.\\n");break;
 
case6:printf("Saturday.\\n");break;
 
default:printf("不存在这个星期!\\n");
 
 
}
 
8. 从键盘输入三角形的三边长,判断出这三边能否构成三角形
 
#include "stdio.h"
 
void main()
 
{
 
int a,b,c;
 
scanf("%d",&a);
 
scanf("%d",&b);
 
scanf("%d",&c);
 
if ((a+b>c) && (a+c)>b) && (b+c)>a )
 
printf("这三边能构成三角形!");
 
else
 
printf("这三边不能构成三角形!");
 
}
 
9. 从键盘输入三个整数,将这三个数按从大到小的顺序排列起来
 
#include "stdio.h"
 
void main()
 
{
 
int a,b,c,temp;
 
scanf("%d",&a);
 
scanf("%d",&b);
 
scanf("%d",&c);
 
if ((a>b) && (a>c) && (b>c))
 
printf("这三数从大到小的顺序为:%d,%d,%d",a,b,c);
 
if ((a>b) && (a>c) && (b<c))
 
printf("这三数从大到小的顺序为:%d,%d,%d",a,c,b);
 
if ((b>a) && (b>c) && (a>c))
 
printf("这三数从大到小的顺序为:%d,%d,%d",b,a,c);
 
if ((b>a) && (b>c) && (c>a))
 
printf("这三数从大到小的顺序为:%d,%d,%d",b,c,a);
 
if ((c>b) && (c>a) && (a>b))
 
printf("这三数从大到小的顺序为:%d,%d,%d",c,a,b);
 
if ((c>b) && (c>a) && (b>a))
 
printf("这三数从大到小的顺序为:%d,%d,%d",c,b,a);
 
}
 
或者这样写:
 
#include "stdio.h"
 
void main()
 
{
 
int a,b,c,temp;
 
scanf("%d",&a);
 
scanf("%d",&b);
 
scanf("%d",&c);
 
if (a<b)
 
{
 
temp=a;
 
a=b;
 
b=temp;
 
}
 
if (a<c)
 
{
 
temp=a;
 
a=c;
 
c=temp;
 
}
 
if (b<c)
 
{
 
temp=b;
 
b=c;
 
c=temp;
 
}
 
printf("这三数从大到小的顺序为:%d,%d,%d",a,b,c);
 
}
 
10. 从键盘输入二个整数,求出最大值。
 
#include "stdio.h"
 
void main()
 
{
 
int a,b,temp;
 
scanf("%d",&a);
 
scanf("%d",&b);
 
if (a>b)
 
temp=a;
 
else
 
temp=b;
 
printf("这二个整数最大值为%d",temp);
 
}
 
11. 从键盘输入三个实数,求出最大值。
 
#include "stdio.h"
 
void main()
 
{
 
float a,b,c,temp;
 
scanf("%f",&a);
 
scanf("%f",&b);
 
scanf("%f",&c);
 
if (a>b)
 
temp=a;
 
else
 
temp=b;
 
if (temp<c)
 
temp=c;
 
printf("这三数最大值为%f",temp);
 
}
 
12. 从键盘输入三个整数,在一个程序中既要求出最大值,还要求出最小值。
 
#include "stdio.h"
 
void main()
 
{
 
int a,b,c,max,min;
 
scanf("%d",&a);
 
scanf("%d",&b);
 
scanf("%d",&c);
 
if (a>b)
 
{max=a; min=b;}
 
else
 
{max=b;min=a;}
 
if (max<c)
 
max=c;
 
if (min>c)
 
min=c;
 
printf("这三个整数最大值为:%d,最小值为:%d.",max,min);
 
}
 
13. 使用for循环编程求出1到100的和
 
#include "stdio.h"
 
void main()
 
{
 
int i,s=0;
 
for (i=1;i<=100;i++)
 
s=s+i;
 
printf("\\ns= %d",s);
 
}
 
14. 使用当循环编程求出1到100的和
 
#include "stdio.h"
 
void main()
 
{
 
int i=1,s=0;
 
while (i<=100)
 
{
 
s=s+i;
 
i++;
 
}
 
printf("\\ns= %d",s);
 
}
 
15. 使用当循环编程求出1到100的和
 
#include "stdio.h"
 
void main()
 
{
 
int i=1,s=0;
 
do
 
{
 
s=s+i;
 
i++;
 
}
 
while (i<=100);
 
printf("\\ns= %d",s);
 
}
 
16. 从键盘输入10个实数,求出最大值
 
#include "stdio.h"
 
void main()
 
{
 
int i;
 
float x,max;
 
scanf("%f",&x);
 
max=x;
 
for (i=0;i<9;i++)
 
{
 
scanf("%f",&x);
 
if (max<x)
 
max=x;
 
}
 
printf("这十数中的最大值为:%f",max);
 
}
 
15. 从键盘输入10个整数,求出最小值
 
#include "stdio.h"
 
void main()
 
{
 
int i x,min;
 
scanf("%d",&x);
 
min=x;
 
for (i=0;i<9;i++)
 
{
 
scanf("%d",&x);
 
if (min>x)
 
min=x;
 
}
 
printf("这十整数中的最小值为:%d",min);
 
}
 
16. 从键盘输入10个整数,求出它们的平均值
 
#include "stdio.h"
 
void main()
 
{
 
int i a[10],s=0;
 
float aver=0.0;
 
for (i=0;i<10;i++)
 
{
 
scanf("%d",&a[i]);
 
s=s+i;
 
}
 
aver=s/10.0;
 
printf("这十整数中的平均值为:%f",aver);
 
}
 
17. 编程在屏幕上输出具有7行的正三角形
 
 
***
 
*****
 
*******
 
*********
 
***********
 
*************
 
#include "stdio.h"
 
void main()
 
{
 
int i ,j;
 
for (i=0;i<7;i++)
 
{
 
for (j=0; j<6-i; j++)
 
printf(" ");
 
for (j=0; j<=2*i+1; j++)
 
printf("*");
 
printf("\\n");
 
}
 
 
18. 求出8的阶乘。
 
#include "stdio.h"
 
void main()
 
{
 
int i ;
 
longp=1;
 
for (i=1;i<9;i++)
 
p=p*i;
 
printf("\\n8的阶乘值为:%ld",p);
 
 
从键盘输入20个整数,求出不大于90所有数的和
 
#include "stdio.h"
 
void main()
 
{
 
int i ,s=0,x;
 
for (i=0;i<20;i++)
 
{
 
scanf("%d",&x);
 
if (x<=90)
 
s=s+x;
 
}
 
printf("\\n不大于90所有数的和:%d",s);
 
 
从键盘输入一个整数,判断这个数是否为素数
 
#include "stdio.h"
 
void main()
 
{
 
int i ,x,flag=1;
 
scanf("%d",&x);
 
for (i=2;i<x;i++)
 
{
 
if ( x % i ==0)
 
{
 
flag=0;
 
break;
 
}
 
}
 
if (flag==1)
 
printf("\\n该数是素数");
 
else
 
printf("\\n该数不是素数");
 
 
从键盘输入20个整数,求出它们的和
 
#include "stdio.h"
 
void main()
 
{
 
int i ,s=0,x[20];
 
for (i=0;i<20;i++)
 
{
 
scanf("%d",&x[i]);
 
s=s+x[i];
 
}
 
printf("\\n所有数的和:%d",s);
 
 
从键盘输入20个整数,求出它们的平均值及比平均值大的数
 
#include "stdio.h"
 
void main()
 
{
 
int i ,s=0,x[20];
 
float aver=0.0;
 
for (i=0;i<20;i++)
 
{
 
scanf("%d",&x[i]);
 
s=s+x[i];
 
}
 
aver=s/20.0;
 
printf("平均为:%f\\n",aver);
 
for (i=0;i<20;i++)
 
{
 
if (x[i]>aver)
 
printf("比平均大的数为:[%d]=%d\\n",i,x[i]);
 
}
 
 
已知五个整数3,-5,8,2,9,求出最大值
 
#include "stdio.h"
 
void main()
 
{
 
int i ,x[5]={ 3,-5,8,2,9},max;
 
max=x[0];
 
for (i=0;i<20;i++)
 
if (x[i]>max)
 
max=x[i];
 
printf("最大值为:%d\\n",max);
 
 
从键盘输入20个整数,求出它们的最小值,并求最小值所在位置
 
#include "stdio.h"
 
void main()
 
{
 
int i ,min,x[20],pos=0;
 
for (i=0;i<20;i++)
 
scanf("%d",&x[i]);
 
min=x[0];
 
pos=0;
 
for (i=1;i<20;i++)
 
if (x[i]>min)
 
{
 
min=x[i];
 
pos=i;
 
}
 
printf("最小值为:%d,最小值位置为:%d\\n",min,pos);
 
 
已知五个整数3,-5,8,2,9,按从大到小的顺序排列起来
 
#include "stdio.h"
 
void main()
 
{
 
int j ,k, t , b[5]={ 3,-5,8,2,9};
 
for (j=0; j<4; j++)
 
for (k=j-1; k<5; k++)
 
if (b[j]<b[k])
 
{
 
t= b[j];
 
b[j]= b[k];
 
b[k]=t;
 
}
 
for (j=0; j<5; j++)
 
printf("\\n %d,",b[j]);
 
}
 
从键盘输入10个实数,按从大到小的顺序排列起来
 
#include "stdio.h"
 
void main()
 
{
 
int i, j ,k;
 
float b[10],t;
 
for (i=0;i<20;i++)
 
scanf("%d",&b[i]);
 
for (j=0; j<9; j++)
 
for (k=j-1; k<10; k++)
 
if (b[j]<b[k])
 
{
 
t= b[j];
 
b[j]= b[k];
 
b[k]=t;
 
}
 
for (j=0; j<9; j++)
 
printf("\\n %f,",b[j]);
 
}
 
某班有43名学生,某门考试结束后,请按10段统计出各分数段的人数
 
#include "stdio.h"
 
void main()
 
{
 
int j , x[43],fragment[12];
 
for (j=0; j<43; j++)
 
scanf("%d",&x[j]);
 
for (j=0; j<43; j++)
 
fragment[x[j]/10]= fragment[x[j]/10]+1;
 
for (j=0; j<11; j++)
 
printf("\\n各分数段人数为 %d", fragment[j]);
 
}
 
或者写成:
 
#include "stdio.h"
 
void main()
 
{
 
int j , x[43],t ,fragment[12];
 
for (j=0; j<43; j++)
 
scanf("%d",&x[j]);
 
for (j=0; j<43; j++)
 
 
t= x[j]/10;
 
fragment[t]= fragment[t]+1;
 
 
for (j=0; j<11; j++)
 
printf("\\n各分数段人数为 %d", fragment[j]);
 
}
 
从键盘上输入两个字符串,并将它们交换后输出
 
#include "stdio.h"
 
#include "string.h"
 
void main()
 
{
 
int j ,k;
 
char ch1[81],ch2[81],t[81];
 
scanf("%s",ch1);
 
scanf("%s",ch2);
 
strcpy(t , ch1);
 
strcpy(ch1 , ch2);
 
strcpy( ch2 ,t);
 
printf("\\n %s,%s\\n,",ch1,ch2);
 
}
 
已知五个字符串"China","American","Japan","France","Australia",编程将它们按从小到大的顺序排列起来
 
#include "stdio.h"
 
#include "string.h"
 
void main()
 
{
 
int j ,k;
 
char t[81], b[5][81]= {"China","American","Japan","France","Australia"};
 
for (j=0; j<4; j++)
 
for (k=j-1; k<5; k++)
 
if ( strcmp(b[j]>b[k]) )
 
{
 
strcpy(t , b[j]);
 
strcpy(b[j] , b[k]);
 
strcpy( b[k] ,t);
 
}
 
for (j=0; j<9; j++)
 
printf("\\n %s,",b[j]);
 
}