C Primer Plus 第六章课后习题练习……2015.4.24

来源:互联网 发布:域名查找ip 编辑:程序博客网 时间:2024/04/29 01:16

C Primer Plus 
                        ——普拉塔(第五版)



1、7,70,64,8,2


2、#include<stdio.h>
int main(void)
{
int value;
for(value=36;value>0;value/=2)
   printf("%3d",value);
   double value1;
for(value1=36;value1>0;value1/=2)
   printf("%3d",value1);
return 0;
}


3、x>5; scanf("%lf",&x)==0; x==5;
4、scanf("%d",&x)==1;x!=5;x>=20;
5
#include<stdio.h>
int main(void)
{
int i,j,list[10];
for(i=1;i<=10;i++)
{
list[i-1]=2*i+3;
for(j=0;j<=i;j++)
   printf("%d",list[j]);
printf("\n");
}
return 0;
}


6.
#include<stdio.h>
int main(void)
{
int i,j;
for(i=0;i<4;i++)
 {
   for(j=0;j<8;j++)
    printf("$");
    printf("\n");
}
return 0;
}


7.
#include<stdio.h>
int main(void)
{
int i=0;
while(++i<4)
 printf("hi!");
do
 printf("Bye! ");
while(i++<8)
;
return 0; 
}
#include<stdio.h>
int main(void)
{
int i=0;
char ch;
for(i,ch='A';i<4;i++,ch+=2*i)
   printf("%c",ch);
return 0; 
}


8.#include<stdio.h>
int main(void)
{
char ch;
scanf("%c",&ch);
while(ch!='g')
{
printf("%c",ch);
scanf("%c",&ch);
}
return 0; 
}
#include<stdio.h>
int main(void)
{
char ch;
scanf("%c",&ch);
while(ch!='g')
{
printf("%c",++ch);
scanf("%c",&ch);
}
return 0; 
}


#include<stdio.h>
int main(void)
{
char ch;22/04/15 20:33
do
{
printf("%c",ch);
scanf("%c",&ch);
}while(ch!='g');


return 0; 
}
#include<stdio.h>
int main(void)
{
char ch;
    scanf("%c",&ch);
    for(ch ;ch!='g';scanf("%c",&ch))
        putchar(ch);
return 0; 
}
9.
#include<stdio.h>
int main(void)
{
int n,m;
n=30;
while(++n<=33)
    printf("%d|",n);
n=30;
do
printf("%d|",n);
while(++n<=33);
printf("\n***\n");
for(n=1;n*n<200;n+=4)
   printf("%d\n",n);
printf("\n**\n");
for(n=2,m=6;n<m;n*=2,m+=2)
  printf("%d %d\n",n,m);
printf("\n***\n");
for(n=5;n>0;n--)
{
for(m=0;m<=n;m++)
   printf("=");
}
return 0;



10. double mint[10];数组名mint 10个元素 double类型值
    scanf("%lf",&mint[2])
11.
#include<stdio.h>
#define SIZE 8
int main(void)
{
int by_twos[SIZE];
int index;
for(index=0;index<SIZE;index++)
by_twos[index]=2*index;
for(index=0;index<SIZE;index++)
printf("%d\n",by_twos[index]);
return 0;
}
 
12   long 函数类型   参数类型
13.
long SQUARE(int n)
{


    long meter;
    meter=n*n;
   return meter;
}


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


int k;
for(k=1,printf("%d:Hi!\n",k);printf("k=%d\n",k),k*k<26;k+=2,printf("Now k is %d\n",k))
   printf("k is %d in the loop\n",k);
return 0;
}
编程练习
1
#include<stdio.h>
#define SIZE 8
int main(void)
{
char char_acter[SIZE];
int count;
for(count=0;count<SIZE;count++)
   scanf("%c",&char_acter[count]);
for(count=0;count<SIZE;count++)
   printf("%c ",char_acter[count]);
return 0;
}
2
#include<stdio.h>
int main(void)
{
int count,i;
for(count=0;count<20;count++)
 {
 for(i=0;i<=count;i++)
  printf("$");
  printf("\n");
 } 
return 0;
}
3
#include<stdio.h>
int main(void)
{
int count,i;
char ch='F';
for(count=0;count<5;count++)
 {
 for(i=0;i<=count;i++)
  printf("%c",ch--);
  ch='F';
  printf("\n");
 } 
return 0;
}


输出字符金字塔   步步错,步步改正的过程,有时是逻辑错误,有时是衔接错误,更有时是自己无法意识到的错误
#include<stdio.h>
int main(void)
{
int count,i,j,line=7;
char ch;
scanf("%c",&ch);
for(i=0;i<line;i++)
 {
   for( i;i<line-1;i++)
      printf(" ");
      
   for(count=0;count<=i;count++)
     printf("%c",ch++);   
   for(count=0;count<=i;count++)
printf("%c",ch--);

      printf("\n");
  
   } 
return 0;
}




第一次输出是这样的,就很是纳闷,怎么换行符不起作用了呢,后来发现内部四个for循环用了同一个变量i,内部第一个for循环后变量i的值已经改变,不再是零。所以就进行了下面的改变……


#include<stdio.h>
int main(void)
{
int count,i,j;
     const int line=7;
char ch;
scanf("%c",&ch);
for(i=0;i<line;i++)
 {
   for( j=i;j<line-1;j++)
      printf(" ");
      
   for(count=0;count<=i;count++)
     printf("%c",ch++);   
   for(count=0;count<=i;count++)
printf("%c",ch--);

      printf("\n");
  
 } 
return 0;
}


这个程序看起来已经接近金字塔形式的输出模式了,但还是不行,输出形状的右边从第一行就少了个字母
#include<stdio.h>
int main(void)
{
int count,i,j,line=7;
char ch;
scanf("%c",&ch);
for(i=0;i<line;i++)
 {
   for( j=i;j<line-1;j++)
      printf(" ");
      
   for(count=0;count<=i;count++)
     printf("%c",ch++);   
   for(count=0;count<=i;count++)
printf("%c",--ch);

      printf("\n");
  
 } 
return 0;
}


从输出结果看问题应该是出在第三个FOR循环 我又进行了修改,如下结果少了金字塔的尖,这个问题的出现很是困惑……………
#include<stdio.h>
int main(void)
{
int count,i,j;
const int line =7;
char ch;
scanf("%c",&ch);
for(i=0;i<line;i++)
 {
   for( j=i;j<line-1;j++)
      printf(" ");
      
   for(count=0;count<=i;count++)
     printf("%c",ch+count); 
   for(count-2;count>=0;count--)
      printf("%c",ch+count);

      printf("\n");
  
 } 
return 0;
}
现在终于发现了,在群里帮助下发现的一个自己意识不到的错误for第一个值只能是初始化,第四个for()我却写出了表达式,现在终于写出完整的代码了


#include<stdio.h>
int main(void)
{
int count,i,j;
const int line =7;
char ch;
scanf("%c",&ch);
for(i=0;i<line;i++)
 {
   for( j=i;j<line-1;j++)
      printf(" ");    
   for(count=0;count<=i;count++)
     printf("%c",ch+count); 
     count-=2;
   for(count;count>=0;count--)
      printf("%c",ch+count);
      printf("\n");
  
 } 
return 0;
}




5
#include<stdio.h>
int main(void)
{
int i,limit_down,limit_up;
printf("Please enter limit_up and limit_down\n");
scanf("%d%d",&limit_up,&limit_down);
printf("limit_up is %d limit_down is %d\n",limit_up,limit_down);
 i=limit_up;
 for(i;i*i*i<limit_down;i++)
 {
 printf("%10d%10d%10d",i,i*i,i*i*i);
 printf("\n");
 }
return 0;
}




