今天看的课三个半小时,太长了,要吸收的东西有点多
getcher用法
#include<stdio.h>
int main()
{
int ret =0;
char password[20]={0};
printf("请输入密码:>");
scanf("%s",password);//输入密码,并存放在password数组中
//缓冲区还剩余一个‘\n’
getchar();
printf("请确认(Y/N):>");
ret = getchar();
if (ret=='Y')
{
printf("确认成功\n");
}
else
{
printf("确认放弃\n");
}
return 0;
}
putchar
#include<stdio.h>
int main()
{
int ch=0;
while ((ch=getchar())!=EOF)
{
if (ch<'0'||ch>'9')
continue;
putchar(ch);
}
return 0;
}
for循环
for(表达式1;表达式2;表达式3)
循环语句:
#include<stdio.h>
int main()
{
int i=0;
for (i=1;i<11;i++)
{
printf("%d\n",i);
}
return 0;
}
continue在for和while循环中的区别
#include<stdio.h>
int main()
{
int i=0;
for (i=1;i<11;i++)
{
if(i==6) //不会打印6,但也不会出现死循环,在while中会出现死循环
continue;
printf("%d\n",i);
}
return 0;
}
break没区别,都会打断,跳出循环
for循环中可以省略,
下列循环几次?
#include<stdio.h>
int main()
{
int i=0;
int k=0;
for (i=0,k=0;k=0;i++,k++)
k++; //循环0次,因为此时的判断条件k是赋值0,而0是假的,故不会进入循环
return 0;
}
do while 循环
do
循环语句
while
打印1到10
#include<stdio.h>
int main()
{
int i=1;
do
{
printf("%d\n",i);
i++;
}
while(i<=10);
return 0;
}
练习
计算n的阶乘
#include<stdio.h>
int main()
{
int i=0;
int n=0;
int ret=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ret=ret*i;
}
printf("ret=%d\n",ret);
return 0;
}
计算1!+2!+3!+……+n!=:
法一:
#include<stdio.h>
int main()
{
int i=0;
int n=0;
int ret=1;
int sum=0;
for (n=1;n<=3;n++)
{
ret=1;
for(i=1;i<=n;i++)
{
ret=ret*i;
}
sum=ret+sum;
}
printf("sum=%d\n",sum);
return 0;
}
法二:
#include<stdio.h>
int main()
{
int i=0;
int n=0;
int ret=1;
int sum=0;
for (n=1;n<=3;n++)
{
ret=ret*n;
sum=ret+sum;
}
printf("sum=%d\n",sum);
return 0;
在一个有序数组中查找具体的某个数字n。
#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=7;
int i=0;
int sz=sizeof(arr)/sizeof(arr[0]);
for (i=0;i<=sz;i++)
{
if(k==arr[i])
{
printf("找到了下标是:%d\n",i);
break;
}
}
if(i==sz)
printf("找不到\n");
return 0;
}
二分法查找:
#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=5;
int sz=sizeof(arr)/sizeof(arr[0]);
int right=sz-1;
int left=0;
while(left<=right)
{
int mid=(left+right)/2;
if(arr[mid]>k)
{
right=mid-1;
}
else if(arr[mid]<k)
{
left=mid+1;
}
else
{
printf("找到了。下标是:%d\n",mid);
break;
}
}
if(left>right)
{
printf("找不到\n");
}
return 0;
}
输入密码,只能输入三次
#include<stdio.h>
#include<string.h>
int main()
{
int i=0;
char password[20]={0};
for(i=0;i<3;i++)
{
printf("请输入密码:>");
scanf("%s",password);
if(strcmp(password,"123456")==0)//==不能用来比较两个字符串是否相等,引入一个库函数strcmp
{
printf("登陆成功\n");
break;
}
}
if(i==3)
printf("密码错误,滚吧\n");
return 0;
}