发完才发现可以插入代码块
1、输入函数 从 输入缓冲区读取数据
2、利用getchar() 读取剩下\n ,若缓冲区不一定只剩\n,则用while循环结合getchar() 函数
int main()
{ int ch = 0;
int ret = 0;
// while(ch = getchar() != EOF);
// {
// putchar(ch);
// }
//实际价值
char password[20] = {0};
printf("请输入密码:>");
scanf("%s",password);//输入密码,并存入password数组中,scanf()不能读取空格
//缓冲区还剩余/n
//读取一下\n 用getchar
// getchar(); //都去掉缓冲区的 \n,从而不影响下面的输入
while((ch = getchar()) != '\n');//但输入的数据中存在空格或其他一些字符,导致scanf不能读取至剩下'\n',while函数循环
printf("请确认(Y/N):>");
ret = getchar();
if(ret == 'Y')
{ printf("确认成功\n"); }
else
{ printf("放弃确认\n"); }
return 0;
}//
int main()
{
char ch = '\0';
while ((ch = getchar()) != EOF) //EOF----文件结束标志
{
if (ch < '0' || ch > '9')
continue;
putchar(ch);
}
return 0;
}
//这个代码的作用是:只打印数字字符,跳过其他字符的、
for 循环;
1\for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1 :表达式1为初始化部分,用于初始化循环变量的。
表达式2 :表达式2为条件判断部分,用于判断循环时候终止。
表达式3 :表达式3为调整部分,用于循环条件的调整。
2\流程
3、continue在while循环与for循环中的差别:
因为continue是满足条件就跳过其后代码回到循环入口,while在循环入口没有调整部分,其满足continue的条件不会改变,导致一直跳回陷入循环;而for循环在入口处有调整部分,再跳回后调整使其不满足continue条件进而进一步循环。
4、
不可在for 循环体内修改循环变量,防止 for 循环失去控制。建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}
5、
for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问题;
判断部分如果被省略,那么判断结果恒为真
int main()
{ for(;;)
{ printf("hehe\n"); }
return 0;}
输出结果为 hehe 无限循环
int main()
{
int i = 0;
int j = 0;
for(;i<10;i++)
{
for(;j<10;j++)
{
printf("heihei\n");
}
}//10*10 = 100
return 0;
}//只输出10个 ”heihei“
省略第二个for循环的初始化部分,导致只输出十个 heihei ;因为缺乏初始化部分,在第一次j的循环结束后,j的值就变成10(int j= 0,写在第一个for循环前面,此时j不是该for循环的局部变量),导致i++后无法再次进入 j 的for循环,最后只会输出10个 ‘heihei’()
将int j = 0 写进第二个for循环前面,则会输出100个”heihei“
int main()
{
int i = 0;
for(;i<10;i++)
{
int j = 0;
for(;j<10;j++)
{
printf("heihei\n");
}
}
return 0;
}//输出100个”heihei“
6、
初始化部分可以为多个变量:
int main()
{
int x, y;
for (x = 0, y = 0; x<2 && y<5; ++x, y++)
{
printf("hehe\n");
}
return 0;
}//输出两个hehe
7、
/* #include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for(i =0,k=0; k=0; i++,k++)//中间判断部分不是判断语句,是将0赋值给K, 0为假,则不进入循环
k++;
return 0;
} *///循环0次
do……while()循环
1、语法
2、流程
3、同样,若有break,终止循环
int main()
{int i = 10;
do
{ if(5 == i)
break;
printf("%d\n", i);
}while(i<10);
return 0;
}
4、continue ,再该函数中使用continue,会产生与while相同的结果,陷入死循环
int main()
{
int i = 10;
do
{ if(5 == i)
continue;
printf("%d\n", i);
}while(i<10);
return 0;
}
计算 n的阶乘。
int main()
{
int i = 0;
int sum = 1;
int n;
printf("输入一个非负整数:");
scanf("%d",&n);
if(n<0)
{
printf("error---负数没有阶乘");
}
else if(n==0)
{
printf("%d",sum);
}
else
{
for(i =1;i<=n;i++)
{
sum = sum*i;
}
printf("%d",sum);
}
return 0;
}
计算1!+2!……+n!:
int main()
{
int i = 0;
int sum = 1;
int a = 0;
int n;
printf("输入一个非负整数:");
scanf("%d",&n);
if(n<0)
{
printf("error---负数没有阶乘");
}
else if(n==0)
{
sum = sum;
a = a+sum;
printf("sum = %d\n",sum);
printf("a = %d",a);
}
else
{
for(i =1;i<=n;i++)
{
sum = sum*i;
a = a+sum;
}
printf("sum = %d\n",sum);
printf("a = %d",a);
}
return 0;
}