❶ c語言 3454--最大值III
嘗試過用char數組輸入方式嗎?直接比較字元,用來排序方便多了,yes,輸入輸出都方便多了。
但如果你覺得程序上沒有問題,就考慮以下我說的。
原文:
輸出
每組輸出佔1行,每行為一個正整數,即次序打亂重新組合一個新的三位整數。
次序打亂,新的,請注意這兩個個詞語
你能通過這次例子嗎
輸入:321
或許你認為答案是輸出321
但有可能是312。。。。因為要次序打亂,,輸出321可沒有打亂次序還是原來的
你是在做ACM嗎?ACM就是有點折磨人,往往一個小的輸入輸出都會出錯
你的輸入太麻煩了
只要讀取一個數,譬如
int a
cin>>a;足以
這個a就是三位數了吧
❷ 求乘積最大C語言源程序
/*定義x為N長度的數字,y為拆分多少段,z為數字長度,temp1,temp2,temp3為中間變數。max為最大值*/
int x,y,z=1,temp1,temp2,temp3,max;
pirntf("請輸入數字:");
scanf("%d",&x);
temp3=x;
printf("請輸入你要拆分多少段:");
scanf("%d",&y);
//計算數字x的長度
for(;1;)
{
x/=10;
if(x=0)
break;
z++;
}
switch(y)
{
case 1:z--;break;
case 2:z-=2;break;
case 3:z-=3;break;
case 4:z-=4;break;
case 5:z-=5;break;
case 6:z-=6;break;
}
for(int i=1;i<=z;i++)
{
temp1=temp3/(pow(10,i));
temp2=temp3%(pow(10,i));
if(i=1)
max=temp1*temp2;
if(max<temp1*temp2)
max=temp1*temp2;
}
printf("最大值為:%d",max);
貌似應該是這個了,我在網吧做的,沒有控制台程序,驗證不了我解釋一下:「如你所說,先輸入一個N長度的值,要先算出他的長度,好比15,他的長度是2(代碼為前面FOR循環),switch語句的內容表達的意思為:不管要拆分多少段,K*K+1值才為最後答案,那麼K和K+1的值要盡可能的大,那麼前面的值就應該盡可能的小,最小的當然是各位數,z的作用為最後的FOR循環中的圈數,我用的方法類似於冒泡排序,從最後一位開始循環計算,最後循環判斷用了一個pow函數,這個函數要在math.h頭文件下才能使用,所以在開頭+ 入#include <math.h>,如果還要輸出在哪裡分段的話,你可以考錄下載循環裡面+個計數器類似於數組,記錄下temp1和temp2的值,輸出出來就OK了。
❸ C語言取余符號怎麼用比如:1%12以及3%8結果是多少
C語言的取余運算符 的用法:將操作數放在取余符號的兩邊,例如:
#include<stdio.h>
int main()
{ int a,b;
a=1%12;
b=3%8;
printf("%d %d",a,b);
return 0;
}
1%12=1 ,3%8=3。
(3)成信大C語言p312擴展閱讀:
取模運算:a % p(或a mod p),表示a除以p的余數。
模p加法:(a + b) % p ,其結果是a+b算術和除以p的余數,也就是說,(a+b) = kp +r,則(a + b) % p = r。
模p減法:(a-b) % p ,其結果是a-b算術差除以p的余數。
模p乘法:(a * b) % p,其結果是 a * b算術乘法除以p的余數。
說明:
1,同餘式:正整數a,b對p取模,它們的余數相同,記做 a ≡ b % p或者a ≡ b (mod p)。
2,n % p得到結果的正負由被除數n決定,與p無關。例如:7%4 = 3, -7%4 = -3, 7%-4 = 3, -7%-4 = -3(在java、C/C++中%是取余,在python是模運算,此處%按取余處理)。
參考資料來源:網路-模運算
❹ C語言指針相關的題
對於編譯器,printf是自右至左編譯
#include<stdio.h>
main()
{int k=8;
printf("%d,%d
",k++,k);
}
輸出8,9
#include<stdio.h>
main()
{int k=8;
printf("%d,%d
",k,k++);
}
輸出9,8
printf語句里如果有表達式的話,是從右向左開始運算的,輸出的時候是從左向右輸出。
printf("%d,%d
",k++,k);先執行k,再執行k++。輸出的時候先輸出k++再輸出k的結果
printf("%d,%d
",k,k++);先執行k++再執行k,輸出的時候先輸出k再輸出k++的結果
❺ C語言 全排列······暈
首先,我下面的敘述是建立在樓主明白什麼是遞歸調用的基礎上的。對遞歸毫無了解的話,請先看看網路。
然後,進入正題。
第一個return:就是返回這個函數的調用者,這個函數執行完畢。這是一個if判斷,當帶排列的數列長度為1時,只有一種可能,輸出,則排列結束,返回。長度不只1的時候,執行以下for。
未完待續
接著講這個
for(i=0;i<n;i++){----------這個循環到底怎麼個看法和順序?
anagram(d,n-1); 怎麼輸出的??(這塊都不明白)
temp=d[0];
for(j=1;j<=n-1;j++){
d[j-1]=d[j];
}
d[n-1]=temp;
}
先講這個演算法的思想,比如對abc進行全排列,那麼可以看做:ab的全排列+c和ac的全排列+b和bc的全排列+a三個的組合。然後再細化,ab的全排列可以看出a的全排列+b,和b的全排列+a兩個的組合。當只有一個時,就是調用if=1的那個情況,直接print。不是1的時候,就是遞歸調用,進行不斷地分解。
這是演算法思想,未完待續
兩個for循環,裡面的for執行一邊後就是把數組的元素挨個往前挪一位,第一位到最後位,然後對前n-1位進行全排列,遞歸進行。從上面的演算法思想中我們可以看出這樣的目的和意義,就是一個類似對上面abc的分解過程,一次a到最後排bc,一次b到最後排ac,一次c到最後排ab。
就先說這么多吧。純手打,望採納!有問題可以補充,或者網路hi我。
我幫你改了一下代碼,加了幾行printf,希望可以解決你的那幾個問題:
#include<stdio.h>
#define NUM 3
void anagram(int[],int);
void print(int[]);
void main()
{
int d[NUM];
int i;
for(i=0;i<NUM;i++)
d[i]=i + 1;
printf("初始化後的數組順序是:");
print(d);
anagram(d,NUM);
}
void anagram(int d[],int n)
{
int i,j,temp;
int p;
if(n==1){
print(d); //列印函數
return;//-------------return返回哪?
} // 和下面的for怎麼聯系起來?
for(i=0;i<n;i++){//----------這個循環到底怎麼個看法和順序?
printf("\ni = %d,n = %d, 准備調用aragram(d,%d)\n",i,n,n-1);
printf("這時候的數組順序是:");
print(d);
anagram(d,n-1); // 怎麼輸出的??(這塊都不明白)
temp=d[0];
for(j=1;j<=n-1;j++){
d[j-1]=d[j];
}
d[n-1]=temp;
}
}
void print(int d[]){
int i;
for(i=0;i<NUM;i++){
printf("%d",d[i]);
}
printf("\n");
}
PS:
改動:1、print函數原來是逆序輸出,改成正序輸出,有利於理解;2、數組原來初始化為321,改為123,有利於理解。就改了這兩個地方,加了一些printf。
你可以運行一下。
輸出結果:
初始化後的數組順序是:123
i = 0,n = 3, 准備調用aragram(d,2)
這時候的數組順序是:123
i = 0,n = 2, 准備調用aragram(d,1)
這時候的數組順序是:123
123
i = 1,n = 2, 准備調用aragram(d,1)
這時候的數組順序是:213
213
i = 1,n = 3, 准備調用aragram(d,2)
這時候的數組順序是:231
i = 0,n = 2, 准備調用aragram(d,1)
這時候的數組順序是:231
231
i = 1,n = 2, 准備調用aragram(d,1)
這時候的數組順序是:321
321
i = 2,n = 3, 准備調用aragram(d,2)
這時候的數組順序是:312
i = 0,n = 2, 准備調用aragram(d,1)
這時候的數組順序是:312
312
i = 1,n = 2, 准備調用aragram(d,1)
這時候的數組順序是:132
132
請按任意鍵繼續. . .
❻ 想知道成信院計算機學院的名師(成都信息工程學院)
我就是成都信息工程學院計算機學院畢業的,名師說實話,說不上有多名,但是張鍾澍老師還是很不錯的,不過年齡大了,不曉得還在學校不。其他老師,比如廖德清教C++的,也不錯。
❼ 關於電子信息工程(成信的)
專業就業:作為本專業的2010級學長,切身體會,學起來有點難度,特別需要你的耐心和毅力,還要經常動手焊接啊,設計電路之類的。專業分為電子設計和通信工程兩個方向。電子設計主要是集成半集成電路的設計,精簡,維護等,發明創造性要求較高,發展潛力好;通信工程主要是對一些已有設備的維護,維修,檢測,安裝等,發明創造要求較低,實用性強,好上手。
進入實驗室:沒有什麼具體的硬性條件,先是按興趣報名,然後進行一段時間的培訓,在進行選拔,跟你的學習成績沒有什麼很大關聯。因為實驗室主要看中你的實際操作動手能力,對理論要求不高。實驗室設施還算不錯,關鍵是分為較好,一級一級的學長學姐往下帶,有一種傳承。
❽ c語言建立動態鏈表(譚浩強第四版p312)
struct Student *p1,*p2 這只是指針,是32位長的變數,存的是地址,還沒分配空間呢。。