coolzf
发表于 2015-7-29 18:42:41
这个不错
曲奇
发表于 2015-9-3 08:35:21
鱼币又不够了:ton:
白文龙
发表于 2015-10-10 09:23:08
不是很理解
lzjzeei
发表于 2015-10-22 23:00:49
第四讲 从另一个小程序接着说(课件+源代码) 第四讲 从另一个小程序接着说(课件+源代码) 第四讲 从另一个小程序接着说(课件+源代码)
晏策123
发表于 2015-12-13 21:38:46
力学如力耕,勤惰尔自知。但使书种多,会有岁稔时。
tzzyw
发表于 2015-12-22 21:14:59
这只是一个开始
niliuhe
发表于 2016-1-6 23:49:37
看看。。。
15538386368
发表于 2016-5-16 19:34:27
谢谢
jdp7385
发表于 2016-11-5 08:43:28
呵呵呵呵
thy405933
发表于 2016-11-17 16:57:32
{:5_92:}
fisheryao
发表于 2017-10-30 18:05:52
非常感谢!!!!
leibniz
发表于 2017-11-16 05:00:01
试试下载 看看
fisheryao
发表于 2017-12-4 10:24:08
好资料
liliangzi
发表于 2019-1-8 18:26:41
fidh
fszhyong
发表于 2019-3-4 21:39:30
这个不错嘛
Hannibal_Chen
发表于 2019-4-30 22:53:25
我用的是visual studio 2019 community ,这一课讲的哪个程序,我照着打了一遍,有ungetc(ch, stdin);这句代码,但是还是会被吃掉一个数字,这是什么问题啊??
CivicTesla
发表于 2019-8-30 22:35:49
鱼币怎么赚啊。。。。。。。
MUYIXUE
发表于 2024-7-2 21:51:41
发一个我自己的实现,感觉比作者的好,可以处理没有任何输入的情况.
#include <stdio.h>
int addUserInput();
char letterToNumber(char last_letter, int* value, bool counter_to_zero);
int pow(int down, int up);
int main() {
int sum = addUserInput();
printf("%d", sum);
return 0;
}
int addUserInput() {
int sum = 0;//所有的总值
bool need_preread = true;
bool end_for = false;
char preread = ' ';
int value = 0;
for (;;) {
if (need_preread) {
preread = getchar();//在这里获取预读取值
}
else {
need_preread = true;
}
switch (preread) {
case ' ':
while ((preread = getchar()) == ' ');
need_preread = false;
break;
case '\n':
end_for = true;
break;
default:
preread = letterToNumber(preread, &value, true);
sum += value;
need_preread = false;
if (preread == '\n') {
end_for = true;
}
break;
}
if (end_for) {
break;
}
}
return sum;
}
char letterToNumber(char last_letter, int* value, bool counter_to_zero) {
char current_letter = getchar();
static int counter = 0;//当遇到空白字符时开始counter的增加,每次解开一层递归就计数器加1
if (counter_to_zero) {
counter = 0;
counter_to_zero = false;
}
static char flag = 'N';//返回N表示没有遇到空字符
if (current_letter >= '0' && current_letter <= '9') {//如果当前的字符为数字字符就继续执行letter_to_number
letterToNumber(current_letter, value, counter_to_zero);
}
else {
flag = current_letter;
}
*value += (last_letter - '0') * pow(10, counter);
counter++;
return flag;
}
int pow(int down, int up) {
if (up == 0) {
return 1;
}
else {
int sum = 1;
for (int i = 0; i < up; i++) {
sum *= down;
}
return sum;
}
}