C语言练习1.docx
《C语言练习1.docx》由会员分享,可在线阅读,更多相关《C语言练习1.docx(9页珍藏版)》请在冰豆网上搜索。
C语言练习1
#include
#include
intmain()
{
return0;
}
1.【问题描述】给定平面任意两点的坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留两位小数)。
要求求距离的运算单独放在一个函数中,然后在main函数中调用。
【输入形式】输入两点的坐标(x1,y1)和(x2,y2)
【输出形式】两点间的距离
【样例输入】815849
【样例输出】5.00
#include
#include
#include
floatdistance(floatx1,floaty1,floatx2,floaty2);
intmain()
{
floatx1,x2,y1,y2,dis;
scanf("%f",&x1);
scanf("%f",&y1);
scanf("%f",&x2);
scanf("%f",&y2);
dis=distance(x1,y1,x2,y2);
printf("%.2f",dis);
return0;
}
floatdistance(floatx1,floaty1,floatx2,floaty2)
{
floatz,d;
d=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
z=sqrt(d);
returnz;
}
2.【问题描述】输入一批正整数(以零或负数为结束标志),求其中的奇数和。
要求定义和调用函数even(n)判断数的奇偶性,当n为偶数时返回1,否则返回0.
【输入形式】输入一批正整数(以零或负数为结束标志)
【输出形式】求其中的奇数和
【样例输入】129718311200
【样例输出】30
#include
#include
inteven(intx)
{
if(x%2==0){
return1;
}
elsereturn0;
}
intmain()
{
intn,sum,i;
sum=0;
n=5;
for(i=1;n>0;i++){
scanf("%d",&n);
if(even(n)==1)
continue;
else
sum=sum+n;
}
while(n>0);
printf("%d\n",sum);
return0;
}
3.【问题描述】输入2个正整数m和n(m>1,n<=500),统计并输出m和n之间的素数个数以及这些素数的和。
素数就是只能被1和自身整除的正整数,最小的素数是2.要求调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0.
【输入形式】
【输出形式】
【样例输入】2,10
【样例输出】count=4,sum=17
【样例说明】1到10之间有4个素数:
2,3,5,7
#include
#include
#include
intprime(int);
intmain()
{
intm,n,count,sum,i;
sum=0;
count=0;
scanf("%d",&m);
scanf("%d",&n);
for(i=m;i<=n;i++){
if(prime(i)==0){
count++;
sum=sum+i;
}
}
printf("count=%d,sum=%d",count,sum);
return0;
}
intprime(intn)
{
inti;
i=2;
while(i{
if(n%i==0)
{
break;
}
i++;
}
if(i==n){
return(0);
}
else{return
(1);}
}
4.【问题描述】输入2个正整数a和n,求a+aa+aaa+a.....a(n个a)之和。
要求定义并调用函数fn(a,n),它的功能是返回aa......a(n个a)。
例如fn(3,2)的返回值是33
【输入形式】
【输出形式】
【样例输入】8,5
【样例输出】sum=98760
【样例说明】(样例中a是8,n是5)
【评分标准】
#include
#include
#include
intfn(intx,inty);
intmain()
{
inta,n,b;
scanf("%d",&a);
scanf("%d",&n);
b=fn(a,n);
printf("sum=%d",b);
return0;
}
intfn(intx,inty)
{
intsum=0,m=0;
inti=1;
intj,p;
while(i<=y){
for(j=1,m=0;j<=i;j++){
p=pow(10,(j-1));
m=m+x*p;
}
sum=sum+m;
i++;
}
returnsum;
}
5.【问题描述】输入一个正整n,生成一张阶乘表,输出1!
~n!
的值。
要求定义和调用函数fact(n)计算n!
函数类型为double
【输入形式】
【输出形式】
【样例输入】3
【样例输出】1!
=1
2!
=2
3!
=6
#include
#include
doublefact(intn);
intmain()
{
intn,i;
scanf("%d",&n);
doubles;
i=1;
while(i<=n){
s=fact(i);
printf("%d!
=%.0f\n",i,s);
i++;
}
return0;
}
doublefact(intn){
inti,p;
doubles;
i=1;
s=1;
while(i<=n){
s=s*i;
i++;
}
returns;
}
【样例说明】
6.【问题描述】读入一个整数,统计并输出该数中指定数字的个数,要求调用函数countdigit(number,digit),他的功能是统计整数number中数字digit的个数。
;例如,countdigit(10090,0)的返回值是3.
【输入形式】
【输出形式】
【样例输入】21252,2
【样例输出】Numberofdigit2:
3
#include
#include
intcountdigit(intnum,intdigit);
intmain()
{
intnum,digit,s;
scanf("%d",&num);
scanf("%d",&digit);
s=countdigit(num,digit);
printf("Numberofdigit%d:
%d",digit,s);
return0;
}
intcountdigit(intnum,intdigit){
inti,j=0;
while(num%10!
=0){
i=num%10;
num=num/10;
if(i==digit){
j++;
}
}
returnj;
}
7.【问题描述】输入2个正整数m和n(m>=1,n<=1000),输出m~n之间的所有完数,完数就是因子和与它本身相等的数。
要求定义并调用函数factorsum(number),它的功能是返回number的因子和。
例如,factorsum(12)的返回值是16(1+2+3+4+6)
【输入形式】
【输出形式】
【样例输入】1,100
【样例输出】1628
【样例说明】(试例中m是1,n是100)
#include
#include
intfactorsum(intnum);
intmain()
{
intm,n,s,i,j;
scanf("%d",&m);
scanf("%d",&n);
i=m;
while(i<=n){
s=factorsum(i);
if(s==i){
printf("%d",s);
}
i++;
}
return0;
}
intfactorsum(intn){
inti,sum;
i=1;
sum=0;
if(n==1){
sum=1;
}
else{
while(iif(n%i==0){
sum=sum+i;
}
i++;
}
}
returnsum;
}