返回

分支与循环的练习(阶乘,阶乘的加,数组中找数字,字符向两边汇聚,模拟用户登录场景,登三次)

发布时间:2023-02-17 14:51:57 207

1.求n的阶乘

#include
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;
}//这里不考虑溢出的情况


2.计算1!+2!+3!....+10!

#include
int main()
{
int i=0;
int n=0;
int ret=1;
int sum=0;
for(n=1;n<=10;n++)
{
ret=1;
for(i=1;i<=n;i++)
{
ret=ret*i;
}
sum=sum+ret;
}
printf("ret=%d\n",ret);
return 0;
}

对上述代码的一个优化

#include
int main()
{
int i=0;
int n=0;
int ret=1;
int sum=0;
for(n=1;n<=10;n++)
{

ret=ret*i;

sum=sum+ret;
}
printf("ret=%d\n",ret);
return 0;
}


3.在一个有序数组中查找具体的某个数字n.编写int binsearch(int x,int v[],int n);功能:在v[0]<=v[1]<=v[2]<=....<=v[n-1]的数组中查找x

int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=7;
//写一个代码,在arr数组(有序的)中找到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;
}

用折半查找算法(二分查找算法)简化上述代码,使代码运行速度更快

int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof(arr)/sizeof(arr[0]);//求元素个数
int left=0;//左下标
int right=sz-1;//右下标

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;
}


4.编写代码,演示多个字符从两端移动,向中间汇聚

(表达效果):

比如想打印welcome to bit!!!!!!

                 ###############

                 w#############!

                we############!!                           

               wel###########!!!

...

                welcome to bit!!!!!!

//char arr[]="abc";

//[a b c \0]

//0  1 2  3

//4-2

#include
#include
#include
#include
int main()
{
char arr1[]="welcome to bit!!!!!!"
char arr2[]="####################"
int left=0;
//int right=sizeof(arr1)/sizeof(arr[0]-2);这一个可以用下一句替换
int right=strlen(arr1)-1;//strlen可以直接计算字符串的长度

/*arr2[left]=arr1[left];
arr2[right]=arr1[right];
print("%s\n",arr2);
left++;
right--;
....*/ //所以这里要用上循环

while(left<=right)
{
arr2[left]=arr1[left];
arr2[right]=arr1[right];
print("%s\n",arr2);
//休息一秒
Sleep(1000);//1000毫秒=1秒,用这个函数需要在开头引上window.h
//执行系统命令的一个函数-sls-清空屏幕
system("cls");//用这个函数需要引用stdlib.h
left++;
right--;
}
return 0;
}



5.编写代码实现,模拟用户登录情景,并且只能登陆三次.(只允许输入三次密码,如果密码正确则提示登陆成功,如果三次均输入错误,则退出程序.)

int main()
{
int i=0;
char password[20]={0};
for(i=0;i<3;i++)
{
printf("请输入密码:>")
scanf("%s",password);
//if(password=="123456")//==不能用来比较两个字符串是否相等,
//应该使用一个库函数-strcmp
if(strcmp(password,"123456")==0)
{
printf("登陆成功\n");
break;
}
}
return 0;
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
C语言小白刷题 2023-02-17 14:05:45