20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises09
P132
/*
编写一程序P132.C实现以下功能
在屏幕上输出I can printf \n,"\t & \!。
程序的运行效果应类似地如图1所示。
I can printf \n,"\t & \!
碰到转义,一定要多往后再看一个字符!!!!!
碰到转义,一定要多往后再看一个字符!!!!!
碰到转义,一定要多往后再看一个字符!!!!!
碰到转义,一定要多往后再看一个字符!!!!!
碰到转义,一定要多往后再看一个字符!!!!!
*/
#include <stdio.h>
int main(void)
{
printf("I can printf \\n,\"\\t & \\!");
return 0;
}
P265
/*
编写一程序P265.C实现以下功能
先从键盘读入7个数据(依次为2实数、3整数、2字符),然后按示例格式倒序输出这7个数据。
编程可用素材:
printf("请输入7个数据(依次为2实数、3整数、2字符): ")、
printf("\n这7个数据倒序为: ")。
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
请输入7个数据(依次为2实数、3整数、2字符): 61.12376371 152.351192 81 192 35 x m
这7个数据倒序为: 7-m 6-x 5-35 4-192 3-81 2-152.3511920 1-61.1237637
本题解题,注意细节!!!
本题解题,注意细节!!!
本题解题,注意细节!!!
*/
#include <stdio.h>
int main(void)
{
double fdata1, fdata2;
int idata1, idata2, idata3;
char ch1, ch2;
printf("请输入7个数据(依次为2实数、3整数、2字符): ");
scanf("%lf %lf %d %d %d %c %c", &fdata1, &fdata2,
&idata1, &idata2, &idata3, &ch1, &ch2);
printf("\n这7个数据倒序为: 7-%c 6-%c 5-%d 4-%d 3-%d 2-%.7lf 1-%.7lf",
ch2, ch1, idata3, idata2, idata1, fdata2, fdata1);
return 0;
}
P111
/*
编写一程序P111.C实现以下功能
x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键盘输入(输入前给出提示Please input x:),
然后计算并在屏幕上输出函数值。编程可用素材:
printf("Please input x: ")、
printf("\nF(…) = …。
┌ -5x+27 (x<0)
F(x)= ├ 7909 (x=0)
└ 2x-1 (x>0)
程序的运行效果应类似地如图1所示,图中的红色部分是从键盘输入的内容。
Please input x: 3
F(3) = 5
*/
#include <stdio.h>
int main(void)
{
int datax;
double fx;
printf("Please input x: ");
scanf("%d", &datax);
// 要特别注意数据运算过后的精度的保留,建议做强制转换,大空间可以容下小空间的数据
/*
1. 要先转换类型,再进行运算,结果才会有精度保留
2. 不能算完以后再做转算,那样精度肯定丢失
3. 注意最后的显示格式要求
*/
if(datax<0)
{
fx = -5 * (double)datax + 27;
}
else if(datax==0)
{
fx = 7909;
}
else
{
fx = 2 * (double)datax - 1;
}
printf("\nF(%d) = %.0lf", datax, fx);
return 0;
}
P139
/*
编写一程序P139.C实现以下功能
从键盘输入5个实数(最多2位小数),输出最小的一个数。
编程可用素材:printf("请输入5个实数: ")、printf("\n最小的数是 …\n"…。
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
请输入5个实数: 1, -362.31, 300.2, 800, 120.7
最小的数是 -362.31
*/
#include <stdio.h>
int main(void)
{
double da[5]; // 这是一个数组
double minData;
int i;
printf("请输入5个实数: ");
// 数组的处理,是按元素来的,所以天生会和循环结合起来使用和控制
for (i = 0; i < 4;i++)
{
scanf("%lf, ", &da[i]);
}
scanf("%lf", &da[4]);
minData = da[0];
for (i = 1; i < 5;i++)
{
// printf("%.2lf ", da[i]);
if(minData>da[i])
{
minData = da[i];
}
}
printf("\n最小的数是 %.2lf", minData);
return 0;
}
P260
/*
编写一程序P260.C实现以下功能
从键盘读入3个整数,按由小到大的顺序输出这3个数。
编程可用素材:
printf("请输入3个数:");
printf("\n这三个数由小到大为: %d %d %d\n",,,);
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
请输入3个数:200 1056 72
这三个数由小到大为: 72 200 1056
*/
#include <stdio.h>
int main(void)
{
int d1, d2, d3, tmp;
printf("请输入3个数:");
scanf("%d %d %d", &d1, &d2, &d3); // 注意输入格式,用空格间隔
// 典型的交换算法,可以抽出,重构程序,生成交换函数
if(d1>d2)
{
tmp = d1;
d1 = d2;
d2 = tmp;
}
if(d1>d3)
{
tmp = d1;
d1 = d3;
d3 = tmp;
}
if(d2>d3)
{
tmp = d2;
d2 = d3;
d3 = tmp;
}
printf("\n这三个数由小到大为: %d %d %d\n", d1, d2, d3);
return 0;
}
P702
/*
编写一程序P702.C实现以下功能
输入月份,输出2003年该月有几天。
当输入的月份超范围时,应输出“Invalid month input”。
编程可用素材:
printf("please input the month number: ");
printf("\nInvalid month input !\n");
printf("\n2003.%d has %d days\n",,);
程序的运行效果应类似地如图1和图2所示,图中的红色部分是从键盘输入的内容。
please input the month number: 4
2003.4 has 30 days
图1 程序运行效果示例(输入月份合法)
please input the month number: 13
Invalid month input !
*/
#include <stdio.h>
int main(void)
{
int month;
int days = -1;
printf("please input the month number: ");
scanf("%d", &month);
if(month <0 || month >12) // 这就是开关检察,如果这里不通过,后面的业务动作就可以不做了
{
printf("\nInvalid month input !\n");
}
else
{
if(month ==2)
{
days = 28;
}
else if(month == 4 || month == 6 || month == 9 || month == 11)
{
days = 30;
}
else
{
days = 31;
}
printf("\n2003.%d has %d days\n", month, days);
}
return 0;
}