c语言stuscore,while用法C语言

本文目录一览:

C语言编写单科学生成绩 编写一个单科学生成绩处理程序,具体要求如下: 1)学生个数定义成符号常量。

#includestdio.h

#define MAX_STU_NUM 100  //学生人数最大值

int main()

{

 int stu_num, i;  //学生人数

 float stu_score[MAX_STU_NUM]; //成绩

 float stu_fail = 0;  //不及格人数比例

 float stu_pass = 0;  //及格人数比例

 float stu_high = 0;  //高分人数比例

 float stu_average = 0; //平均成绩

 printf(“输入学生人数:”);

 scanf(“%d”, stu_num);

 printf(“输入学生成绩(空格或换行分开):\n”);

 for (i = 0; i  stu_num; i++)

 {

  scanf(“%f”, stu_score[i]);

  stu_average += stu_score[i];

  if (stu_score[i]  60)

   stu_fail++;

  else if (stu_score[i] = 80)

  {

   stu_high++;

   stu_pass++;

  }

  else

   stu_pass++;

 }

 stu_average /= stu_num;

 stu_fail /= stu_num;

 stu_pass /= stu_num;

 stu_high /= stu_num;

 printf(“\n学生人数:%d\n”, stu_num);

 printf(“平均成绩:%.f\n”,stu_average);

 printf(“高分比例:%.2f%%\n”,stu_high*100);

 printf(“及格比例:%.2f%%\n”,stu_pass*100);

 printf(“不及格比例:%.2f%%\n”,stu_fail*100);

 return 0;

}

C语言运行STU然后再SCORE

typedef struct stu{

char * name,gender;

int score;

}STU;

void f(char *p)

{

//p=(char *)malloc(10);

strcpy(p,”Qian”);

}

int main(void)

{

STU a={NULL,’m’,290},b;

a.name=(char *)malloc(10);

strcpy(a.name,”Zhao”);

b = a;

f(b.name);

b.gender =’f’;

b.score =350;

printf(“%s,%c,%d

\n”,a.name,a.gender,a.score);

printf(“%s,%c,%d

\n”,b.name,b.gender,b.score);

return 0;

}

为啥注释掉了以后的答案变成:Qian,m,290,Qian,f,

350,?

而不注释掉答案却是: Zhao,m,290,Zhao

,f,350?

你的目的是通过函数去修改另外一个结构体对象b中成员name

的值。

观察到成员中的gender和score基本上没有什么值得研究 ,

所以只研究第一个成员name。

在你执行了代码b=a的时候,b和a分别在内存条上占用

sizeof(stu)的空间大小。而且,这两个空间中的值都是一

模一样的。

当你执行了函数f()的时候,分两种情况。

第一没有注释:函数f会在栈上分配4个字节的内存(sizeof

(char*),因为p的类型就是char*)。那么p的值就是等于

b.name。

b.name的值我们假设是0x1234567,那么现在p的值也就是

0x1234567。没有注释的情况下,p的值马上被修改成malloc

的返回值,所以现在p的值一定不是0x1234567。

假如malloc的返回值是0x7654321,那么现在p的值也就是

0x7654321。你使用了strcpy,那么0x7654321首地址开始的

内容就变成了zhao。

所以,你没有改变0x1234567所指向的内容。结果就是

0x1234567指向的内容还是为zhao。

第二有注释:函数f会在栈上分配4个字节的内存(sizeof

(char*),因为p的类型就是char*)。那么p的值就是等于

b.name。

b.name的值我们假设是0x1234567,那么现在p的值也就是

0x1234567。有注释的时候。p的值没有被malloc改变,还是

0x1234567.你使用了strcpy,就修改了0x1234567所指向的

内存。

最开始的内存中值是zhao,你修改后就变成了qian.

你的这个例子错误很多,但是基于你是实验的目的,我就不指

正了。针对不注释的情况,如果你要改变的话,我认为比较正

确的做法应该是这样的。

typedef struct stu{

char * name,gender;

int score;

}STU;

void f(char **p)

{

*p=(char *)malloc(10);

strcpy(*p,”Qian”);

}

int main(void)

{

STU a={NULL,’m’,290},b;

a.name=(char *)malloc(10);

strcpy(a.name,”Zhao”);

b = a;

f(b.name);

free(a.name);

a.name=NULL:

return 0;

}

C语言编写程序:

#includestdio.h

struct stu

{char stuID[20];

 char stuName[20];

 int stuScore;

};

int main( )

{struct stu scoreArray[5],t;

 int i,j;

 for(i=0;i5;i++)

   scanf(“%s%s%d”,scoreArray[i].stuID,scoreArray[i].stuName,

     scoreArray[i].stuScore);

 for(i=0;i4;i++)

   for(j=0;j4-i;j++)

     if(scoreArray[j].stuScorescoreArray[j+1].stuScore)

     {t=scoreArray[j];

      scoreArray[j]=scoreArray[j+1];

      scoreArray[j+1]=t;

 }

 for(i=0;i5;i++)

   printf(“%s\t%s\t%d\n”,scoreArray[i].stuID,scoreArray[i].stuName,

     scoreArray[i].stuScore);

 return 0;

}

C语言结构体定义

struct stuscore{

    int stuNo;

    float stuScore1;

    float stuScore2;

    float stuAvg;

};

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/150577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-08 14:54
下一篇 2024-11-08 14:54

相关推荐

  • Python中的while true:全能编程开发必知

    对于全能编程开发工程师而言,掌握Python语言是必不可少的技能之一。而在Python中,while true是一种十分重要的语句结构,本文将从多个方面对Python中的while…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Python中while语句和for语句的区别

    while语句和for语句是Python中两种常见的循环语句,它们都可以用于重复执行一段代码。然而,它们的语法和适用场景有所不同。本文将从多个方面详细阐述Python中while语…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28

发表回复

登录后才能评论