6
#include<stdio.h>
#define SIZE 10
int main(void)
{
int i;
char ch[SIZE];
printf("please enter \n");
for(i=0;i<SIZE;i++)
 scanf("%c",&ch[i]);
for(i=SIZE-1;i>0;i--)
   printf("%c",ch[i]);
return 0;
 
}
7
#include<stdio.h>
int main(void)
{
float num1,num2;
printf("Please enter num\n");
while(scanf("%f%f",&num1,&num2))
{
printf("%f",(num1-num2)/(num1*num2));
printf("\n");
}
return 0;
}


8
#include<stdio.h>
float Function(float i,float j);
int main(void)
{
float num1,num2;
printf("Please enter num\n");
while(scanf("%f%f",&num1,&num2))
{
printf("%f", Function(num1,num2) );
printf("\n");
}
return 0;
}


float Function(float i,float j)
{
float num;
num=(i-j)/(i*j);
return num;
}


8.


#include<stdio.h>
int main(void)
{
int  limit_down,limit_up,sum;

printf("Please enter limit_up and limit_down\n");
scanf("%d%d",&limit_up,&limit_down);
printf("limit_up is %d limit_down is %d\n",limit_up,limit_down);
 while(limit_up>limit_down)
{   sum=0;
for(limit_up;limit_up<limit_down;limit_up++)
 { 
    sum=sum+limit_up*limit_up;
 printf("%10d",sum);
 printf("\n");
 }
 printf("Please enter limit_up and limit_down\n");
 scanf("%d%d",&limit_up,&limit_down);

printf("limit_up is %d is smaller limit_down is %d",limit_up,limit_down);
return 0;
}


9
#include<stdio.h>
#define SIZE 8
int main(void)
{
int i,array[SIZE];
for(i=0;i<SIZE;i++)
 scanf("%d",&array[i]);
for(i=SIZE-1;i>=0;i--)
 printf("%d",array[i]);
 return 0;
}


11.


#include<stdio.h>
int main(void)
{
double sum1,sum2;
int count,times,i;
i=1;
printf("Please enter degree\n");
while(scanf("%d",&times))
{
   sum1=0;sum2=0;
for(count=1;count<times;count++)
sum1=sum1+1.0/count;
for(count=1;count<times;count++)
{
i=-i;
sum2=sum2-1.0/count*i;
}
printf("%lf\n%lf\n",sum1, sum2);
}

return 0;
}


12
#include<stdio.h>
int main(void)
{
int array[8],i;
for(i=0;i<8;i++)
  scanf("%d",&array[i]);
do
{
printf("%d\n",array[i-1]);
i--;

} while(i>=0); 

   return 0;
}






#include<stdio.h>
int main(void)
{
int array1[8],array2[8],i,j;
for(i=0;i<8;i++)
 {
 scanf("%d",&array1[i]);
   for(j=0,array2[i]=0;j<=i;j++)
    array2[i ]=array2[i]+array1[j];
 }

for(i=0;i<8;i++)
 printf("%10d",array2[i]);
printf("\n");
for(i=0;i<8;i++)
 printf("%10d",array1[i]);
 
   return 0;
}
14
#include<stdio.h>
#define SIZE 5 
int main(void)
{
char ch[SIZE];
int i;
for(i=0;i<SIZE;i++)
   scanf("%c",&ch[i]);
for(--i;i>=0;i--)
{
//while(ch[i]=='\0')
//  continue;

printf("%c",ch[i]);
}
  
  // putchar(ch[i]);
return 0;






15
#include<stdio.h>
int main(void)
{
int year;
float money1,money2;
money1=100*0.1;
money2=100*0.05;
year=1;
while(money1>money2)
{
money1=money1+100*0.1*year;
money2=money2+(100+money2)*0.05*year;
year++;
}
printf("%d year more money\n",year);
printf("%f %f",money1+100,money2+100);
return 0;
}


#include<stdio.h>
int main(void)
{
int year;
float money;
money=100;
year=1;
while(money>0)
{
money=money*(1+0.08)-10;
year++;
}
printf("%d",year);
return 0;
}
0 0