中M2021秋C语言入门练习第I段——变量、表达式、分支、循环(7-1至7-70)

文章目录


中国大学MOOC浙江大学翁恺老师的《程序设计入门——C语言》2021秋季课程PTA编程练习题【其实每期练习题一致】,共140题,已全部答完,仅三道题借鉴了他人思维之后,全部为独立思考纯手敲代码(Dev-C++调试成功后,复制粘贴到PTA平台),现收集归拢【时间飞逝,存于CSDN草稿箱三年了,现整理格式发布】。

7-1 重要的话说三遍 (5 分)

这道超级简单的题目没有任何输入。
你只需要把这句很重要的话 —— “I’m gonna WIN!”——连续输出三遍就可以了。
注意每遍占一行,除了每行的回车不能有任何多余字符。
解题思路:直接打印输出即可,当时还未接触循环,所以老老实实敲了三遍

#include <stdio.h>
int main()
{
    printf("I'm gonna WIN!\n");
    printf("I'm gonna WIN!\n");
    printf("I'm gonna WIN!\n");
    return 0;
}

7-2 I Love GPLT (5 分)

这道超级简单的题目没有任何输入。
你只需要把这句很重要的话 —— I Love GPLT ——竖着输出就可以了。
所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。
解题思路:这个应该是留到学了循环和字符串后开始学的,循环就行

#include <stdio.h>
#include <string.h>

int main()
{
    char s[] = "I Love GPLT";
    int n = strlen(s);
    int i;
    for (i=0;i<=n;i++)
    {
        printf("%c\n", s[i]);
    }
    return 0;
}

7-3 输出带框文字 (5 分)

本题要求编写程序,输出指定的带框文字。
输入格式:
本题无输入
输出格式:
按照下列格式输出带框文字。
在这里插入图片描述

解题思路:直接打印,学了循环和函数后可以使用函数和循环打印重复的*

#include <stdio.h>

int main()
{
    printf("************\n");
    printf("  Welcome\n");
    printf("************\n");
    
    return 0;
}

7-4 输出菱形图案 (5 分)

本题要求编写程序,输出指定的由“A”组成的菱形图案。
输入格式:
本题无输入
输出格式:
按照下列格式输出由“A”组成的菱形图案。
A
A A
A。
解题思路: 直接打印输出即可

#include <stdio.h>

int main()
{
    printf("  A\n");
    printf("A   A\n");
    printf("  A\n");
   
    return 0;
}

7-5 输出倒三角图案 (5 分)

