c语言各科成绩输出乱码是为什么,c语言printf输出乱码

本文目录一览:

C语言问题,为什么输出总是乱码

看一眼就知道。。乱码是因为你的指针没有赋NULL,是野指针,指向了不明区域,所以会出现乱码,以后定义指针最好int

*a

=

NULL;这样子

为什么C语言输出文件内容乱码

这种文本文件,不能直接使用读到结构的方法。因为结构里会有非文本的控制符,比如字符串结束符’\0’。

一般使用直接读到结构的方法,只限于二进制格式的文件,并且最好是读自己创建的文件,别人创建的,格式刚刚好合适创建结构的也很少。

你这个乱码,你的文件里,学号长度为10个字节,所以你定义学号这个变量时,必须定义11个字节的长度,因为字符串的变量,必须要有一个’\0’作为结束,不然的话,显示的时候,没有结束符就会接着往下显示,就会有乱码出现。

如果仅仅是这三行的话,倒也能使用结构来读,比如结构里定义num[11],读完后执行一下num[10] = ‘\0’;给它补一个结束符。但如果有人叫“王老四”,名字有的是2个字,有的是3个字这样,你这个就不好判断了。

这种文本,最好是使用fscanf(“%s %s %s %s %s”, num, name, sex, date, major)的形式来读取。每次读取一行。(注意字符串定义变量时,长度一定要多加1位)。

c语言输出字符串为什么是乱码?

你几个地方写错了,我在里面有注释,分别有:

1、赋值地方,应该是a[i][j],这里i、j代表第几个,你用student这些固定值,一看就知道错了不是吗?而且这是个非常严重的错误,a[i][j]这里面i不能等于student,j不能等于subiects,你们下标取值0到student-1,你自己写完看看都知道错了

2、sum每次循环前要赋0,否则会把前一个学生的成绩加进去

3、ave=sum*1.0/4,不乘1.0的话,系统会把sum/4当成一个整型,会造成结果不正确

#include

#define subiects 3 //学科数量

#define students 4 //学生人数

int main(void)

{

int a[students][subiects] = { 53,54,76,87,89,56,76,85,45,75,76,45 };

int i = 0, j = 0, sum = 0;//sum为总分

double ave;//ave为平均值

//输入成绩

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

{

printf(“请输入学生%d的%d科成绩:”, i + 1, subiects);//i+1为学生序号

for (j = 0; j subiects; j++)

{

scanf(“%d”, a[i][j]);//students=4,subiects=3,你觉得a[4][3]赋值是赋给谁?下面同样错误

}

}

//输出成绩

printf(“\t\tC语言\t大英\t高数\t总分\t平均分\n”);

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

{

sum=0;//每次都要赋0,否则会把前面同学成绩加进去

printf(“\t同学%d”, i+1);

for (j = 0; j subiects; j++)

{

sum += a[i][j];//错误

printf(“\t%d”, a[i][j]);//错误

}

ave = sum*1.0 / subiects;

printf(“\t%d\t%.2f\n”,sum,ave);

}

printf(“\n\n”);

//颠倒输出

sum = 0;

ave = 0;

printf(“\t”);

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

printf(“\t同学%d”, i + 1);

printf(“\t平均分\n”);

for (j = 0; j subiects; j++)

{

if (j == 0)

printf(“\tC语言”);

if (j == 1)

printf(“\t大英”);

if (j == 2)

printf(“\t高数”);

sum=0;//赋0

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

{

sum += a[i][j];//错误

printf(“\t%d”, a[i][j]);//错误

}

ave = sum*1.0 / students;

printf(“\t%.2f\n”,ave);

}

return 0;

}

c语言的这个C程序 为什么输出的是乱码?

主要错误有三个,第一:后面所有的a[students][subiects]变成a[i][j]

在计算每个同学的总分和平均分的时候要将sum的初值设置为0吧

在计算平均分的时候,你的语句是ave = sum / students;ave = sum / subiects

这个是不对的,应改为,ave =1.0* sum / students,ave =1.0* sum / subiects原因在于 假设sum=7,students=3,则ave=7/3=2,而实际想要的结果为2.3333

#includestdio.h

#define subiects 3  //学科数量

#define students 4  //学生人数

int main(void)

{

int a[students][subiects] = { 53,54,76,87,89,56,76,85,45,75,76,45 };

int i = 0, j = 0, sum = 0;//sum为总分

double ave;//ave为平均值

//输入成绩

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

{

printf(“请输入学生%d的%d科成绩:”, i + 1, subiects);//i+1为学生序号

for (j = 0; j  subiects; j++)

{

scanf(“%d”, a[i][j]);

}

}

//输出成绩

printf(“\t\tC语言\t大英\t高数\t总分\t平均分\n”);

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

{    sum=0;

printf(“\t同学%d”, i+1);

for (j = 0; j  subiects; j++)

{

sum += a[i][j];

printf(“\t%d”, a[i][j]);

}

ave = 1.0*sum / subiects;

printf(“\t%d\t%.2f\n”,sum,ave);

}

printf(“\n\n”);

//颠倒输出

sum = 0;

ave = 0;

printf(“\t”);

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

printf(“\t同学%d”, i + 1);

printf(“\t平均分\n”);

for (j = 0; j  subiects; j++)

{

if (j == 0)

printf(“\tC语言”);

if (j == 1)

printf(“\t大英”);

if (j == 2)

printf(“\t高数”);

        sum=0;

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

{

sum += a[i][j];

printf(“\t%d”, a[i][j]);

}

ave = 1.0*sum / students;

printf(“\t%.2f\n”,ave);

}

return 0;

}

C语言各科成绩输出乱码是为什么,前面的计算函数都运行正常的,,,

void output(struct student stu[], int m, int n)

{

int i, j;

printf(“**名次****学号****姓名****总分********各科成绩*********”);

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

{

stu[i].p = i + 1;

printf(“\n%3d %8d %6s %4d “, stu[i].p, stu[i].num, stu[i].name, stu[i].total);

for (j = 0; jn; j++)

{

printf(“%3d”, stu[i].score[j]); // 只能有一个%3d

}

printf(“\n”);

}

}

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-04 19:30
下一篇 2025-01-04 19:30

相关推荐

  • Python zipfile解压文件乱码处理

    本文主要介绍如何在Python中使用zipfile进行文件解压的处理,同时详细讨论在解压文件时可能出现的乱码问题的各种解决办法。 一、zipfile解压文件乱码问题的根本原因 在P…

    编程 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输入姓名成绩输出等级

    在这个项目中,我们需要输入一个学生的姓名和成绩,然后根据成绩给出等级。 一、获取用户输入 首先,我们需要获取用户输入的姓名和成绩。可以使用Python中的input()函数,让用户…

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

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

    编程 2025-04-29
  • Python爬虫乱码问题

    在网络爬虫中,经常会遇到中文乱码问题。虽然Python自带了编码转换功能,但有时候会出现一些比较奇怪的情况。本文章将从多个方面对Python爬虫乱码问题进行详细的阐述,并给出对应的…

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

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

    编程 2025-04-29
  • Python成绩分段统计

    成绩分段统计是针对一组成绩数据进行分组计数,以便更好地了解数据的分布情况。Python语言作为一门高效简洁的编程语言,在数据处理领域有着广泛应用,实现成绩分段统计在Python中也…

    编程 2025-04-29
  • Python3乱码转中文

    本文将详细介绍如何转换Python3中的乱码为中文字符,帮助Python3开发工程师更好的处理中文字符的问题。 一、Python3中文乱码的原因 在Python3中,中文字符使用的…

    编程 2025-04-29

发表回复

登录后才能评论