一.练习题

题目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,最后即可实现上述效果,如图所示:

C语言分支与循环(9)--- 练习题(2)_for循环


题目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循环的入口条件则会输出密码输入错误次数过多!退出程序!的字样,以下是程序运行的结果:

C语言分支与循环(9)--- 练习题(2)_while循环_02

C语言分支与循环(9)--- 练习题(2)_for循环_03