c语句+方法+类型

1.float double 类型的区别
float 4 字节 ,double 类型为 8 字节 , 小数默认为 double 类型 , 它们的区别主要在精度和有效数字的不同 .
//float(4 字节 ) double(8 字节 ), 小数默认为 double
//float 的精度和有效数字 小于 double, 具体定义在 float.h
int main ()
{
float a = 12.3 ; // 数据截断 , 小数默认为 double
double b = 12.3 ;
float c = ( float ) 12.3 ;
float d = 12.3f ; //f 说明 12.3 float, 常用的方法
float e = 12345.678f ;
double f = 12345.678 ;
printf ( "%f\n%f\n" , e , f );
return 0 ;
}
2. 从键盘输入一行字符
从标准输入读取一行字符的常用方法
标准输入 : 键盘
标准输出 : 屏幕
getchar(): 从键盘获取一个字符 , 具体使用参考帮助手册
putchar(): 输出一个字符 , 具体使用参考帮助手册
isalpha(): 判断是否为字母字符 , 需要引用 ctype.h
int main ()
{
int sum = 1 ;
for ( int i = 9 ; i >= 1 ; i -- )
{
sum = ( sum + 1 ) * 2 ;
}
printf ( "%d\n" , sum );
return 0 ;
}
//float(4 字节 ) double(8 字节 ), 小数默认为 double
//float 的精度和有效数字 小于 double, 具体定义在 float.h
int main ()
{
float a = 12.3 ; // 数据截断 , 小数默认为 double
double b = 12.3 ;
float c = ( float ) 12.3 ;
float d = 12.3f ; //f 说明 12.3 float, 常用的方法
float e = 12345.678f ;
double f = 12345.678 ;
printf ( "%f\n%f\n" , e , f );
return 0 ;
} isdigit(): 判断是否为数字字符 , 需要引用 ctype.h
int main () // 方法 1, 这是最常用的
{
int ch ;
while (( ch = getchar ()) != '\n' ) //, 从键盘获取一行字符 , 注意 = != 的优先级 , 类似 3+4*2
{
putchar ( ch );
}
return 0 ;
}
int main () // 方法 2, 没有上面的常用
{
char ch ;
while ( scanf ( "%c" , & ch ) > 0 && ch != '\n' )
{
printf ( "%c" , ch );
}
return 0 ;
}
3. 常量
常量 : 不能修改的值 . 常见的常量有数字 , 字符常量 ,
数字常量 . 例如 1,2,12.5,1.25e1(1.25e-1,1.25e+1,1e2,1.e2)
字符常量 . 例如 '0', 'A', 'a', 转义字符 '\\', '\0', '\n'
上面的字符对应的值或者含义 48, 65, 97 , 斜线本身 , 0 , 换行 (10)
宏定义 .#define NUM 10 ( 让数字有名字 ) , 宏仅仅是字符替换
int main () // 科学计数法的表示
{
printf ( "%f\n" , 1.e2 ); //ok
printf ( "%f\n" , . 1e2 ); //ok
//printf("%f\n", 1.e);//error, 不能缺省指数
printf ( "%f\n" , 3.e0 ); //ok
//printf("%f\n", 2.e2.4);//error 指数不能是小数 , 可以使用 pow 函数替代
//printf("%f\n",3.1ea);//error, 指数不能是变量 , 可以使用 pow 函数替代
return 0 ;
}
int main ()
{ //%c 输出该字符 ,%d 输出该字符的 ASCII
printf ( " 字符 :%c, 对应的值 :%d\n" , '0' , '0' ); //0,48
printf ( " 字符 :%c, 对应的值 :%d\n" , 'A' , 'A' ); //A,65
printf ( " 字符 :%c, 对应的值 :%d\n" , 'a' , 'a' ); //a,97
printf ( " 字符 :%c, 对应的值 :%d\n" , '\0' , '\0' ); // 不可打印 ,0
printf ( " 字符 :%c, 对应的值 :%d\n" , '\\' , '\\' ); //\,92
printf ( " 字符 :%c, 对应的值 :%d\n" , '\n' , '\n' ); // 换行 ,10
return 0 ;
}
宏的使用
#define PI 3.1415926 //1. 数字有名字 ,2. 一改全改
int main ()
{
//PI = 3.14;//error, 宏不能改变
double r = 5 ;
double c = 2 * PI * r ;
double s = PI * r * r ;
return 0 ;
}
4. 变量
变量 : 可以修改的值 , 先定义后使用
标识符 : 函数名 , 变量名 , 宏名 , 总之就是名字 . 命名规则 :
1. 只能包含字母 , 数字和下划线 _
2. 不能以数字开头
3. 不能使用关键字 . 例如 .int float = 10;
4. 区分大小写
1.break
作用 : 跳出一层循环或者跳出 switch.
:1+2+3+...+x<1000; 1+2+3+...+x+(x+1)>1000, x 的值
int main ()
{
int sum = 0 ; //
int x ;
for ( x = 1 ; ; ++ x )
{
sum += x ;
if ( sum > 1000 )
break ; // 跳出一层循环
}
printf ( "%d,%d\n" , x - 1 , sum );
return 0 ;
}
2.continue
作用 : 提前结束本次 ( ) 循环 , 直接进入下一次循环 .
: 输出 1~200 之间能被 3 5 整除的数字
int main ()
{
for ( int i = 1 ; i < 200 ; i ++ )
{
if ( i % 15 != 0 ) //1 != 0
continue ;
printf ( "%d\n" , i );
}
/*for (int i = 1; i < 200; i++)
{
if (i % 15 == 0)
printf("%d\n",i);
}*/
return 0 ;
}
穷举法
穷举法 : 也称枚举法 , 在给定范围内把所有的情况全部列举一遍 .
1. 10,5,1 面值的人民币足够多 , 现在需要 18 , 一共有多少种组合方法
int main ()
{
int sum = 0 ;
for ( int i10 = 0 ; i10 <= 18 / 10 ; i10 ++ ) //10 元的数量 {
for ( int i5 = 0 ; i5 <= 18 / 5 ; i5 ++ )
{
if ( i10 * 10 + i5 * 5 > 18 )
continue ; //??
for ( int i1 = 0 ; i1 <= 18 / 1 ; i1 ++ )
{
sum = i10 * 10 + i5 * 5 + i1 * 1 ;
if ( sum == 18 )
printf ( "%d,%d,%d\n" , i10 , i5 , i1 );
else if ( sum > 18 )
break ; //??
}
}
}
return 0 ;
}
2. 在一个陌生的国度,有 5 种不同的硬币单位: 15 23 29 41 67 (分)。寻找所有组成 18 8
(即 1808 分)的可能组合。假定对于所有面值的硬币你都有足够的硬币。
int main ()
{
int sum = 0 ;
int count = 0 ; // 符合 1808 条件的次数
int tmp = 0 ; // 罗列的所有穷举情况次数 ( 符合条件 + 不符合条件 )//731693655 ,8637396
for ( int i15 = 0 ; i15 <= 1808 / 15 ; i15 ++ )
{
for ( int i23 = 0 ; i23 <= 1808 / 23 ; i23 ++ )
{
if ( i15 * 15 + i23 * 23 > 1808 )
continue ;
for ( int i29 = 0 ; i29 <= 1808 / 29 ; i29 ++ )
{
if ( i15 * 15 + i23 * 23 + i29 * 29 > 1808 )
continue ;
for ( int i41 = 0 ; i41 <= 1808 / 41 ; i41 ++ )
{
if ( i15 * 15 + i23 * 23 + i29 * 29 + i41 * 41 > 1808 )
continue ;
for ( int i67 = 0 ; i67 <= 1808 / 67 ; i67 ++ )
{
tmp ++ ;
sum = i15 * 15 + i23 * 23 + i29 * 29 + i41 * 41 + i67 *
67 ;
if ( sum == 1808 )
{
count ++ ;
//printf("%d,%d,%d,%d,%d\n",i15,i23,i29,i41,i67);
}
else if ( sum > 1808 )
break ;
}
}
}
}
}
printf ( " 一共计算了 %d \n" , tmp );
printf ( " 一共 %d 种组合 \n" , count );
return 0 ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值