《大学计算机基础实验教程(C语言版)》解析
《大学计算机基础实验教程(C语言版)》东北大学出版社
源代码解析
作者:
辽宁工业大学 电子202 宋家盛制作
如有错误,请告知:jff_16@163.com
注:
- 解析为增加代码的可读性均使用函数实现
- 代码均可在Visual Studio 2019与Code::Blocks上运行通过,若在VC++6.0不可通过请自行调试
实训9循环结构程序设计(四)
/*
时间:2020.12.12
*/
#include <stdio.h>
#include <math.h>
void J9_1(void);
void J9_2(void);
void C9_1(void);
void C9_2(void);
void T9_1(void);
void T9_2(void);
int main(void)
{
printf("\n J9_1: \n");
J9_1();
printf("\n J9_2: \n");
J9_2();
printf("\n C9_1: \n");
C9_1();
printf("\n C9_2: \n");
C9_2();
printf("\n T9_1: \n");
T9_1();
printf("\n T9_2: \
1n");
T9_2();
return 0;
}
void J9_1(void)
{
int i, j, k;
for (i = 1; i <= 4; i++) //控制行
{
for (j = 1; j <= 4 - i; j++) //控制空格
{
printf(" ");
}
for (k = 1; k <= 2*i - 1; k++) //控制*
{
printf("*");
}
printf("\n");
}
}
void J9_2(void)
{
int i,j;
double sum = 0.0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j <= i; j++)
{
if (i % j == 0)
break;
}
if (i != j)
{
sum += sqrt(i);
}
}
printf("sum = %lf", sum);
}
void C9_1(void)
{
int n, k;
float score, ave;
for (n = 1; n <= 8; n++)
{
ave = 0.0;
for (k = 1; k <= 5; k++)
{
scanf("%f", &score);
ave += score;
}
printf("N0:%d:%f\n", n, (ave/5) );
}
/*
* 解析:
* 1.
*for(n = 1; n <= 8; n++;) //error
* n++后多了个;
*2.
*printf("NO%d:%f\n", n, ave); //error
* 题目要求计算每位学生的平均分
* 而ave算出来的是每位学生的总分数故需要除5
*/
}
void C9_2(void)
{
int i, j;
for (i = 1; i <= 4; i++)
{
for (j = 1; j <= 4 - i; j++)
{
printf(" ");
}
for (j = 1; j <= 5; j++)
{
printf("*");
}
printf("\n");
}
}
void T9_1(void)
{
int n, i, s;
for (n = 2; n <= 1000; n++)
{
s = 0;
/*
* 解析:
* s未进行初始化,故需要对s进行初始化
*/
for (i = 1; i <= n - 1; i++)
{
if (n % i == 0)
{
s += i;
}
if (s == n)
{
printf("% -6d", n);
}
}
}
}
void T9_2(void)
{
int m, i, k;
scanf("%d", &m);
for (i = m; ; i++)
{
for(k = 2; k <= i - 1; k++)
if (i % k == 0)
{
break;
}
if (k >= i)
{
printf("%d", i);
break;
}
}
/*
* 解析:
* 1.
* for(i = ____; ; i++)
* 题目要求大于m所以i应该从m递增
* 所以该空为m
* 2.
* for(k = 2; k <= ____; k++)
* 判断i是否为素数需要将k累加至i-1
* 所以该空填i - 1
*/
}