ety
|
分享:
▲
▼
为什么还没教的就不能用? 你猜的还是老师亲口说的? 看你写的程式, 只用到 stdio.h, 那我假设你们老师只教到 BIOS ( Basic Input and Output System ) 这个范围好了, 我们不用 isdigit(), 以 scanf 来实作: 复制程式
#include <stdio.h>
int main(void)
{
int a, b, c, d;
char e[168];
c = 0;
for (a = 1; a <= 10; a++)
{
b = 0;
printf("请输入第%d个字串:\n", a);
scanf("%s", &e);
for (d = 0; d < strlen(e); d++)
{
if (e[d] > 47 && e[d] < 58)
{b += (e[d] - 48);}
}
printf("这个字串的数字总和为: %d\n\n", b);
c += b;
}
printf("这十个字串的数字总和为: %d", c);
return 0;
}
变数 a 是用来计数第一个回圈的, 因为你们老师要十个, 所以就命令它执行十次. 变数 b 是用来计数单一字串中的数字总和. 变数 c 是用来计数十个字串中的数字总和. 变数 d 是用来计数第二个回圈的. 这个变数的值是每个字串的长度. 例如输入一个长度为五的字串, 那这个变数的值就是5! 变数 e 是用来储存字串用的一个字元阵列. 要特别注意的是: 我假设你们老师每次输入的字串长度皆不超过一佰六十八个字元! 若你认为你们老师可能会输入更长的字串, 你可以修改为大一个的阵列! 我之所以用一六八纯粹只是... 这个数字很吉利 ~~~
[ 此文章被ety在2007-06-02 23:44重新编辑 ]
|
|
x0
[11 楼]
From:台湾和信超媒体宽带网 | Posted:2007-06-02 23:36 |
|
|
ety
|
分享:
▲
▼
当然可以呀, 不过想想看, 要一次输入十个字串, 中间都没有什么讯息显示的话, 挺无趣的! 不过, 我也不知道你们老师的问题是如何说明的, 毕竟你是他的学生, 你应该猜得出来是不是十个字串算出数字总和还是一个十个字的字串! 附带一提, 我之前所写的程式码不够严谨, 你在 compile 的时候可能会出现 warning ... 如果你确定要用这个程式码交作业的话, 请写成这样: 复制程式
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int a, b, c, d;
char e[256];
c = 0;
for (a = 1; a <= 10; a++)
{
b = 0;
printf("请输入第%d个字串:\n", a);
scanf("%s", e);
for (d = 0; d < strlen(e); d++)
{
if (e[d] > 47 && e[d] < 58)
{b += (e[d] - 48);}
}
printf("这个字串的数字总和为: %d\n\n", b);
c += b;
}
printf("这十个字串的数字总和为: %d\n", c);
system("pause");
return 0;
}
注意, e 的前面不要加 &, 另外, 使用 strlen 时要 include <string.h>
|
|
x1
[14 楼]
From:台湾和信超媒体宽带网 | Posted:2007-06-03 14:38 |
|
|
ety
|
分享:
▲
▼
如果你担心 string.h 并不包含于 BIOS (也就是 stdio 或 stdlib 的范围内), 那么你也可以不用 strlen, 自己写出一个副程式来替代: 复制程式
#include <stdio.h>
#include <stdlib.h>
int length(char string[])
{
int index;
for (index = 0; string[index] != '\0' index++)
continue;
return index;
}
int main(void)
{
int a, b, c, d;
char e[256];
c = 0;
for (a = 1; a <= 10; a++)
{
b = 0;
printf("请输入第%d个字串:\n", a);
scanf("%s", e);
for (d = 0; d < length(e); d++)
{
if (e[d] > 47 && e[d] < 58)
{b += (e[d] - 48);}
}
printf("这个字串的数字总和为: %d\n\n", b);
c += b;
}
printf("这十个字串的数字总和为: %d\n", c);
system("pause");
return 0;
}
一次给了你两个版本, 希望对你的课业有所帮助! 有问题的话寄封信给我, 我不常来这儿的, 若你又有问题再发问, 我可能会没注意到! ^^
|
|
x0
[15 楼]
From:台湾和信超媒体宽带网 | Posted:2007-06-03 14:52 |
|
|
|