4.1
#include
void main(void)
{
float a,b,c;
printf("Please enter the score of A:\n");
scanf("%f",&a);
printf("Please enter the score of B:\n");
scanf("%f",&b);
printf("Please enter the score of C:\n");
scanf("%f",&c);
if((a-b)*(a-c)<0)
printf("A gets the score %.1f",a);
if((b-a)*(b-c)<0)
printf("B gets the score %.1f",b);
if((c-a)*(c-b)<0)
printf("C gets the score %.1f",c);
}
4.3
#include
int mdays(int y,int m)
{
if (m==2) return (y%4==0 &&
(y%100==0 || y%400==0))?29:28;
else if (m==4 || m==6 || m==9 || m==11) return 30;
else return 31;
}
main()
{
int y,m,d,days;
printf("Enter year:");
scanf("%d",&y);
printf("Enter month:");
scanf("%d",&m);
printf("Enter day:");
scanf("%d",&d);
days=d;
while(m>1){days+=mdays(y,m-1);m--;}
printf("%d\n",days);
}
4.4 if方法:
#include "stdafx.h"
#include
int main(int argc, char* argv[])
{
float x = 0;
printf("input the salary\n");
scanf("%f",&x);
if(x<0)
printf("wrong\n");
else if(x>0 &&
x<1000)
printf("0\n");
else if(x<2000)
printf("%f\n",x*0.05);
else if(x<3000)
printf("%f\n",x*0.1);
else if(x<4000)
printf("%f\n",x*0.15);
else if(x<5000)
printf("%f\n",x*0.2);
else
printf("%f\n",x*0.25);
return 0;
}
Case方法:
#include "stdafx.h"
#include
int main(int argc, char* argv[])
{
float x ;
printf("input the salary\n");
scanf("%f",&x);
int xCase = 0;
xCase = (int)(x/1000.0);
switch(xCase)
{
case 0:
printf("0\n");
break;
case 1:
printf("%f\n",x*0.05);
break;
case 2:
printf("%f\n",x*0.1);
break;
case 3:
printf("%f\n",x*0.15);
break;
case 4:
printf("%f\n",x*0.2);
break;
default:
printf("%f\n",x*0.25);
}
return 0;
}
4.7
#include "stdafx.h"
#include
int main(int argc, char* argv[])
{
char *sa;
char c;
int i = 0,j = 0,k = 0;
do
{
c= getchar_r();
sa[i++] = c;
}while(c != '\r');
for(i=0;sa[i+1];i++)
{
for(j = i+1;sa[j];j++)
{
if( sa[i]==sa[j] && sa[j] =='
')
{
for(k=j;sa[k];k++)
sa[k] = sa[k+1];
j--;
}
}
}
for(k=0;sa[k];k++)
printf("%2c",sa[k]);
return 0;
}
4.10
#include
#define EPS 1e-5
void main()
{
int s=1;
float n=1.0,t=1.0,pi=0;
while(1.0/n>=EPS)
{
pi=pi+t;
n=n+2;
s=s*(-1);
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
}
4.11
#include
int main()
{
int a,b,num1,num2,temp;
printf("Input a & b:");
scanf("%d%d",&num1,&num2);
if(num1>num2)
{
temp=num1; num1=num2; num2=temp;
}
a=num1; b=num2;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf("The GCD of %d and %d is: %d\n",num1,num2,a);
printf("The LCM of them is: %d\n",num1*num2/a);
}
4.13
#include "stdafx.h"
#include
int Primes(int x);//判断素数函数
int main(int argc, char* argv[])
{
int i,j;
int num;
for(num = 4;num<=100;num++)
{
if(num%2 == 0)
{
for(i=1;i
{
for(j=1;j
{
if(num == i+j)
{
if(Primes(i) && Primes(j))
{
printf("%d=%d+%d\n",num,i,j);
}
}
}
}
}
}
return 0;
}
int Primes(int x)
{
int i ;
int n = 0;
for(i = 1;i<=x;i++)
{
if(x%i==0)
n++;
}
if(n==2)
return 1;
else
return 0;
}
4.17
#include
void main(void)
{
int c,i;
for(i=1,c=32;c<=126;++i,++c)
{
printf("%3d%-5c",c,c);
if(!(i%8))
printf("\n");
}
}
4.18
#include "stdafx.h"
#include
int main(int argc, char* argv[])
{
int x;
int i,n,sum;
printf("input 10 numbers\n");
for(i = 0,n = 0,sum = 0;i<10;i++)
{
scanf("%d",&x);
if(x >0)
{
sum+=x;
n++;
}
}
if(n)
printf("numbers = %d,average = %f\n",n,1.0*sum/n);
return 0;
}
5.5
Extern和static存储类型的区别:
Static型外部变量和extern型外部变量的唯一区别是作用域的限制。静态外部变量只能作用于定义它的文件,其他文件中的函数不能使用。Extern型外部变量的作用域可以扩大到整个程序的所有文件。
Static和auto存储类型的区别:
静态局部变量和自动变量有根本性的区别。由于静态局部变量在程序执行期间不会消失,因此,它的值有连续性。当退出块时,它的值能保存下来,以便再次进入块时使用,而自动变量的值在退出块时都丢失了。如果定义时静态局部变量有显示初始化,只在第一次进入时执行一次赋初值操作,而自动变量每次进入时都要执行赋初值操作。
5.6
不能。
在C语言中,参数的传递方式是“值传递”,即把实参的值拷贝到参数的存储区中。因此,swap()函数交换的只是实参的本地拷贝,代表swap()实参的变量并没有被改变。
5.7 6,12
5.10
#include
double sum_fac(int n)
{
double s=0;
int i;
double fac=1.0;
for(i=1;i<=n;i++)
{
fac*=1.0/i;
s+=fac;
}
return s;
}
void main(void)
{
int n;
printf("Please enter the
integer n:");
scanf("%d",&n);
printf("the sum is %lf\n",sum_fac(n));
}
5.17
#include
void reverse()
{
char ch= getchar_r();
if(ch!='\n')
{
reverse();
putchar(ch);
}
}
int main()
{
reverse();
printf("\n");
return
0;
}
6.1
(1)正确
(2)错误,不需要加“;”
(3)错误,“ident”与“(”之间不能有空格
(4)错误,宏名不能是关键字“void”
(5)错误,将x*y改成((x)*(y))
6.4
将会导致变量blue的重复定义
6.5
(1)#define NO 0
(2)#include “common.h”
(3)#line 3000
(4)#undef TRUE
#define TRUE 1
(5)#if TRUE !=0
#define FALSE 0
#else
#define FALSE 1
#endif
(6)#ifndef SIZE
assert(0);
#else
assert(SIZE<10&&SIZE>1);
#endif
(7)#define SQUARE_VOLUME(x) (x)*(x)*(x)
6.10
#include
#define pi 3.1415926
#define BALL_VOLUME(r) ((4/3)*pi*(r)*(r)*(r))
int main()
{
int r;
float v[11];
for(r=1;r<11;r++)
{
v[r]=float(BALL_VOLUME(r));
printf("r=%2d v=%.2f\n",r,v[r]);
}
return 0;
}