一个2分case错误
#include <stdio.h>
#include <string.h>
int main(){
char num[25];
int len = 0;
char ch;
while((ch = getchar()) != '\n'){ //使用 ( ch = getchar() ) != '\n'比scanf()挨个输入再判断要简单
num[len++] = ch;
}
//不能用char * origNum; ,因为char *是固定一个指针,指向的地址不再变了,
//可以strcpy(char[], char*), 不可以strcpy(char *, char[])
char origNum[25];
strcpy(origNum,num);//因为num[]在double过程中被改变了,所以使用strstr时要在原始的字符串中查找
int i;
int inc = 0;
bool flag = true;
for(i = len; i > 0; i--){
int curNum = num[i-1]-'0';
int tmp = curNum * 2 + inc;
inc = tmp/10;
tmp = tmp%10;
num[i] = (char)(tmp+'0');
char target[2]; //把一个 char转换为char *(target[1]是'\0') 否则没法用strstr()函数
target[0] = num[i]; //想不出简单方法,只好先把char转成一个char数组
target[1] = '\0';
if(flag && strstr(origNum, target) == NULL){
flag = false;
}
}
int start = 0;//double 后的数字起始下标
if(inc > 0){
num[0] = (char)(inc + '0');
}else{
start = 1;
}
if(flag){
printf("Yes\n");
}else{
printf("No\n");
}
for(i = start; i <= len; i++){
printf("%c",num[i]);
}
return 0;
}