本题要求编写程序,输出指定的由“”组成的倒三角图案。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出由“
”组成的倒三角图案。
/* * * *
/ * * *
/  * *
/   *

解题思路: 1.自定了一个打印函数打印指定个数的空格;2.循环打印*

#include <stdio.h>
#include <string.h>
void myprint(int x)
{
	int i;
	for (i=0;i<x;i++)
	{
		printf(" ");
	}
}
int main()
{
    int i,j,x;
    for (i=4;i>0;i--)
    {
    	j = 4-i;  // 空格shul
		myprint(j);
		printf("*");
		for (x=0;x<i-1;x++)
		{
			printf(" *");
		}
		//myprint(j);
		if (i!=1) printf("\n");
	}
    return 0;
}

7-6 厘米换算英尺英寸 (15 分)

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
输入格式:
输入在一行中给出1个正整数,单位是厘米。
输出格式:
在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。
输入样例:
170
结尾无空行
输出样例:
5 6
解题思路: 1.注意精度;2.单位换算

#include<stdio.h>
int main()
{
    float x;
    int foot, inch;
    scanf("%f", &x);
    x = x / 30.48;
    foot = x;
    inch = (x - foot) * 12;
    printf("%d %d", foot, inch);
    return 0;
}

7-7 计算摄氏温度 (10 分)

给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出一个华氏温度。
输出格式:
在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。
输入样例:
150
结尾无空行
输出样例:
Celsius = 65
解题思路: 四则运算,注意输出格式

#include<stdio.h>
int main()
{
	int f;
	scanf("%d", &f);
	printf("Celsius = %d", 5 * (f - 32)/9);	
	return 0;
}

7-8 是不是太胖了 (5 分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)
输入格式:
输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。
输出格式:
在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。
输入样例:
169
结尾无空行
输出样例:
124.2
解题思路: 四则运算,注意保留的小数点位数

#include<stdio.h>

int main()
{
	int h;
	scanf("%d", &h);
	float w = (h-100) * 0.9 * 2;
	printf("%.1f", w) ;
	return 0;
}

7-9 求整数均值 (10 分)

本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出4个整数,其间以空格分隔。
输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。
输入样例:
1 2 3 4
结尾无空行
输出样例:
Sum = 10; Average = 2.5
结尾无空行
解题思路: 1.累积和变量注意初始化;2.注意平均数的精度
#include <stdio.h>

int main()
{
    int sum=0;
    int num;
    int i;
    for (i=0;i<4;i++)
    {
        scanf("%d", &num);
        sum += num;
    }
    printf("Sum = %d; Average = %.1f", sum, sum/4.0);
    return 0;
}

7-10 算术入门之加减乘除 (10 分)

对于输入的两个整数,按照要求输出其和差积商。
输入格式:
在一行内输入两个不超过100的非负整数a和b,中间以一个空格间隔,且保证b不为0。
输出格式:
共四行,格式是:
[a] + [b] = [a+b]
[a] - [b] = [a-b]
[a] * [b] = [a*b]
[a] / [b] = [a/b]
其中,带有方括号的内容(如[a]、[b]、[a+b]等)表示相应整数或运算结果的值,在输出时要用实际的值代替。
并且:如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为带两位小数的格式。
提示:注意表达式中的空格。
输入样例1:
6 3
结尾无空行
输出样例1:
6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2
结尾无空行
输入样例2:
8 6
输出样例2:
8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33
解题思路: 依次输出、计算即可

#include <stdio.h>
int main()
{
    int x,y;
    scanf("%d %d", &x, &y);
    printf("%d + %d = %d\n", x, y, x+y);
    printf("%d - %d = %d\n", x, y, x-y);
    printf("%d * %d = %d\n", x, y, x*y);
    if (x/y * y == x)
    {
        printf("%d / %d = %d", x, y, x/y);
    }
    else
    {
        printf("%d / %d = %.2f", x, y, (float)x/y);
    }
    return 0;
}

7-11 计算平均分 (5 分)

已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。
输入格式:
本题无输入
结尾无空行
输出格式:
按照下列格式输出结果:
math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩
解题思路: 1.仔细点

#include<stdio.h>
int main()
{
    int math = 87, eng = 72, comp = 93;
    int sum = math + eng + comp;
    printf("math = %d, eng = %d, comp = %d, average = %d", math, eng, comp, sum/3);
    return 0;
}

7-12 日期格式化 (5 分)

世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式:
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式:
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
输入样例:
03-15-2017
结尾无空行
输出样例:
201# 7-03-15
解题思路: 1.循环遍历,注意下标从0开始

#include<stdio.h>
#include<string.h>
int main()
{
    char s[11];
    scanf("%s", s);
    int i;
    for (i=6;i<10;i++)
    {
        printf("%c", s[i]);
    }
    printf("-");
    for (i=0;i<5;i++)
    {
        printf("%c",s[i]);
    }
    return 0;
}

7-13 后天 (5 分)

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。
输入格式:
输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。
输出格式:
在一行中输出D天的后天是星期几。
输入样例:
3
结尾无空行
输出样例:
5
解题思路: 1.取余的变形吧,注意周六周天的后天是下一周了

#include<stdio.h>
int main()
{
    int cur;
    scanf("%d", &cur);
    int last = cur + 2;
    if (last > 7)
    {printf("%d", last-7);}
    else
    {printf("%d", last);}
    return 0;
}

7-14 然后是几点 (15 分)

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。
输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。
输出格式:
输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
结尾无空行
输出样例:
1310
解题思路: 1.先取出小时、分钟数;2.统一转化为分钟数,再转换为小时和分钟;3.转换为格式要求的百进制小时、分钟格式

#include<stdio.h>
int main()
{
    int cur, time;
    scanf("%d %d", &cur, &time);
    int h = cur / 100;
    int m = cur - h * 100;
    int last = h * 60 + m + time;
    h = last / 60;
    m = last - h * 60;
    if (h==0) printf("0");
    printf("%d", h*100+m);
    return 0;
}

7-15 BCD解密 (10 分)

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!
现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。
输入格式:
输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。
输出格式:
输出对应的十进制数。
输入样例:
18
结尾无空行
输出样例:
12
解题思路: 按照提示的方法操作,仔细点没问题

#include<stdio.h>
int main()
{
    int bit[8]={0};
    int num;
    int i = 7;
    scanf("%d", &num);
    while (num)
    {
    	bit[i--] = num % 2;
    	num /= 2;
	}
	int h=0, l=0;
	for (i=0;i<4;i++)
	{
		h = h * 2 + bit[i];
	}
	for (i=4;i<8;i++)
	{
		l = l * 2 + bit[i];
	}
	printf("%d", 10 * h + l);
    return 0;
}

7-16 计算符号函数的值 (10 分)

对于任一整数n,符号函数sign(n)的定义如下:

在这里插入图片描述

请编写程序计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:
10
结尾无空行
输出样例1:
sign(10) = 1
结尾无空行
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-98
输出样例3:
sign(-98) = -1
解题思路: 条件判断

#include<stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	int res;
	if (n == 0)
	{ 
		res = 0;
	}
	else if (n > 0)
	{
		res = 1;
	}
	else
	{
		res = -1;
	}
	printf("sign(%d) = %d", n, res);
	return 0;
}

7-17 成绩转换 (15 分)

在这里插入图片描述

解题思路: 多分支选择

#include<stdio.h>

int main()
{
    int grade;
    scanf("%d", &grade);
    int num = grade / 10;
    switch (num)
    {
        case 10:
        case 9:
            printf("A");
            break;
        case 8:
            printf("B");
            break;
        case 7:
            printf("C");
            break;
        case 6:
            printf("D");
            break;
        default:
        {
            printf("E");
            break;
        }
    }
    return 0;
}

7-18 出租车计价 (15 分)

在这里插入图片描述

解题思路: 仍旧是分段函数,条件判断选择

#include<stdio.h>

int main()
{
	float d;
	int t;
	scanf("%f %d", &d, &t);
	float res;
	if (d <= 3)
	{
		res = 10;
	}
	else if ( d > 3 && d <= 10)
	{
		res = 10 + 2 * (d - 3);
	}
	else
	{
		res = 10 + 2 * (10 -3) + 3 * (d - 10);
	}
	res += 2 * (t / 5);
	if ((res - (int)res) >=0.5)
		{res += 1;}
	printf("%d", (int)res);
	return 0;
}

7-19 计算天数 (15 分)

在这里插入图片描述

解题思路: 1.先条件分支判断是否闰年;2.再循环一遍,根据大小月计算天数

#include<stdio.h>

int leap(int year)
{
	int res = 0;
	if (year % 4 == 0) 
	{
		if (year % 400 == 0 || year % 100 != 0)
		{
			res = 1;
		}
	}
	return res;
	
}

int main()
{
	int year, month, day;
	scanf("%d/%d/%d", &year, &month, &day);
	int total = 0;
	int i;
	for (i=1;i<month;i++)
	{
		if (i==1 || i==3 || i == 5 || i==7 || i==8 || i==10 || i==12){total += 31;}
		else if (i==2) {
			total += 28;
			if (leap(year)) total += 1;
		}
		else
		{
			total += 30;
		}
		
	}
	total += day;
	printf("%d",total);
	return 0;
}

7-20 简单计算器 (20 分)

在这里插入图片描述

解题思路: 还是分支判断

#include<stdio.h>
#include<string.h>

int main()
{
	char exp[1000];
	scanf("%s", &exp);
	int n = strlen(exp);
	int i;
	int pre=0;
	char pre_s = '+';
	int res = 0;
	int flag = 1; //无非法输入 
	for (i=0; i<n; i++)
	{
		if (flag == 0)
		{
			break;
		}
		if ((exp[i] - '0') >= 0 && (exp[i] - '0') <= 9) 
		{
			pre = pre * 10 + exp[i] - '0';
		}
		else
		{
			switch (pre_s)
			{
				case '+':
					res += pre;
					break;
				case '-':
					res -= pre;
					break;
				case '*':
					res *= pre;
					break;
				case '/':
					if (pre == 0)
					{
						flag = 0;
					}
					else
					{
						res /= pre;
					}
					break;
				case '=':
					break;
				default:
					{
						flag = 0;
						break;
					}
			}
			pre = 0; 
			pre_s = exp[i];
		}
	}
	if (flag)
	{
		printf("%d", res);
	}
	else
	{
		printf("ERROR");
	}

	return 0;
}

7-21 超速判断 (10 分)

在这里插入图片描述

解题思路: 分支选择
#include<stdio.h>

int main()
{
int s;
scanf(“%d”, &s);
if (s <=60)
{
printf(“Speed: %d - OK”, s);
}
else
{
printf(“Speed: %d - Speeding”, s);
}
return 0;
}

7-22 用天平找小球 (10 分)

在这里插入图片描述

解题思路: 分支判断

#include<stdio.h>

int main()
{
    int a,b,c;
    scanf("%d %d %d", &a, &b, &c);
    if (a == b) printf("C");
    else if (a == c) printf("B");
    else printf("A");
    return 0;
}

7-23 分段计算居民水费 (10 分)

在这里插入图片描述

解题思路: 分支判断

#include<stdio.h>

int main()
{
	float x, y=0;
	scanf("%f", &x);
	if (x <= 15)
	{
		y = 4 * x / 3;
	}
	else
	{
		y = 2.5 * x - 17.5;
	}
	printf("%.2f", y);
	return 0;
}

7-24 猜数字游戏 (15 分)

在这里插入图片描述

解题思路: 分支判断

#include<stdio.h>

int main() 
{
	int num,n;
	scanf("%d %d", &num, &n);
	int guess, count=0;
	while (count < n)
	{
		scanf("%d", &guess);
		count += 1;
		if (guess < 0)
		{
			break;
		}
		else if (guess == num)
		{
			if (count == 1) {printf("Bingo!");}
			else if (count <= 3){printf("Lucky You!");}
			else {printf("Good Guess!");}
			break;
		}
		else if (guess > num)
		{
			printf("Too big\n");
		}
		else
		{
			printf("Too small\n");
		}
	}
	if (guess < 0 || guess != num)  // 负数或者n次均未猜测正确 ,其实可以不用guess<0,因为小于0时,即不等于num 
	{
		printf("Game Over");
	}
}

7-25 求奇数和 (15 分)

在这里插入图片描述

解题思路: 分支判断

#include<stdio.h>

int main()
{
	int x;
	int sum=0;
	scanf("%d", &x);
	while (x > 0)
	{
		if (x % 2 == 1)
		{
			sum += x;
		}
		scanf("%d", &x);
	}
	printf("%d", sum);
	return 0;
}

7-26 最大公约数和最小公倍数 (15 分)

在这里插入图片描述

解题思路: 循环,辗转相除法求出最大公约数,而后乘积除以最大公约数为最小公倍数

#include<stdio.h>

int main() 
{
	int a, b;
	scanf("%d %d", &a, &b);
	int a1 = a, b1 =b;
	int tmp;
	if (a < b)
	{
		tmp = a;
		a = b;
		b = tmp;
	}
	while (a%b != 0)
	{
		tmp = a % b;
		a = b;
		b = tmp;
	}
	printf("%d %d", b, a1 * b1 / b);
	return 0;
}

7-27 兔子繁衍问题 (15 分)

在这里插入图片描述
解题思路: 斐波那契数列问题,a(n)=a(n-1)+a(n-2),a(n-1)为上个月的兔子数量,a(n-2)为上上个月的兔子数量,这个可以生育了

#include<stdio.h>
// a[n] = a[n-1] + a[n-2] 
int main() 
{
	int N;
	int a = 1;
	int cur=1;
	int count =2;
	int tmp;
	scanf("%d", &N);
	if (N==1)
	{
		printf("1");
	}
	else
	{
		while (cur < N)
		{
			count += 1;
			tmp = cur;
			cur += a;
			a = tmp;
		}
		printf("%d", count);
	}
	return 0;
}

7-28 求整数的位数及各位数字之和 (15 分)

在这里插入图片描述

解题思路: 循环

#include<stdio.h>

int main()
{
	int num;
	scanf("%d", &num);
	int cnt=0, sum=0;
	while (num>0)
	{
		cnt += 1;
		sum += (num % 10);
		num /= 10;
	}
	printf("%d %d", cnt, sum);
	return 0;
}

7-29 二分法求多项式单根 (20 分)

在这里插入图片描述
解题思路: 二分查找方法了,注意精度

#include<stdio.h>
float f(float a3, float a2, float a1, float a0, float x)
{
	float f = a3 * x * x * x + a2 * x * x + a1 * x + a0;
	return f;
}

int main()
{
	float a3, a2, a1, a0;
	scanf("%f %f %f %f", &a3, &a2, &a1, &a0);
	float a, b, res;
	float mid;
	float tmp;
	scanf("%f %f", &a, &b);
	while (1)
		{
			mid = (a+b)	/ 2;
			if ((b-a) < 0.01)
			{
				res = mid;
				printf("%.2f", res);
				break;
			}
			else
			{
				tmp = f(a3,a2,a1,a0,mid);
				if (tmp == 0.0)
				{
					res = mid;
					printf("%.2f", res);
					break;
				}
				else if (f(a3,a2,a1,a0,a) * tmp <= 0)
				{
					b = mid;
				}
				else
				{
					a = mid;
				}
			}
		}
	return 0;
}

7-30 念数字 (15 分)

在这里插入图片描述

解题思路: 循环+分支

#include<stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	if (n<0) {printf("%s ", "fu"); n *= -1;}
	int count = 0; 
	int mark = 1;
	int t = n;
	while (t>0)
	{
		count ++;
		mark *= 10;
		t  /= 10;
	}
	mark /= 10;
	if (n==0) printf("%s", "ling");
	else
	{
		while (mark >= 1)
		{
			t = n / mark;
			switch (t)
			{
				case 0:
					printf("%s", "ling");
					break;
				case 1:
					printf("%s", "yi");
					break;
				case 2:
					printf("%s", "er");
					break;
				case 3:
					printf("%s", "san");
					break;
				case 4:
					printf("%s", "si");
					break;
				case 5:
					printf("%s", "wu");
					break;
				case 6:
					printf("%s", "liu");
					break;
				case 7:
					printf("%s", "qi");
					break;
				case 8:
					printf("%s", "ba");
					break;
				case 9:
					printf("%s", "jiu");
					break;
			}
			if (mark != 1)
			{printf(" ");}
			n = n % mark;
			mark /= 10;
		}
	}
	return 0;
}

7-31 掉入陷阱的数字 (15 分)

在这里插入图片描述
解题思路: 循环,变量一定切勿忘记初始化,伤心的泪

#include <stdio.h>

int cal(int n)
{
	int sum=0;
	while (n)
	{
		sum += n % 10;
		n /= 10;
	}
	return 3 *sum + 1;
}

int main()
{
    int n;
    scanf("%d", &n);
    int cnt = 1;
    int tmp;
    do
    {
    	tmp = cal(n);
    	printf("%d:%d", cnt, tmp);
    	cnt += 1;
    	if (tmp == n)
    	{
    		break;
		}
		else
		{
			printf("\n");
			n = tmp;
		}
	}while (1);
    return 0;
}

7-32 求交错序列前N项和 (15 分)

在这里插入图片描述

解题思路: 循环,累积求和

#include <stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	double sum = 0;
	int i;
	for (i=1;i<=n;i++)
	{
		if (i%2==0)
		{
			sum -= i/(2.0*i-1);
		}
		else
		{
			sum += i/(2.0*i-1);
		}
	}
	printf("%.3lf", sum);
	return 0;
}

7-33 统计素数并求和 (20 分)

在这里插入图片描述
解题思路: c语言基础练习,就暂时不要去考虑各种算法了,老老实实的按照基础内容写码练习,1.判断素数的函数;2.循环遍历区间内的每个数

#include <stdio.h>
#include <math.h>

int isPrime(int n)
{
	int i;
	int isPrime = 1;
	for (i=2;i<=sqrt(n);i++)
	{
		if (n % i == 0)
		{
			isPrime = 0;
			break;
		}
	}
	return (n == 1) ? 0 : isPrime;
}

int main()
{
	int m, n;
	scanf("%d %d", &m, &n);
	int cnt = 0, sum = 0;
	int i;
	for (i=m;i<=n;i++)
	{
		if (isPrime(i))
		{
			cnt += 1;
			sum += i;
		}
	}
	printf("%d %d", cnt, sum);
	return 0;
}

7-34 求分数序列前N项和 (15 分)

在这里插入图片描述

解题思路: 循环求累和,虽然分子和分母是整数,计算的时候可以设置为int,求和的时候可以类型转换,但始终通不过最后一个例子

#include <stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	double sum=0.0;
	int i;
	int a=2,b=1;
	int tmp;
	for (i=1; i<=n;i++)
	{
		sum += ((double)a)/ ((double)b);
		tmp = a;
		a = a + b;
		b = tmp;
	}
	printf("%.2lf", sum);
	return 0;
}

在这里插入图片描述

都设置为double型就可以了,有点不理解,毕竟分子分母都是整型(整数),不存在精度问题,唯一可能的是求分子/分母的商时有精度问题,不得其解,交给时间和深入学习来理解吧

#include <stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	double sum=0.0;
	int i;
	double a=2,b=1;
	double tmp;
	for (i=1; i<=n;i++)
	{
		sum += a/b;
		tmp = a;
		a = a + b;
		b = tmp;
	}
	printf("%.2lf", sum);
	return 0;
}

7-35 猴子吃桃问题 (15 分)

在这里插入图片描述

解题思路: 循环,累积求和问题,只是问法变了,从第N天往第1天倒序方向求和。

#include <stdio.h>

int main()
{
	//倒退 
	int n;
	scanf("%d", &n);
	int i;
	int sum=1;
	for (i=n-1;i>0;i--)
	{
		sum += 1;
		sum *= 2;
	}
	printf("%d", sum);
	return 0;
}

7-36 韩信点兵 (10 分)

在这里插入图片描述

解题思路: 老老实实的遍历循环就可以了,不要考虑什么算法、数据结构,我们是初学编程的白中之白

#include <stdio.h>

int main()
{
	int i=6;
	int sum = 0;
	while (1) 
	{
		if (i % 6 == 5)
		{
			if (i % 7 == 4)
			{
				if (i % 11 == 10)
				{
					printf("%d", i);
					break;
				}
			}
		}
		i += 5;
	}
	return 0;
}

7-37 输出整数各位数字 (15 分)

在这里插入图片描述

解题思路: 循环,由于遍历的时候是从低位和高位得出各个数字,可以勇敢数组先存下来,当然也可以高位到低位输出,比如123,除以100即可得出高位的1,剩下23除以10得出2,这个方法也是老师课堂上讲过,前提就是要先去求数的位数,求位数就不断去除以10咯。

#include <stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	int s[32]={0};
	int i = 0;
	if (n==0) i+= 1;
	while (n)
	{
		s[i++] = n % 10;
		n /= 10;
	}
	int j;
	for (j=i-1;j>-1;j--)
	{
		printf("%d ", s[j]);
	}
	return 0;
}

7-38 支票面额 (15 分)

在这里插入图片描述

解题思路: 循环吧,重点就是在练习这些基本的概念

#include <stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	int y, f;
	int flag = 0;
	for (y=0;y<100;y++)
	{
		if (flag) break;
		for (f=0;f<100;f++)
		{
			if ( 100 * f + y - n == 200 * y + 2 * f)
			{
				printf("%d.%d", y, f);
				flag = 1;
				break;
			}
		}
	}
	if (flag==0) printf("No Solution");
	return 0;
}

7-39 龟兔赛跑 (20 分)

在这里插入图片描述
解题思路: 其实很简单,注意好细节,分支判断即可,且在力扣上也刷了400+的题,但第三遍才完全通过。

#include <stdio.h> 

int main()
{
	int t;
	scanf("%d", &t);
	int a=0, b=0;
	int time=0;
	int relax = 0;
	while (1)
	{
		if (relax == 0 && t - time <= 10)
		{
			a += 3 * (t-time);
			b += 9 * (t-time);
			break;
		}
		else if(relax == 1 && t- time <= 30) 
		{
			a += 3 * (t-time);
			break;
		}
		if (relax == 0)
		{ 
			a += 3 * 10;
			b += 9 * 10;
			time += 10;
			if (b > a) 
			{
				relax = 1;
			}
		}
		else
		{
			a += 3 * 30;
			time += 30;
			relax = 0;
		}
	}
	if (a > b)
	{
		printf("@_@ %d", a);
	}
	else if (a < b)
	{
		printf("^_^ %d", b);
	}
	else
	{
		printf("-_- %d", a);
	}
	return 0;
}

7-40 到底是不是太胖了 (10 分)

在这里插入图片描述

解题思路: 还是条件判断,分支选择

#include <stdio.h>
#include <math.h>

void check(float h, float w)
{
	float std = (h-100) * 0.9 * 2;
	float sub = fabs(w-std);
	if (sub < std * 0.1)
	{
		printf("You are wan mei!\n");
	}
	else if (w>std) 
	{
		printf("You are tai pang le!\n");
	}
	else
	{
		printf("You are tai shou le!\n");
	}
}

int main()
{
	int n;
	scanf("%d", &n);
	float h, w;
	float i;
	for (i=0;i<n;i++)
	{
		scanf("%f %f", &h, &w);
		check(h,w);
	}
	return 0;
}

7-41 计算阶乘和 (10 分)

在这里插入图片描述

解题思路: 1.循换计算每个阶乘即可;2.计算n!的时候,是不是(n-1)!的阶乘已经计算过了,就不用再从头计算了。

#include <stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	int sum, pre;
	sum = 1;
	pre = 1;
	int i;
	for (i=2;i<=n;i++)
	{
		sum += pre * i;
		pre *= i;
	}
	printf("%d", sum);
	return 0;
}

7-42 整除光棍 (20 分)

在这里插入图片描述

解题思路:
这道题我是放到最后来做的,说句实话,不看提示还好,一看提示其实把自己给绕进去了。我之前是用python的,从没有考虑过大数计算(精度范围什么的),所以对c就有点真心不习惯。看到提示,嗯,妥妥的大数运算,我又不懂,只依稀好像听说过大数运算的时候,c语言可以用数组,好吧,就被绕道数组里面了,逐个增加1的个数,然后重新整除x,然后bug就多了,始终修改不成功。
好吧,我承认还是我太菜了!
不过,突然灵光一现,这道题根本不用考虑大数计算啊,我们只需要知道1的个数就行了,不论有多少个1,就像小学的时候学竖式除法的时候,不管你被除数有多大,不都是一点点的去除吗?对不对?比如111111 /13 ,不是先用111/13,然后余再去个1继续除下去?此题不也是如此吗?先初始化被除数a=1,如果小于x,就增加1的位数,10a+1,直到大于x,然后开始除法运算,因为输入的x<1000,所以a肯定不会超出精度范围,把a/x的商存下来,如果余为零,则找到了结果(这个时候循环一遍,把存的结果输出就可以,甚至可以不存,根据输出的格式要求,完全可以每一步就输出),如果不为0,则a等于余数,并则加一个位数,不还是10a+1,继续循环。

#include <stdio.h>

int main()
{
	int x;
	scanf("%d",&x);
	int num[1000]={0};
	int init=1;
	int n=1;
	while (init<x)
	{
		n ++;
		init = init * 10 + 1;
	}
	int i=0;
	while (1)
	{
		num[i++] = init/x;
		init = init % x;
		if (init==0)
		{
			break;
		}
		else
		{
			init = init*10 + 1;
			n++;
		}
	}
	int j;
	for (j=0;j<i;j++)
	{
		printf("%d",num[j]);
	}
	printf(" %d",n);
	return 0;
}

7-43 Shuffling Machine (20 分)

在这里插入图片描述

解题思路: 根据洗牌规则自动洗牌,不要被英文题目吓到,实在不行谷歌翻译、百度翻译结合着理解。1.先初始化牌组2。输入洗牌规则3.反复洗牌4.输出结果

#include <stdio.h>

int main()
{
	int shuff[54];
	int i,j;
	for (i=0;i<54;i++)
	{
		shuff[i] = i;
	}
	int n,index;
	scanf("%d",&n);//Ï´ÅÆ´ÎÊý 
	int res[54];
	int change[54];
	for (i=0;i<54;i++)
	{
		scanf("%d",&index);
		change[i] = index-1;
	}
	for (i=0;i<n;i++)
	{
		for (j=0;j<54;j++)
		{
			index = change[j];
			res[index] = shuff[j];
		}
		for (j=0;j<54;j++)
		{
			shuff[j] = res[j];
		}
	}
	for (j=0;j<54;j++)
	{
		if (shuff[j]<13)
		{
			printf("S%d",shuff[j]+1);
		}
		else if (shuff[j]<26)
		{
			printf("H%d",shuff[j]+1-13);
		}
		else if (shuff[j]<39)
		{
			printf("C%d",shuff[j]+1-26);
		}
		else if (shuff[j]<52)
		{
			printf("D%d",shuff[j]+1-39);
		}
		else
		{
			printf("J%d",shuff[j]+1-52);
		}
		if (j!=53)
		{
			printf(" ");
		}
	}
	return 0;
}

7-44 黑洞数 (20 分)

在这里插入图片描述

解题思路: 1.先重排;2.循环结束条件,重排后的数和重排前一致

#include <stdio.h>
#include <string.h> 

int reshape(int i, int n) 
{
	int a,b,c;
	int tmp;
	a = n/100;
	b = n%100/10;
	c = n%10;
	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;
	}
	int max_n = a*100+b*10+c;
	int min_n = c*100+b*10+a;
	int diff = max_n - min_n;
	if (diff!=n || i==1)
		printf("%d: %d - %d = %d\n",i,max_n,min_n,diff);
	return diff;
}


int main()
{ 
	int n;
	scanf("%d",&n);
	int cnt = 0;
	int t,tmp;
	while (1)
	{
		cnt ++;
		t = reshape(cnt, n);
		if (t==n) break;
		n = t; 
	}
	return 0;
}

7-45 找完数 (20 分)

在这里插入图片描述

解题思路: 1.同找素数一样,循环判断是否为因数,是则加起来或者存起来最后一起加2.如果因数之和等于数本身,则为完数3.需要注意的是,设立标志位flag判断是否一个完数也没有,其实代理可以将flag表示为完数个数,如果为0则输出none

#include <stdio.h>
int factor(int n)
{
	int fac[n];
	int cnt=0;
	int i;
	for (i=1;i<=n/2;i++)
	{
		if (n%i==0)
		{
			fac[cnt++] = i;
		}
	}
	int sum=0;
	for (i=0;i<cnt;i++)
	{
		sum += fac[i];
	}
	int flag = 0;
	if (sum==n)
	{
		printf("%d =", n);
		for (i=0;i<cnt-1;i++)
		{
			printf(" %d +",fac[i]);
		}
		printf(" %d\n",fac[i]);
		flag = 1;
	}
	return flag;
}

int main()
{
	int m,n;
	scanf("%d %d",&m,&n);
	int i;
	int flag = 0;
	for (i=m;i<=n;i++)
	{
		if (factor(i) == 1)
			flag = 1;
	}
	if (flag == 0)
	{
		printf("None");
	}
	return 0;
}

7-46 爬动的蠕虫 (15 分)

在这里插入图片描述

解题思路: 认真仔细就可以了,就是一个分支判断,一分钟上爬,一分钟下落

#include <stdio.h>

int main()
{
	int n,u,d;
	scanf("%d %d %d",&n,&u,&d);
	int i;
	int sum=0;
	for (i=0;;i++)
	{
		if (i%2==0)
		{
			sum += u;
			if (sum>=n)
			{
				break;
			}
		}
		else
		{
			sum -= d;
		}
	}
	printf("%d",i+1);
	return 0;
}

7-47 二进制的前导的零 (10 分)

在这里插入图片描述

解题思路: 1.如果为负数,则最高位符号位则为1,无前导0;2.如果为0,则前导0有32个;3.如果为正数,先依次从高位判断,如果当前数大于pow(2,i),则表示该为为最靠前的1,则前导0有31-i个,从第31位(索引为30)开始判断,因为最高位为符号位,肯定为0当正数的情况下

#include <stdio.h>
#include <math.h>

int main()
{
	int n;
	scanf("%d",&n);
	if (n<=0)
	{
		if (n==0) printf("32");
		else printf("0");
		return 0;
	}
	int i;
	int res;
	for (i=30;i>-1;i--)
	{
		res = pow(2,i);
		if (n>=res)
		{
			printf("%d\n",31-i);
			break;
		}
	}
	return 0;
}

7-48 求组合数 (15 分)

在这里插入图片描述

解题思路: 1.注意精度,题目已经提示;2.求三个阶乘

#include <stdio.h>
double fact(double n)
{
	double res = 1;
	double i;
	for (i=1;i<=n;i++)
	{
		res *= i;
	}
	return res;
}

int main()
{
	double m,n;
	scanf("%lf %lf",&m,&n);
	double result = fact(n)/(fact(m)*(fact(n-m)));
	printf("result = %.lf",result);
	return 0;
}

7-49 Have Fun with Numbers (20 分)

在这里插入图片描述

解题思路: 快乐数:1.使用数组存数以及乘以2;2.将得到的结果中的数和原数中的数字对比

#include <stdio.h>
#include <string.h>

int main()
{
	char start[20];
	char end[20];
	scanf("%s",start);
	int cnt,i,s;
	cnt = strlen(start);
	int carry=0,flag=1;
	for (i=cnt-1;i>-1;i--)
	{
		s = (start[i]-'0')*2+carry;
		end[i] = s%10+'0';
		carry = s/10;
	}
	int j;
	for (i=0;i<cnt;i++)
	{
		for (j=0;j<cnt;j++)
		{
			if (end[i]==start[j])
			{
				start[j]='a';
				break;
			}
		}
	}
	for(i=0;i<cnt;i++)
	{
		if (start[i]!='a')
		{
			flag = 0;
			break;
		}
	}
	if (flag==1 & carry==0)
	{
		printf("Yes\n");
	}
	else
	{
		printf("No\n");
	}
	if (carry!=0)
	{
		printf("%c",carry+'0');
	}
	for (i=0;i<cnt;i++)
	{
		printf("%c",end[i]);
	}
	return 0;
}

7-50 输出华氏-摄氏温度转换表 (15 分)

在这里插入图片描述

解题思路: 循环、仔细耐心细心认真

#include <stdio.h>
#include <math.h>

int main()
{
	int lower, upper;
	scanf("%d %d",&lower,&upper);
	if (lower > upper)
	{
		printf("Invalid.");
	}
	else
	{
		printf("fahr celsius\n");
		int i;
		for (i=lower;i<=upper;i+=2)
		{
			printf("%d%6.1f\n",i,5*(i-32)/9.0);
		}
	}
	return 0;
}

7-51 求奇数分之一序列前N项和 (15 分)

在这里插入图片描述

解题思路: 注意精度范围,整型与整型进行运算结果为整型,故是1.0/而不是1/

#include <stdio.h>
#include <math.h>

int main()
{
	int n;
	scanf("%d",&n);
	int i;
	double sum = 0.0;
	for (i=1;i<=n;i++)
	{
		sum += 1.0/(2*i-1);
	}
	printf("sum = %.6lf", sum);
	return 0;
}

7-52 求简单交错序列前N项和 (15 分)

在这里插入图片描述

解题思路: 循环,注意精度

#include <stdio.h>
#include <math.h>

int main()
{
	int n;
	scanf("%d",&n);
	int i;
	int flag = 1;
	double sum = 0.0;
	for (i=0;i<n;i++)
	{
		sum += flag * 1.0/(3*i+1);
		flag *= -1;
	}
	printf("sum = %.3lf", sum);
	return 0;
}

7-53 生成3的乘方表 (15 分)

在这里插入图片描述

解题思路: 循环,仔细认真,注意输出格式

#include <stdio.h>
#include <math.h>

int main()
{
	int n;
	scanf("%d",&n);
	int i;
	int r;
	for (i=0;i<=n;i++)
	{
		r = pow(3,i);
		printf("pow(%d,%d) = %d\n",3,i,r);
	}
	return 0;
}

7-54 求阶乘序列前N项和 (15 分)

在这里插入图片描述

解题思路: 有个小技巧,每个阶乘不用全部重新算,当前阶乘的结果等于上一个阶乘结果乘以当前序号

#include <stdio.h>
#include <math.h>

int main()
{
	int n;
	scanf("%d",&n);
	int pre = 1;
	int i;
	int sum = 0;
	for (i=1;i<=n;i++) 
	{
		pre *= i;
		sum += pre;
	}
	printf("%d",sum);
	return 0;
}

7-55 查询水果价格 (15 分)

在这里插入图片描述
在这里插入图片描述

解题思路: 分支选择,根据不同输入输出不同结果

#include <stdio.h>
#include <math.h>

int main()
{
	printf("[1] apple\n");
	printf("[2] pear\n");
	printf("[3] orange\n");
	printf("[4] grape\n");
	printf("[0] exit\n");
	int n;
	scanf("%d",&n);
	int cnt = 0;
	float res;
	while (cnt<5 && n!=0)
	{
		switch (n) 
		{
			case 1:
				res = 3.00;
				break;
			case 2:
				res = 2.50;
				break;
			case 3:
				res = 4.10;
				break;
			case 4:
				res = 10.20;
				break;
			default:
				res = 0.00;
		}
		printf("price = %.2f\n", res);
		cnt += 1;
		scanf("%d",&n);
	}
	return 0;
}

7-56 求给定精度的简单交错序列部分和 (15 分)


在这里插入图片描述

解题思路: 一直循环,并求和,直到某一项小于精度则退出循环,使用flag来表示正负的变化。

#include <stdio.h>
#include <math.h>

int main()
{
	double eps;
	scanf("%lf",&eps);
	double num;
	double fm = -2;
	int flag = 1;
	double sum = 0.0;
	while (1)
	{
		fm += 3;
		num = 1.0/fm;
		sum += num * flag;
		flag *= -1;
		if (num<=eps)
		{
			break;
		}
	}	
	printf("sum = %.6lf",sum);
	return 0;
}

7-57 求e的近似值 (15 分)

在这里插入图片描述

解题思路: 一样的,只是阶乘结果做分母

#include <stdio.h>
#include <math.h>

int main()
{
	int n;
	scanf("%d",&n);
	double sum = 1;
	int i;
	double pre = 1;
	for (i=1;i<=n;i++)
	{
		pre *= i;
		sum += 1.0/pre;
	}
	printf("%.8f", sum);	
	return 0;
}

7-58 求幂级数展开的部分和 (20 分)

在这里插入图片描述

解题思路: 一样的道理,递增并求和,直到小于精度

#include <stdio.h>
#include <math.h>

int main()
{
	double eps = 0.00001;
	double x;
	scanf("%lf",&x);
	double sum=1,fm=1;
	double i = 1;
	double tmp;
	while (1)
	{
		fm *= i;
		tmp = pow(x,i)/fm;
		sum += tmp;
		if (tmp<eps)
		{
			break;
		}
		i ++;
	}
	printf("%.4lf",sum);
	return 0;
}

7-59 打印菱形图案 (15 分)

在这里插入图片描述

解题思路: 这个没悬念,控制打印输出就可以了

#include <stdio.h>
#include <math.h>
void my_print(int m, int n)
{
	int i;
	for (i=0;i<m;i++)
	{
		printf("  ");
	}
	for (i=0;i<n;i++)
	{
		printf("* ");
	}
	printf("\n");
}

int main()
{
	int n;
	scanf("%d",&n);
	int mid = n/2;
	int i,j;
	for (i=0;i<=mid;i++)
	{
		my_print(mid-i,2*i+1);
	}
	for (i=mid-1;i>-1;i--)
	{
		my_print(mid-i,2*i+1);
	}
	return 0;
}

7-60 Welcome to You! (5 分)

在这里插入图片描述

解题思路: 打印输出就可以了啊

#include <stdio.h>

int main()
{
    printf("Welcome to You!");
    return 0;
}

7-61 Programming in C is fun! (5 分)

在这里插入图片描述

解题思路: printf即可

#include <stdio.h>

int main()
{
    printf("Programming in C is fun!");
    return 0;
}

7-62 计算物体自由下落的距离 (5 分)

在这里插入图片描述

解题思路: 基本的乘法及小数点保留

#include <stdio.h>

int main()
{
	printf("height = %.2lf",5.0*9);
	return 0;
}

7-63 高空坠球 (20 分)

在这里插入图片描述

解题思路: 注意 分清第i次落地和第i次反弹

#include <stdio.h>
int main()
{
	double h;
	int n;
	scanf("%lf %d",&h,&n);
	int i;
	double dis=0.0,hight=0.0;
	for (i=1;i<=n;i++)
	{
		if (i==1)
		{
			hight = h;//下一次落地前通过的距离,高度的2呗
			dis += hight;
		}
		else
		{
			dis += hight;
			hight /= 2.0;
		}
	}
	printf("%.1lf %.1lf",dis,hight/2.0);
	return 0;
}

7-64 统计大写辅音字母 (15 分)

在这里插入图片描述

解题思路: 条件判断,累加

#include <stdio.h>
#include <math.h>

int main()
{
	char s[81];
	scanf("%[^\n]s", s);
	int i=0;
	int cnt = 0;
	while (s[i]!='\0')
	{
		if (s[i]>='A' && s[i]<='Z' && s[i]!='A' && s[i]!='E' && s[i]!='I' && s[i]!='O' && s[i]!='U')
		{
			cnt ++;
		}
		i++;
	}
	printf("%d", cnt);
	return 0;
}

7-65 字符串替换 (15 分)

在这里插入图片描述

解题思路: 转换,离A越近的字符,转换后离Z越近,故新转换后的字符为Z-(s[i]-‘A’)

#include <stdio.h>
#include <math.h>

int main()
{
	char s[81];
	scanf("%[^\n]s", s);
	int i=0;
	while (s[i]!='\0')
	{
		if (s[i]>='A' && s[i]<='Z')
		{
			printf("%c",'A'+25-(s[i]-'A'));
		}
		else
		{
			printf("%c",s[i]);
		}
		i++;
	}
	return 0;
}

7-66 时间换算 (15 分)

在这里插入图片描述

解题思路: 先秒钟加经过的秒数,60位进制进行换算

#include <stdio.h>
#include <math.h>

int main()
{
	int h,m,s;
	scanf("%d:%d:%d",&h,&m,&s);
	int gap;
	scanf("%d",&gap);
	s += gap;
	m += s/60;
	s = s % 60;
	
	h += m/60;
	m = m % 60;
	h = h%24;
	printf("%0.2d:%0.2d:%0.2d",h,m,s);
	return 0;
}

7-67 What is a computer? (5 分)

在这里插入图片描述

解题思路: 直接printf

#include <stdio.h>

int main()
{
    printf("What is a computer?");
    return 0;
}

7-68 求N分之一序列前N项和 (15 分)

在这里插入图片描述

解题思路: 注意精度范围计算过程中,使用1.0除而不去1除,因为1为int型变量

#include <stdio.h>
#include <math.h>

int main()
{
	int  n;
	scanf("%d",&n);
	int i;
	double sum = 0.0;
	for (i=1;i<=n;i++)
	{
		sum += 1.0/i;
	}
	printf("sum = %.6lf",sum);
	return 0;
}

7-69 换硬币 (20 分)

在这里插入图片描述

解题思路: 没什么好说的,依次遍历,如果等于要换的金额,则满足条件。

#include <stdio.h>
#include <math.h>

int main()
{
	int  n;
	scanf("%d",&n);
	int i,j,z;
	int cnt = 0;
	for (i=n/5;i>=1;i--)
	{
		for (j=n/2;j>=1;j--)
		{
			for (z=n;z>=1;z--)
			{
				if (5*i+2*j+z==n)
				{
					printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",i,j,z,i+j+z);
					cnt ++;
				}
			}
		}
	}
	printf("count = %d",cnt);
	return 0;
}

7-70 输出三角形面积和周长 (15 分)

在这里插入图片描述
解题思路: 第一步先判断是否能构成三角形,第二步使用周长公式计算周长和面积。

#include <stdio.h>
#include <math.h>

int main()
{
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if ((a+b)<=c || (a+c)<=b || (b+c)<=a)
	{
		printf("These sides do not correspond to a valid triangle");
	}
	else
	{
		double s = (a+b+c)/2.0;
		printf("area = %.2f; perimeter = %.2f", sqrt(s*(s-a)*(s-b)*(s-c)),2*s);
	}	
	return 0;
}
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raykingl

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值