帮忙解决下,谢谢!
#include <stdio.h>void main()
{
int r = 3;
float = ares;
ares = r*r;
printf("%d\n", (int)ares); //这里不加(int)为什么会得到0,强制转换了才能输出9.
}
还有一个问题就是结构体定义4个变量,为什么手动输入只能输出2个???
#include <stdio.h>
static struct student
{
int num;
char *name,sex;
float socre;
};
void main()
{
struct student boy1,boy2;
printf("Please input num: ");
scanf("%d",&boy1.num);
printf("Please input name: ");
scanf("%c\n",&boy1.name);
printf("Please input sex: ");
scanf("%c\n",&boy1.sex);
printf("Please input socre: ");
scanf("%lf\n",&boy1.socre);
printf("%d,%c,%c,%lf\n", boy1.num, boy1.name, boy1.sex, boy1.socre);
}
//请详细解答谢谢。。
#include <stdio.h>
struct vegetable
{
char name;
float price;
};
void main()
{
int vegcount = 0;
struct vegetable veg;
printf("请输入蔬菜名:(停止时按回车退出)\n");
printf("Please input vegetable :(stop 这个后面英文的不会╮(╯﹏╰)╭)");
while(vegcount < 20 && gets(veg.name)! = NULL && veg.name! = '\0')
{
printf("请输入单价:\n");
scanf("%f",&veg.price);
++vegcount;
while(getchar()! ='\n')continue;
printf("请输入蔬菜名:(停止时按回车退出)\n");
}
if(vegcount > 0)
{
printf("-------蔬菜列表-------\n");
printf("蔬菜名 单价\n");
for(int i=0; i < vegcount; i++)
{
printf("%s,%.2f\n", veg.name, veg.price);
}
else
{
printf("没有蔬菜录入");
}
}
}
错误提示
.c
H:\C++\Microsoft Visual Studio\MyProjects\结构体1\1.c(15) : error C2143: syntax error : missing ')' before '!'
H:\C++\Microsoft Visual Studio\MyProjects\结构体1\1.c(15) : error C2059: syntax error : '='
H:\C++\Microsoft Visual Studio\MyProjects\结构体1\1.c(20) : error C2143: syntax error : missing ')' before '!'
H:\C++\Microsoft Visual Studio\MyProjects\结构体1\1.c(20) : error C2059: syntax error : '='
H:\C++\Microsoft Visual Studio\MyProjects\结构体1\1.c(24) : error C2059: syntax error : 'if'
H:\C++\Microsoft Visual Studio\MyProjects\结构体1\1.c(38) : error C2059: syntax error : '}'
这个找了很久纠结死了,请各位帮帮忙解决下,在下感激不尽 破灬王 发表于 2014-9-22 14:25
#include
struct vegetable
!=不等于操作符!和=之间不能有空格 第一个:因为r*r乘积是int类型,但赋值给ares 时会被转换为float类型,所以在用“%d”去输出的时候就是0;
第二个:有点不明白你为什么要在scanf("\n",xxx)加“\n”,而且char *name;是指针类型。boy1.name不用加“&”,scanf("%c",boy1.name);至于你说的只输出两个我没看到。我猜想的就是某个scanf读入了'\n',所以该值在输出是是空 恋色天空 发表于 2014-9-22 16:06
!=不等于操作符!和=之间不能有空格
你说的!=不等于,我的意思是非不是!=等于。 #include <stdio.h>
static struct student
{
int num;
char *name;
char sex;
double score;
};
void main()
{
struct student boy1,boy2;
printf("Please input num: ");
scanf("%d",&boy1.num);
printf("Please input name: ");
scanf("%c",boy1.name);
printf("Please input sex: ");
scanf("%c",&boy1.sex);
printf("Please input score: ");
scanf("%lf",&boy1.score);
boy2 = boy1;
printf("%d,%c,%c,%lf", boy1.num, boy1.name, boy1.sex, boy1.score);
}
恋色天空 发表于 2014-9-22 16:22
第一个:因为r*r乘积是int类型,但赋值给ares 时会被转换为float类型,所以在用“%d”去输出的时候就是0;
...
第二个我重新打了一下 你帮我看下,谢谢咯, 破灬王 发表于 2014-9-22 18:06
第二个我重新打了一下 你帮我看下,谢谢咯,
scanf("%c", boy1.name);这句有问题
name成员只是一个指针变量,没有赋值它就没有指向,这样写的话scanf直接把name里面的值当做地址,寻址的时候就崩溃了 漩涡鸣人 发表于 2014-9-22 18:14
scanf("%c", boy1.name);这句有问题
name成员只是一个指针变量,没有赋值它就没有指向,这样写的话scanf ...
谢谢,但是问题还是没解决 漩涡鸣人 发表于 2014-9-22 18:14
scanf("%c", boy1.name);这句有问题
name成员只是一个指针变量,没有赋值它就没有指向,这样写的话scanf ...
我给name赋值了boy1.name = "cang";但是还是和上面一样只能输入2个 这是什么问题,请帮我在看下。谢谢! 破灬王 发表于 2014-9-22 18:33
我给name赋值了boy1.name = "cang";但是还是和上面一样只能输入2个 这是什么问题,请帮我在看下。谢谢!
scanf会在缓冲区残留\n,每次scanf之后清一下缓冲区就好了,无数C友都出现这问题,scanf这功能的确不够智能 感谢你们!!!! 漩涡鸣人 发表于 2014-9-22 18:55
scanf会在缓冲区残留\n,每次scanf之后清一下缓冲区就好了,无数C友都出现这问题,scanf这功能的确不够智 ...
#include <stdio.h>
struct vegetable
{
char name;
float price;
};
void main()
{
int vegcount = 0;
struct vegetable veg;
printf("请输入蔬菜名:(停止时按回车退出)\n");
printf("Please input vegetable :(stop 这个后面英文的不会╮(╯﹏╰)╭)");
while(vegcount < 20 && (gets(veg.name)!) = NULL && (veg.name!) = '\0')
{
printf("请输入单价:\n");
scanf("%f",&veg.price);
++vegcount;
while(getchar()! ='\n')continue;
printf("请输入蔬菜名:(停止时按回车退出)\n");
}
if(vegcount > 0)
{
printf("-------蔬菜列表-------\n");
printf("蔬菜名 单价\n");
for(int i=0; i < vegcount; i++)
{
printf("%s,%.2f\n", veg.name, veg.price);
}
else
{
printf("没有蔬菜录入");
}
}
}
请你帮我吧这题目分析下,他这个提示说语法有错误,我找了相关的资料还是搞不懂,请帮我看看!谢谢 破灬王 发表于 2014-9-22 21:59
#include
struct vegetable
如果您要用非操作,应该把!放在要操作的值前面
判断是否等于应该是==,修改一下就好了 破灬王 发表于 2014-9-22 18:28
谢谢,但是问题还是没解决
我昨天遇到这个问题了,我总结的是:当你输入第一个num后,第一个scanf读入,然后第二个scanf会读入后面的那个'\n',即回车符,所以输出name值是回车符。同理,sex读入格式是‘%c’,所以只会读入一个char类型字符,即读入‘1’;所以score读入的是‘0’ 恋色天空 发表于 2014-9-23 09:21
我昨天遇到这个问题了,我总结的是:当你输入第一个num后,第一个scanf读入,然后第二个scanf会读入后面 ...
这个已经解决了,谢谢 用fflush(stdin);就行了 漩涡鸣人 发表于 2014-9-22 22:57
如果您要用非操作,应该把!放在要操作的值前面
判断是否等于应该是==,修改一下就好了
我要用非操作,应该吧!放在操作值得前面是放到name里面?有点笨,看不懂。。。。。能把这个改下不?
(vegcount < 20 && gets(veg.name)! = NULL && (veg.name!) = '\0')
谢谢
破灬王 发表于 2014-9-23 11:06
这个已经解决了,谢谢 用fflush(stdin);就行了
此函数仅适用于部分编译器(如VC6),但是并非所有编译器都要支持这个功能(如gcc3.2)。这是一个对C标准的扩充。 恋色天空 发表于 2014-9-23 11:27
此函数仅适用于部分编译器(如VC6),但是并非所有编译器都要支持这个功能(如gcc3.2)。这是一个对C标准 ...
恩,学习了,谢谢你的回答
页:
[1]