编程-我这代码怎么运行出这样的结果?

问题描述

我这代码怎么运行出这样的结果?

计算机代码编程培训">







解决方案

问题应该出在printstudent函数的传递参数i上,我在visual c++上测试了一下,如果是将结构体数据直接赋值的话,输出没有问题:

 struct Student {
    char name[20];
    int age;
    struct Score score;
}stu[2]= {"hkx",20,{95,92,90},"zl",19,{99,98,97}};

但是如果是在该输出函数之后(比如在main函数中)再行赋值,就会输出0结果。
究其原因,应当是传递参数i时,不能将结构体的值直接传递。
但是细查之下,我也不是太清楚。建议题主将传递参数改为结构体本身。

解决方案二:

阅读代码,写出运行结果

解决方案三:

考虑做如下改动:
第一,printstudent(i)函数一行语句改为:

 Student *p = &stu[i];
 printstudent(p);

然后,将printstudent函数改写成类似如下语句:

 void printstu(Student *p) {
    printf("%s	%d	%f	%f	%f	",p->name,p->age,p->score.english,p->score.math,p->score.yuwen);
}

即可输出正确结果。

解决方案四:

至于为什么年龄分数就没数据,其他字符串之类的有数据,我也不太清楚,不好意思啦~

时间: 2025-01-20 22:59:22

编程-我这代码怎么运行出这样的结果?的相关文章

编程-修改了下代码就运行出错了,怎么回事?

问题描述 修改了下代码就运行出错了,怎么回事? #include<iostream> using namespace std; struct list { int data; struct list *next; }; class Stack { struct list *ptr; public: Stack() { ptr=NULL; } void push(int x)//进栈成员函数 { struct list *newnode=new struct list; newnode->

自己写了一个关于java UDP传输文件的代码,运行不了,没有错误,不知道哪里出问题了,求助!

问题描述 自己写了一个关于java UDP传输文件的代码,运行不了,没有错误,不知道哪里出问题了,求助! 发送端: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream

struct-自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急.

问题描述 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. #include #include typedef struct tnode Tnode; struct tnode { Tnode *left; Tnode *right; int data; }; Tnode *new_tnode(int data) { Tnode *new = malloc(sizeof(Tn

c语言编程-这段C程序设计语言书上的代码,运行后按回车只换行并没有输出最长的行,为什么

问题描述 这段C程序设计语言书上的代码,运行后按回车只换行并没有输出最长的行,为什么 #include#define MAXLINE 1000int getline(char line[]int maxline);void copy(char to[]char from[]);main(){int len;int max;char line[MAXLINE];char longest[MAXLINE];max = 0;while ((len = getline(lineMAXLINE))>0)i

c语言-这道简单的编程题里,为啥运行结果会是这个?

问题描述 这道简单的编程题里,为啥运行结果会是这个? 以上题,结果是怎么出来的呢?? 老师说for的嵌套循环语句时一笔带过,之前重点讲了道for的例题, 但我发现,用这道例题的逻辑去思考嵌套循环语句,完全行不通嘛!im crazy!!求好心人解答... 解决方案 其实,我觉得你应该是不会看内外层的嵌套,一般都是从最内层开始看 , i j k 所以一上来就是000 001 之后k都循环完了,再往外就是j = 1 的情况,而这时候i = 0 所以结果是 010 011 以此类推 j的情况结束了,i

visual studio-c++在vs上运行出的问题

问题描述 c++在vs上运行出的问题 LINK : fatal error LNK1104: 无法打开文件"libpng.lib"是什么原因,能否给出具体的解决步骤? 解决方案 编译/链接时出现的错误,你先要查一下这个 LIB 是否存在?不存在,就下载. 如果存在,请在 VS 的工程的设置中设置此 LIB 所在的目录. 解决方案二: http://download.csdn.net/detail/wangcongli/4217917 下载,放入你的lib目录 (如果没有积分,在你采纳后

c语言代码执行不出预期结果

问题描述 c语言代码执行不出预期结果 #include #define N 10 struct student{ char name; int age; char job; union{ int class; char zhuanye; }depa; }stu[N]; int main(){ int d,i; printf("请输入人员数:"); scanf("%d",&d); for(i=0;i if(stu[i].job='s'){ <d;i++)

c语言-c编程中常见的程序运行问题,如何解决,和程序的语法问题

问题描述 c编程中常见的程序运行问题,如何解决,和程序的语法问题 include int main(void) { int i; i=5; int j; j=6; int a; a = i + j; printf("a = %dn", a); return 0; }上面的代码可以运行,但是同样的内容改成以下的书写形式连接时为啥报错,下面的书写如下: include int main(void) { int i = 5 ; int j = 6 ; int a = i + j; print

Javascript简单实现面向对象编程继承实例代码_javascript技巧

本文讲述了Javascript简单实现面向对象编程继承实例代码.分享给大家供大家参考,具体如下: 面向对象的语言必须具备四个基本特征: 1.封装能力(即允许将基本数据类型的变量或函数放到一个类里,形成类的成员或方法) 2.聚合能力(即允许类里面再包含类,这样可以应付足够复杂的设计) 3.支持继承(父类可以派生出子类,子类拥有父母的属性或方法) 4.支持多态(允许同样的方法名,根据方法签名[即函数的参数]不同,有各自独立的处理方法) 这四个基本属性,javascript都可以支持,所以javasc