问题一:printf("%.1f\n",8/5);的输出为0.0
(原因:前提条件1.printf()不会进行数据类型的转换
前提条件2:浮点类型和整型在内存中排布不同
而格式字符串"%.1f\n"决定了按浮点读取变量内存块数据)
问题二:printf(''%d'',8.0/5.0);的输出为负数
注:问题一与问题二的都涉及了整数和浮点数编码问题(待解决)
知识点漏点:1.printf("%.1f",a); 表示输出结果保留1位小数,将1换成2就是输出结果保留2位小数;
2.%If是c语言中double的格式字符
竞赛问题:在竞赛过程中不要打印任意的提示消息;因为输入是自动化的
算法学习:
算法1.圆柱体的表面积的计算
注意:最好使用const+数据类型+宏定义名称+对应数据;
注意题中要求的输出,不要自作主张去输出提示性语句;
2.算法2:三位数反转:
解法一:是单独将三个数字提取出来,将位置交换(没有成为一个三位数,是数字直接拼接),然后直接输出【注意的是,这个地方没有必要单独设计单独的变量来储存他的个位数,十位数,百位数】
解法二:是将个位数,十位数,百位数的数字提取出来,再分别乘上100,10,1来变成百位数,十位数,个位数。变成一个新的三位数。
注意:两种解法的不同之处就在于:当个位数为0时,如520,解法一的结果是025,解法二就是25.具体情况要询问监考人员。
算法3:交换两个变量的值
解法一:三变量法:关键是创建一个变量,来临时储存值
解法二:
#include<stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
a = a + b;//此时a就是a,b之和
b = a - b;//b就是之和减去b,就是之前的a了
a = a - b;//a就是之和减去之前的a就是之前的b了,所以就实现了交换
printf("%d %d\n", a, b);
return 0; }
推荐:三变量法,越简单处理问题越快捷越好;
-------------------------------之前是顺序结构程序设计-----------------------------------
----------------------------------分支结构程序编程----------------------------------------
算法一:鸡兔同笼:
我的
#include <stdio.h>
#include <stdlib.h>
int main()
{
int r_num,c_num,h_num,t_num;
scanf("%d%d",&h_num,&t_num);
r_num=h_num-c_num;
c_num=(t_num-r_num*4)/2;
if(r_num<0 || c_num==0)
{
printf("No answer");
}
printf("%d %d\n",r_num,c_num);
return 0;
}
答案:
#include<stdio.h>
int main()
{
int a, b, n, m;
scanf("%d%d", &n, &m);
a = (4*n-m)/2;
b = n-a;
if(m % 2 == 1 || a < 0 || b < 0)
printf("No answer\n");
elseprintf("%d %d\n", a, b);
return 0;
}
与5月28日我认为这是因为我的两个计算式都含有未知数,第一个变量是无法算出值的;答案2就是将第一个变量的值计算出来了
-------准备考工作室的第一天,嘻嘻,第一次写博客的泡菜鱼,虽然菜,希望以后不多于哦-----------
在线求求算法的学习历程呀
------------------------------------------5.28-----------------------------------------------------------
----------------------------------------进程:42/723-------------------------------------------------