1.练习:编写代码,演示多个字符从两端移动,向中间汇聚。
2.编写代码实现,模拟用户登录情景,并且只能登录三次。
只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。
3. 输出一个整数的每一位。
4. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#define M 10
void remmove(char arr1[],char arr2[])//缺点:两个数组的长度被固定,通用性差
{
int left=0;
int right=M-1;
while(left<right)
{
Sleep(1000);
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("\n%s\n",arr2);
left++;
right--;
}
}
int main()
{
char arr1[M]={0};
char arr2[M]={0};
scanf("%s",&arr1);
scanf("%s",&arr2);
printf("%s\n",arr1);
printf("%s\n",arr2);
remmove(arr1,arr2);
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
void remmove(char arr1[],char arr2[],int sz)
{
int left=0;
int right=sz-1;
while(left<=right)
{
Sleep(1000);
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("\n%s\n",arr2);
left++;
right--;
}
}
int main()
{
char arr1[]="abcdefgh";
char arr2[]="********";//注意尽量使两个字符串长度一致
int sz=0;
sz=strlen(arr2);
printf("%s\n",arr1);
printf("%s\n",arr2);
remmove(arr1,arr2,sz);
system("pause");
return 0;
}
2.编写代码实现,模拟用户登录情景,并且只能登录三次。
只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *correct_password="dxxwan";
char password[7]={0};
int chance=0;
for(chance=3; chance>0; chance--)
{
printf("你还有%d次输入机会,请慎重.\n",chance);
printf("请输入密码:");
gets(password);
if(strcmp(correct_password,password)==0)
{
printf("登录成功.\n");
break;
}
}
if(chance==0)
{
printf("password error!\n");
}
system("pause");
return 0;
}
3. 输出一个整数的每一位。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num=0;
int i=0;
int n=0;//整数的位数
int ret=0;//用来保存并输出每一位
printf("请输入一个数整数以及它的位数:");
scanf("%d%d",&num,&n);
for(i=0; i<n; i++)//缺点:输出位数和正常位数相反
{
ret=num%10;
num/=10;
printf("%d ",ret);
}
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define N 4//整数的位数
int main()
{
int num=0;
int arr[N]={0};//用数组暂时保存每一位
int i=0;
printf("请输入一个数整数:");
scanf("%d",&num);
for(i=0; i<N; i++)
{
arr[i]=num%10;
num/=10;
}
for(i=N-1; i>=0; i--)
{
printf("%d ",arr[i]);
}
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int num=0;
int n=0;//整数的位数
int ret=0;//用来保存并输出每一位
int tmp=0;//保存num的临时值
printf("请输入一个数整数以及它的位数:");
scanf("%d%d",&num,&n);
while(n>0)
{
tmp=num;
ret=(int)(tmp/(pow((double)10,n-1)));
num=(int)(num-ret*pow((double)10,n-1));
printf("%d ",ret);
n--;
}
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void print(int n)//递归
{
if(n>=10)
{
print(n/10);
}
printf("%d ",n%10);
}
int main()
{
int num=0;
printf("请输入一个数整数:");
scanf("%d",&num);
print(num);
system("pause");
return 0;
}
4. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int deno=1;//分母
double flag=1.0;//符号位
double current=0.0;//当前项和
double sum=0.0;//当前项的和
for(deno=1; deno<=100; deno++)
{
current=flag/deno;
sum=sum+current;
flag=-flag;
}
printf("1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值为:%lf\n",sum);
system("pause");
return 0;
}
5. 编写程序数一下 1到 100 的所有整数中出现多少次数字 9
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=1;
int count=0;
for(i=1; i<=100; i++)
{
if(i/10==9)
{
count++;
}
if(i%9==0)
{
count++;
}
}
printf("1到100有%d个9\n",count);
system("pause");
return 0;
}