问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言,字符串输出是乱码

发布网友 发布时间:2023-06-21 12:56

我来回答

4个回答

热心网友 时间:2024-04-19 17:25

主要错误有三个,第一:后面所有的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

 

#include<stdio.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;
}

热心网友 时间:2024-04-19 17:25

字符串使用前请使用清空语句把垃圾内存清理成'\0',也就是0x00(0):
memset(str2, 0x00, sizeof(str2));
当然,也可以在声明的时候进行初始化:
char str2[20] = {0};
这句也能实现同样的效果。这是C语言习惯,务必养成!
'\0'是字符串结束符,每当解释器看到这'\0'才会认为字符串终止,而你的程序明显没有字符串结束符,所以连同垃圾内存一起读出来了。“烫烫。。”等就是垃圾内存。
不明白欢迎追问

热心网友 时间:2024-04-19 17:26

你几个地方写错了,我在里面有注释,分别有:
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<stdio.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]);//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;
}

热心网友 时间:2024-04-19 17:27

你好

没有乱码

就是逻辑上有些错误

如图:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑wifi已禁用怎么打开电脑无线网络禁用了怎么恢复 ...禁用网络在哪重开win7笔记本无线网络被禁用了怎么办 win7网络禁用怎么恢复 windows7网络被禁用怎么恢复 Win7系统本地连接禁用了怎么恢复Win7系统启动本地连接的两种方法图文... 梦见家人去世什么预兆 ...经缝针现在基本痊愈,一个月过去了现在就是小腿还不能贴大腿,最近感... 小腿缝针拆线三个月了表皮长好了里面的肉怎么有点带黑红色还有点白色... 小腿迎面骨掉快深宽都1厘米左右的肉。当时没缝针。已经20天了。天天... 运费和快递费各走 什么科目? 快递费用放什么科目 C语言,将字符串变成逆序字符串输出,为何运行时输入字符串后打空格无效... 文件夹路径c:\中含有无效的字符 历史上诸葛亮真的借到东风了吗 历史上诸葛亮真的借到东风了吗? 诸葛亮借东风成功了吗由此进行了哪一场著名的战斗? 如何去晦气?如何去晦气? 怎样做到百岁老人 退休后,我们还能有事可做吗? 快速缓解头晕的小妙招头晕怎么办快速缓解 百岁肖院士提醒家长,这3种食品容易让宝宝患上积食,少吃为妙 血压低是个啥症状?头晕心会慌是怎么回事?可以吃啥药缓解? 中和农信身份证认证不通过 中老年人经常头晕,有点动脉硬化,吃什么药预防,饮食上注意什么呢? cma成绩过期了还能申请证书吗? 宁波中和司法鉴定中心是正规的吗 vivones3s屏幕跟那个手机屏幕相同大 一对多营销的定义是什么? 一对多关系的数据结构是什么 一对多、一对一的定义 绝地求生刺激战场国际服绝地求生刺激战场国际服下载方法有哪些_百度知 ... java 中char c=&#39;&#39;;无效字符常数 怎么回事啊 ...其他字符的数量 我这样写为什么输入空格就无效了?? 安装QQ2009提示“文件夹路径C:中含有无效的字符。” 可视化输出的是什么 pc-2透层1L/㎡AC-25沥青砼7cmpc-3透层0.5L/㎡AC-16沥青砼5cm每平米造 ... 万华禾香板的防伪码是什么样的 万华禾香板防伪是激光还是钢印 万华绿尚康品板材有防伪标识吗 那种禾香板家具怎么看真假啊? 万华禾香板logo是所有板材都有吗为什么 万华禾香板有哪些优点如何识别万华禾香板 万华禾香板水印朝外是正确的吗 滁州市车辆报废能拿到多少钱2022 曹清华牌广告词 曹清华牌膏药和曹清华胶囊是一个意思吗?是不是一个厂家的? 曹清华牌风湿药一大盒里有几小盒药 曹清华牌舒骨贴的相关说明 电视广告那么多,谁知道曹清华牌的治风湿的药怎样? 曹清华牌是上市公司吗 曹清华胶囊价格是多少,用法是怎样的?