#include<stdio.h> #include<string.h> void input(int bigint[]); void output(int bigint[]); int len; int main() { int a[200]={'0'}; input(a); output(a); return 0; } void input(int bigint[]) { int i=0; char b[200]={'0'}; printf("请输入数字:"); while(1) { scanf("%d",&b[i]); if(b[i]='\n') break; } len=strlen(b); for(i=0;i<len;i++) { bigint[i]=b[i]-'0'; } } void output(int bigint[]) { int i=0; for(i=0;i<len;i++) printf("%d",bigint[i]); }哪里错了
时间: 2024-01-16 12:04:26 浏览: 235
这段程序存在以下问题:
1. `scanf` 读取的输入是字符类型的,需要使用 `%c` 格式符,而不是 `%d` 格式符。
2. `if(b[i]='\n')` 应该是 `if(b[i]=='\n')`,因为 `=` 是赋值操作符,而 `==` 才是比较操作符。
3. 在输入时应该清空输入缓冲区,否则会有残留字符导致程序出现错误。可以在读取完每个字符后加上 `getchar()` 来清空缓冲区。
4. 在计算长度时,应该排除换行符的影响,可以使用 `len = strlen(b) - 1;` 来计算长度。
修改后的程序如下:
```
#include <stdio.h>
#include <string.h>
void input(int bigint[]);
void output(int bigint[]);
int len;
int main() {
int a[200] = {0};
input(a);
output(a);
return 0;
}
void input(int bigint[]) {
int i = 0;
char b[200] = {0};
printf("请输入数字:");
while (1) {
scanf("%c", &b[i]);
if (b[i] == '\n') {
break;
}
getchar();
i++;
}
len = strlen(b) - 1;
for (i = 0; i < len; i++) {
bigint[i] = b[i] - '0';
}
}
void output(int bigint[]) {
int i = 0;
for (i = 0; i < len; i++) {
printf("%d", bigint[i]);
}
}
```
阅读全文