#include <stdio.h> void main() int a,b,c,max; scanf("%d,%d,%d",&a,&b,&c); printf(&q

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#include <stdio.h> void main() int a,b,c,max; scanf("%d,%d,%d",&a,&b,&c); printf(&q相关的知识,希望对你有一定的参考价值。

哪位高手帮我看哈这程序怎么输出不了正确的数值呢

参考技术A #include <stdio.h>
int main(void)

int a,b,c,max;
scanf("%d,%d,%d",&a,&b,&c);
max=a>b?a:b;
max=max>c?max:c;
printf("the largest num is %d\n",max);
return 0;


-------------------

程序没有任何的问题,输入每个数字后,记得打逗号,例如12,23,34 输出的结果为34
出现负数的原因可能是你输入的数字太大,溢出来了
参考技术B include <stdio.h>
int max(int a, int b)

return a>b?a:b;

int main (void) //linux 下要求主函数为INT型;

c = max(a,b);
return 0;


补充:
哦 修改你的程序啊,说清楚嘛!
你最大的错误就是max()函数只有声明没有定义啊,都不知道它是做什么的,你能编译通过?我觉得不能哦!
你可以在你main()函数外面加一个max()函数就正确了:
int max(int a, int b)

return a > b ? a : b ;

另外,团IDC网上有许多产品团购,便宜有口碑
参考技术C 因为你输入的数据格式与scanf("%d,%d,%d",&a,&b,&c); 不匹配。输入数据时请用英文逗号分隔才匹配。如:
1,2,3
参考技术D //这个能输出正确的值就怪了,编译都通不过
#include <stdio.h> void main() int a,b,c,max; scanf("%d,%d,%d",&a,&b,&c);max=a>b?a:b;
max=max>c?max:c; printf("the largest num is %d\n",max);追问

不啊,我的c++的编译通过了啊,只不过结果是很大的负数啊

追答

#include void main() int a,b,c,max; scanf("%d,%d,%d",&a,&b,&c); printf("the largest num
这个代码能通过,你没有粘贴完代码吧!
max变量没有被赋值,值未知,无法确定。
上面的代码给你改正了

本回答被提问者采纳

chen

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<dirent.h>
#include<errno.h>
#include<unistd.h>
#include<pwd.h>
#include<grp.h>
#include<time.h>
#include<glob.h>
#include<string.h>

#define BUFSIZE 100

//判断是否是 . .. 文件
int dot_dir(const char *path)
{
    char *p = NULL;
    p = strrchr(path,/);
    if(p != NULL)
    {
        if(!strcmp(p,"/.")||!strcmp(p,"/.."))
            return 1;
    } 
    return 0;
}

int myblock(const char *path)
{
    struct stat cur_stat;
    int sum = 0;
    glob_t globres;
    char buf[BUFSIZE] = {};
    int i;
    
    if (lstat(path,&cur_stat) < 0)//判断lstat函数是否成功
    {
//        perror("lstat()");
        return -1;
    }
    
    if(!S_ISDIR(cur_stat.st_mode))//判断是不是目录文件,不是直接输出大小
    {
        return cur_stat.st_blocks;
    }
    
    //如果是目录
    sum += cur_stat.st_mode;//本身也会有大小
    
    strcpy(buf,path);
    strcat(buf,"/*");//目录下的所有文件
    glob(buf,0,NULL,&globres);
    
    //隐藏文件
    memset(buf,,BUFSIZE);
    strcpy(buf,path);
    strcat(buf,"/.*");
    glob(buf,GLOB_APPEND,NULL,&globres);

    for(i = 0;i < globres.gl_pathc;i++)
    {
        if(dot_dir((globres.gl_pathv)[i]))
            continue;
        sum += myblock((globres.gl_pathv)[i]);

    }
    return sum;
}

