C语言,如图这是什么情况啊

img

如同随便输入三个数,只能识别第一个数,然后输出两个很大的负数

scanf 是原样输入,
你的 里面有逗号,输入也要有逗号,不能空格分隔,要用 逗号分隔

将scanf里面的% d之间的逗号去掉,就可以了!

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7512981
  • 这篇博客你也可以参考下:C语言数组使用、数组相关的宏定义剖析,及矩阵乘积、杨辉三角实例
  • 同时,你还可以查看手册:c语言-内存模型与数据竞争 中的内容
  • 除此之外, 这篇博客: C语言结构体数组,结构体数组的定义,结构体数组的输出,结构体的应用中的 案例三、 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 求出所有职工中最高工资那个职工的信息
    注意:这里有一个知识点:成员比较整体赋值

    #include<stdio.h> 
    #include<string.h>
    typedef struct worker{
    	char id[10];
    	char name[10];
    	char sex[10];
    	int pay;
    }WOR;
    void max(WOR a[],int n){
    	WOR m=a[0];
    	int i;
    	for(i=0;i<n;i++){
    		if(m.pay<a[i].pay){//如果m的工资小于a[i]的工资,就把m赋值给a[i]
    			m=a[i];
    		}
    	}
    	printf("%s\t%s\t%s\t%d\n",m.id,m.name,m.sex,m.pay);
    	//假设第一个工人是最高工资的那个工人	 
    } 
    void main(){
    	WOR a[6]={ 
    		{"0001","陈文杰","男",1200},
    		{"0002","张三丰","女",7000},
    		{"0003","张四丰","女",1200},
    		{"0004","张五丰","男",2200},
    		{"0005","张六丰","男",5200},
    		{"0006","张七丰","男",6200} 
    	};
    	max(a,6);
    }
    

    在这里插入图片描述
    上方程序改进
    输出所有工资大于平均工资的职工
    1、必须要先求出平均
    2、在访问每一个职工,如果发现这个职工的工资要小于平均工资的话,就输出这个职工的信息。

    #include<stdio.h> 
    #include<string.h>
    typedef struct worker{
    	char id[10];
    	char name[10];
    	char sex[10];
    	int pay;
    }WOR;
    void QueryByAver(WOR a[],int n){
    	int i;
    	float aver; 
    	int sum = 0; 
    	//求出总工资 
    	for(i=0;i<n;i++){
    		sum+=a[i].pay;
    	}
    	//求出平均工资aver 
    	aver =(float)sum/n;
    	printf("平均工资为%f\n",aver);
    	printf("大于平均工资为:\n");
    	//访问每一个职工 
    	for(i=0;i<n;i++){
    		if(a[i].pay>=aver){//如果发现职工的工资大于等于平局工资,就输出对应职工的信息 
    			printf("%s\t%s\t%s\t%d\n",a[i].id,a[i].name,a[i].sex,a[i].pay);
    		}
    	}	
    }
    void main(){
    	WOR a[6]={ 
    		{"0001","陈文杰","男",3200},
    		{"0002","张三丰","女",7000},
    		{"0003","张四丰","女",1200},
    		{"0004","张五丰","男",2200},
    		{"0005","张六丰","男",5200},
    		{"0006","张七丰","男",6200} 
    	};
    	QueryByAver(a,6);
    }
    

    在这里插入图片描述
    算法变换

    #include<stdio.h> 
    #include<string.h> 
    typedef struct stud{//定义了一个结构体  
    	char Id[10];//学号 
    	char Name[10];//姓名 
    	int China;//语文成绩
    	int Math;//数学成绩
    	int English;//英语成绩	 
    }STU;
    //编写一个函数,它的目的是为了输出所有学生的总分与平均分
    void fun(STU a[],int n){
    	int sum=0,i;
    	printf("学号\t姓名\t语文\t数学\t英语\t总分\t平局分\n"); 
    	//要访问里面的每一个学生 
    	for(i=0;i<n;i++){
    		//对于一个学生a[i]而言我们要来输出它的信息
    		printf("%s\t%s\t%d\t%d\t%d\t%d\t%.1f\n",
    		a[i].Id,a[i].Name,a[i].China,a[i].Math,a[i].English,
    		a[i].China+a[i].Math+a[i].English,
    		(a[i].China+a[i].Math+a[i].English)/3.0); 
    		sum = a[i].China+a[i].Math+a[i].English;
    	}
    } 
    void main(){
    	STU a[8]={
    	{"S1","张一军",127,150,100}, 
    	{"S2","张二军",75,85,89}, 
    	{"S3","张三军",67,58,86}, 
    	{"S4","张四军",120,101,87}, 
    	{"S5","张五军",136,100,82}, 
    	{"S6","张六军",141,52,83}, 
    	{"S7","张七军",125,85,81},  
    	{"S8","张八军",136,65,79}
    	};
    	fun(a,8);
    }
    

    在这里插入图片描述
    案例变换:
    注意字符串也不能够直接赋值,要通过一个函数来对字符串进行赋值
    strcpy:通过这个函数才可以给字符串进行赋值

    #include<stdio.h> 
    #include<string.h> 
    typedef struct stud{//定义了一个结构体  
    	char Id[10];//学号 
    	char Name[10];//姓名 
    	int China;//语文成绩
    	int Math;//数学成绩
    	int English;//英语成绩	 
    }STU;
    //编写一个函数,求出每一个学生的优秀科目,目的不是输出分数,而是要输出对应科目的名称
    void Perferct(STU a[],int n){
    	int sum=0,i;
    	char per[20];
    	int maxscore;//用来确保最优科目的分数 
    	//要输出标题 
    	printf("学号\t姓名\t语文\t数学\t英语\t最优秀科目\n"); 
    	//要访问里面的每一个学生,对于第i学生要确认它的最优科目名称(语文,数学,英语) 
    	//科目名称是字符串,所以要先定义一个字符串来确保保存最优科目名称
    	for(i=0;i<n;i++){
    		maxscore=a[i].China;//认为第i个学生的语文是最优秀的 
    		strcpy(per,"语文");
    		if(maxscore<a[i].Math){
    			maxscore = a[i].Math;
    			strcpy(per,"数学");
    		} 
    		if(maxscore<a[i].English){
    			maxscore = a[i].Math;
    			strcpy(per,"英语");
    		} 
    		printf("%s\t%s\t%d\t%d\t%d\t%s\n",
    		a[i].Id,a[i].Name,a[i].China,a[i].Math,a[i].English,per); 
    	} 
    } 
    
    void main(){
    	STU a[8]={
    	{"S1","张一军",127,150,100}, 
    	{"S2","张二军",75,85,89}, 
    	{"S3","张三军",67,58,86}, 
    	{"S4","张四军",120,101,87}, 
    	{"S5","张五军",136,100,82}, 
    	{"S6","张六军",141,52,83}, 
    	{"S7","张七军",125,85,81},  
    	{"S8","张八军",136,65,79}
    	};
    	Perferct(a,8);
    }
    

    在这里插入图片描述

  • 您还可以看一下 尹成老师的C语言系列之 堆、堆排序与字符串强化课程中的 堆与堆排序小节, 巩固相关知识点