PTA-C语言课程作业--顺序结构练习

指导老师:叶晓红

7-1 简单题 (5分)

这次真的没骗你 —— 这道超级简单的题目没有任何输入。
你只需要在一行中输出事实:This is a simple problem. 就可以了。

#include<stdio.h>
int main()
{
    printf("This is a simple problem.");
}

简单的输出,要注意一下输出格式,符号。

7-2 将x的平方赋值给y (5分)

假设x的值为3,计算x的平方并赋值给y,分别以“y = x ∗ x”和“x ∗ x = y”的形式输出x和y的值。
输入格式:

本题无输入

输出格式:

按照下列格式输出代入x=3的结果

y = x * x

x * x = y

#include<stdio.h>

int main(int argc, char *argv[]) {
	printf("9 = 3 * 3\n3 * 3 = 9");
	return 0;
}

进行一个简单的输出,按照题目格式要求输出就好

7-3 A乘以B (10分)

看我没骗你吧 —— 这是一道你可以在10秒内完成的题:给定两个绝对值不超过100的整数A和B,输出A乘以B的值。
输入格式:

输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。

输出格式:
在一行中输出A乘以B的值。

输入样例:

-8 13

输出样例:

-104

#include <stdio.h>
int main()
{
    int A,B;
    scanf("%d %d",&A,&B);
    printf("%d\n",A*B);
    return 0;
}

输入两个数,对这两个数进行乘法运算,要注意scanf的取地址符号“&”不要丢

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

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)

输入格式:

输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

输出格式:

在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

输入样例:

169

输出样例:

124.2

#include<stdio.h>
int main ()
{
	double H,weight ;
	scanf("%lf",&H);
	weight=(H-100)*0.9*2;
	printf("%.1f\n",weight);
	return 0;
}

理解题目是关键,根据题目意思可得,体重=(身高-100)X 0.9 X 2,注意题目说的是市斤,为公斤的2倍,根据题目列出相应的变量并赋值,最后还要注意保留以为小数,“%.1f”

7-5 输出各位数字 (10分)

给定一个三位正整数,输出其百位数字、十位数字及个位数字。

输入格式:

直接输入一个三位正整数,没有其它任何附加字符。

输出格式:

在一行中输出所输入正整数的各个位数字,各个数字之间用逗号间隔,没有其它任何附加字符。

输入样例:

258

输出样例:

2,5,8

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d,%d,%d",n/100,(n/10)%10,n%10);
    return 0;
}

本题要注意“%”和“/”运算符的使用,/为所得结果的商,没有余数,%为所得结果的余数,例如258/100,得2,省略余数58,而258%100得58,省略商2,因此就本题来看,用n/100得到输入的三位数的百位,n/10得到三位数的百位、十位,再对结果进行取模运算,得到十位,省略百位,n%10直接得到个位。

7-6 整数四则运算 (10分)

本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。

输入格式:

输入在一行中给出2个正整数A和B。

输出格式:

在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。

输入样例:

3 2

输出样例:

3 + 2 = 5

3 - 2 = 1

3 * 2 = 6

3 / 2 = 1

#include<stdio.h>
int main()
{
    int A, B;
	scanf("%d %d", &A, &B);
	printf("%d + %d = %d\n", A, B, A + B);
	printf("%d - %d = %d\n", A, B, A - B);
	printf("%d * %d = %d\n", A, B, A * B);
	printf("%d / %d = %d\n", A, B, A / B);
}

本题不难,要注意题目上面的输出格式,注意空格,scanf要注意取地址符。

7-7 计算银行存款的本息 (5分)

本题目要求计算银行存款的本息,计算公式为sum=money×(1+rate)^year,其中sum为存款到期时的本息合计(税前),money是存款金额,year是存期,rate是年利率。

输入格式:

输入在一行中顺序给出两个正整数money、year和一个正实数rate,以空格分隔。

输出格式:

