接上次写的前五章的答案,这次更新后面章节的
PS:目录在左边袄┗|`O′|┛ ~~
第六章
6.1
#include <stdio.h>
int main(void)
{
char letters[26];
int i;
for(i=0;i<26;i++)
{
letters[i]='a'+i;
printf("%c ",letters[i]);
}
printf("\n");
return 0;
}
另一种(我觉得这种没有上面的代码好)
#include <stdio.h>
int main(void)
{
char letters[26];
char num_letters;
int i;
num_letters='a';
for(i=0;i<26;i++)
{
letters[i]=num_letters;
num_letters=num_letters+1;
printf("%c ",letters[i]);
}
return 0;
}
6.2
#include <stdio.h>
int main(void)
{
int i,j;
for(i=1;i<6;i++)
{
for(j=1;j<i+1;j++)
printf("$");
printf("\n");
}
}
6.3
#include <stdio.h>
int main(void)
{
int i,j;
char c;
for(i=1;i<7;i++)
{
c='F';
for(j=0;j<i;j++)
printf("%c",c--);
printf("\n");
}
return 0;
}
6.4
#include <stdio.h>
int main(void)
{
int i,j;
char c;
c='A' ;
for(i=0;i<6;i++)
{
for(j=0;j<i+1;j++)
{
printf("%c",c);
c=c+1;
}
printf("\n");
}
return 0;
}
6.5
#include <stdio.h>
int main(void)
{
int i,j,num;
char c;
printf("Please enter a letter:\n");
scanf("%c",&c);
num=c-65;
for(i=0;i<num+1;i++)
{
for(j=0;j<num-i;j++)
{
printf(" ");
}
c='A';
for(j=0;j<i+1;j++)
{
printf("%c",c++);
}
c=c-1;
for(j=0;j<i;j++)
{
printf("%c",--c);
}
printf("\n");
}
return 0;
}
6.6
#include <stdio.h>
int main(void)
{
int num,low,hig;
long square,cube;
printf("Please enter the low number\n");
scanf("%d",&low);
printf("Now,please enter the higher number:\n");
scanf("%d",&hig);
if(low>hig)
printf("Oh!Shit,mather f**k,you can't enter those number!");
else
{
printf(" integer square cube\n");
for(;low<=hig;low++)
printf("%9d%9d%9d\n",low,low*low,low*low*low);
}
return 0;
}
6.7
#include <stdio.h>
#include <string.h>
int main(void)
{
char word[20];
int num;
printf("Please enter a word:\n");
scanf("%s",word);
for(num=strlen(word)-1;num>=0;num--)
printf("%c",word[num]);
return 0;
}
6.8
#include <stdio.h>
int main(void)
{
int jud;
float num1,num2,ans;
printf("please enter two numbers:\n");
jud=scanf("%f %f",&num1,&num2);
while(jud)
{
printf("(%f-%f)/(%f*%f)=%f\n",num1,num2,num1,num2,(num1-num2)/(num1*num2));
printf("please enter two numbers:(q to quit)\n");
jud=scanf("%f %f",&num1,&num2);
}
return 0;
}
6.9
#include <stdio.h>
float fun(float a,float b);
int main(void)
{
float num1,num2;
printf("Please enter two numbers:\n");
while(scanf("%f %f",&num1,&num2))
{
printf("%f\n",fun(num1,num2));
printf("Please enter two numbers:(q to quit)\n");
}
return 0;
}
float fun(float a,float b)
{
float ans;
ans=(a-b)/(a*b);
return ans;
}
6.10
#include <stdio.h>
int main(void)
{
int low,upp;
int low1;
unsigned long s_sum=0;
printf("Enter lower and upper integer limits:");
scanf("%d %d",&low,&upp);
if(low>=upp)
;
else
{
low1=low;
for(;low<=upp;low++)
s_sum+=(low*low);
printf("The sums of the squares from %d to %d is %ld\n",low1*low1,upp*upp,s_sum);
printf("Enter next set of limits:");
scanf("%d %d",&low,&upp);
while(low<upp)
{
s_sum=0;
low1=low;
for(;low<=upp;low++)
s_sum+=(low*low);
printf("The sums of the squares from %d to %d is %ld\n",low1*low1,upp*upp,s_sum);
printf("Enter next set of limits:");
scanf("%d %d",&low,&upp);
}
}
return 0;
}
6.11
#include <stdio.h>
int main(void)
{
int i,num[8];
for(i=0;i<8;i++)
{
printf("please enter a num:");
scanf("%d",&num[i]);
}
for(;i>0;i--)
printf("%d ",num[i-1]);
return 0;
}
6.12.1
#include <stdio.h>
int main(void)
{
int num,i;
float sum=0;
printf("please enter a num:");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
sum+=(float)1/i;
}
printf("ans=%f",sum);
return 0;
}
6.12.2
#include <stdio.h>
int main(void)
{
int num,i,j;
float sum=0;
printf("please enter a num:");
scanf("%d",&num);
for(i=1,j=-1;i<=num;i++)
{
j=-j;
sum+=(float)j/i;
}
printf("ans=%f",sum);
return 0;
}
6.13
#include <stdio.h>
int fun(int a);
int main(void)
{
int i,num[8];
for (i=0;i<8;i++)
{
printf("Please enter a num:");
scanf("%d",&num[i]);
}
i=0;
do
{
printf("%ld ",fun(num[i++]));
}
while(i<8)
return 0;
}
int fun(int a)
{
unsigned mult=2;
for(;a>1;a--)
mult*=2;
return mult;
}
6.14
#include <stdio.h>
int main(void)
{
double num1[8],num2[8];
int i;
for(i=0;i<8;i++)
{
printf("Please enter a num:");
scanf("%lf",&num1[i]);
}
for(i=0;i<8;i++)
{
printf("%f ",num1[i]);
}
num2[0]=num1[0];
printf("\n%f\n",num2[0]);
for(i=1;i<8;i++)
{
num2[i]=num2[i-1]+num1[i];
printf("%f\n",num2[i]);
}
return 0;
}
6.15
#include <stdio.h>
int main(void)
{
char ch,c[255];
int i=0;
printf("please enter something:\n");
ch=getchar();
while(ch!='\n')
{
c[i]=ch;
ch=getchar();
i++;
}
while(i-->=1)
{
printf("%c",c[i]);
}
return 0;
}
6.16
#include <stdio.h>
#define fuli 1.05
int main(void)
{
float fina1=100.0,fina2=100.0;
int i=0;
do
{
fina1+=10;
fina2*=fuli;
i++;
}
while(fina2<fina1);
printf("%d",i);
return 0;
}
6.17
#include <stdio.h>
#define rate 1.08
int main(void)
{
int i=0;
float fina=100.0;
do
{
fina=fina*rate-10;
i++;
}
while(fina>=0);
printf("%d",i);
}
6.18
#include <stdio.h>
int main(void)
{
int fnum=5,i=1;
while(fnum<=150)
{
fnum=2*(fnum-(i++));
}
printf("%d",i);
}
第七章
7.1
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch;
int num1,num2,num3;
num1=num2=num3=0;
printf("please enter something:\n");
while((ch=getchar())!='#')
{
if(ch==' ')
{
num1++;
}
else
{
if(ch=='\n')
num2++;
else
num3++;
}
}
printf("space:%d\n",num1);
printf("return:%d\n",num2);
printf("others:%d\n",num3);
return 0;
}
7.2
#include <stdio.h>
int main(void)
{
const int n=8;
int ch=0,i=0;
while((ch=getchar())!='#')
{
printf("%c-%d ",ch,ch);
i++;
if((i%n)==0)
printf("\n");
}
return 0;
}
7.3
#include <stdio.h>
int main(void)
{
int i=0,j=0,num;
float sum1,sum2;
sum1=sum2=0;
printf("Please enter some number,0 to quit\n");
while(scanf("%d",&num)==1&&num!=0)
{
if(num%2==0)
{
i++;
sum1+=num;
}
else
{
j++;
sum2+=num;
}
}
printf("奇数的个数:%d\n",j);
printf("奇数的平均值:%.2f\n",sum2);
printf("偶数的个数:%d\n",i);
printf("偶数的平均值:%.2f\n",sum1);
}
7.4
#include <stdio.h>
int main(void)
{
char ch;
int i;
while((ch=getchar())!='#')
{
if(ch=='.')
{
printf("!");
}
else
{
if(ch=='!')
{
printf("!!");
}
else
{
putchar(ch);
}
}
}
return 0;
}
7.5
#include <stdio.h>
int main(void)
{
char ch;
while((ch=getchar())!='#')
{
switch(ch)
{
case '.':printf("!");
break;
case '!':printf("!!");
break;
default:putchar(ch);
}
}
return 0;
}
7.6
#include <stdio.h>
int main(void)
{
char ch;
int i=0;
printf("please enter something(# to quit):\n");
while((ch=getchar())!='#')
{
if(ch='e')
{
ch=getchar();
if(ch='i')
{
i++;
}
}
}
printf("%d",i);
return 0;
}
7.7
#include <stdio.h>
#define LIM1 300
#define LIM2 150
#define SALA 10.0
int main(void)
{
float hours,salary,tax;
printf("Please enter you work hours per week:\n");
scanf("%f",&hours);
if(hours>40)
{
hours=(hours-40)*1.5+40;
}
salary=hours*SALA;
if(salary>LIM1)
{
if(salary>LIM1+LIM2)
{
tax=(salary-LIM1-LIM2)*0.25+75;
}
else
{
tax=(salary-LIM1)*0.2+45;
}
}
else
{
tax=salary*0.15;
}
printf("The sum of salary is %.1f,tax is %.1f,available is %.1f",salary,tax,salary-tax);
}
7.8
#include <stdio.h>
#define ONE 8.75
#define TWO 9.33
#define THREE 10.00
#define FOUR 11.20
#define LIM1 300
#define LIM2 150
int main(void)
{
int i,num,jud;
float SALA,salary,tax,hours;
for(i=0;i<61;i++)
printf("*");
printf("\n\nEnter the number corresponding to desired pay rate or action:\n");
printf("1) $%.2f/hr 2) $%.2f/hr\n",ONE,TWO);
printf("3) $%.2f/hr 4) $%.2f/hr\n",THREE,FOUR);
printf("5) quit\n");
for(i=0;i<61;i++)
printf("*");
printf("\n");
scanf("%d",&num);
while(num!=5)
{
switch(num)
{
case 1:SALA=ONE;
break;
case 2:SALA=TWO;
break;
case 3:SALA=THREE;
break;
case 4:SALA=FOUR;
break;
default :printf("Please enter 1-5 numbers thank u!!!\n");
}
if(num==1||num==2||num==3||num==4)
{
printf("Please enter you work hours per week:\n");
scanf("%f",&hours);
if(hours>40)
{
hours=(hours-40)*1.5+40;
}
salary=hours*SALA;
if(salary>LIM1)
{
if(salary>LIM1+LIM2)
{
tax=(salary-LIM1-LIM2)*0.25+75;
}
else
{
tax=(salary-LIM1)*0.2+45;
}
}
else
{
tax=salary*0.15;
}
printf("The sum of salary is %.1f,tax is %.1f,available is %.1f",salary,tax,salary-tax);
}
printf("\nplease enter the number corresponding to desired pay rate or action:\n");
scanf("%d",&num);
}
return 0;
}
7.9
#include <stdio.h>
#include <math.h>
int sushu(int x);
int main(void)
{
int x,y,i;
printf("Please enter a number you want(positive number):");
scanf("%d",&x);
for(i=2;i<=x;i++)
{
if(sushu(i))
{
printf("%d ",i);
}
}
return 0;
}
int sushu(int x)
{
int i,n=1;
double half;
half=sqrt(x);
for(i=2;i<=half;i++)
{
if(x%i!=0)
{
continue;
}
else
{
n=0;
break;
}
}
return n;
}
7.10
#include <stdio.h>
#define ONE 17850
#define TWO 23900
#define THREE 29750
#define FOUR 14875
#define RATE1 0.15
#define RATE2 0.28
float fun(float a);
int main(void)
{
float salary,level=0,r_salary;
int i,num;
for(i=0;i<50;i++)
printf("*");
printf("\n\n");
printf("1) 单身 2) 户主\n",ONE,TWO);
printf("3) 已婚,共有 4) 已婚,离异\n",THREE,FOUR);
printf("5) 退出\n");
for(i=0;i<50;i++)
printf("*");
printf("\n\n");
printf("请选择您的类别:");
scanf("%d",&num);
while(num!=5)
{
switch(num)
{
case 1:level=ONE;
break;
case 2:level=TWO;
break;
case 3:level=THREE;
break;
case 4:level=FOUR;
break;
default:printf("请输入1~5的数字,靴靴\n");
break;
}
fun(level);
printf("请选择您的类别:");
scanf("%d",&num);
level=0;
}
printf("Bye哟\n");
return 0;
}
float fun(float level)
{
float salary,tax;
if(level)
{
printf("请把你的收入输入一下靴靴:");
scanf("%f",&salary);
if(salary>level)
{
tax=level*RATE1;
tax=(salary-level)*RATE2+tax;
}
else
{
tax=salary*RATE1;
}
printf("所以你需要缴纳的税金是:%.1f$\n",tax);
}
}
7.11
#include <stdio.h>
#define A 2.05
#define B 1.15
#define C 1.09
#define LIM1 5
#define LIM2 20
#define FEE1 6.5
#define FEE2 14
#define DISCOUNT 0.95
void fun(int a,int b,int c);
int main(void)
{
int i,weight,a,b,c,d,e,f;
char ch;
a=b=c=d=e=f=0;
for(i=0;i<70;i++)
printf("*");
printf("\n");
printf(" ABC邮购杂货店\n");
printf("a) 洋蓟 $%.2f每磅 b) 甜菜 $%.2f每磅\n",A,B);
printf("c) 胡萝卜 $%.2f每磅 d) 邮费、包装费及折扣详情\n",C);
printf("e) 结账付款 f) 溜了溜了,买不起买不起\n");
for(i=0;i<70;i++)
printf("*");
printf("\na、b、c可以反复添加\n请输入相关选项:");
while((ch=getchar())!='e')
{
switch(ch)
{
case 'a':if(d==0)
{
printf("请问您想要购买多少磅的洋蓟呢?");
scanf("%d",&weight);
a=weight;
d++;
}
else
{
printf("请问您还想要再添加多少磅洋蓟呢?");
scanf("%d",&weight);
a+=weight;
}
printf("请继续输入:") ;
break;
case 'b':if(e==0)
{
printf("请问您想要购买多少磅甜菜呢?");
scanf("%d",&weight);
b=weight;
e++;
}
else
{
printf("请问您还想要再添加多少磅甜菜呢?");
scanf("%d",&weight);
b+=weight;
}
printf("请继续输入:") ;
break;
case 'c':if(f==0)
{
printf("请问您想要购买多少磅胡萝卜呢?");
scanf("%d",&weight);
c=weight;
f++;
}
else
{
printf("请问您还想要再添加多少磅胡萝卜呢?");
scanf("%d",&weight);
c+=weight;
}
printf("请继续输入:") ;
break;
case 'd':printf("总订单少于或等于5磅收取6.5美元的运费和包装费。\n");
printf("总订单在5-20磅收取14美元的运费和包装费。\n");
printf("总订单超过20磅在14美元的基础上运费和包装费续重0.5美元每磅。\n");
printf("当订单超过100美元将享受95%的折扣\n") ;
printf("您还可以继续输入:") ;
break;
case 'f':printf("逗你玩呢,本店强制购买谢谢合作。请继续输入:") ;
break;
default:printf("输入错误,请重新输入:");
break;
}
getchar();
}
printf("您现在的购物车里一共有%d磅的洋蓟,%d磅甜菜,%d磅胡萝卜\n\n\n",a,b,c);
fun(a,b,c);
return 0;
}
void fun(int a,int b,int c)
{
float price,delivery;
price=a*A+b*B+c*C;
printf("商品的总价是%.1f\n",price);
if(price>=100)
{
price*=DISCOUNT;
printf(" 您的订单超过了100美元,您折后的总价是%.1f",price);
}
if(a+b+c>=LIM1)
{
if(a+b+c>=LIM2)
{
delivery=FEE2+(a+b+c-LIM2);
}
else
{
delivery=FEE2;
}
}
else
{
delivery=FEE1;
}
printf("您需要支付的运费和包装费为:%.1f\n",delivery);
}
第十章
10.1
#include <stdio.h>
#define MONTHS 12 //一年的月份数
#define YEARS 5 //年数
int main(void)
{
//用2010-2014年的降水量数据初始化数组
const float rain[YEARS][MONTHS] =
{
{ 4.3f, 4.3f, 4.3f, 3.0f, 2.0f, 1.2f, 0.2f, 0.2f, 0.4f, 2.4f, 3.5f, 6.6f },
{ 8.5f, 8.2f, 1.2f, 1.6f, 2.4f, 0.0f, 5.2f, 0.9f, 0.3f, 0.9f, 1.4f, 7.3f },
{ 9.1f, 8.5f, 6.7f, 4.3f, 2.1f, 0.8f, 0.2f, 0.2f, 1.1f, 2.3f, 6.1f, 8.4f },
{ 7.2f, 9.9f, 8.4f, 3.3f, 1.2f, 0.8f, 0.4f, 0.0f, 0.6f, 1.7f, 4.3f, 6.2f },
{ 7.6f, 5.6f, 3.8f, 2.8f, 3.8f, 0.2f, 0.0f, 0.0f, 0.0f, 1.3f, 2.6f, 5.2f }
};
int year, month;
float subtot, total;
const float (*pt)[12];
pt = rain;
printf(" YEAR RAINFALL (inches)\n");
for (year = 0, total = 0; year < YEARS; year++)
{
for (month = 0, subtot = 0; month < MONTHS; month++)
subtot += *(*(pt + year) + month);
printf("%5d %15.1f\n", 2010 + year, subtot);
total += subtot;
}
printf("\nThe yearly average is %.1f inches.\n\n", total / YEARS);
printf("MONTHLY AVERAGES:\n\n");
printf(" Jan Feb Mar Apr May Jun Jui Aug Swp Oct ");
printf(" Nov Dec\n");
for (month = 0; month < MONTHS; month++)
{
for (year = 0, subtot = 0; year < YEARS; year++)
subtot += *(*(pt + year) + month);
printf("%4.1f ", subtot / YEARS);
}
printf("\n\n");
return 0;
}
10.2
#include <stdio.h>
#define SIZE 5
void copy_arr(double target[], double source[], int num);
void copy_ptr(double * target, double * source, int num);
void copy_ptrs(double * target, double * source0, double * source1);
void print_array(double arr[], int num);
int main(void)
{
double source[SIZE] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
double target1[SIZE];
double target2[SIZE];
double target3[SIZE];
copy_arr(target1, source, SIZE);
copy_ptr(target2, source, SIZE);
copy_ptrs(target3, source, source + SIZE);
print_array(target1,SIZE);
print_array(target2,SIZE);
print_array(target3,SIZE);
return 0;
}
void copy_arr(double target[], double source[], int num)
{
int i;
for (i = 0; i < num; i++)
{
target[i] = source[i];
}
}
void copy_ptr(double * target, double * source, int num)
{
int i;
for (i = 0; i < num; i++)
{
*(target++) = *(source++);
}
}
void copy_ptrs(double * target, double * source0, double * source1)
{
int i;
for (i=0;source0<source1;i++)
{
*(target++) = *(source0++);
}
}
void print_array(double arr[], int num)
{
int i;
for (i = 0; i < num; i ++ )
{
printf(" %1.1f", arr[i]);
}
printf("\n");
}