c語言小問題

時間 2021-10-17 05:12:04

1樓:鬱筠圭文成

這個就是大數相乘

/*本程式假設所輸入的大數均在20位以內,並且輸入數字時候假定不出現非法情況(例如不存在這樣情況123a78ty等)

這裡只完成了大數的乘法運算

*/#include

"stdio.h"

#define

max21

void

inputnumber(int

);//輸入大數

void

initnumber(int

);//初始化用於存放結果的陣列

void

multi(int

,int

,int

);//進行大數乘法

void

singlemulti(int

,int,int

);//對大數乘以一位數的函式

void

add(int

,int

);//對結果進行錯位相加

void

printresult(int

);//輸出結果

void

main()

void

inputnumber(int

largenumber)

largenumber[0]=i;

//largenumber[0]表示大數的有多少位}void

initnumber(int

result)

void

multi(int

number1,int

number2,int

result)

}void

singlemulti(int

number1,int

number2,int

temper)

if(t

>0)else

temper[0]=2

*max-2-

c;}void

add(int

result,int

temper)

if(t

==1)

result[c]=1;

pos--;

}void

printresult(int

result)

2樓:多闌姒通

你可能想多了。。。。

\n就是回車

1、2、3、4應該是跟著後面的語句的。。。

"\n1

輸入年月日

"相當於是先顯示一個回車,然後顯示"1

輸入年月日"

3樓:壽瀚龔雅蕊

scanf("%c",&y);//此條語句為啥不執行?

這語句是有用的,只是永遠會讀取到換行符('\n'),所以輸出的時候你看不到。

要使得讀取到接下來的字元,要麼調換讀取的順序:

scanf("%c",&y);

scanf("%s",a);

要麼在他們之間加一句flushall();

scanf("%s",a);

flushall();

//這個表示情況輸入緩衝區,將換行符去除掉。

scanf("%c",&y);

4樓:孫濤沈俊彥

b)getchar函式用於從磁碟檔案讀入字元不是從磁碟檔案,是從終端。參考getchar的手冊:

name

fgetc,

fgets,

getc,

getchar,

gets,

ungetc

-input

ofcharacters

andstrings

synopsis

#include

intfgetc(file

*stream);

char

*fgets(char

*s,int

size,

file

*stream);

intgetc(file

*stream);

intgetchar(void);

char

*gets(char

*s);

intungetc(int

c,file

*stream);

description

fgetc()

reads

thenext

character

from

stream

andreturns

itas

anunsigned

char

cast

toan

int,

oreof

onend

offile

orerror.

getc()

isequivalent

tofgetc()

except

that

itmay

beimplementedasa

macro

which

evaluates

stream

more

than

once.

getchar()

isequivalent

togetc(stdin).

5樓:毋照黎志

因為一箇中文字元是佔兩個位元組的,把它分開用%c輸出當然沒法識別

6樓:張風富志勇

#include

#include

#include

typedef

struct

node

node,*bittree;

void

borntree(bittree

root)//此函式

void

preshow(bittree

root)

}int

main()

------------------------執行結果:

7樓:雷卓掌憶彤

cpystr(char

*pm,char

*pn)

//形參char

*型的pm,pn,應該可以這樣理解,不過,真正用的時候還是要區別有沒有*,即使定義了指標型變數,有些情況下也不一定用*,比如sanf()函式等取地址的函式,大概是吧,好久沒翻書了

main()

8樓:蹉唱朋天韻

這是關於轉義字元的問題。

答案是:10個字元。

幫你拆開來看:\\,\",

a,b,

c,d,

e,f,

\",\\

其中:\\代表一個\

\"代表一個"

9樓:局詩奇友安

可以通過使用迴圈語句來實現

#include

intmain()

else

