破灬王 发表于 2014-9-22 14:16:06

帮忙解决下,谢谢!

#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);
       
}
//请详细解答谢谢。。

破灬王 发表于 2014-9-22 14:25:54

#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 16:06:03

破灬王 发表于 2014-9-22 14:25
#include

struct vegetable


!=不等于操作符!和=之间不能有空格

恋色天空 发表于 2014-9-22 16:22:35

第一个:因为r*r乘积是int类型,但赋值给ares 时会被转换为float类型,所以在用“%d”去输出的时候就是0;
第二个:有点不明白你为什么要在scanf("\n",xxx)加“\n”,而且char   *name;是指针类型。boy1.name不用加“&”,scanf("%c",boy1.name);至于你说的只输出两个我没看到。我猜想的就是某个scanf读入了'\n',所以该值在输出是是空

破灬王 发表于 2014-9-22 17:51:37

恋色天空 发表于 2014-9-22 16:06
!=不等于操作符!和=之间不能有空格

你说的!=不等于,我的意思是非不是!=等于。

破灬王 发表于 2014-9-22 18:05:57

#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 18:06:48

恋色天空 发表于 2014-9-22 16:22
第一个:因为r*r乘积是int类型,但赋值给ares 时会被转换为float类型,所以在用“%d”去输出的时候就是0;
...

第二个我重新打了一下 你帮我看下,谢谢咯,

漩涡鸣人 发表于 2014-9-22 18:14:20

破灬王 发表于 2014-9-22 18:06
第二个我重新打了一下 你帮我看下,谢谢咯,

scanf("%c", boy1.name);这句有问题
name成员只是一个指针变量,没有赋值它就没有指向,这样写的话scanf直接把name里面的值当做地址,寻址的时候就崩溃了

破灬王 发表于 2014-9-22 18:28:36

漩涡鸣人 发表于 2014-9-22 18:14
scanf("%c", boy1.name);这句有问题
name成员只是一个指针变量,没有赋值它就没有指向,这样写的话scanf ...

谢谢,但是问题还是没解决

破灬王 发表于 2014-9-22 18:33:58

漩涡鸣人 发表于 2014-9-22 18:14
scanf("%c", boy1.name);这句有问题
name成员只是一个指针变量,没有赋值它就没有指向,这样写的话scanf ...

我给name赋值了boy1.name = "cang";但是还是和上面一样只能输入2个 这是什么问题,请帮我在看下。谢谢!

漩涡鸣人 发表于 2014-9-22 18:55:13

破灬王 发表于 2014-9-22 18:33
我给name赋值了boy1.name = "cang";但是还是和上面一样只能输入2个 这是什么问题,请帮我在看下。谢谢!

scanf会在缓冲区残留\n,每次scanf之后清一下缓冲区就好了,无数C友都出现这问题,scanf这功能的确不够智能

破灬王 发表于 2014-9-22 21:55:05

感谢你们!!!!

破灬王 发表于 2014-9-22 21:59:54

漩涡鸣人 发表于 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 22:57:04

破灬王 发表于 2014-9-22 21:59
#include

struct vegetable


如果您要用非操作,应该把!放在要操作的值前面
判断是否等于应该是==,修改一下就好了

恋色天空 发表于 2014-9-23 09:21:39

破灬王 发表于 2014-9-22 18:28
谢谢,但是问题还是没解决

我昨天遇到这个问题了,我总结的是:当你输入第一个num后,第一个scanf读入,然后第二个scanf会读入后面的那个'\n',即回车符,所以输出name值是回车符。同理,sex读入格式是‘%c’,所以只会读入一个char类型字符,即读入‘1’;所以score读入的是‘0’

破灬王 发表于 2014-9-23 11:06:16

恋色天空 发表于 2014-9-23 09:21
我昨天遇到这个问题了,我总结的是:当你输入第一个num后,第一个scanf读入,然后第二个scanf会读入后面 ...

这个已经解决了,谢谢 用fflush(stdin);就行了

破灬王 发表于 2014-9-23 11:09:14

漩涡鸣人 发表于 2014-9-22 22:57
如果您要用非操作,应该把!放在要操作的值前面
判断是否等于应该是==,修改一下就好了

我要用非操作,应该吧!放在操作值得前面是放到name里面?有点笨,看不懂。。。。。能把这个改下不?
(vegcount < 20 && gets(veg.name)! = NULL && (veg.name!) = '\0')

谢谢

恋色天空 发表于 2014-9-23 11:27:39

破灬王 发表于 2014-9-23 11:06
这个已经解决了,谢谢 用fflush(stdin);就行了

此函数仅适用于部分编译器(如VC6),但是并非所有编译器都要支持这个功能(如gcc3.2)。这是一个对C标准的扩充。

破灬王 发表于 2014-9-23 17:41:05

恋色天空 发表于 2014-9-23 11:27
此函数仅适用于部分编译器(如VC6),但是并非所有编译器都要支持这个功能(如gcc3.2)。这是一个对C标准 ...

恩,学习了,谢谢你的回答
页: [1]
查看完整版本: 帮忙解决下,谢谢!