关于C语言中数组输入与打印

这里使用一个简单的账号密码输入并打印的程序来分析。

输入

#include <stdio.h>

int main()
{
	char account[20] = { 0 };
	int password[20] = { 0 };
	printf("请输入账号:");
	scanf("%s", account);
	printf("请输入密码:");
	scanf("%d", password);
	return 0;
}

        注意这里account是字符数组,而password是整型数组(实际上无论是account还是password使用字符数组都是更为合适的,但这里为举例password使用的整型数组),如果这样输入的话会出现如下情况:

   

        在account里输入的123分别位于account[0]、]account[1]、account[2],而在password里的123则全部位于password[0]中。

为让1 2 3 分别位于password数组不同位置中,这里换成逐位输入的方法:

#include <stdio.h>

int main()
{
	char account[20] = { 0 };
	int password[20] = { 0 };
	printf("请输入账号:");
	scanf("%s", account);
	printf("请逐位输入密码:");
	int i = 0;
	for (i = 0; i < 20; i++)
	{
		scanf("%d", &password[i]);
	}
	return 0;

        这个方法的弊端较为明显,比如会强制要求输入20个整型,如果采取动态数组或者链表的形式,就可以自己控制输入的个数,但由于本篇是纯新手向,所以仍然采取逐位输入的方法。


打印

#include <stdio.h>

int main()
{
	char account[20] = { 0 };
	int password[20] = { 0 };
	printf("请输入账号:");
	scanf("%s", account);
	printf("请逐位输入密码:");
	int i = 0;
	for (i = 0; i < 20; i++)
	{
		scanf("%d", &password[i]);
	}
	printf("账号:%s\n密码:%s\n", account, password);
	return 0;
}

        在打印password时,如果输出类型误使用了%s,由于password本身是整型数组,所以打印出来的是第一个元素的ASCII码对应的符号,而如果输出类型为%d

#include <stdio.h>

int main()
{
	char account[20] = { 0 };
	int password[20] = { 0 };
	printf("请输入账号:");
	scanf("%s", account);
	printf("请逐位输入密码:");
	int i = 0;
	for (i = 0; i < 20; i++)
	{
		scanf("%d", &password[i]);
	}
	printf("账号:%s\n密码:%d\n", account, password); 
	return 0;
}

        也是不能实现打印password中所有内容的,只有使用逐位打印的方法,才能将password中的所有内容全部打印出来。

#include <stdio.h>

int main()
{
	char account[20] = { 0 };
	int password[20] = { 0 };
	printf("请输入账号:");
	scanf("%s", account);
	printf("请逐位输入密码:");
	int i = 0;
	for (i = 0; i < 20; i++)
	{
		scanf("%d", &password[i]);
	}
	printf("账号:%s\n", account);
	i = 0;
	for (i = 0; i < 20; i++)
	{
		printf("%d",password[i]);
	}
	return 0;
}

tip:

建议在需要实现类似的功能的时候,都使用字符串形式,能减少很多麻烦。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dak2n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值