一.练习题
题目1
题目要求:编写一段代码,演示多个字符从两端移动,像中间汇聚,实现以下效果
###############
H#############!
He###########d!
········
Hello MyFriend!
以下是示例代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void){
char arr1[] = "Hello MyFriend!";
char arr2[] = "###############";
int left = 0;
int right = strlen(arr1) - 1;
while (left<=right){
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
left++;
right--;
}
getchar();
return 0;
}
代码逻辑是创建了两个char类型的字符串数组,其中arr1字符串数组为需要输出的内容,arr2字符串数组为起初的符号,声明变量left并为其赋值(left=0)声明变量right并为其赋值(right=strlen(arr2)-1),strlen是用于计算字符串长度的函数,将strlen()函数计算出的长度-1就等于数组的最大下标
将arr1[left]中的内容赋值给arr2[left],同理将arr2[right]中的内容赋值给arr2[right]中,也就是将从左往右将arr1中的内容赋值给arr2,同理将arr1中的内容从右往左赋值给arr2,并调用printf()函数对数组arr2进行输出,然后将left的值进行自增,将right的值自减,while语句的入口条件则是left<=right,最后即可实现上述效果,如图所示:
题目2:
编写一段代码,要求用户输入相应的密码,当密码输入正确后提示登录成功,当连续三次输入错误后退出程序
示例代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main(void){
int error = 0;
char password[20] = { 0 };
for ( error = 0; error < 3; error++){
printf("请输入密码:");
scanf("%s", password);
if (strcmp(password,"123456")==0){
printf("登录成功!\n");
break;
}
}
if (error == 3){
printf("密码输入错误次数过多!退出程序!\n");
}
system("pause");
return 0;
}
利用for语句来进行循环,使用scanf()函数获取用户输入的内容,然后利用strcmp()函数对用户输入的字符串进行比较(注意!比较字符串不能用==)当用户输入的数据符合密码后输出登录成功,当用户输入不符合密码后会要求用户重新进行输入,并将error进行自增,当error=>3的时候不满足for循环的入口条件则会输出密码输入错误次数过多!退出程序!的字样,以下是程序运行的结果: