第二章 代码例题
//【例2.1】求1×2×3×4×5
#include <stdio.h>
int main()
{
int i, n, sum;
i = 1;
n = 5;
sum = 1;
for (i = 1; i <= 5; i++)
{
sum = sum * i;
}
printf("sum = %d\n", sum);
return 0;
}
【例2.2】有50个学生,要求输出成绩在80分以上的学生的学号和成绩
//【例2.3】判定2000—2500年中的每一年是否为闰年,并将结果输出
#include <stdio.h>
int main()
{
int year, ret;
ret = 0;
for (year = 2000; year <= 2500; year++)
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
printf("%d ", year);
ret++;
}
}
printf("\n\n2000-2500期间一共有%d个闰年\n",ret);
return 0;
}
//【例2.4】求 1−1/2+1/3−1/4+⋯+1/99−1/100
#include <stdio.h>
int main()
{
int i, flag;
double sum;
i = 1;
flag = 1;
sum = 0.0;
for (i = 1; i <= 100; i++)
{
sum = sum + flag * 1.0 / i;
flag = -flag;
}
printf("sum = %lf\n", sum);
return 0;
}
//【例2.5】给出一个大于或等于3的正整数,判断它是不是一个素数
#include <stdio.h>
#include <math.h>
int main()
{
int num;
scanf("%d", &num);
int i,flag;
flag = 1;//1表示是素数 0表示不是素数
for (i = 2; i <= sqrt(num); i++)
{
if (num % i == 0)
flag = 0;
}
if (flag == 1)
printf("%d是素数\n", num);
if (flag == 0)
printf("%d不是素数\n", num);
return 0;
}
第二章 代码习题
//T 2-4(2)
//输入十个数,输出其中最大值
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
int max = arr[0];
for (i = 0; i < 10; i++)
{
if (arr[i] > max)
max = arr[i];
}
printf("max = %d\n", max);
return 0;
}
//T 2-4(3)
//3个数按大小顺序输出
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
int tmp;
if (a < b)
{
tmp = a;
a = b;
b = tmp;
}
if (a < c)
{
tmp = a;
a = c;
c = tmp;
}
if (b < c)
{
tmp = b;
b = c;
c = tmp;
}
printf("三个数从大到小输出为%d %d %d\n",a,b,c);
return 0;
}
//T 2-4(4)
//求1-100的加和
#include <stdio.h>
int main()
{
int i, sum;
i = 0;
sum = 0;
for (i = 1; i <= 100; i++)
{
sum += i;
}
printf("sum = %d\n", sum);
return 0;
}
//T 2-4(5)
//判断一个数能否同时被3和5整除
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if ((num % 3 == 0) && (num % 5 == 0))
printf("%d能同时被3和5整除\n", num);
else
printf("%d不能同时被3和5整除\n", num);
return 0;
}
//T 2-4(6)
//输出100-200之间的素数
#include <stdio.h>
#include <math.h>
int main()
{
int num = 0;
int count = 0;
for (num = 100; num <= 200; num++)
{
int flag = 1;//1表示是素数 0表示不是素数
int j = 0;
for (j = 2; j <= sqrt(num); j++)
{
if (num % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("%d ", num);
count++;
}
}
printf("\n\n100-200之间有 %d 个素数", count);
return 0;
}
//T 2-4(7)
//求两个数的最大公约数
#include <stdio.h>
int main()
{
int m, n;
scanf("%d%d", &m, &n);
int r = m;
while (r != 0)
{
m = n;
n = r;
r = m % n;
}
printf("这两个数的最大公约数为%d\n", n);
return 0;
}
//T 2-4(8)
//求二元一次方程的根 a*x^2+b*x+c=0
//分三种情况讨论 ①有两个相等的实数根(b^-4*a*c)==0 ②有两个不等的实数根(b^-4*a*c)>0 ③无实数根(b^-4*a*c)<0
#include <stdio.h>
#include <math.h>
int main()
{
double a = 0.0;
double b = 0.0;
double c = 0.0;
scanf("%lf%lf%lf", &a, &b, &c);
double x1 = 0.0;
double x2 = 0.0;
double judge = b * b - 4 * a * c;
double front = (-b) / (2 * a);
double back = sqrt(judge) / (2 * a);
if (judge == 0.0)
{
x1 = x2 = front;
printf("x1 = %0.2lf, x2 = %0.2lf\n",x1,x2);
}
if (judge > 0)
{
x1 = front + back;
x2 = front - back;
printf("x1 = %0.2lf, x2 = %0.2lf\n", x1, x2);
}
if (judge < 0)
{
double front = (-b) / (2 * a);
double back = sqrt(-judge) / (2 * a);
printf("x1 = %0.2lf + %0.2lfi, x2 =%0.2lf - %0.2lfi\n", front, back, front, back);
}
return 0;
}