#include<stdio.h>
#include<string.h>
//char a == 97 need-96 A==65 所以需要-64才會等於數字
int main()
{
char c[201];
int length;
int i,j,point;
int sum=0;
while(scanf("%s",&c)!=EOF)//已經有數字了喔 >.O
{
length=strlen(c);//測量長度
for(i=0;i<length;i++)//抓到長度-1 即為陣列的最尾端
{
if(c[i]==32) continue;
if(((c[i]>64)&&(91>c[i]))||((c[i]>96)&&(123>c[i])))
{
for(j=0;j<=25;j++)//0~24 25個
{
//catch 字碼
if(c[i]==65+j)//大寫的部分
{
sum=sum+c[i]-64;
break;
}
else if(c[i]==97+j)//小寫的部分
{
sum=sum+c[i]-96;
break;
}
}
}
else
{
if(c[i]==48) //如果敲入0字元
{
return 0;
}
printf("Fail\n");
point=1;
break;
}
}
if(point==1)
continue;
printf("%d \n",sum);
sum=0;
}
}
丟測資時一直WA
求解!
自己測沒有問題
#include
#include
//char a == 97 need-96 A==65 所以需要-64才會等於數字
int main()
{
char c[201];
int length;
int i,j,point;
int sum=0;
while(scanf("%s",&c)!=EOF)//已經有數字了喔 >.O
{
length=strlen(c);//測量長度
for(i=0;i<length;i++)//抓到長度-1 即為陣列的最尾端
{
if(c[i]==32) continue;
if(((c[i]>64)&&(91>c[i]))||((c[i]>96)&&(123>c[i])))
{
for(j=0;j<=25;j++)//0~24 25個
{
//catch 字碼
if(c[i]==65+j)//大寫的部分
{
sum=sum+c[i]-64;
break;
}
else if(c[i]==97+j)//小寫的部分
{
sum=sum+c[i]-96;
break;
}
}
}
else
{
if(c[i]==48) //如果敲入0字元
{
return 0;
}
printf("Fail\n");
point=1;
break;
}
}
if(point==1)
continue;
printf("%d \n",sum);
sum=0;
}
}
丟測資時一直WA
求解!
自己測沒有問題
若是輸入含有'0'字元的字串的話,則應該輸出"Fail",但你的程式提早結束
所以改成這樣:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(void){
unsigned char a[16384];
int b,d,e;/*d存放總和,e為怪異的符號旗標*/
while(scanf("%s",a)!=EOF){
d=0;
e=0;
for(b=0;b<strlen(a);b++){
if(a[b]<65){
e=1;
}else if(a[b]<91){
d+=a[b]-64;
}else if(a[b]<97){
e=1;
}else if(a[b]<123){
d+=a[b]-96;
}else{
e=1;
}
}
if(strlen(a)==1){/*檢測字串長度*/
if(a[0]!=48){/*若字串長度==1,則檢測a[0]是否為'0'的Unicode*/
if(e==0){/*檢測是否含有怪異的符號,若它沒有的話,則輸出總和,否則輸出"Fail"*/
printf("%d\n",d);
}else{
printf("Fail\n");
}
}
}else{/*若字串長度!=1,則直接檢測是否含有怪異的符號*/
if(e==0){
printf("%d\n",d);
}else{
printf("Fail\n");
}
}
}
}