精华内容
下载资源
问答
  • 在一个类里面写了函数,函数的参数是自定义的结构体类型,例如:函数A(message B)--message是自定义结构体类型,结构体里面是字符串数组,然后我想通过键盘输入,实例化了一个类test和结构体类型指针 message *b ...
  • 输入功能的子函数与主函数参数传递的类型示例: #pragma pack(push) #pragma pack(1) #include<stdio.h> #include<string.h> struct STI { char id[9]; char name[21]; char...

    输入功能的子函数与主函数参数传递的类型示例:

    #pragma pack(push)
    #pragma pack(1)
    
    #include<stdio.h>
    #include<string.h>    
    
    struct STI          
    {
    	char id[9];      
        char name[21]; 
    	char sex;
    	int age;
    	int score;       
    };
    
    int inputStudentsInformation() ;
    
    int inputStudentsInformation(struct STI s[20])    
    {
    	printf("inputStudentsInformation()里%d\n",sizeof(s));
    	return 0;
    }
    
    void main(void)
    {
    	struct STI st[20];  
    	int stCount = 0;
    	printf("main()里%d\n",sizeof(st));
    	stCount = inputStudentsInformation(st);   
    }
    
    #pragma pack(pop)

    输出结果为:

    这里的4说明子函数inputStudentsInformation() 里的形参传递的是首地址,故而只有4个字节。

    (1)当把 s[20] 改为 s[1000] 时,输出结果一样;

    (2)将函数定义中的int inputStudentsInformation(struct STI s[20])  改为 int inputStudentsInformation(struct STI *s) ,输出结果一样。

    (2)将函数定义中的int inputStudentsInformation(struct STI s[20])  改为 int inputStudentsInformation(struct STI s[]) ,输出结果一样。

    此时传递的就是首地址。

    分析

    int inputStudentsInformation(struct STI *s)

     

    // struct STI *s = st <=> &st[0]  s的值为st[0]的首地址

    // s指向main()函数的st数组的第一个元素,即下标为0的元素

    // s+1指向main()函数的st数组的第二个元素,即下标为1的元素

    // s+i指向main()函数的st数组的第i+1个元素,即下标为i的元素

    // *s意为:s所指向的实例,即st[0]

    // *(s+1)意为:s+1所指向的实例,即st[1]

    // *(s+i)意为:s+1所指向的实例,即st[i]

    // 综上,在inputStudentsInformation()函数中,可以通过s对main()函数中的st数组的所有元素(实例)进行访问(读和写/改/赋值)

     

    主函数中stCount = inputStudentsInformation(st);

    最终结论:
    输入子函数定义:int inputStudentsInformation(struct STI *s) {}    

                                int inputStudentsInformation(struct STI s[]) {}       

    主函数:stCount = inputStudentsInformation(st);  

                  stCount = inputStudentsInformation(&st[0]);   

    记忆:主函数传地址,子函数用指针

    (传值还是传址,取决于函数的功能:若该函数需要更改其值,则传址;若不需要更改,则传值)


     

    下面两种表述方式具有相同的效果:

    (1)

    int inputStudentsInformation(struct STI *s)
    {
        int Cnt;
        //...
        return  Cnt;
    }

    void main(void)
    {
        struct STI st[20];   
        int stCount = 0;

        stCount = inputStudentsInformation(st);
    }

     

    (2)

    void inputStudentsInformation(struct STI *s, int *Cnt)
    {
        //...
    }

    void main(void)
    {
        struct STI st[20];   
        int stCount = 0;

        inputStudentsInformation(st, &stCount);
    }

     

    上述为输入函数,需要对输入的个数stCount进行更改,故传址;

    但是对输出函数,仅仅只是输出,不需要对stCount进行更改,故传值

     

    到底是传stCount还是&stCount,取决于函数的功能:

    若该函数的功能要求更改stCount的值,则,传递&stCount;

    若该函数的功能不要求更改stCount的值,则,传递stCount;

     

    展开全文
  • c语言 结构体输入输出Control Structure in C defines how the statements in the program are going to execute. A statement is a single line or instruction in a program. C中的控件结构定义了程序中的语句将...

    c语言 结构体的输入输出

    Control Structure in C defines how the statements in the program are going to execute. A statement is a single line or instruction in a program.

    C中的控件结构定义了程序中的语句将如何执行。 语句是程序中的单行或指令。

    C语言的控制结构 (Control Structure in C)

    Control Structure, also known as Control Flow tells that in which order each statement is going to execute. We will discuss following types

    控制结构(也称为控制流)告诉您每个语句将以什么顺序执行。 我们将讨论以下类型

    1. Sequential Flow

      顺序流
    2. It says that statements are executed in sequence order and each statement is executed exactly once.

      它说语句按顺序执行,每个语句只执行一次。

    3. Conditional Flow

      条件流
    4. In Conditional Flow, whether execution of particular statement(s) happens or not is dependent on other statement that specifies a condition.
      if, if-else, switch

      在条件流中,是否执行特定语句取决于指定条件的其他语句。
      如果,如果-否则,切换

    5. Iterative Flow

      迭代流
    6. The flow by which user can execute particular statement(s) number of times without rewriting them, also known as Looping statements.
      for, while, do-while

      用户可以执行多次特定语句而不重写它们的流程,也称为循环语句。
      暂时

    7. Jump Statements

      跳转语句
    8. These are statements to interrupt the flow and move to other statement as per requirement.
      break, continue, goto, return

      这些语句可中断流程并根据需要移至其他语句。
      休息,继续,转到,返回

    用C输入和输出 (Input and Output in C)

    C programming has multiple ways to take input and output. In our context, Input is something which user enters from keyboard and Output is the result or outcome shown by the program on console (Command prompt/Terminal).
    We will discuss 2 functions, printf() for the output and scanf() for the input.
    Basically functions are like workers which perform a specific task when they are used.

    C编程具有多种获取输入和输出的方式。 在我们的上下文中,Input是用户从键盘输入的内容,Output是控制台上程序(命令提示符/终端)显示的结果或结果。
    我们将讨论2个函数, printf()用于输出, scanf()用于输入。
    基本上,功能就像工作人员在使用时执行特定任务一样。

    printf-scanf

    printf-scanf

    打印扫描

    打印 (printf)

    Parameters are passed to printf() to show output on the console in the following way.

    参数通过以下方式传递到printf(),以在控制台上显示输出。

    1. Strings

      弦乐
    2. //String Output. "\n" is used for next line.
      
      printf("Hello World");
      printf("\n");
      printf("Hello World in next Line");
    3. integer, character, float/double values

      整数,字符,浮点/双精度值
    4. //To print int, "%d" is used
      int a = 10;
      printf("%d",a);
      printf("\n") \\Next Line
      
      //To print char, "%c" is used
      char ch = 'f';
      printf("%c",ch);
      printf("\n") \\Next Line
      
      //for double and float, %f is used
      double d = 10.564;
      printf("%f",d);

    扫描 (scanf)

    It takes input from user by keyboard and assigns it to a variable (identifier). Detailed understanding of scanf() is related to “Pointers in C” which is an advanced topic.
    Here & is “AddressOf” operator, and scanf(“%d”,&a) means something like “take the value from keyboard, consider it integer (as %d is for int) and put it on the address of a“.

    它通过键盘从用户那里获取输入并将其分配给变量(标识符)。 对scanf()的详细了解与“高级C语言指针”有关。
    这里是“AddressOf”操作符,和scanf(“%d”,&a)指像“从键盘取值,考虑它的整数(如%d是INT),并把它地址 ”。

    //int input
    int a;
    printf("Enter a value of a: ");
    scanf("%d",&a); //It would prompt user to enter a value
    printf("Value of a is %d",a);
    
    //char input
    int ch;
    printf("Enter a value of ch: ");
    scanf("%c",&ch); //It would prompt user to enter a value
    printf("Value of a is %c",ch);

    用C发表的评论 (Comments in C)

    Comments help us in providing information about the code statements. The compiler ignores the comments while compilation. Let’s see how to provide comments in C programming.

    注释有助于我们提供有关代码语句的信息。 编译时编译器将忽略注释。 让我们看看如何在C编程中提供注释。

    • “//” (Double slash) for single line comment

      单行注释的“ //”(双斜杠)
    • ” /* …..Some lines of comment here….. */ ” for multi-line comments.

      ” / *…..此处有一些注释行….. * /”用于多行注释。
    /*
    This is Multi-Line Comment.
    Comments are ignored by the compiler.
    */
    //This is a single line Comment
    int a = 10; //Declaring an integer variable and assigning value as 10;

    苏马里 (Sumary)

    We have covered up the conceptual understanding of control structure and Input-output in programming. It is important to understand the basic usage before going into the specific cases explained in further articles.

    我们已经掩盖了编程中对控制结构和输入输出的概念理解。 在深入探讨后续文章中介绍的特定情况之前,了解基本用法非常重要。

    翻译自: https://www.journaldev.com/27891/control-structure-input-output-in-c

    c语言 结构体的输入输出

    展开全文
  • 浅谈关于用结构体函数输入输出数组元素 在实际生活中,当处理一类或多类事物的时候,我们常常构造结构体函数来进行具体事物的整理,下面以处理学生信息为例,看一看使用结构体函数的时候需要注意的事项。 以下面这...

    浅谈关于用结构体函数输入输出数组元素

    在实际生活中,当处理一类或多类事物的时候,我们常常构造结构体函数来进行具体事物的整理,下面以处理学生信息为例,看一看使用结构体函数的时候需要注意的事项。

    以下面这个问题为例,我们来探讨一下。
    学生结构体类型包括学号、姓名、性别、生日(年、月、日)、成绩,对存有N个这样学生的结构体数组,编写函数,实现对数组元素的输入、输出、删除、插入、查找(按学号)、按学生成绩进行排序操作。

    提示:
    删除元素的位置从键盘输入
    插入元素的位置从键盘输入,在该位置前插入元素,
    插入元素的值从键盘输入
    按学号进行查找,查找的学号从键盘输入

    我们可以构造如下的数据类型

    struct Date //这里新建一个数据类型,以便于对年月日这三个同类进行整理 
    {
    	int year;
    	int month;
    	int day;
    };
    struct student
    {
    	char num[9];
    	char name[10];
    	char sex;
    	Date birthday;
    	float score;
    };
    

    这时,学号、姓名、性别、生日(年、月、日)、成绩这些基本数据都整理完毕了,下面我们来尝试一下对这组数据进行操作。

    对数组元素的输入、输出

    这里我们可以定义一个input(输入)和output(输出)函数

    void input(student &s);
    void output(student s,int x);
    

    输入
    下面是函数体

    void input(student &s)
    {
    	cout<<"请输入学生学号 姓名 性别 生日 成绩"<<endl;
    	cin>>s.num >>s.name>>s.sex>>s.birthday.year>>s.birthday.month>>s.birthday.day>>s.score;
    	return;
    }
    

    这里并没有什么好说的,准确输入各种数据即可。

    输出
    下面是函数体

    void output(student s,int x)
    {
    	cout<<"第"<<x+1<<"位同学的信息是"<<endl;
    	cout<<s.num<<" "<<s.name<<" "<<s.sex<<" "<<s.birthday.year<<" "<<s.birthday.month<<" "<<s.birthday.day<<" "<<s.score<<endl;
    	return;
    }
    

    这里注意返回的格式,不返回任何值,故return后不加任何东西。

    删除

    void del(student *s,int x)
    {  
    	int  i;
        cout<<"请输入删除元素的位置:"<<endl;
    	cin>>i;
    	int j;
    	for(j=i;j<x;j++)
    		s[i]=s[i+1];
    	x--;
    	for(i=0;i<x;i++)
    		output(s[i],i);
    	return ;
    }
    

    删除的原理其实是下一位的数据顶到这一位上,即依次向前移动一位

    for(j=i;j<x;j++)
    		s[i]=s[i+1];
    	x--;
    

    这串函数的作用是将i位置处的数据删除,并将其后i+1的数据顶替到i的位置,最后的**x- -**是防止程序溢出。

    	for(i=0;i<x;i++)
    		output(s[i],i);
    

    然后再使用output函数逐个输出即可。

    插入

    插入的原理同样是替换迭代,利用组合排序插入一个数据
    要注意 最好是在删除一组数之后进行插入

    void ins(student *s,int x)
    {   
    	int  i;
        cout<<"请输入插入元素的位置:"<<endl;
        cin>>i;
    	for(int j=x-2;j>=i;j--)
    		s[j+1]=s[j];
    	cin>>s[i].num>>s[i].name>>s[i].sex>>s[i].birthday.year>>s[i].birthday.month>>s[i].birthday.day>>s[i].score;
        for(i=0;i<x;i++)
    		output(s[i],i);
    	return;
    }
    

    最后使用我们定义过的output函数作为输出方式进行输出。

    展开全文
  • 定义一个职工结构体数组,从键盘输入5位职工信息,打印输出最高的工资。是一个很好的关于学习C语言结构体的例子。
  • #include<stdio.h> #include<stdlib.h> #include<string.h>... printf("请输入学生个数:\n"); scanf("%d",&len); // struct student a[3]; // struct student *p; struct studen
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct student
    {
    	char *name;
    	int score;
    };
    int main()
    {
    	int i;
    	int len;
    	printf("请输入学生个数:\n");
    	scanf("%d",&len);
    //	struct student a[3];
    //	struct student *p;
    	struct student *p=(struct student *)malloc(len*sizeof(struct student));
    //	p=a;
    	for(i=0;i<len;i++)
    	{
    		printf("请输入第%d个学生的姓名:",i+1);
    		p->name=(char *)malloc(128);
    		scanf("%s",p->name);
    		printf("请输入该学生的分数:");
    		scanf("%d",&(p->score));
    		p++;
    	}
    	p=p-len;//p=a
    	for(i=0;i<len;i++)
    	{
    		printf("%s的分数是%d\n",p->name,p->score);
    		p++;	
    	}
    	return 0;
    }
    

    在这里插入图片描述

    新增添功能,求出分数最大最小的同学

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct student
    {
    	char *name;
    	int score;
    };
    int main()
    {
    	int i;
    	int len =0;
    	printf("请输入学生个数:");
    	scanf("%d",&len);
    	struct student a[len];
    	struct student *p;
    	p=a;
    	
    	struct student maxScore;
    	struct student minScore;
    	maxScore=a[0];
    	minScore=a[0];//假设最大最小值都是第一个学生 
    	
    	for(i=0;i<len;i++)
    	{
    		printf("请输入第%d个学生的姓名:",i+1);
    		p->name=(char *)malloc(sizeof(a[0])*len);
    		scanf("%s",p->name);
    		printf("请输入该学生的分数:");
    		scanf("%d",&(p->score));
    		p++; 
    	}
    	p=p-len;//上面得到循环指针指向最后,要返回开始 
    	for(i=0;i<len;i++)
    	{
    		printf("%s的分数为:%d\n",p->name,p->score);
    		p++;
    	}
    
    	for(i=0;i<len;i++)
    	{
    		if(a[i].score>maxScore.score)
    		{
    			maxScore=a[i];
    		}
    		
    	}
    	printf("最高:%s %d\n",maxScore.name,maxScore.score);
    	for(i=0;i<len;i++)
    	{
    		if(a[i].score<minScore.score)
    		{
    			minScore=a[i];
    		}
    	}
    	printf("最低:%s %d\n",minScore.name,minScore.score);
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • 2.建立一个结构体stuinf包含学生的姓名和成绩,编写一个输入学生的姓名和成绩,然后输出的程序 #include<stdio.h> struct stuinf { char name[20]; float score; }; int main(void) { struct stuinf stu; ...
  • C语言结构体输入学生练习实验,更改输入学生个数只需要更改N的数字,对应的输出不用做更改后续跟新链表,对结构体的理解会跟新到博客中
  • 定义了结构体数组,键盘输入赋值,然后输出结构体的所有成员的具体信息(id,name,salary)。 问题是6个结构体数组元素,只有第一个元素中的name输出乱码???其他的信息都是正常输出的,调试的时候 也是第一个...
  • ##按照如下格式定义一个结构体类型,并定义一个这种类型的数组存储一个班级的学生成绩信息,从键盘输入学生的个人信息和成绩(不包括总分),通过公式“总分=数学+英语+政治”计算每个同学的总分,并按照总分降序...
  • #include&lt;iostream&gt;using namespace std;struct student{ double id; float qz; float qm;};void main(){ student st1,st2,st3,*p1,*p2,*p3; p1=&...请输入第一个学生的学号、...
  • C语言: 采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,从键盘输入5名职工的信息,最后再对工作年限超过30年的职工加1000元工资,并输出工资变化后的所有职工的信息(要求用下标法和...
  • COUNT EQU 1 ALL_INPUT MACRO STRING,NUM,FUNCTION  MOV DX,OFFSET STRING MOV AH,9H INT 21H MOV DI,OFFSET INFO.&NUM MOV AX,SIZE INFO.&NUM CALL FUNCTION ENDM SCORE STRUC ...NAMES DB 8
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼/*有十个学生,每个学生的数据包括学号、姓名、三门课程的成绩从键盘输入10个学生的数据,要求输出:(1):每门课的平均成绩(2):每个学生的总分及平均成绩*/#include#...
  • c++ 运用结构体,录入学生姓名年龄性别成绩等信息,用new申请内存,用一个子函数input输入,display输出
  • 利用结构体输入输出员工信息

    千次阅读 2020-05-16 17:36:59
    【实训内容1】试利用结构体类型编制一程序,实现输入、输出一个员工的工号、姓名和出生日期 想的有点多了,也是为了美观,可以自定义输入的员工人数的哈 #include<stdio.h> #include<string.h> struct...
  • 结构体

    2020-03-29 22:14:40
    一:结构体定义形式 二:结构体变量的定义 三:结构体变量的初始化 四:结构体变量获取键盘输入 五:结构体变量间的赋值
  • /*结构体*/ #include<stdio.h> #include<Windows.h> struct student { char name[10]; char address[100]; char phone[20]; int score[3]; int num; struct student *next; }; int main() { int ...
  • class Program { //定义一个结构体 struct student//student就是我们自己造的新数据类型 { public int code;//public修饰符 public string name;//结构体的成员 pu...
  • 用C语言编写程序,要求使用结构体定义点,通过键盘输入2个点的坐标,计算这两点之间的距离。 #include <math.h> #include <stdlib.h> #include <stdio.h> struct POINT { double x,y; };int main...
  • 结构体 学生成绩输入和输出

    千次阅读 2017-03-30 16:45:34
    问题及代码: 题目描述 ...编写一个函数input,用来输入5个学生的数据。 输入 5个学生的学号,姓名,3门课的成绩 输出 5个学生的学号,姓名,3门课的成绩 样例输入 1001 zha
  • #include&lt;iostream&gt;using namespace std;void main(){ int sum=0; int j=-1; struct date { int ...请输入一个日期"&lt;&lt;endl; cin&gt;&gt;date1.year&gt;&gt;da...
  • 4、从键盘输入4个学生的数据(包括姓名、年龄和成绩),并存放在文件sf1上。从该文件读出这些数据,按成绩从高到底排序,并输出其中成绩次高者的所有数据。  2018-8-10 20:34 **/ #include&lt;iostream&gt; #...
  • 编写程序:从键盘输入10名学生的姓名及三科考试成绩和总成绩,排序并输出。 具体要求: ① 使用结构体数组实现。 ② 用户自定义函数输入学生的信息和输出结果; ③ 自定义函数排序 ④ 在main函数中调用这些...
  • #include "stdafx.h" #include <stdio.h> #include <stdlib.h> struct student { char name[10]; int num; int age; char addr[40]; }; student s1[2],s2[2],*p1,*p2;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,744
精华内容 8,697
关键字:

结构体键盘输入