突然觉得复习题答案不需要那么详细了,只给出本人不懂或者做错的题,把解题思路写出来。希望这样可以学习提高效率。
第六章讲循环语法,谢天谢地,学会python之后,再回顾C,循环再也没有python中的语法糖了,虽然简洁,但是语法糖真是对新手不太友好的黑魔法。while,for,do while都还算友好。
复习题
6.嵌套语句生成$矩阵
#include <stdio.h>
int main(void)
{
int row, lis;
for(row = 1; row <= 4; row++) /*一共有四行*/
{
for(lis = 1; lis <= 8; lis++)/*一行中有8个*/
printf("$");
printf("\n");
}
return 0;
}
嵌套循环,打印8个$之后换行(\n),一共有这样格式四行,所以每列的循环在每行里面。个人习惯从1到8,不习惯0到7。
8. putchar()输出不需要格式的字符
12.你想要写一个返回long值的函数。在您的函数定义中应该包含什么?(这是题目)
返回声明为long,并包含一个返回long值的return语句。
编程练习
1.
#include <stdio.h>
int main(void)
{
char word[26];
int c;
for(c = 0;c <= 25;c++)
word[c] = 'a' + c;
for(c = 0;c <= 25;c++)
printf("%c", &word[c]);
printf("/n");
return 0;
}
2.
#include <stdio.h>
int main(void)
{
int row,col;
for(row = 1;row <= 5;row++)
{
for(col = 1;col <= row;col++)
printf("$");
printf("\n");
}
return 0;
}
3.
#include <stdio.h>
int main(void)
{
int row,i;
for(row=0;row<6;row++)
{
for(i=0;i<=row;i++)
printf("%c", 'F'- i);
printf("\n");
}
return 0;
}
4.
#include <stdio.h>
int main(void)
{
int i,j,k,l;
char ch;
char a = 'A';
scanf("%c", &ch);
for(i=0;i<(ch-a+1);i++) /*确定行数*/
{
for(j=0;j<(ch-a-i);j++) /*确定前方空格数/*
printf(" ");
for(k=0;k<=i;k++) /*确定E前方的升序字母/*
printf("%c", a+k);
for(l=i-1;l>=0;l--) /*确定E后方的降序字母/*
printf("%c", a+l);
printf("\n");
}
return 0;
}
5.
#include <stdio.h>
int main(void)
{
int row,up,down,pow,cube;
printf("enter the up number:\n");
scanf("%d", &up);
printf("enter the down number:\n");
scanf("%d", &down);
for(row=0;row<=(up-down);row++)
printf("%d, %d, %d\n", down+row,(down+row)*(down+row),(down+row)*(down+row)*(down+row));
return 0;
}
6.
#include <stdio.h>
#include <string.h>
int main(void)
{
int i;
char word[20];
printf("Enter the letter:\n");
scanf("%s", &word);
for(i=strlen(word)-1;i>=0;i--)
printf("%c", word[i]);
return 0;
}
7.
#include <stdio.h>
int main(void)
{
float a,b;
printf("enter two floats:\n");
while(scanf("%f%f", &a, &b) == 2) /*成功读入两个参数*/
{
printf("(%f-%f)/(%f*%f)=%f\n", a, b, a, b, (a-b)/(a*b));
printf("Enter two floats:");
}
printf("end\n");
return 0;
}
8.
#include <stdio.h>
float cal(float, float);
int main(void)
{
float a,b;
printf("enter two floats:\n");
while(scanf("%f%f", &a, &b) == 2)
{
printf("(%f-%f)/(%f*%f)=%f\n", a, b, a, b, cal(a,b));
printf("Enter two floats:");
}
printf("end\n");
return 0;
}
float cal(float x, float y)
{
return (x-y)/(x*y);
}
9.
#include <stdio.h>
int main(void)
{
int max, min, i, sum;
printf("Enter lower and upper interger limits:");
scanf("%d %d", &min, &max);
while(min<max)
{
for(i=min, sum=0;i<=max;i++)
sum += i*i;
printf("The sums of the squares from %d to %d is %d\n", min*min, max*max, sum);
printf("Enter next set of limits:");
scanf("%d %d", &min, &max);
printf("Done\n");
return 0;
}
}
10.
#include <stdio.h>
int main(void)
{
int i,num[8];
printf("Enter eight numbers:");
for(i=0;i<8;i++)
scanf("%d", &num[i]);
for(i=7;i>=0;i--)
printf("%d", num[i]);
return 0;
}
11.
#include <stdio.h>
int main(void)
{
float i,sum1,sum2;
int sign,n;
printf("Enter the count:\n");
scanf("%d", &n);
for(i=1.0,sign=1,sum1=0,sum2=0;i<=n;i++,sign*=-1)
{
sum1 += 1.0 / i;
sum2 += sign * 1.0 / i;
}
printf("1.0+1.0/2.0+1.0/3.0+1.0/4.0+...(%d terms)=%lf\n", n, sum1);
printf("1.0-1.0/2.0+1.0/3.0-1.0/4.0+...(%d terms)=%lf\n", n, sum2);
return 0;
}
12.
#include <stdio.h>
#include <math.h>
int main(void)
{
int num[8], i;
for(i=0;i<8;i++)
num[i] = pow(2,i);
i=0;
do
printf("%d\t", num[i]);
while(++i<8);
printf("\n");
return 0;
}
使用math.h头文件,使用其中的pow()函数,计算幂。
13.
#include <stdio.h>
int main(void)
{
double num1[8],num2[8];
int i,j;
for(i=0;i<8;i++)
{
printf("Enter the number:");
scanf("%lf", &num1[i]);
for(j=0,num2[i]=0;j<=i;j++)
num2[i] += num1[j];
}
for(i=0;i<8;i++)
printf("%8.3lf", num1[i]);
printf("\n");
for(i=0;i<8;i++)
printf("%8.3lf", num2[i]);
printf("\n");
return 0;
}
14.
#include <stdio.h>
int main(void)
{
char a[255];
int i;
for(i=0;i<20;i++)
scanf("%c", &a[i]);
for(i=19;i>=0;i--)
printf("%c", a[i]);
printf("\n");
return 0;
}
15.
#include <stdio.h>
int main(void)
{
float Da = 100, De = 100;
int i;
while(Da>=De)
{
Da += 100 * 0.1;
De += De * 0.05;
i++;
}
printf("After %d years,Da is %f,De is %f.\n", i, Da, De);
return 0;
}
16.
#include <stdio.h>
int main(void)
{
double investment = 100;
int i = 0;
while(investment > 0)
{
investment += investment * 0.08;
investment -= 10;
i++;
}
printf("After %d years, the investment is 0./n", i);
return 0;
}
将investment设为100万时,程序没有响应。遂设为100试试,跑完的结果是21年。
ps. 家里停水两天了,真是焦头烂额,敲完这行字就去洗澡。啊,烦躁。
pps.最后两道题用while真是防不胜防,好了,洗澡去了,回来开始第七章。