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/zh-hk/n/309228.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:30
下一篇 2025-01-04 19:30

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 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成績分段統計

    成績分段統計是針對一組成績數據進行分組計數,以便更好地了解數據的分佈情況。Python語言作為一門高效簡潔的編程語言,在數據處理領域有着廣泛應用,實現成績分段統計在Python中也…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python3亂碼轉中文

    本文將詳細介紹如何轉換Python3中的亂碼為中文字符,幫助Python3開發工程師更好的處理中文字符的問題。 一、Python3中文亂碼的原因 在Python3中,中文字符使用的…

    編程 2025-04-29

發表回復

登錄後才能評論