vs编译正确程序但提示出错
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
printf("what would you do?/ntwo to ten press'1'/nten to two press'2'");
char kind;
kind=getchar();
if(kind==1)
{
int sum=0;
printf("input number");
char a[100];
int i;
for(i=0;i<100;i++)
a[i]='?';
scanf("%s",a);
int j=100-1;
while (a[j]=='?')
{
j--;
}
for(;j>=0;j--)
{
static int k=1;
sum+=a[j]*k;
k=k*2;
}
printf("%d",sum);
}
else if(kind==2)
{
int q[100];
printf("input number");
int a,w=0;
scanf("%d",&a);
while(a/2==0)
{
q[w]=a%2;
w++;
a/=2;
}
printf("%s",q);
}
else
printf("wrong number");
system("pause");
}
如上代码
用vs编译提示
源.c(7): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
源.c(8): error C2065: “kind”: 未声明的标识符
源.c(9): error C2065: “kind”: 未声明的标识符
源.c(13): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
源.c(14): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
源.c(15): error C2065: “i”: 未声明的标识符
源.c(16): error C2065: “a”: 未声明的标识符
源.c(16): error C2065: “i”: 未声明的标识符
源.c(16): error C2109: 下标要求数组或指针类型
源.c(17): error C2065: “a”: 未声明的标识符
源.c(18): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
源.c(19): error C2065: “a”: 未声明的标识符
源.c(19): error C2065: “j”: 未声明的标识符
源.c(19): error C2109: 下标要求数组或指针类型
源.c(21): error C2065: “j”: 未声明的标识符
源.c(23): error C2065: “j”: 未声明的标识符
源.c(26): error C2065: “a”: 未声明的标识符
源.c(26): error C2065: “j”: 未声明的标识符
源.c(26): error C2109: 下标要求数组或指针类型
源.c(31): error C2065: “kind”: 未声明的标识符
源.c(35): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
源.c(36): error C2065: “a”: 未声明的标识符
源.c(37): error C2065: “a”: 未声明的标识符
源.c(39): error C2065: “w”: 未声明的标识符
源.c(39): error C2065: “a”: 未声明的标识符
源.c(40): error C2065: “w”: 未声明的标识符
源.c(41): error C2065: “a”: 未声明的标识符
本机为64位环境,安装了mingw,求解 c
[解决办法]
C语言的定义要放在最前面, 不能像C++一样到处放
[解决办法]
把所有有关的变量声明放到函数开头部分,在第一个语句之前.
如你的下述变量声明放到第一个printf语句之前.
char kind;
int sum=0;
char a[100];
int i;
int j;
int q[100];
int a,w=0;
[解决办法]
尽管有的编译器支持在代码的任何地方都可以声明变量,但是为了程序的可读性,最好还是按照PASCAL定义的那种程序结构来布局程序吧,把所有的变量声明都写到程序的头部
[解决办法]
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。