目录
在一个有序数组中查找具体的某个数字n。功能:在v[0]<=v[1]<=v[2].......<=v[n-1]的数组中查找x。
编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则登录成功,如果输入三次均输入错误,则退出程序)
计算n的阶乘
#include<stdio.h>
int main()
{
// 本代码中不考虑溢出的情况
int i;
int j=1,pro=1;
printf("请输入计算阶乘的数:");
scanf("%d",&i);
while(j<=i)//此处可换为for循环
{
pro=j*pro;
j++;
}
printf("\n该数的阶乘为 %d\n",pro);
return 0;
}
计算1!+2!+3!+.......10!
//①1*1+1*1*2+1*1*2*3+.......+1*1*2*3*4*5*6*7*8*9*10
#include<stdio.h>
int main()
{
int j,m;
int sum=0;
for(j=1;j<=10;j++)
{
int pro=1;//pro的初始化放在大for循环里 避免pro累计乘
for(m=1;m<=j;m++)
{
pro*=m;
}
sum+=pro;
}
printf("sum=%d\n",sum);
return 0;
}
//上面代码效率不高 每次都需要从1开始乘法 可作优化
//②1*1+pro*2+pro*3+.......+pro*10
pro->pro ->pro->pro
#include<stdio.h>
int main()
{
int j;
int sum=0,pro=1;
for(j=1;j<=3;j++)
{
// 减少一层循环 提高效率
pro*=j;
sum+=pro;
}
printf("sum=%d\n",sum);
return 0;
}
在一个有序数组中查找具体的某个数字n。功能:在v[0]<=v[1]<=v[2].......<=v[n-1]的数组中查找x。
#include <stdio.h>
int main()
{
// ①逐个比对
int arr[]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof(arr)/sizeof(arr[0]);
int k=7,i=0;
for(i;i<=sz;i++)
{
if(arr[i]==k)
{
printf("找到了,其下标为%d\n",i);
break;
}
}
if(i>sz)
{
printf("没找到\n");
}
// 有序数组中查找数值 可用二分查询法
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;
int k=7;//待查值
while(left<=right)
{
int mid=(left+right)/2;//通过比较不断修改mid的值
// 比较待查值和数组中间值
if(k<arr[mid])
{
right=mid-1;
}
else if(k>arr[mid])
{
left=mid+1;
}
else
{
printf("找到了,在数组中下标为%d\n",mid);//如果有多个相同数值 找到第一个符合的 就打印下标
break;//找到了 退出
}
}
if(left>right)//找不到的情况(需要做判断 避免和break跳出的情况冲突)
{
printf("找不到\n");
}
return 0;
}
编写代码,演示多个字符从两端移动,向中间汇聚。
#include<stdio.h>
#include<string.h>//strlen函数所需的头文件
int main()
{
/*效果展示 welcome to Ccode!
w###############!
we#############e!
......
welcome to Ccode*/
char arr1[]="welcome to Ccode!";
char arr2[]="#################";
int left=0;
// int right=sizeof(arr1)/sizeof(arr1[0])-1; 字符数组中有\0 err:-1 right:-2
int right=strlen(arr1)-1;
while(left<=right)//循环条件
{
arr2[right]=arr1[right];
arr2[left]=arr1[left];
printf("%s\n",arr2);
// 为了使结果更加接近题意
Sleep(1000);//睡眠1000ms
system("cls");//执行操作系统命令的一个函数 cls 清空屏幕
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则登录成功,如果输入三次均输入错误,则退出程序)
#include<stdio.h>
#include<string.h>
int main()
{
int i=0;
char passwd[20]={};
for(i=0;i<3;i++)
{
printf("请输入密码:");
scanf("%s",passwd);
// 典型错误:if(passwd=="123456") 等号不能用于判断两个字符串是否相同
if(strcmp(passwd,"123456")==0)//strcmp用于判断两个字符串是否相等 相等返回0 不相等返回非0
{
printf("输入成功!\n");
break;
}
else
{
printf("密码输入错误!请重新输入\n");
}
}
if(i==3)
{
printf("三次输入错误,请稍后再试\n");
}
return 0;
}