1.一些for循环的变种
#include<stdio.h>
int main()
{
//变种1
for(;;)//无限循环
{
printf("hhhh\n");
}
//变种2(输出的x和y是多少?)
int x,y;
for(x=0,y=0;x<2,y<5;++x,y++)
{
printf("hhh"\n);
}
printf("x=%d\n");
printf("y=%d\n");
}
结果:x=5,y=5;
原因:x加到2之后虽然不满足x<2但是y满足y<5,所以循环继续执行,x继续加1,直到x和y都不满足条件为止
2.循环次数的判别:
#include<stdio.h>
int main()
{
int i=0,k=0;
for(i=0,k=0;k=0;i++,k++)
k++;
return 0;
}
结果:循环次数为0次
原因:因为for循环的表达式2是一个判断条件语句,并不是一个赋值语句,在C语言中,0为假,非0为真,这里将0赋给k,说明k为假,循环终止
3.编写代码,演示多个字符从两端移动,向中间汇聚
//使用for循环
#include<stdio.h>
#include<windows.h>
int main()
{
char arr1[]="welcome to xi'an";
char arr2[]="****************";
int left=0;//两个数组第一个元素的下标
int right=strlen(arr2)-1;//计算两个数组的最后一个元素的下标
for(left=0,right=strlen(arr2)-1;left<=right;++left,--right)
{
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s\n",arr2);
Sleep(1000);//程序的执行挂起1000毫秒(1秒)
}
return 0;
}
//使用while循环
#include<stdio.h>
#include<windows.h>
int main()
{
char arr1[]="welcome to xi'an";
char arr2[]="****************";
int left=0;//两个数组第一个元素的下标
int right=strlen(arr2)-1;//计算两个数组的最后一个元素的下标
while(left<=right)
{
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s\n",arr2);
Sleep(1000);
++left;
--right;
}
return 0;
}
4.编写代码实现,模拟用户登陆情景,并且只能登录三次(只允许输入三次密码,如果密码正确则提示成功,如果三次均输入错误,则退出程序)
#include<stdio.h>
#include<stringh>
int main()
{
char psw[]="123456";
char arr[6]="";
int i=0;
printf("请输入你的密码:\n");
for(i=0;i<3;++i)
{
scanf("%s",arr);
if(strcmp(arr,psw)==0)
break;
printf("密码错误,请重新输入\n");
}
if(i==3)
printf("登录失败\n");
else
printf("登陆成功\n");
return 0;
}
5.计算1!+2!+…+10!
#include<stdio.h>
int Factorial(int x)
{
if(x==1)
return 1;
int i=x;
int pro=1;
for(i=x;i>1;--i)
pro*=i;
return pro;
}
int main()
{
int i=1;
int sum=0;
for(i=1;i<=10;++i)
sum+=Factorial(i);
printf("sum=%d\n",sum);
}
6.实现一个二分查找法
#include<stdio.h>
void BinarySearch(int* arr,int right,int n)
{
int left=0;
int mid=0;
while(left<=right)
{
mid=(left+right)/2;
if(arr[mid]<n)
left=mid+1;
else if(arr[mid]>n)
right=mid-1;
else
break;
}
if(left<=right)
printf("找到了,下标为%d\n",mid);
else
printf("没找到\n");
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
printf("请输入你要查询的数字\n");
int n=0;
scanf("%d",&n);
int left=0;
int right=sizeof(arr)/sizeof(arr[0])-1;
BinarySearch(arr,right,n);
}
7.恶搞关机程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char str[]="0";
system("shutdown -s -t 60");
again:
printf("你的电脑将在10s中后关机,输入"我是猪"取消:\n");
scanf("%s",str);
if(strcmp(str,"我是猪")==0)
{
printf("关机取消\n");
system("shutdown -a");
}
else
goto again;
system("pause");
}
}