0
点赞
收藏
分享

微信扫一扫

练习答案

1.计算 n的阶乘。

#include <stdio.h>
int main()
{
int i=0;
int ret=1;
int n=0;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
ret=ret*i;
}
printf("%d\n",ret);
return 0;
}

此代码只考虑在int 范围内的阶乘

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

#include <stdio.h>
int main()
{
int n=0;
int ret=1;
int sum=0;
for(n=1;n<=10;n++)
{
ret=ret*n;
sum=sum+ret;
}

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

3. 在一个有序数组中查找具体的某个数字n。

#include <stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=7;
int left=0;
int sz=sizeof(arr)/sizeof(arr[0]);
int right=sz-1;
while(left<=ringht)
{
int mid=(left+right)/2;
if(arr[mid]<k)
{
left=mid+1;
}
else if(arr[mid]>k)
{
right=mid-1;
}
else
{
printf("找到了,下标为:%d",mid);
break;
}
}
if(left>right)
{
printf("没找到\n")
}
return 0;
}

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

#include <stdio.h>
#include <string.h>
#include<windows.h>
#include<stdlib.h>
int main()
{
arr1[]="welcome to 51CTO博客!!!";
arr2[]="#######################";
int left=0;
int right=strlen(arr1) - 1;
while(left<right)
{
arr2[left]=arr1[left];
arr2[right]=arr2[right];
printf("%s\n",arr2);
Sleep(1000);
system("cls");
left++;
right++;
}
printf("%s\n",arr2);
return 0;
}

int right = sizeof(arr1) / sizeof(arr1[0]) - 1;//错误的算法

int right = sizeof(arr1) / sizeof(arr1[0]) - 2;//正确的算法,但是有点麻烦

int right = strlen(arr1) - 1;//求字符串长度的

 Sleep(1000);//休息一秒

system("cls");//执行系统命令的一个函数-cls-清空屏幕

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

#include <stdio.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)
{
printf("登录成功\n");
break;
}
else
{
printf("密码错误\n");
}
if(i=3)
printf("三次密码均错误,退出程序\n");
}
return 0;
}

if (strcmp(password, "123456") == 0) //==不能用来比较两个字符串是否相等,应该使用一个库函数-strcmp






举报

相关推荐

0 条评论