代碼應該接受一個字符并且它應該檢查它是否在'j'和'p'之間。
如果它在 'j' 和 'p' 之間,它應該列印yes,否則它應該列印no。
我試圖對此做點什么,但我得到的唯一想法是:
if (a=='j' || a=='k' || a=='k' || a=='l' || a=='m' || a=='n' || a=='o' || a=='p')
{
printf("YES");
}
else
{
printf("NO");
}
uj5u.com熱心網友回復:
您可以使用以下功能避免所有替代測驗strchr():
if (strchr("jklmnop", a)) {
puts("YES");
} else {
puts("NO");
}
顯而易見的方法是做類似的事情
if (a >= 'j' && a <= 'p') {
// ...
}
但是如果你想撰寫可移植的代碼,那就有問題了。
C標準只要求字符'0'通過'9'順序連續出現。如果您遵循 at 的標準,則不應假定'j'通過'p'一起出現并且可以與一對>=和<=測驗一起使用。如果您添加額外的限定條件,例如要求兼容 ASCII 的字符集,那就是另一回事了。
uj5u.com熱心網友回復:
這取決于您所說的“在j和p之間”是什么意思。
如果您的意思是“只有 j 和 p 之間的小寫英文字母”,那么一種可移植的寫下來方式是
if (strchr("jklmnop", a)) ...
如果您的意思是“機器使用的任何編碼中的字符代碼介于'j'和之間的字符代碼'p'”,那么將其寫下來的一種可移植方式是
if (a >= 'j' && a <= 'p') ...
如果您的編碼是 ASCII,那么上述兩個概念對于任何范圍的英文字母都嚴格一致。
如果您的編碼是 EBCDIC,那么它們與 range 一致j..p,但不是說 range i..p。
保證 j 和 p 之間的所有英文字母都包含在任何符合標準的編碼的代碼范圍內,但同一范圍內可能還有其他非英文字母字符。
最后,為了完整起見,如果“在 j 和 p 之間”是指“用戶語言的字母,無論它是什么,在 j 和 p 之間”,那么寫下來的一種正確方法可能是
setlocale (LC_ALL, ""); // first statement of the program
...
if (strcoll(a, "j") >= 0 && strcoll(a, "p") <= 0) ...
注意,這里的,a不是上面的字符,而是字串。您可以確保它包含用戶語言的單個字符(這與單個char元素不同)。確保這一點非常重要。
TL;博士
if (a >= 'j' && a <= 'p')將可能對任何任務你現在有,但不要以為它會永遠作業的作業。
uj5u.com熱心網友回復:
試試這個代碼
#include <stdio.h>
int main()
{
char a;
printf("enter the letter :");
scanf("%c",&a);
if(a>='j' && a<='p')
printf("yes the letter is between j and p");
else
printf("No the given letter is not between j and p");
}
uj5u.com熱心網友回復:
每個字母表都有一個 ASCII 碼,它是一個整數,所以你可以像這樣執行它,
char a;
scanf("%c",&a);
if(a>='j'&&a<='p')
{
printf("YES");
}
else
{
printf("NO");
}
uj5u.com熱心網友回復:
假設小寫字母在執行集中形成一個連續的塊,對于 ASCII 也是如此,您可以撰寫:
if (a >= 'j' && a <= 'p') ...
假設a是一個int包含char值,您可以將其撰寫為單個測驗,但一個好的編譯器應該能夠為上面更易讀的測驗生成相同的代碼:
if ((unsigned)(a - 'j') <= (unsigned)('p' - 'j')) ...
您還可以測驗是否a在一組字符中,無論目標編碼如何,這都將起作用:
if (a != 0 && strchr("jklmnop", a)) ...
a != 0如果您知道a不能為空位元組,則可以洗掉測驗。
uj5u.com熱心網友回復:
字符文字(這是一個字符文字:)'a'只是數字。幾乎所有計算機都使用與 ASCII 兼容的編碼(很少有例外)。假設 ASCII,例如對于您的計算機'a'是 a 97,'j'a 是106. 如果你寫a=='j'你基本上寫a==106。使用字符文字只是語法糖,它使人類更容易閱讀,但計算機不在乎。
這意味著,您必須檢查是否a介于106和之間112。您可能知道比當前方法更好的方法。但不是106and112寫'j'and 'p',因為它更容易閱讀。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406084.html
標籤:
上一篇:如何從txt檔案在終端中列印
下一篇:如何絕對解決scanf輸入流問題
