我目前正在嘗試完成用戶輸入兩個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
在最後幾天的類似問題中獲得了很多,這個任務是什麼? –