printf("the

maxvalue

is:%d\n",max);}}

10樓:才煊風若菱

一樓說的差不多了,不過我也來補充下,希望可以說得更詳細點。float是單精度浮點型資料,在記憶體中佔4個位元組(32bit),有效數字6-7位,數值範圍為-3.4*10^-38~3.

4*10^38,double為雙精度浮點型資料,記憶體中佔8個位元組(64bit),有效數字有15-16位,數值範圍為-1.7*10^-308~1.7*10^308。

%d,%ld,%f,%lf等是輸入輸出控制符,%d輸出的是整數,對應的是int型,%ld是長整型(long

int)的控制符,%f就是對應浮點型(float)了,至於%lf,我沒用過,也沒見過,應該是對應long

double(長雙精度型)的輸入輸出吧,長雙精度型佔用記憶體為128bit。樓主不懂可繼續追問。

11樓:計睿閃以筠

數值型別分為整數型和

實數型兩大類:

1、整數型

整數型是指不帶小數點和

指數符號

的數。(integer)

整型數在

記憶體中佔兩個位元組(16位)

取值範圍:-32768

~+32767

例如:15,-345,654都是整數型。而45678則會發生溢位錯誤。

2、實數型(浮點數或實型數)

實數型資料是指帶有小數部分的數。

注意:數12和數12.0對

計算機來說是不同的,前者是整數(佔2個位元組),後者是浮點數(佔4個位元組)

實數型資料分為浮點數和

定點數。

浮點數由三部分組成:符號,指數和尾數。

實數型合整形在

儲存器中儲存方式不同,實數型表示為"有效數字"+"數量級".

所以實數型可以表示小數,可是

乘除運算時就會產生誤差.

12樓:豐北亓官文敏

已經修改好了,請對比查詢修改之處:

#include

#definem10

#definen10

void

inputmatrix(int

*p,int

m,int

n);int

findmax(int

*p,int

m,int

n,int

*prow,int

*pcol);

intmain()

void

inputmatrix(int

*p,int

m,intn)}

}return

max;}

13樓:登洲万俟紹

void

swap(int

a,int

b);void定義一個無返回值的子函式

;此時子函式結束,但是需要注意,這是一個無返回值的子函式,所以僅在子函式中交換了a和b的值,main函式中的a,b值並沒變

main()

這個程式由於使用變數名呼叫子函式,而且子函式是void無返回值函式,所以子函式中的操作並不影響主函式中的任何值

如果換用指標呼叫就不同了

希望我說清楚了,你能明白

14樓:步流愛英達

全給你了,一次性幫你解決所有問題。

全部程式在dev-c++和win-tc或vs2005下編譯確認。

/*大數相加簡潔**

*/#include

#include

char*

add(char*

a,char*

b,char*

c)for(;i

for(;i

if(u

>0)c[i++]

='1';

c[i]=0;

strrev(a);

strrev(b);

return

strrev(c);

}char

a[501],

b[501],

c[501];

/*這裡設最多可以處理500位的大數相加,可更改*/intmain()

system("pause");

return0;}

下面是帶小數部分的高精度大數相減**,我已經執行通過:

#include

#include

intmain()

}s3[strlen(s1)]='\0';

/*下面部分是對兩數進行按位相減*/

for(i=strlen(s1)-1;i>=0;i--)}s1[j]--;/*若不為零,則借位後應減1*/}else

m=0;

/*清零表示無借位*/

if(s1[i]=='.')

s3[i]='.';

else

s3[i]=10*m+s1[i]-s2[i]+48;/*根據m,對兩數對應的位進行相減,並轉換成ascii碼*/

}printf("結果為:");

if(flag)

printf("-");/*若結果為負數,則應先列印一個負號*/i=0;

略去前面的零*/

for(i=i-1;i

#include

#include

#define

maxlen

200void

multiply(char

*num1,

char

*num2,

char

*mul)

;char

*p;len1

=strlen(num1);

len2

=strlen(num2);

for(i=len1-1;

i>=0;

i--)

for(j=len2-1;

j>=0;

j--)i=

0;while

(i<=k

||s[i]>=10

)while

(i>0

&&s[i]==0

)i--;/*

除去開頭可能產生的0*/p

=mul;

while

(i>=0

)*p++

=s[i--]

+'0';*p=

'\0';

}int

main(void)

C語言小問題,C語言一個小問題

區別 一個是指向結構體變數的指標,一個是指向整形變數的指標。詳細說明如下 struct student p指向結構體變數的指標 struct 結構體名 結構體指標變數名 執行結果 int p變成了指向整形變數的指標 編譯執行 錯誤 不同的變數型別,p並不屬於整形變數類指標。 你.是不是諶衛軍老師班上...

C語言小問題,C語言一個小問題

儘量不要使用這樣的 因為不同編譯器可能會得到不同的結果。上面是逗號運算子,從右向左進行 結果 n 先使用,即輸出1,再減1 n 這時 n 0,加1,使用,即輸出1n 先使用,即輸出1,再加1 printtf 語句結束後,n 2 c語言的輸出運算是從右向左運算的,但是輸出形式是從左往右!所以先計算n ...

C語言小問題,C語言一個小問題

這個問題的關鍵在於 if k n printf n 這句話。因為只要執行了if n j 後面的複合語句。k n一定成立。k 到k n時,不滿足k 其實去掉if k n 光保留printf n 同樣能得出上面的結果。既然你不想要最後一句的 n。那不妨這樣一改就可得到你想要的 把if k n print...