首页 新闻 会员 周边

按照嗨翻C写的代码,运行出错

0
[已解决问题] 解决于 2015-10-30 15:40
/*
  嗨翻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次,每次都运行都提示 已停止工作,和书上对比没发现那里语法错误。

你好吃过了的主页 你好吃过了 | 初学一级 | 园豆:194
提问于:2015-10-28 09:44
< >
分享
最佳答案
1

atoi(card);是什么鬼

奖励园豆:5
稳稳的河 | 老鸟四级 |园豆:4216 | 2015-10-28 09:51

上传不了图片。。。   atoi(card)是将输入的字符转换成整型,我对照书上没发现哪里少函数,高手明示 

你好吃过了 | 园豆:194 (初学一级) | 2015-10-28 10:48

@你好吃过了: 那就没有错,atoi(card)是一个转换为整型的函数,sorry,没有用过这个API,你看下是不是

default: val = atoi(card); 后面需要加一个break;的问题,你的default没有结束,如果不是这个,看下是不是你vc++的编译器的问题

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-10-28 11:22

@稳稳的河:我加了break;也是运行不了,编译没有报错, 可能是软件问题,我用的C-FREE。谢谢你耐心指导

你好吃过了 | 园豆:194 (初学一级) | 2015-10-28 11:27
其他回答(1)
1

看看你的输入就错了,scanf %s,然后还来个数组的元素。scanf用的是指针啊。然后为什么数组是3个。

Amin000 | 园豆:202 (菜鸟二级) | 2015-10-28 15:50

我的理解是:%s对应的是card[0]地址上的值;为什么定义成3个字符 ,card[]最多只需要2个字符,扑克里面只有一个10占用2个字符,然后字符串结尾有个\0,所以定义成3个字符。

支持(0) 反对(0) 你好吃过了 | 园豆:194 (初学一级) | 2015-10-28 16:33

谢谢提醒,应该是scanf里面少了个&,我加上以后程序就可以运行了 

支持(0) 反对(0) 你好吃过了 | 园豆:194 (初学一级) | 2015-10-28 16:35

@你好吃过了: 那给个1234呢,不就也崩溃了

支持(0) 反对(0) Amin000 | 园豆:202 (菜鸟二级) | 2015-10-28 17:26

@Amin000: 是的,超过2位的数字对这个程序来说是无意义的。。。

支持(0) 反对(0) 你好吃过了 | 园豆:194 (初学一级) | 2015-10-30 14:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册