在一行中按“sum = 本息”的格式输出,其中本息保留两位小数,请注意等号的左右各有一个空格。

输入样例:

1000 3 0.025

输出样例:

sum = 1076.89

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

int main(int argc, char *argv[]) {
	int money,year;
	float rate;
	float sum = 0;
	scanf("%d %d %f",&money,&year,&rate);
	sum = money*pow((1+rate),year);
	printf("sum = %.2f",sum);
}

题目理解并不难,要注意引用“math.h”文件,以及pow函数的使用

pow 函数

原型:extern float pow(float x, float y);

功能:计算x的y次幂。

7-9 计算分段函数[1] (10分)

本题目要求计算下列分段函数f(x)的值:

image

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。

输入样例1:

10

输出样例1:

f(10.0) = 0.1

输入样例2:

0

输出样例2:

f(0.0) = 0.0

#include <stdio.h>
int main(int argc, char *argv[]) {
	float x=0.0;
	scanf("%f",&x);
	if(x!=0)
	printf("f(%.1f) = %.1f",x,1/x);
	if(x==0)
	printf("f(0.0) = 0.0");
}

这里我用了两个if语句来编写程序,题目本身不难理解,要注意题目要保留的小数个数,第二个判断条件中x==0是两个等于号而不是一个,二者意义是不同的。

7-10 计算分段函数[2] (10分)

本题目要求计算下列分段函数f(x)的值:

image

注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。

输入样例1:

10

输出样例1:

f(10.00) = 3.16

输入样例2:

-0.5

输出样例2:

f(-0.50) = -2.75

#include <stdio.h>
#include "math.h"
int main(int argc, char *argv[]) {
	
	float x=0.0;
	scanf("%f",&x);
	if(x>=0)
	printf("f(%.2f) = %.2f",x,pow(x,0.5));
	if(x<0)
	printf("f(%.2f) = %.2f",x,pow(x+1,2)+2*x+1/x);
}

本题同样用到了pow函数,再来复习一下吧,pow(x,y),求x的y次幂,题目sqrt函数在这里并没有用到,sqrt(x),它是用来计算x的平方根的。

7-11 偶数乘2奇数乘3 (10分)

输入一个整数x,如果为偶数乘2,否则乘3,然后输出。

输入格式:

直接输入一个整数,没有其它任何附加字符。

输出格式:

在一行中按照“y=结果”的顺序输出,结果原样输出,没有其它附加格式。

输入样例:

3

输出样例:

y=9

输入样例:

2

输出样例:

y=4

#include <stdio.h>
int main(int argc, char *argv[]) {
	int x=0;
	scanf("%d",&x);
	if(x%2==0)
	printf("y=%d",x*2);
	if(x%2!=0)
	printf("y=%d",x*3);	
}

本题只要知道如何判断一个数是不是偶数,就能迎刃而解了,最直观的方法就是对2取余,如果为0,表示整除,即为偶数。否则为奇数。n%2 == 0 则为偶数 n%2 ==1 则为奇数

7-12 整除问题 (10分)

判断一个数是否能被另一个整数整除是一个挺简单的问题,懒惰的小明还是不想自己做,于是找到你帮他写代码,你就帮帮他吧。

输入格式:

输入包括两个由空格分开的整数 M和 N(1≤M,N≤500)。

输出格式:

输出包括一行,如果 M 可以被 N
整除就输出YES,否则输出NO(结果大小写敏感)。

输入样例:

21 7

输出样例:

YES

#include <stdio.h>

int main(int argc, char *argv[]) {
	int x=0;
	int y=0;
	scanf("%d %d",&x,&y);
	if(x%y==0)
	printf("YES");
	else
	printf("NO");
	
}

就像题目所说,判断一个数是否能被另一个整数整除是一个挺简单的问题,的确,只要一个数除以另一个数,没有余数,不就被整除了嘛。也就是看x%y是否等于0.