我目前正在尝试完成用户输入两个5位长数字的代码。代码然后检查两个数字在同一地点是否有相同的数字,并显示两个输入的同一地点有多少个相同的数字。 (例如比较56789和94712会有一个相似的数字,第三位数字是7)。到目前为止,我已经能够将输入分解成每个点的数字,我只需要帮助比较它们。最初我以为我可以创建一个int作为计数器,并且在数字相同时使用模数或分数来输出1,但我一直无法将输出1或0的公式放在一起,具体取决于if这些数字是否相同。比较两个输入的数字以查看它们是否相同
0
A
回答
1
想你知道字符串n
的长度(作为一个条件,你会需要它们是相等的,如果他们在长度需要其他验证不同)
//n is the length of string
for(int i=0;i<n;i++)
{
if(string1[i]==string2[i])
{
//do something, make a counter that increments here...
//also save index i, so you can tell the position when a match occured
}else
{
//do something else if you need to do something when chars didnt match
}
}
在这里,你当i=0
,您比较string1[0]
与string2[0]
,当i=1
,你比较string1[1]
与string2[1]
等等.....
1
我建议你阅读这两个字符串或转换为字符串,如果你有能力。从那里,它是一个简单的字符串比较计数器。事情是这样的:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int is_numeric(char *str)
{
while (*str)
if (!isdigit(*str++))
return (0);
return (1);
}
int main(void)
{
char num1[32];
char num2[32];
int count = 0;
printf("Digit 1\n>> ");
if (scanf("%5s", num1) != 1 || !is_numeric(num1))
return (0);
printf("Digit 2\n>> ");
if (scanf("%5s", num2) != 1 || !is_numeric(num2))
return (0);
if (strlen(num1) != 5 || strlen(num2) != 5)
return (0);
for (int i=0; i<5; ++i)
if (num1[i] == num2[i])
++count;
printf("%d\n", count);
return (0);
}
-1
您可以使用模(%
)除以(/
)做到这一点很容易。首先你要做% 10
以获得最低有效位并进行比较。然后你做/ 10
删除最不重要的数字。像:
#include <stdio.h>
#include <string.h>
int main(void) {
unsigned int i1, i2;
int i;
int cnt = 0;
printf("Input first 5 digit number:\n");
if (scanf(" %u", &i1) != 1 || i1 < 10000 || i1 > 99999) // Get integer input and check the range
{
printf("input error\n");
return 0;
}
printf("Input second 5 digit number:\n");
if (scanf(" %u", &i2) != 1 || i2 < 10000 || i2 > 99999) // Get integer input and check the range
{
printf("input error\n");
return 0;
}
for (i=0; i<5; ++i)
{
if ((i1 % 10) == (i2 % 10)) ++cnt; // Compare the digits
i1 = i1/10;
i2 = i2/10;
}
printf("Matching digits %d\n", cnt); // Print the result
return 0;
}
它也可以使用字符串来完成。将输入读取为unsigned int,然后使用snprintf
将该值转换为字符串,最后逐个字符比较两个字符串。
喜欢的东西:
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[32];
char str2[32];
unsigned int i1, i2;
int i;
int cnt = 0;
printf("Input first 5 digit number:\n");
if (scanf(" %u", &i1) != 1) // Get integer input
{
printf("input error\n");
return 0;
}
snprintf(str1, 32, "%u", i1);
if (strlen(str1) != 5) // Convert to string
{
printf("input error - not 5 digits\n");
return 0;
}
printf("Input second 5 digit number:\n");
if (scanf(" %u", &i2) != 1) // Get integer input
{
printf("input error\n");
return 0;
}
snprintf(str2, 32, "%u", i2); // Convert to string
if (strlen(str2) != 5)
{
printf("input error - not 5 digits\n");
return 0;
}
for (i=0; i<5; ++i)
{
if (str1[i] == str2[i]) ++cnt; // Compare the characters
}
printf("Matching digits %d\n", cnt); // Print the result
return 0;
}
的理由采取输入到unsigned int
,而不是直接的字符串是通过这样做,我没有检查该字符串实际上是有效的数字(如用户类型12W34
)。 scanf
为我做了。
相关问题
- 1. 比较两个ObservableCollection(s)以查看它们是否不同
- 2. 如何比较输入[0]和输入[1]以查看它们是否相似?
- 3. 比较两个文件,看它们在PHP中是否相同
- 4. 比较两棵树,看看它们是否相同
- 5. Objective C比较两个CGPoint以查看它们是否接近?
- 6. 逐行比较文件以查看它们是否相同,如果是这样的话输出它们
- 7. 比较两个字符串以查看它们是否为旋转
- 8. 比较文件和列表,看看它们是否相同
- 9. 如何在Dart中比较两个对象以查看它们是否是相同的实例?
- 10. 比较2棵树看它们是否包含相同的值
- 11. 比较两个网站,看看它们是否“平等”?
- 12. 如何比较BigDecimal数字以查看它是否是整数
- 13. 比较一个WordPress循环内的ACF字段,看它们是否相同
- 14. 如何比较两个未知数字以查看它们在特例模板中是否相等?
- 15. 比较来自数据库的结果,看看它们是否相同
- 16. 如何比较对象的两个参数以查看它们是否来自同一个对象?
- 17. 检查两个对象实例以查看它们是否相同
- 18. 我需要比较两个字符串以查看它们是否匹配或是否接近匹配
- 19. 比较两个图像是否相同
- 20. 比较char数组来检查输入是否相同
- 21. 比较在vb.net两个日期它们是否相等或不
- 22. 比较两个二叉树,看他们是否有相同的结构
- 23. 如何比较两个数组以查看它们有多少个相同的元素?
- 24. 如何比较二进制文件以检查它们是否相同?
- 25. 比较2个对象以查看它们是否在VB.NET中兼容
- 26. 比较输入值的ASCII来检查它是否是字符或数字
- 27. 比较峰的算法:它们是否同相?
- 28. 是否可以将两个gobjects与haskell-gi进行比较,并确定它们是否相同?
- 29. 我有两个UIViewControllers,我需要比较,看看他们是否是UIViewController的相同的子类
- 30. 如何比较两个JavaScript数组以确定它们是否具有相同的值?
配方?像'a == b'? –
我会将输入视为字符串并逐个比较它们。不要以为你通过将输入转换为'int's – yano
在最后几天的类似问题中获得了很多,这个任务是什么? –