编程细节以及条件语句与循环语句嵌套
*常量与字符串常量(char)
%s表示输出一串字符串
字符常量‘a’ 字符串常量“a”
每个字符串结尾,编译器会自动添加结束标志位\0,即“a”包含两个字符“a”与\0
printf 输出一个字符串
putchar 输出一个char (专门)
用于char printf(“%c\n”,a);
等于 putchar(a)或者(97)ASCII码; 表示相同输出a
putchar() 括号内可以输入转义字符(‘……’),变量,数字,字符(但必须在ASCII范围内)
%d int 有符号 十进制
%f 单精度 float
%lf 双精度 double
%c 字符型 转为ASCII码 char
%s 字符串 输出字符串中的字符至字符串中的空字符(字符串以‘\0’结尾,‘\0’为空字符 )
%p 以十六进制输出指针 void
%% 输出一个百分号
%t 将光标当前位置向下一个 tab(8个字)后置(水平制表符)
eg1
int a=10;
printf("%-5d\n",a); 表示10_ _ ,10后面空3格包含10两位凑5位,负号表示加0到后面
eg2
int a=10;
printf("%5d\n",a); 表示10printf("%5d\n",a); 表示 _ _10,10前面空3格包含10两位凑5位
)
float a=3.14;
eg(浮点型)
printf("%7.2f\n",a); 表示(7表示整体长度7位)(.2表示小数点后几位)
输出 0003.14
char类型 getchar与scanf
eg
char a=123456
printf("%d\t%d",a,b); 表示输出a_ _ _ _ _ _ _ _b(之间空8格\t)
printf("%3d",a); 表示输出123_456ch=getchar()与scanf只接受键盘获取的字符 ()内不做添加
gerchar 有暂时停留界面作用
整型相除比为整型
取余数 % 只能对整型操作
a++ 表示后自增 (先表达式运算赋值b再算++)
++a 表示前自增 (先运行++运算)
eg
a=10;
b=a++10; 则b=100 a=11
b=++a10; 则b=110 a=11
比较运算符(重点)
“==”表示 等于
“!=”表示 不等于
“>=” “<=”表示 大于等于 小于等于
返回值为0,1表示真与假(是 否)
eg
int a=10;
int b=20;
printr("%d\n",a==b); 输出 0
运算符的优先级
单目运算符 高于 双目运算符 高于 三目运算符
1、{ }
2、++ – !(否) sizeof 数据类型强制转换 eg上面有float a,下面运算中可以用(int)a 代替 a
3、* / %(取余)
4、+ -
5、> < <= >=
6、== !=
7、&&(和)
8、||(或)
9、= += -= *= /= (赋值)
eg
int a=10;
int b=20;
int c=10;
printf("%d\n",c=++a<=b2); 依次算(++a)(b2)(++a<=b2)(赋值给c)输出 1
printf("%d\n,a"); 输出 11
printf("%d\n,b"); 输出 20 若上面是b=2,则输出 40
printf("%d\n,c"); 输出 1 因为10不等于才所赋的值
逻辑运算符
!(非) &&(和) ||(或)
非真为假,非假为真 非非真(表示1【假】)
同真为真,其余为假
eg
int a=10;
printf("%d\n",!a) 输出 1【假】
printf("%d\n",!!a) 输出 1【假】
类型转换
1、自动转换
2、强制转换 形式(int)a
类型转换原则:占用内存字节少(值域小)的类型向占用内存字节多(值域大)的类型转换,以保精度不变
eg
float a=3.14;
int b=3;
printf("%lf\n",ab); 与 printf("%f\n",ab);相同输出浮点型
int sum=(int)ab 将a转换成int类型,不四舍五入
printf("%d\n",ab) 输出整型
程序的流程结构:
顺序结构:程序按顺序执行,不发生跳转
选择结构:依据是否满足条件,有选择地执行相应功能
循环结构:依据是否满足条件,循环多次执行某相应代码
形式:if{ } if{ } else{ } if{ } else if{ } else{ }
(可嵌套)
eg比较三个值的大小
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int a, b, c;
printf(“请输入三个值:\n”);
scanf("%d,%d,%d",&a,&b,&c);
if (a > b)
{
if (a > c)
{
printf(“a是最大值”);
}
else
{
printf(“c是最大值”);
}
}
else
{
if (b > c)
{
printf(“b是最大值”);
}
else
{
printf(“c是最大值”);
}
}
return EXIT_SUCCESS;
}
三目运算符
eg
printf(“输出最大值:\n”,a>b?a:b) 表示a>b,输出a,否则输出b
eg
a>b?(a>c?a:c):(b>c?b:c) (嵌入两个,先算括号再计算a>b?_ _)
switch语句(效率比 if 高)
eg
int main2()
{
int score;
scanf("%d", &score);
switch (score / 10)
{
case 10:
printf(“优秀\n”);
break;
case 9:
printf(“优秀\n”);
break;
case 8:
printf(“良好\n”);
break;
case 7:
printf(“及格\n”);
break;
case 6:
printf(“及格\n”);
break;
default:
printf(“不及格\n”);
break;
}
return EXIT_SUCCESS;
}
while语句
eg1
#include<stdio.h>
int main3()
{
int i = 1;
while (i < 10)
{
printf("%d\n", i);
i++;
}
return 0;
}
eg2 打印1-100所有偶数
int main4()
{
int i = 1;
while (i <= 10)
{
if (i % 2 == 0)
{
printf("%d\n", i);
}
i++;
}
return 0;
}
eg3 凡是带7或7的倍数需敲桌子,否则正常输出
int main5()
{
int i = 1;
while (i < 100)
{
if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) //7的倍数 个位为7 十位为7
{
printf(“敲桌子\n”);
}
else
{
printf("%d\n", i);
}
i++;
}
return 0;
}
do while 语句 (先执行条件代码,再进行判断)
eg1
#include<stdio.h>
int main6()
{
int i = 1;
do
{
printf("%d\n", i);
i++;
}
while (i < 10);
return 0;
}
eg2 水仙花数(从100-999各个个位数的立方和相加等于这个数本身就是一个水仙花数)
int main7()
{
int i = 100;
do
{
int a = i % 10; //个位数
int b = i / 10 % 10; //十位数
int c = i / 100; //百位数
if (a * a * a + b * b * b + c * c * c == i)
{
printf("%d\n", i);
}
i++;
}
while (i < 999);
return 0;
}
for 语句
eg1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<stdlib.h>//随机局部变量a=rand()%100;
int main8()
{
int i = 0; //for括号内或者在此定义i都可以
for (int i = 0;i < 10;i++);
{
printf("%d\n",i);
}
return 0;
}
eg2 猜数字
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
int main9()
{
int value=rand()%100; //0到100
int num;
for (; 😉 //h或者 while(1)表示死循环
{
printf(“请输入数字:\n”);
scanf("%d", &num);
if (value > num)
{
printf(“你输入的数太小了\n”);
}
else if (value < num)
{
printf(“你输入的数太大了\n”);
}
else
{
printf(“恭喜你,猜对了\n”);
break; //在循环语句中表示跳出或结束循环
}
}
return EXIT_SUCCESS;
}
eg3 随机输出10个100之内的数
int main()
{
stand(unsigned int)time(NULL)
int value=rand()%10; //省略这一句,在for语句内有表示即可
for(int i=0;i<10;i++)
{
int value=rand()%10;
printf("%d\n",i);
}
return 0
}
嵌套循环
eg1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h> //sleep的应用需要
int main10()
{
for (int i = 0;i < 5;i++)
{
for (int j = 0;j < 5;j++)
{
printf(“i=%d,j=%d\n”, i, j);
}
}
return 0;
}
eg3 电子时钟
int main11()
{
for (int i = 0;i < 24;i++)
{
for (int j = 0;j < 60;j++)
{
for (int k = 0;k < 60;k++)
{
system(“cls”); //表示清屏,将所有步骤集中于一个变化中
printf("%02d:%02d:%02d\n", i, j, k);
Sleep(950); //休息950毫秒在执行
}
}
}
return 0;
}
eg4 九九乘法口诀
int main12()
{
for (int i = 1;i <= 9;i++)
{
for (int j = 1;j <= i;j++)
{
printf("%d*%d=%d\t", j, i, j * i);
}
printf("\n");
}
return 0;
}
原文链接:http://blog.qmgua.com/?id=50
=========================================
http://blog.qmgua.com/ 为 “布尔博客” 唯一官方服务平台,请勿相信其他任何渠道。