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

c語言求助題目

發布時間: 2022-05-19 00:08:00

⑴ C語言編程題目求助

這里考慮你所學內容,盡可能用最基本的知識寫,沒有使用指針,結構,鏈表等內容。只用了基本知識和循環結構。其中strcpy函數只是字元串復制函數,如果沒用過也可以自己寫循環實現字元串復制。

(以後如果考慮多組數據的存儲,建議數據定義結構體,可以用malloc動態申請內存,字元串交換初始化可以使用string.h下的memset以及相關函數,或使用鏈表)

#include<stdio.h>
#include<string.h>
intinx=1;
voidoutput(intn);
intmain()
{
intn;
while(1)
{
printf("Input%d: ",inx);
scanf("%d",&n);
output(n);
}
}
voidoutput(intn)
{
charname[n][20],nameSave[20]={0};
floath[n];
inti,j;
for(i=0;i<n;i++)
scanf("%s%f",name[i],&h[i]);
for(i=0;i<n;i++)//升序排序
for(j=i+1;j<n;j++)
if(h[j]<h[i])
{
nameSave[0]=0;
strcpy(nameSave,name[i]);
name[i][0]=0;
strcpy(name[i],name[j]);
name[j][0]=0;
strcpy(name[j],nameSave);
}
printf("Output%d: ",inx++);
for(i=0;i<n;i++)//列印
printf("%s",name[i]);
printf(" ");
}

⑵ C語言求助,題目有圖,希望過程詳細一些 。。。。

第一:對二維數組進行剖析

inta[8][8]是一個兩維數組:a[行數][列數]就是8行,8列,

inta[8][8]={20,30,32,50,52,68,52,88,72,78,61,89,1,4,101,24,11,14,97,83};

inta[8][8]={{20,30,32,50,52,68,52,88},{72,78,61,89,1,4,101,24},{11,14,97,83}};

上面兩行等效,第0、1行被完完整初始化,第2行部分初始化,沒有被初始化的元素默認值為0.

第二:程序執行過程剖析

#include<stdio.h>

voidmain(void)

{

inti;

inta[8][8]={20,30,32,50,52,68,52,88,72,78,61,89,1,4,101,24,11,14,97,83};

for(i=0;i<6;i++)

{

printf("%d",a[i++][1+i]);

}

}

1).第一次執行

首先執行for(i=0;i<6;i++),i=0,判斷i<6結果為TRUE然後執行下面一行

printf("%d",a[i++][1+i])時i=0,輸出的是a[0][1]=30(0行,1列)

執行printf("%d",a[i++][1+i])後i++,i=1

最後執行for(i=0;i<6;i++)中的i++,i=2

2)第二次循環

首先執行for(i=0;i<6;i++),中的i<6結果為TRUE(此時i=2)

printf("%d",a[i++][1+i])時輸出的是a[2][3]=83(2行,3列)

輸出完畢後再執行完畢i++,i=3

最後執行for(i=0;i<6;i++)中的i++,i=4

3)第三次循環

首先執行for(i=0;i<6;i++)中的i<6結果為TRUE(此時i=4)

printf("%d",a[i++][1+i])時輸出的是a[4][5]=0(4行,5列)

輸出完畢後再執行i++,i=5

最後執行for(i=0;i<6;i++)中的i++,i=6

4)第四次循環

首先執行for(i=0;i<6;i++)中的i<6結果為FALSE(此時i=6)

循環結束

所以最終的輸出結果為:30830

測試 驗證結果

⑶ C語言求助,題目有圖,希望過程詳細一些!

A 、do循環先執行再判斷,所以至少執行一次
B、continue語句是結束當前這一次代碼的執行,繼續下一次的判斷及執行
C、break可以用在switch和所有循環中
D、break直接中斷自身所在的循環,continue中斷當前這一次
所以 A 是對的

⑷ C語言的題目,求助!!!

你好!!
#include<stdio.h>
voidmain()
{
unsignedchar*p1;
unsignedlong*p2;
p1=(unsignedchar*)0x801000;
p2=(unsignedlong*)0x810000;
printf("p1=%x\n",p1);
printf("p2=%x\n",p2);
p1=p1+5;
p2=p2+5;
printf("p1+5=%x\n",p1);
printf("p2+5=%x\n",p2);
}
結果:
p1=801000
p2=810000
p1+5=801005
p2+5=810014
Pressanykeytocontinue
解釋:
p1=(unsignedchar*)0x801000;
是給指針變數賦值,即把十六進制0x801000放到字元指針變數中,即指針變數p1的值就是0x801000
p2=(unsignedlong*)0x810000;也是給指針變數賦值,同上
輸出結果p1+5的值是801005,因為指針變數指向的值字元,加一表示指針向後移動一個位元組,那麼加5代表向後移動5個位元組,所以輸入801005
p5+5的值是801016,因為指針變數指向的長整形的,加一表示指針向後移動4個位元組,那麼加5代表向後移動20個位元組,所以輸入810014,(輸出時十六進制)要是十進制就是810020了

⑸ C語言求助,題目

選D。

分析如下:
因為Line line();只是聲明了一個函數叫line,這個函數會返回一個Line類的對象。

這只是一個函數聲明而已,此語句並不會創建Line類的對象,因此不會調用構造函數,也不會調用析構函數。

但因為這里只有函數聲明而沒有定義函數,因此可能有警告,也可能報錯。

⑹ C語言求助題目有圖,希望過程詳細一些

if(++a<9) 因為++a是先加(也就是先進行自加1再做判斷),所以a自加1後變為10,再判斷10<9,因為不成立,所以會輸出下面的a--,而a--是後減,也就是先用a的值,在這一行結束後a才自減1,所以printf的時候a還是10不變,所以結果即為C
另外,圖上兩行printf都有語法錯誤,但是題目本身理解沒有影響