繁体   English   中英

使用scanf对电话号码的数字求和

[英]Sum the digits of a phone number using scanf

我希望我的代码提示用户输入格式为1(xxx)-xxx-xxxx的电话号码,然后将其数字相加。 但是我不知道我的代码有什么问题。 见下文

printf("Enter a phone number in 1(xxx)-xxx-xxxx format: \n");
scanf(" %*c%*c%d %d %d %*c%*c%d %d %d %*c%d %d %d %d", &i, &j, &k, &l, &m, &n, &o, &p, &q, &r);

sum = (i + j + k + l + m + n + o + p + q + r);
realsum = sum + 1;

printf("The sum of the digits = %d \n\n", realsum)

;

有人可以帮忙吗? 似乎是将数字(xxx)的第一部分完全分配给i,而j为零。 如何获得将数字逐个分配给每个变量的方法?

问题是%d一直读取直到找到不能为十进制数字一部分的字符。 因此,如果用户输入1(123)-456-7890则第一个%d会将i设置为123

解决方案是使用%1d 告诉scanf读取一位十进制数字。

顺便说一句:您应该验证scanf的返回值正确。 在此的示例正确的返回值为10。任何其他数字表示用户没有输入有效的电话号码。

你没有帐户使得用户进入非整数字符,但整体被读取作为一个整体,因此123并不读为1 ,然后2然后3而是作为123

scanf(" %*c%*c%d %*c%*c%d %*c%d ", &i, &j, &k);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM