成都网站建设设计

将想法与焦点和您一起共享

c语言百日刷题第七天-创新互联

终于一周了!战线有点小长哈哈....继续加油!!!

创新互联成立与2013年,先为七星关区等服务建站,七星关区等地企业,进行企业商务咨询服务。为七星关区企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

目录

1.模拟用户登录功能

2、随便定义一个字符数组,然后在当前数组中把字符串逆序

3、编写一个递归函数,求10以内的阶乘

4.求一个数的反序数,也称为镜面数。例如1234的反序数是4321

5、计算器——函数封装


1.模拟用户登录功能

题目:1,编写程序,模拟用户登录功能

1.1 提示用户输入用户名和密码
1.2 输入密码时要实现掩码功能,比如输入密码为123456的时候, 显示 * *****,同时能具备按删除键能够删除的功能。

题目分析:此题关键在于如何删除,即如何对显示的字符进行退格“\b \b"注意中间要加上空格;

第二个问题就是字符需要一个一个输入,而且要保证真实感,即不用输入一个字符按一次回车,这里使用_getch,下面是关于_getch的介绍:当用户按下某个字符时,函数自动提取,无需按回车;第三个就是回车的判断,因为windows输入Enter,会产生两个转义字符\r\n,所以_getch会返回13(\r),\n无法读取,所以无法判断,因此可以通过第一个转义字符来判断

#include#include#include#includeint main()
{
	int i = 0;
	char c;
	char user[10], _code[255]={0};
	printf("请输入用户名:");
	scanf("%s", user);
	printf("请输入密  码:");
	while (true)
	{
		c = _getch();
		if (c == '\r') 
		{
			_code[i] = '\0';
			break;
		}
		else if (c == '\b') {
			if (i >0) 
			{
				i--;
				//对显示的字符进行退格操作
				printf("\b \b");
				_code[i] = '\0';
				continue;
			}
		}
		else {
			//没有换行和删除,则进行存储
			printf("*");
			_code[i] = c;
			i++;
		}
	}
	//输出
	printf("\n用户的密码为:%s\n", _code);
	return 0;
}
2、随便定义一个字符数组,然后在当前数组中把字符串逆序
#includeint main(int argc,char* argv)
{
	int j = 0;
	char c;
	char _ch[100]={0};
	while ((c = getchar()) != '\n' && j< 100)
	{
		_ch[j] = c;
		j++;
	}
	while (j>=0) {
		putchar(_ch[j]);
		j--;
	}
	return 0;
}
3、编写一个递归函数,求10以内的阶乘
#includeint factorial(int n) {
	if (n == 1)
		return 1;
	else
		return n * factorial(n - 1);
}
int main(int argc, char* argv)
{
	int n;
	scanf("%d", &n);
	printf("%d", factorial(n));
	return 0;
}
4.求一个数的反序数,也称为镜面数。例如1234的反序数是4321
#include#includeint mirror(int x) {
	int m, n, i, j, k;
	m = n = i = j = k = 0;
	m = x;
	while (m >0)
	{
		m /= 10;
		n++;					//判断位数
	}
	while (x >0)
	{
		i = x % 10;
		j= i * pow(10, n - 1);
		x /= 10;
		k += j;
		n--;
	}
	return k;
}
int main(int argc, char* argv) 
{
	int num;
	scanf("%d", &num);
	printf("%d\n",mirror(num));
	return 0;
}
5、计算器——函数封装
#includevoid _add(double a, double b);
void minus(double a, double b);
void multiply(double a, double b);
void _remove(double a, double b);
void mod(double a, double b);
int main(int argc, char* argv)
{
	double num1, num2;
	char operator;
	scanf("%lf %c %lf", &num1, &operator,&num2);
	switch (operator) {
	case '+':
		_add(num1, num2);
		break;
	case '-':
		minus(num1, num2);
		break;
	case '*':
		multiply(num1, num2);
		break;
	case '/':
		_remove(num1, num2);
		break;
	case '%':
		mod(num1, num2);
		break;
	default:
		printf("error");
		break;
	}
	return 0;
}
void _add(double a, double b) 
{
	printf("%.2f", a + b);
}

void minus(double a, double b) 
{ 
	printf("%.2f", a - b);
}

void multiply(double a, double b) 
{ 
	printf("%.2f", a * b);
}

void _remove(double a, double b)
{
	if (b != 0)
		printf("%.2f", a / b);
	else
		printf("error");
}

void mod(double a, double b)
{
	if ((long)b != 0)
		printf("%d", (long)a % (long)b);
	else
		printf("error");
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:c语言百日刷题第七天-创新互联
文章来源:http://chengdu.cdxwcx.cn/article/cdicpp.html