當前位置:首頁 » 編程語言 » c語言的問題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的問題

發布時間: 2022-01-12 23:15:17

『壹』 C語言問題

1
答案應該是B,這個沒什麼好解釋的(就是指針變數指向變數的地址)
2
答案應該是D 如果直接用字元串對字元數組初始化的話字元數組的長度要比實際字元串長度大1的
因為字元串在字元數組中是以'\0'結束的,這個你也可以用sizeof() 分別測試一下
我已經測試過了A比B大1的
3
答案應該是D,這個沒的說,括弧的作用就是避免二義
4
答案應該是C,不要把 int *ptr();搞混了,題上的是返回一個整形數據的指針函數,後者是一個
返回指針的函數
5
答案是A,呵呵,這個你好好想一下就明白了
6
答案是A 4
7
答案是23 這個你要好好看一看,特別是(&Arr+1)它和(Arr+1)區別很大,前者在地址上加了
1而後者在地址上加了1*sizeof(int);
8.
這道題你是不是搞錯了,你仔細看看有很多錯誤的。
9.
答案是 B 為了幫助你理解,對此程序我寫了段代碼
#include<stdio.h>
void main()
{
void func(char str[100]);
char str[100];
printf("%d\n",sizeof(str));//答案是100
func(str);

}
void func(char str[100])
{
printf("%d\n",sizeof(str));//答案是4

}
為什麼會出現這種情況呢,原因是因為兩者有著本質性的區別,第一個sizeof(str)中的str是一個
地址常量,它索引著一段大小為100的內存堆,而第二個sizeof(str)中的str是一個字元指針變數
sizeof(str)的結果就是一個字元指針變數所具有的內存,它的內存應該是為4的
10
答案是D
二:
1.
錯,應該放在靜態存儲區(或全局數據區的)
2

3.

4.
錯,不可能是float 型的
5.


1. int main(void)
{
Unsigned char index = 0;//這個地方應該是unsigned int index=0;注意第一個u不能大寫
While(index < 256)
{
index +=index;
index++;
}
Printf(「index value %d\n」,index);
Return 0;
}
2.
char*f()
{ //應該是static char s[4]={'0','1','2','3','\0'};
Char s[4]={『1』,』2』,』3』,』0』};//關鍵字的開頭是不能大寫的,還有就是符號『也不對
Return s;//ruturn 第一個字母也不能大寫,
}

Void main()
{
Char *s;//應該是char 第一個字母不能大寫
s=f();
printf(「%s」,s);
}
//你這道題的本意是想通過函數調用來獲得一個字元串的首地址從而在主函數中輸出,
//但是,有一點這個程序沒有考慮到那就是當被調函數結束後那個char s[4] 所佔內存將自動
//操作系統回收,因為它只是個動態局部變數,所以要想達到目的應該是聲明成靜態變數的
//static char s[4],還有一點錯誤就是字元串都要'\0'結尾否則輸出的字元串的將不會是你想要的那樣

3.
這道題沒什麼錯誤,能達到預期的效果,除了有幾處拼寫錯誤,例如你第一個是GetmMnory而第二個是
GetMemory這一點你注意一下就可以了
void GetMenory(char**p)
{
*p = (char*)malloc(100);
}
Void Test(void)
{
char*str = NULL;
GetMemory(&str);
strcpy(str,」hello morld」);
printf(str);
}
4.
這道題沒什麼語法錯誤,除了單引號格式不對,還有就就違反了字元串都要以'\0'結尾這一約定
5.
這道題沒有什麼語法錯誤,就是有個字元串函數寫錯了str,應該寫成 strcpy的
四:
你這道題具體是讓做什麼的,我不是太明白,是讓建一個動態鏈表啊還是靜態鏈表啊,
請你把問題寫詳細點
五。

int judgment(int a[],int length )//這個函數是判斷是否對稱的

{
for(int i=0;i<=length/2;i++)
if(a[i]!=a[length-i])

break;
if(i==length/2+1)
return 1;
else
return 0;

}
void main(void)
{
int a[10];
int num;
printf("請輸入你要檢測的數\n") ;
scanf("%d",&num);
int length=0;

//這個循環是為了把整數拆開放到一個整形數組中,拆開以後放進數組裡面的剛好是和正常的數
//反序的,不過這個不會影響結果的,因為只要數對稱反序後一樣對稱,如果數不對稱反序後依然不對稱
do
{
int temp=num%10;
a[length]=temp;
num=num/10;
length++;
} while(num>=10);
a[length]=num;
if( judgment(a,length))
printf("是\n");
}
如果這個程序有什麼不懂得話,可以提出來,隨時幫你解析

希望我的答案對你有點幫助……
希望對你能有所幫助。