不是在C語言中是什么意思
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供啟東企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站建設、做網(wǎng)站、H5網(wǎng)站設計、小程序制作等業(yè)務。10年已為啟東眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
而是在這段程序中是什么意思
#define len(x1,y1,x2,y2) sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))定義了一個宏,用來計算2個點(x1,y1)和(y1,y2)間的直線距離
int stringlen(char *s) // 這個函數(shù)的命名可以規(guī)范些,如 StringLen[推薦]
{
int i = -1;
if (s==null) return i; // 如果s為空,則返回-1
for (i=0;s[i] != '\0';i++); // 一直找到字符串結束標志'\0',循環(huán)結束
return i-1; // 返回不包括字符串結束標志的長度
}
// 要理解的概念
// 1. 指針 2.字符 3.數(shù)組 4.字符數(shù)組 6.字符指針
// 6.字符串在C語言中的實現(xiàn)方式(1.字符數(shù)組 2.字符指針)
#include stdio.h
#include string.h
#include ctype.h
int main()
{
int i, len;
char str[100];
gets(str);
len=strlen(str);
for (i = 0; i len; i++)
if (isalpha(str[i]))
{
str[i] ^= 32;
}
puts(str);
return 0;
}
其中用到了一個函數(shù)isalpha(),作用是判斷參數(shù)是否為英文字母。當參數(shù)為英文字母a-z或A-Z時,返回非零值,否則返回零。這個函數(shù)用到的頭文件是ctype.h。
下面解釋核心部分 " str[i] ^= 32; "
我們知道同一個英文字母大小寫的ASCII碼相差32。假設我們現(xiàn)在有二個字母"S"和"s",大寫"S"的ASCII碼為83,小寫"s"的ASCII碼為115,我們將32、83、115的二進制碼列出來。
83 1010011
32 0100000(最低位為第一位,只有第六位是1,其他位都是0)
115 1110011
我們來回顧一下異或運算符(XOR)的特點:
與0異或時,它的值不變。
與1異或時,它的值相反。
因此,對比上面的豎式,我們可以很清楚地看到,只要將英文字母ASCII碼的第6位與1異或,其他位與0異或,即可實現(xiàn)英文字母的大小寫互換。也就是讓英文字母的ASCII碼與32異或即可。
這個只是函數(shù)名稱,可以用其他的,但是不能是關鍵字。
糾正兩個錯誤,第一、scanf("%s",s1);要改成scanf("%s",s1);,下面的對s2的輸入類似。
len(s1)相當與計數(shù)器,他的返回值代表你輸入的字符串的長度。比如你輸入s1=I am a student.則返回值為15,注意是到student.那個點的后面才是結束。比較的時候他已經(jīng)是一個值了。