int mystat(const char *path)
{
    struct stat m_stat;//定义stat类型的结构体
    struct passwd *pwd = NULL;//定义拥有者
    struct group *grp = NULL;//定义所属组
    struct tm *tmp = NULL;//定义时间
    char buf[BUFSIZE] = {};//定义存放时间字符串的数组

    if(lstat(path,&m_stat)==-1)
{
    //perror("stat()");
    return 1;
}

    //判断文件类型
switch(m_stat.st_mode & S_IFMT)
{
    case S_IFREG:
        printf("-");//普通文件
        break;
    case S_IFDIR:
        putchar(d);//目录文件
        break;
    case S_IFSOCK:
        putchar(s);//网络套接字文件
        break;
    case S_IFLNK:
        putchar(l);//链接文件
        break;
    case S_IFBLK:
        putchar(b);//块设备文件
        break;
    case S_IFCHR:
        putchar(c);//字符设备文件
        break;
    case S_IFIFO:
        putchar(p);//管道文件
        break;
    default:
        break;
}

    //判断文件权限
    if(m_stat.st_mode & S_IRUSR)
        putchar(r);
    else
        putchar(-);
    if(m_stat.st_mode & S_IWUSR)
        putchar(w);
    else
        putchar(-);
    if(m_stat.st_mode & S_IXUSR)
        putchar(x);
    else
        putchar(-);

    //显示硬连接数
    printf(" %ld ",m_stat.st_nlink);

    //文件拥有者姓名
    pwd = getpwuid(m_stat.st_uid);
    printf("  %s ",pwd->pw_name);

    //文件所属组姓名
    grp = getgrgid(m_stat.st_gid);
    printf("  %s ",grp->gr_name);

    //总字节个数
    printf("% ld  ",m_stat.st_blocks);

    //获取文件的时间
    tmp = localtime(&m_stat.st_mtim.tv_sec);
    if(tmp == NULL)
        return 1;
    strftime(buf,BUFSIZE,"%m月  %d %H:%M", tmp);
    printf("%s",buf);

    //输出文件名
    printf("  %s",path);

    printf("
");    
}

int mydir(const char *path)
{
    DIR *dp = NULL;
    struct dirent *entry = NULL;
    struct stat m_stat;
    
    if (lstat(path,&m_stat) < 0)//判断lstat函数是否成功
        {
                return 1;
        }

        if(!S_ISDIR(m_stat.st_mode))//判断所打开的文件是不是目录文件
        {
                return 1;
        }

    dp = opendir(path);
    if(dp==NULL)
    {    //perror("opendir()");
        return 1;
    }
    while(1)
    {
        entry = readdir(dp);
        if(entry == NULL)
        {
            if(errno)    
            {    
                //    perror("readdir()");
                closedir(dp);
                return 1;
            }
            break;
        }
        printf("%s
",entry->d_name);
    }
    closedir(dp);
    return 0;
}

int main(int argc,char *argv[])
{
    char *optstring = "-a:l:i:h:";
    int c;
    int re;
    struct stat cur_stat;
    if(argc < 2)
        return 1;

    while(1)
    {
        c = getopt(argc,argv,optstring);
        if(c==-1)
            break;
        switch(c)
        {
            case a:re= mydir(optarg);//打开所有文件
                 if(re == 1)
                 {
                     printf("error!
");
                 }

                 break;
            case l:if(re == mystat(optarg))//打印文件详细信息
                     printf("error!
");
                 break;
            case i:     stat(optarg,&cur_stat);//打印文件iNode号
                    printf("%ld
",cur_stat.st_ino);
                    break;
            case h:re = myblock(optarg);//打印文件大小
                 if(re == -1)
                     printf("error!
");
                 else    
                     printf("%d k 
",re);
                 break;
            case ?:printf("不认识此选项%s
",argv[optind-1]);    

        }



    }    






    return 0;
}

 


#include<sys/stat.h>
#include<dirent.h>
#include<errno.h>
#include<unistd.h>
#include<pwd.h>
#include<grp.h>
#include<time.h>
#include<glob.h>
#include<string.h>

#define BUFSIZE 100

//判断是否是 . .. 文件
int dot_dir(const char *path)
{
    char *p = NULL;
    p = strrchr(path,‘/‘);
    if(p != NULL)
    {
        if(!strcmp(p,"/.")||!strcmp(p,"/.."))
            return 1;
    }
    return 0;
}

int myblock(const char *path)
{
    struct stat cur_stat;
    int sum = 0;
    glob_t globres;
    char buf[BUFSIZE] = {};
    int i;
    
    if (lstat(path,&cur_stat) < 0)//判断lstat函数是否成功
    {
//        perror("lstat()");
        return -1;
    }
    
    if(!S_ISDIR(cur_stat.st_mode))//判断是不是目录文件,不是直接输出大小
    {
        return cur_stat.st_blocks;
    }
    
    //如果是目录
    sum += cur_stat.st_mode;//本身也会有大小
    
    strcpy(buf,path);
    strcat(buf,"/*");//目录下的所有文件
    glob(buf,0,NULL,&globres);
    
    //隐藏文件
    memset(buf,‘‘,BUFSIZE);
    strcpy(buf,path);
    strcat(buf,"/.*");
    glob(buf,GLOB_APPEND,NULL,&globres);

    for(i = 0;i < globres.gl_pathc;i++)
    {
        if(dot_dir((globres.gl_pathv)[i]))
            continue;
        sum += myblock((globres.gl_pathv)[i]);

    }
    return sum;
}

int mystat(const char *path)
{
    struct stat m_stat;//定义stat类型的结构体
    struct passwd *pwd = NULL;//定义拥有者
    struct group *grp = NULL;//定义所属组
    struct tm *tmp = NULL;//定义时间
    char buf[BUFSIZE] = {};//定义存放时间字符串的数组

    if(lstat(path,&m_stat)==-1)
{
    //perror("stat()");
    return 1;
}

    //判断文件类型
switch(m_stat.st_mode & S_IFMT)
{
    case S_IFREG:
        printf("-");//普通文件
        break;
    case S_IFDIR:
        putchar(‘d‘);//目录文件
        break;
    case S_IFSOCK:
        putchar(‘s‘);//网络套接字文件
        break;
    case S_IFLNK:
        putchar(‘l‘);//链接文件
        break;
    case S_IFBLK:
        putchar(‘b‘);//块设备文件
        break;
    case S_IFCHR:
        putchar(‘c‘);//字符设备文件
        break;
    case S_IFIFO:
        putchar(‘p‘);//管道文件
        break;
    default:
        break;
}

    //判断文件权限
    if(m_stat.st_mode & S_IRUSR)
        putchar(‘r‘);
    else
        putchar(‘-‘);
    if(m_stat.st_mode & S_IWUSR)
        putchar(‘w‘);
    else
        putchar(‘-‘);
    if(m_stat.st_mode & S_IXUSR)
        putchar(‘x‘);
    else
        putchar(‘-‘);

    //显示硬连接数
    printf(" %ld ",m_stat.st_nlink);

    //文件拥有者姓名
    pwd = getpwuid(m_stat.st_uid);
    printf("  %s ",pwd->pw_name);

    //文件所属组姓名
    grp = getgrgid(m_stat.st_gid);
    printf("  %s ",grp->gr_name);

    //总字节个数
    printf("% ld  ",m_stat.st_blocks);

    //获取文件的时间
    tmp = localtime(&m_stat.st_mtim.tv_sec);
    if(tmp == NULL)
        return 1;
    strftime(buf,BUFSIZE,"%m月  %d %H:%M", tmp);
    printf("%s",buf);

    //输出文件名
    printf("  %s",path);

    printf(" ");    
}

int mydir(const char *path)
{
    DIR *dp = NULL;
    struct dirent *entry = NULL;
    struct stat m_stat;
    
    if (lstat(path,&m_stat) < 0)//判断lstat函数是否成功
        {
                return 1;
        }

        if(!S_ISDIR(m_stat.st_mode))//判断所打开的文件是不是目录文件
        {
                return 1;
        }

    dp = opendir(path);
    if(dp==NULL)
    {    //perror("opendir()");
        return 1;
    }
    while(1)
    {
        entry = readdir(dp);
        if(entry == NULL)
        {
            if(errno)    
            {    
                //    perror("readdir()");
                closedir(dp);
                return 1;
            }
            break;
        }
        printf("%s ",entry->d_name);
    }
    closedir(dp);
    return 0;
}

int main(int argc,char *argv[])
{
    char *optstring = "-a:l:i:h:";
    int c;
    int re;
    struct stat cur_stat;
    if(argc < 2)
        return 1;

    while(1)
    {
        c = getopt(argc,argv,optstring);
        if(c==-1)
            break;
        switch(c)
        {
            case ‘a‘:re= mydir(optarg);//打开所有文件
                 if(re == 1)
                 {
                     printf("error! ");
                 }

                 break;
            case ‘l‘:if(re == mystat(optarg))//打印文件详细信息
                     printf("error! ");
                 break;
            case ‘i‘:     stat(optarg,&cur_stat);//打印文件iNode号
                    printf("%ld ",cur_stat.st_ino);
                    break;
            case ‘h‘:re = myblock(optarg);//打印文件大小
                 if(re == -1)
                     printf("error! ");
                 else    
                     printf("%d k ",re);
                 break;
            case ‘?‘:printf("不认识此选项%s ",argv[optind-1]);    

        }



    }    






    return 0;
}

以上是关于#include <stdio.h> void main() int a,b,c,max; scanf("%d,%d,%d",&a,&b,&c); printf(&q的主要内容,如果未能解决你的问题,请参考以下文章

C 编程指令 #include<stdio.h> printf

在C语言中#include "stdio.h"和#include <stdio.h>有啥区别?

C语言里面的这个#include <stdio.h>啥意思啊?

Visual Studio Code,#include <stdio.h> 说“将包含路径添加到设置”

Visual Studio Code,#include <stdio.h> 说“将包含路径添加到设置”

用vs2010编了以下程序 #include<stdlib.h> #include<stdio.h> #define OVERFLOW -2 #define OK 1 #def