P118~122
一、选择题?
1~6? D B B A D C
二、填空题
1、2#3#5#7#
2、int fun(int m)? ? ? ? ? ?fun(n)? ? ? ? ? ?int m? ? ? ?? ? ? m=m/10?? ? ? ? ?? ? ?old_digit=cur_digit?
3、char ch? ? ? ? ? ? printf("Yes.");break;? ? ? ? ? ? ? ? printf("No!");? ? ? ? ? ?YesNo(ch);
三、程序设计题
1、
#include<stdio.h>//习题5.1
int sign(int x)
{
int f;
if(x<0){
f=-1;
}
else if(x>0){
f=1;
}
else f=0;
return f;
}
int main(void)
{
int x,y;
printf("Enter x:");
scanf("%d",&x);
y=sign(x);
printf("f(x)=%d",y);
return 0;
}
2、
#include<stdio.h>//习题5.2
int even(int n)
{
if(n%2==0){
return 1;
}
else return 0;
}
int main(void)
{
int n,sum=0;
printf("Enter n:");
while(n>0){
scanf("%d",&n);
even(n);
if(even(n)==0){//调用函数返回值为0时,奇数和。当even(n)==1时,偶数和。
sum+=n;
}
}
printf("sum=%d",sum);
return 0;
}
3、
#include<stdio.h>//习题5.3
#include<math.h>
double dist(double x1,double y1,double x2,double y2)
{
double s=0;
s=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
return s;
}
int main(void)
{
double x1,y1,x2,y2,X;
printf("Enter x1,y1,x2,y2:");
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
X=dist(x1,y1,x2,y2);
printf("X=%.2lf",X);
return 0;
}
?4、
#include<stdio.h>//习题5.4
#include<math.h>
int prime(int m)//判断m是否为素数
{
int j;
if(m<=1){
return 0;
}
else if(m==2){
return 1;
}
else {
for(j=2;j<=sqrt(m)+1;j++)
{
if(m%j==0){
return 0;
}
else return 1;
}
}
}
int main(void)
{
int m,n,i,sum=0,count=0;
printf("Enter m,n(m>=1,n<=500):");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)//将i的值传到自定义函数里
{
if(prime(i)==1){
sum+=i;
count++;
}
}
printf("%d~%d之间的素数个数为%d,和为%d",m,n,count,sum);
return 0;
}
?5、
#include<stdio.h>//习题5.5
int countdigit(int number,int digit)
{
int count=0;
while(number>0){
if(number%10==2){
count++;
}
number=number/10;
}
return count;
}
int main(void)
{
int number,digit=2,count;
printf("Enter number:");
scanf("%d",&number);
count=countdigit(number,digit);
printf("%d中的%d的个数为%d\n",number,digit,count);
return 0;
}
?6、
#include<stdio.h>//习题5.6
#include<math.h>
int is(int number)
{
int x,sum,y;
y=number;
sum=0;
do{
x=y%10;
sum+=pow(x,3);
y=y/10;
}while(y>0);
if(sum==number){
return sum;
}
else return 0;
}
int main(void)
{
int m,n,i,result=0;
printf("Enter m,n(m>=1,n<=1000):");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
{
result=is(i);
if(result>=m&&result<=n){
printf("%d\n",result);
}
}
return 0;
}
7、
#include<stdio.h>//习题5.7
#include<math.h>
double fact(int n)
{
int i;
double f=1;
for(i=1;i<=n;i++)
{
f*=i;
}
return f;
}
double fumcos(double e,double x)
{
int flag=1,i=0;
double cosx=0,item=1;//item 必须为1,才能进while循环 。cosx为0,则直接从第一项开始累加
while(fabs(item)>=e){
item=flag*pow(x,i)/fact(i);
cosx+=item;
i+=2;
flag=-flag;
}
cosx+=item;
return cosx;
}
int main(void)
{
double e,x;
printf("Enter e:");
scanf("%lf",&e);
printf("Enter x:");
scanf("%lf",&x);
printf("cosx=%lf",fumcos(e,x));
return 0;
}
8、
#include<stdio.h>//习题5.8
void hollow_pyramid(int n)
{
int i,j;
for(i=1;i<n;i++)//共n-1行
{
for(j=1;j<=n-i;j++)//上三角空格
{
printf(" ");
}
printf("%d",i);//左斜下数字,只打印一个数字,不用在内循环里
if(i==1){
printf("\n");
continue;
}
for(j=1;j<=2*(i-1)-1;j++)//中间三角空格 .i=2时,j=1;i=3时,j=3
{
printf(" ");
}
printf("%d",i);//右斜下数字
printf("\n");
}
for(j=1;j<=2*n-1;j++)//底层数字
{
printf("%d",n);
}
}
int main(void)
{
int n;
printf("Enter n:");
scanf("%d",&n);
hollow_pyramid(n);
return 0;
}
|