前言:
作者没钱买浙大的读者验证码,所以用的vscode2013进行编译。每道题经过一定数据测试,但难免可能会出错。另外作者是三四天内刷完题并写完这篇文章的,所以没时间每道题写思路,有看不懂的地方请私信dd。
练习2-1 Programming in C is fun!
#include<stdio.h>
int main() {
printf("Programming in C is fun!\n");
return 0;
}
练习2-3 输出倒三角图案
#include<stdio.h>
int main() {
int i = 0;
for (i = 0; i < 4; i++) {
int j = 0;
for (j = 0; j <= i; j++) {
printf(" ");
}
int m = 0;
for (m = 0; m < 4 - i; m++) {
printf("* ");
}
printf("\n");
}
return 0;
}
练习2-4 温度转换
#include<stdio.h>
int main() {
int F = 150;
int C = 5 * (F - 32) / 9;
printf("fahr = %d,celsius =%d ",F,C);
return 0;
}
练习2-6 计算物体自由下落的距离
#include<stdio.h>
int main() {
float h = (10 * 3 * 3) / 2.0;
printf("%.2f", h);
return 0;
}
练习2-8 计算摄氏温度
#include<stdio.h>
int main(){
int f = 0;
scanf("%d", &f);
int c = 5 * (f - 32) / 9;
printf("Celsius = %d", c);
return 0;
}
练习2-9 整数四则运算
#include<stdio.h>
int main() {
int num1 = 0;
int num2 = 0;
scanf("%d %d", &num1, &num2);
printf("%d + %d = %d\n", num1, num2, num1 + num2);
printf("%d - %d = %d\n", num1, num2, num1 - num2);
printf("%d * %d = %d\n", num1, num2, num1 * num2);
printf("%d / %d = %d\n", num1, num2, num1 / num2);
return 0;
}
练习2-10 计算分段函数[1]
#include<stdio.h>
int main() {
float x = 0.0f;
scanf("%f", &x);
if (x == 0) {
printf("f(%.1f) = %.1f",(int)x,(int)x);
}
else {
printf("f(%.1f)= %.1f", x, 1.0 / x);
}
return 0;
}
练习2-11 计算分段函数[2]
#include<math.h>
int main() {
float x = 0.0f;
scanf("%f", &x);
if (x >= 0) {
printf("f(%.2f) = %.2f", x,sqrt(x));
}
else {
printf("f(%.2f) = %.2f", x, (((x + 1) * (x + 1)) + (2 * x) + (1 / x)));
}
return 0;
}
练习2-12 输出华氏-摄氏温度转换表
int main() {
int lower = 0;
int upper = 0;
scanf("%d %d", &lower, &upper);
if ((lower <= upper) && upper <= 100) {
printf("fahr celsius\n");
int i = 0;
for (i = lower; i <= upper; i += 2) {
printf("%d %6.1f\n", i, (5 * (i - 32) / 9.0));
}
}
else {
printf("Invalid\n");
}
return 0;
}
练习2-13 求N分之一序列前N项和
int main() {
int n = 0;
double sum = 0;
scanf("%d", &n);
int i = 0;
for (i = 1; i <= n; i++) {
sum += 1.0 / i;
}
printf("sum = %.6lf", sum);
return 0;
}
练习2-14 求奇数分之一序列前N项和
int main() {
int n = 0;
double sum = 0;
scanf("%d", &n);
int i = 0;
for (i = 1; i <= 2 *n -1; i += 2) {
sum += 1.0 / i;
}
printf("sum = %.6lf", sum);
return 0;
}
练习2-15 求简单交错序列前N项和
int main() {
int n = 0;
int flag = 1;//控制正负
double sum = 0;
scanf("%d", &n);
int i = 0;
for (i = 1; i <= 3 * n - 2; i += 3) {
sum += (1.0 / i) * flag;
flag = -flag;
printf("sum =%.3lf\n",sum);
}
return 0;
}
练习2-17 生成3的乘方表
#include<math.h>
int main() {
int n = 0;
scanf("%d", &n);
int i = 0;
for (i = 0; i < n + 1; i++) {
printf("pow(3,%d) = %d\n", i, (int)pow(3, i));
}
return 0;
}
练习2-18 求组合数
double fact(int n) {
int result = 1;
int i = 0;
for (i = 1; i <= n; i++){
result *= i;
}
return result;
}
int main() {
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
printf("result = %d", (int)(fact(n) / (fact(m) * fact(n - m))));
return 0;
}
习题2-1 求整数均值
int main() {
int n = 0;
int count = 0;
int sum = 0;
while (scanf("%d", &n) != EOF) {
count++;
sum += n;
if (count == 4) {
printf("sum = %d;average = %.1lf",sum,sum / (double)count);
}
}
return 0;
}
习题2-2 阶梯电价
int main() {
int n = 0;
double price = 0.0;
scanf("%d", &n);
if ( n >= 0 && n <= 50) {
price = 0.53 * n;
printf("cost = %.2lf\n", price);
}
else if(n >= 50) {
price = 0.53 * 50 + (n - 50) * (0.53 + 0.05);
printf("cost = %.2lf\n", price);
}
else {
printf("invalid\n");
}
return 0;
}
习题2-3 求平方与倒数序列的部分和
int main() {
int m = 0;
int n = 0;
double sum = 0.0;
scanf("%d %d", &m, &n);
if (m <= n && m != 0 && n != 0) {
int i = 0;
for (i = m; i <= n; i++) {
sum += (i * i) + 1.0 / i;
}
printf("sum = %.6lf", sum);
}
return 0;
}
习题2-4 求交错序列前N项和
#include<math.h>
int main() {
int n = 0;
double sum = 0;
scanf("%d", &n);
int i = 0;
int j = 0;
for (i = 1,j = 1; i <= n; i++,j += 2) {
sum += pow(-1, i + 1) * i / j ;
}
printf("%.3f", sum);
return 0;
}
习题2-5 求平方根序列前N项和
#include<math.h>
int main() {
int n = 0;
double sum = 0.0;
scanf("%d", &n);
int i = 0;
for (i = 1; i <= n; i++) {
sum += sqrt(i);
}
printf("%.2lf", sum);
return 0;
}
习题2-6 求阶乘序列前N项和
int main() {
int n = 0;
int ret = 1;
int sum = 0;
scanf("%d", &n);
int i = 0;
for (i = 1; i <= n; i++) {
ret *= i;
sum += ret;
}
printf("%d", sum);
return 0;
}
练习3-2 计算符号函数的值
enum Sign
{
LESS_THAN = -1,
EQULA,
MORE_THAN
};
int main() {
int n = 0;
scanf("%d", &n);
if (n > 0) {
printf("sign(%d) = %d",n, MORE_THAN);
}
else if (n == 0) {
printf("sign(%d) = %d", n, EQULA);
}
else {
printf("sign(%d) = %d", n, LESS_THAN);
}
return 0;
}
练习3-3 统计学生平均成绩与及格人数
int main() {
int n = 0;
int score = 0;
double sum = 0.0;
int count = 0;
scanf("%d",&n);
int i = 0;
for (i = 0; i < n; i++) {
scanf("%d", &score);
if (score >= 60) {
count++;
}
sum += score;
}
printf("average = %.1lf\ncount = %d\n", sum / n,count);
return 0;
}
练习3-4 统计字符
#include<ctype.h>
int main() {
char c = '0';
int letter = 0;
int blank = 0;
int digit = 0;
int other = 0;
int count = 0;
while (count != 10){
count++;
c = getchar();
if (isalpha(c)){
letter++;
}
else if (isspace(c)) {
blank++;
}
else if (isdigit(c)){
digit++;
}
else {
other++;
}
}
printf("letter = %d, blank = %d,digit = %d,other = %d\n", letter, blank, digit, other);
return 0;
}
<