㈠ c語言問題,輸出結果是亂碼
你在定義x結構體的同時,已經定義了一個x型的全局變數student1並賦了初值,然而,你的main函數里又定義了同名的局部變數student1並沒有賦初值。main函數執行時,這里的student1是未賦初值的,所以student1.name的值並不是"星哥",你以%s輸出它,自然會顯示為「亂碼」。
改正方法是,既然你已經定義了全局變數,main函數里就不要再定義了。
#include<stdio.h>
#include<string.h>
structx{
charname[10];
intage;
charaddress[10];
charsex[10];
}student1={"星哥",20,"天水","女"};
intmain(){
/*structxstudent1;注釋掉這一句就會是正常的*/
printf("%s
",student1.name);
return0;
}
運行結果

㈡ c++中編譯時出現亂碼的原因可能有哪些
這是因為編譯器不支持。以下為幾種常用的編譯器
c++編譯器是一個與標准化C++高度兼容的編譯環境。這點對於編譯可移植的代碼十分重要。編譯器對不同的CPU會進行不同的優化。
常見的C++編譯器有如下幾種:
GNU C++
g++是一個開源的C++編譯器,GCC3.3對標准化C++的支持達96.15%。
值得一提的是,gcc是gnu c的編譯器, g++是gnu c++的編譯器, 而egcs(Enhanced GNU Compiler Suite)可以認為是gcc的改進版。目前gcc已經改名,從原來代表GNU C Compiler改變為代表GNU Compiler Collection。而MinGW或Cgywin,是在windows平台上的gnu c/c++編譯器,以及庫文件,運行環境的集合。
Borland C++
該編譯以速度快、空間效率高而著稱。它的5.5版本對標准化C++的支持達92.73%,而官方稱100%符合ANSI/ISO的C++標准和C99標准。
它是Borland公司開發的,是Borland C++ Builder和Borland C++ Builder X這兩種IDE的後台編譯器。
Visual C++
VC++6.0對標准化C++的兼容僅達83.43%。
它是Visual Studio、Visual Studio.net 2002、Visual Studio.net 2003、Visual Studio.net 2005的後台C++編譯器。隨著Stanley Lippman等編譯器設計大師的加盟,它變得非常成熟可靠了。Visual C++
㈢ 為什麼編譯結果出現亂七八糟的東西
這不是「編譯結果」出了錯,編譯已經通過,表示都是合法的C語言語句,可以執行。但是程序中沒有對局部變數c數組賦值(所以導致了其中的數據是一堆「亂碼」)。你要想輸出c數組中的什麼內容?這需要先對c數組進行初始化賦值,或是進行輸入才可以的。
㈣ 如何解決VC++編譯後出現數字亂碼
情況1:可能是因為語言設置不正確。如果想在AppWizard生成的工程文件中使用中文,在在MFC AppWizard的第1步中選擇中文資源,選擇Chinese(P.R.C),如果你在語言列表中沒有找到有關中文的選項,說明你的VC++的中文支持模塊沒有安裝。此時,應退出VC++,在VC++的光碟的DevStudioSharedIDEBinIDE目錄下找到APPWZCHS.DLL文件,將其拷貝到硬碟的DevStudioSharedIDEBinIDE目錄下即可,再啟動VC++,就可以看到這一選項了。使用這一選項生成的工程文件中的所有資源都是中文的。VC++還提供了繁體中文(APPWZCHT.DLL)、日文(APPWZJPN.DLL)和韓文(APPWZKOR.DLL)的支持模塊。

這種情況就是語言設置問題,與本身無關
情況2: 如果你的工程中的菜單、對話框、字元串等資源不是由AppWizard生成的,而是手工添加的,你必須保證該資源的Language選項為Chinese(P.R.C)。具體的做法是在資源列表中選擇資源,然後在快捷菜單中選擇Properties,在話框中設置Language下拉框。如果在Language中選擇English,盡管在集成環境中可以正常顯示中文,但編譯後就變成了諸如"___.???"之類的亂碼了。
情況3:方法1: 有一個解決方案不必從頭作起:找到rc文件(資源文件),把其中LANGUAGE 9, 1的地方改為4,2;codepage(1252)改為codepage(936);另外把#include "afxres.rc" 改成#include "l.chsafxres.rc";把"afxres.rc" 改成"l.chs\afxres.rc"即可,其中的數據根據不同文字代碼可能不同。
希望能夠幫到你!
【參考資料:網路經驗】
㈤ c語言代碼編譯通過,但輸出時有亂碼,什麼原因
修改如下:
//---------------------------------------------------------------------------
#include<stdio.h>
void main()
{
void secret(char str1[],char str2[]); /*注意這里*/
char str1[10],str2[10]={0}; /*注意這里*/
int i;
printf("please input something");
gets(str1);
secret(str1,str2); /*注意這里*/
puts(str2); /*注意這里*/
}
void secret(char str1[],char str2[]) /*注意這里*/
{ int i;
for(i=0;i<10&&(str1[i])!=0;i++)
{
if (str1[i]<='z'&&str1[i]>='a')
str2[i]='0';
else
if (str1[i]<='Z'&&str1[i]>='A')
str2[i]='1';
else
if (str1[i]<='9'&&str1[i]>='0')
str2[i]='2';
else
if (str1[i]==' ')
str2[i]='3';
else
str2[i]='4';
}
/*注意這里*/
}
//---------------------------------------------------------------------------
㈥ 怎麼編譯前漢字顯示正常,編譯後就變成亂碼了
你好,這個問題的原因主要在編碼問題上,你可以在設置-編輯器中更改一下編碼,如果你是Windows Xp的話,請選擇windows-936,找准對應的編碼就行了。
或者直接更改菜單欄中的編輯-文件編碼-系統默認,不過這種修改方法,需要每次編程時都要更改設置才行。
㈦ (c語言)為什麼這段程序編譯運行以後是亂碼

#include<stdio.h>
intmain(){
charc;
scanf("%c",&c);
chara,b,d;
for(a='A';a<=c;a++){
for(b=a;b<c;b++){//輸出前置空格
printf("");
}
for(b='A';b<=a;b++){//輸出A-a當前的值
printf("%c",b);
}
for(d=a-1;d>='A';d--){//輸出一行a當前之後的大寫字母
printf("%c",d);
}
printf("
");//換行,一行輸出結束
}
return0;
}
㈧ c語言編譯運行亂碼是什麼原因
這種情況多數是由於操作系統的語言選項不正確引起的。建議你查看一下控制面板中的區域和語言選項,特別是有關「非Unicode程序的語言」,一定要選擇成「中文(簡體,中國)」。然後重啟電腦。