c語言問題,急求,C語言問題,急求!!

2022-02-27 03:22:21 字數 1169 閱讀 6304

1樓:匿名使用者

一、不知道你是怎麼輸入的,可以提供一下你的執行截圖,幫你看看二、你程式中少了第三個輸入語句啊

printf("請輸入第一個字串:\n");

scanf("%s",a);

printf("請輸入第二個字串:\n");

scanf("%s",b);

printf("請輸入第三個字串:\n");

scanf("%s",c); //這裡是不是應該加上這個?

char*p1=a,*p2=b,*p3=c;

2樓:匿名使用者

#include

#include

void main()

void swap(char* s1, char *s2)

void compare(char*arr1, char*arr2, char*arr3)

以上程式完美執行。可以達到你想要的效果。接下來講講為什麼

首先主方法。

第三個字串少了一個scanf.我給你加上了

你說的不能輸入第二個字串是不可能出現的情況,除非你用的gets

gets是從輸入流中獲取。流中沒有等待使用者輸入,輸入的內容還是在流中

scanf是從等待使用者輸入,不管輸入流中有沒有內容,他都等待。scanf收不了的內容,會進入流中。

在compare方法

這個就是邏輯問題了。

首先交換就出現問題了,

交換兩個資料通常需要一箇中間變數temp

如以下**

temp = a

a = b

b= temp

這樣才實現兩個交換

字串交換需要用strcpy.  因為字串不能直接用 = 賦值。

注意是賦值。 初始化可以用等號。如char s = "abc"

你的核心問題就是 就是從小到大排序。

你解決的思路是對的。 但是實現出現了問題

不能先寫三個strcmp ..在進行交換。你肯定會問為什麼?

因為每次比較交換都可能交換字串。一但交換資料,你預先存的大小關係就被打破了,你是用3個整形變數存的。

基本上回答完畢

我說下我的思路。如果只是想看到從小到大的字串,其實很簡單,不用交換陣列裡的資料,只需改變最初指標指向即可。很好實現的,你試試。如果沒做出來,說一聲,我把**貼上來。

c 問題。急求答案,C 問題。急求答案!

vec是父類的指標。當我們使用關鍵字new在堆上動態建立一個物件時,它實際上做了三件事 獲得一塊記憶體空間 呼叫建構函式 返回正確的指標。當然,如果我們建立的是簡單型別的變數,那麼第二步會被省略。假如我們定義瞭如下一個類a class a void say 呼叫new a pa new a 3 那麼...

c語言問題求解,C語言程式設計問題 約瑟夫問題求解

8 第一次迴圈p是指向2的,用 s控制輸出就是2010,第二次迴圈p增1指向0了,輸出自然是010。這很好理解。9 早期的編譯器是2位元組,後來的編譯器是4位元組了,所以二者都正確。一般教科書用的是早期的系統,應該是2位元組。不要糾結這些,知道就行了,若考試,按幾位元組算會明示的。10 001011...

c語言問題求大神指教,C語言問題求大神指教

應該是這樣才對 include void fun char a,char b 它等價於while b a 0 即複製餘下的串到b中 int main 這個程式是錯的吧,請問這個程式要做什麼事。第一個while的作用是跳過a指向的字串 也即字串 a b 中前面的 號,所以第一個while結束後a指向字...