① c語言輸出英文字母對應數字並相加
//字典順序是按ASCII碼值排序的,若想把數字轉換為ASCII碼,只須+上'0'就可以了,你可以查一下ASCII碼字元集(c++教程的附錄通常都有這表),就可以很清楚地知道大寫字母、小寫字母、數字之間轉換關系!#include <iostream>
#include <string>
using namespace std;int main()
{
char* str[5]; //註:字典順序是按ASCII碼排序的,小寫的ASCII碼值大於所有大寫的ASCII碼!
cout<<"請輸入五個國家名字(英文):"<<endl;
int i,j,t;
for(i=0;i<5;i++)
{
str[i]=new char[20];
cin>>str[i];
}
for(i=0;i<4;i++)
{
t=i;
for(j=i+1;j<5;j++)
{
if(strcmp(str[t],str[j])>0)
{
t=j;
}
}
if(t!=i)
{
char temp[20];
strcpy(temp,str[t]);
strcpy(str[t],str[i]);
strcpy(str[i],temp); //交換
}
} for(i=0;i<5;i++)
{
cout<<str[i]<<'\t';
}
cout<<endl;
return 0;
}輸出結果如下:(1)首字母為大寫,排序如下:(2)首字母為小寫的,排序如下:(3)首字母不統一的情況,則排序情況有點不一樣,不要光看錶面的字母,c++的小寫字母ASCII碼比大寫字母的大!,排序如下:
② C語言編程 判斷字元串中「ab」字元串數,要求用函數實現
#include <stdio.h>
#include <string.h>
void delete1(char s[],char t[])
{
int i,j,k;
int flag=0;
//一:代碼缺陷
//增加判斷。應該
if(!s || !t)
{
return;
}
if(strlen(s) < strlen(t))
{
return;
}
for( i=j=0; s[i]!='\0';i++)
{
for( k=0; t[k]!='\0';k++)
{
if(s[i+k]==t[k]) flag=1;
else
{
flag=0;
break;
}
}
//二,邏輯錯誤
/*if(flag)
{
s[j++]=s[i+k];
i=i+k+1;
} */
//改成
if(flag)
{
strcpy(&s[i], &s[i + k]);
}
//if(!flag) s[j++]=s[i];
if(!flag) continue;
}
//s[j]='\0';
printf("%s\n",s);
}
main()
{
char str1[255],str2[255];
printf("please input the article:\n");
gets(str1);
printf("please input the words you want to delete:\n");
gets(str2);
delete1(str1,str2);
}
③ C語言如何將字元串轉換到對應的01二進制的字元串,比如AB字元就變為字元串「0100000101000010」
如下子程序就可以將一個字元的ASCII碼按二進制形式輸出:
void binarystring(char c)
{
int i;
for(i=0;i<8;i++)
{ if (c & 0x80) putchar('1'); else putchar('0');
c <<= 1;
}
}
如上定義後,只要調用
binarystring('A');binarystring('B');putchar('\n');
即可輸出
0100000101000010
補充:
看了上面xie0500150326兄的回答,補充說明幾句。
xie0500150326兄的回答中的trans(char x) ,直接換成我這里的binarystring(char c),
結果一樣。
但他的演算法操作較復雜,這是因為:
計算機內的字元信息,本來就已經是二進制形式存放了,他的演算法中又採用十進制轉換二進制的演算法,反復做除法,自然是「多此一舉」,故效率較低。而本演算法直接用二進制位做判斷輸出,應該比較更合理。
他的演算法操作較復雜的另一點原因是,
該演算法是由低位到高位的次序計算,而輸出卻要求高位到低位的次序,所以要暫存再重取。如果直接採用高位到低位的次序計算,就不需要暫存可以直接輸出了。高位到低位的次序的演算法有多種,本演算法是一種。另外,也可以仿照十進制純小數轉換為二進制的演算法。這里不詳述了。
不過,因為現代計算機的速度很高,效率常常不重要了,所以這兩種方法都可以。只有在某些應用如「快速過程式控制制軟體」等情況,對效率要求較高時,才需要注意這個問題。
④ C語言輸入字母,實現輸出對應數字,例如輸入a或者A輸出1,輸入F或f輸出6。求
這個是很簡單的。你可以將字母a用數字的方式列印出來試試,如printf("%d",'a');輸出是97,那麼只要減去96就可以了。順便說一下,首先char其實就是8位的整數變數,但是由於ASCII碼的編碼也是8位,所以常常使用char來表示ASCII字元,因此char也叫字元變數。所以char變數的本質就是數字。不難發現通過查找ASCII表,a的編碼的十進制數就是97。當然你也會發現a和A的編碼是不一樣的,如果你的功能是輸入a和A輸出都是1,那麼就要提前判斷一下。
當然你也可以通過判斷來實現這個功能,如:
chartemp=getchar();
if(temp=='a')
......
elseif(temp=='A')
......
elseif(temp=='f')
......
還有,可以通過switch來實現,如:
chartemp=getchar();
switch(temp)
{
case'a':
......
break;
case'A':
......
break;
default:break;
}
需要聲明一下,由於char本身就是數字,所以是可以使用switch的,但是不要妄圖通過switch來判斷字元串變數(char[])這是不可行,雖然你可能在其他的高級語言中看到過這種用法,但是在C中是不能運行的。
⑤ 我想問下c語言裡面運算結果abc什麼意思,然後第二張圖的ab啥意思,圈出來的式子的意思
轉義字元「\101」就表示第65位ascii碼值表示的字元A。八進制101等於65
同理「\x42」表示字元B。十六進制42等於66
第二張圖中的計算式很容易理解啊,因為字元可以按照ascii碼對應的數值來進行計算
比如c1是"A",c2=c1+1,則c2就是"B"。如果c2=c1+32,那麼c2就是「a」
這是因為A對應65,B對應66,a對應97
所以圖片里的c1和c2按照這樣計算就是對應的「A」和「B」了
⑥ C語言,這些字元代表的數字是啥
這個do while循環共輸出三個數。
因為a的ascii碼是97,b 的ascii碼是98,c的ascii碼是99
而%10就是除以10的余數,所以三次的輸出分別是7,8,9
連到一起輸出,就是789,所以選答案B