/*
嗨翻C第一张:算牌机
*/
#include<stdio.h> #include<stdlib.h> int main() { char card[3]; int val=0; printf("输入牌名:"); scanf("%s",card[0]); switch(card[0]) { case 'K': case 'Q': case 'J': val = 10; break; case 'A': val = 11; break; default: val = atoi(card); } printf("%d",val); return 0; }
自己写了2次,每次都运行都提示 已停止工作,和书上对比没发现那里语法错误。
atoi(card);是什么鬼
上传不了图片。。。 atoi(card)是将输入的字符转换成整型,我对照书上没发现哪里少函数,高手明示
@你好吃过了: 那就没有错,atoi(card)是一个转换为整型的函数,sorry,没有用过这个API,你看下是不是
default: val = atoi(card); 后面需要加一个break;的问题,你的default没有结束,如果不是这个,看下是不是你vc++的编译器的问题
@稳稳的河:我加了break;也是运行不了,编译没有报错, 可能是软件问题,我用的C-FREE。谢谢你耐心指导
看看你的输入就错了,scanf %s,然后还来个数组的元素。scanf用的是指针啊。然后为什么数组是3个。
我的理解是:%s对应的是card[0]地址上的值;为什么定义成3个字符 ,card[]最多只需要2个字符,扑克里面只有一个10占用2个字符,然后字符串结尾有个\0,所以定义成3个字符。
谢谢提醒,应该是scanf里面少了个&,我加上以后程序就可以运行了
@你好吃过了: 那给个1234呢,不就也崩溃了
@Amin000: 是的,超过2位的数字对这个程序来说是无意义的。。。