1樓:天上的一條龍
字串還有乙個結束符號'\0',所以長度應該是81,41,41if(i/2==0) 應該是if(i%2==0)我想說的是我心若氺 的程式可能有悖於你程式設計的初衷,你只不過是想在for迴圈之後加乙個字串結束符,而他在迴圈的每一次都賦值,造成了程式執行效率的降低。
#include""
#include""
void main()
char str[81],a[41]=,b[41]=;
int i;
scanf("%s",str);
for(i=0;str[i]!=0';i++)if(i%2==0) a[i/2]=str[i];
else b[i/2]=str[i];
strcpy(str,strcat(a,b));
puts(str);
2樓:我心若氺
改下就行了,我寫的這個就行。
for(i=0;str[i]!=0';i++)以下都為迴圈的。
if(i/2==0) a[i/2]=str[i];
if(i%2==0) a[i/2]=str[i];
else b[i/2]=str[i];
a[i/2+1]=b[i/2+1]='0';
樓上的沒說全對,關鍵是for迴圈要帶3個語句。
3樓:網友
第一,把char str[80],a[40],b[40];提到main()前面,因為如果乙個變數在main()下宣告的話會自動亂碼。
第二,把if(i/2==0)改成if(i%2==0)
這樣就可以了。
c++中編譯時出現亂碼的原因可能有哪些
4樓:mexico卡卡
這是因為編譯器不支援。以下為幾種常用的編譯器。
c++編譯器是乙個與標準化c++高度相容的編譯環境。這點對於編譯可移植的**十分重要。編譯器對不同的cpu會進行不同的優化。
常見的c++編譯器有如下幾種:
gnu c++
g++是乙個開源的c++編譯器,對標準化c++的支援達。
值得一提的是,gcc是gnu c的編譯器, g++是gnu c++的編譯器, 而egcs(enhanced gnu compiler suite)可以認為是gcc的改進版。目前gcc已經改名,從原來代表gnu c compiler改變為代表gnu compiler collection。而mingw或cgywin,是在windows平臺上的gnu c/c++編譯器,以及庫檔案,執行環境的集合。
borland c++
該編譯以速度快、空間效率高而著稱。它的版本對標準化c++的支援達,而官方稱100%符合ansi/iso的c++標準和c99標準。
它是borland公司開發的,是borland c++ builder和borland c++ builder x這兩種ide的後臺編譯器。
visual c++
vc++對標準化c++的相容僅達。
它是visual studio、visual 2002、visual 2003、visual 2005的後臺c++編譯器。隨著stanley lippman等編譯器設計大師的加盟,它變得非常成熟可靠了。visual c++
想用c語言解出這道題,初學者碼不來**。請大神幫幫忙
5樓:風若遠去何人留
分析題目。
1個1個拿,正好拿完。這個是廢話 不用管。
2個2個拿,還剩1個。奇數。
3個3個拿,正好拿完。3的倍數。
4個4個拿,還剩1個。模除4餘1
5個5個拿,還差1個。模除5餘4
6個6個拿,還剩3個。模除6餘3
7個7個拿,正好拿完。7的倍數。
8個8個拿,還剩1個。模除8餘1
9個9個拿,正好拿完。9的倍數。
於是 綜合起來就是 63的奇數倍,模除4餘1,模除5餘4,模除6餘3,模除8餘1
遍歷。#include
int main()
printf("%d",j);
return 0;
計算結果 1449個。
6樓:網友
用for迴圈測試:
for(i = 1; i <= 自己設定; i++)if(i%2==1 &&i%3==0 &&i%4==1 &&i%5==4 &&i%6==3 &&i%7==0 &&i%8==1 &&i%9==0)
print i
其中i%5差1表示餘數為4
c語言的程式編寫錯誤,求高手指教。
7樓:網友
我的執行結果和你的一樣,我用的編譯器分別是:gcc 和 turbo c
我用excel模擬了你的fun函式的運算過程,得到如下截圖:
從截圖可以看出,l 和 x 最後都產生了誤差。但是結果都一直逼近。
而且,你的sum是每迴圈一次,就計算一次 sum = l + 這樣寫法,實際只有最後一次,當i==10的時候,才有效 ,其他9次賦值,都是多餘的。
我不知道你原始題目是什麼,也不知道你的迭代函式是什麼,無法判斷你的 fun() 的編寫是否和原題中的迭代公式一致。
建議你將原始題目中的迭代內容發出來,再幫你看看。
c語言習題求助,編譯通過,執行錯誤,高分求解
8樓:網友
什麼情況,發出來看看。
這段c語言**有什麼錯誤?
9樓:網友
1、函式怎麼沒給出返回值?這樣不能通過編譯的。
在函式定義中最後加上:return sum;
2、函式的呼叫不是照抄函式宣告,而是要給出函式的引數。
sum_arry(a, 5);
sum_arry(a+3, 5);
3、你最後的printf中的sum值,在主函式中一直是0,得不到你想要的結果。
sum=sum_arry(a,5);
4、函式宣告也錯誤,怎麼又有void,又有int?只能有乙個,這裡看你的意思應該是只能有int。
5、你的printf函式也寫錯了。
6、for迴圈也寫錯了,i的初始值是陣列元素值,這是不對的。要和n比較,必須是索引,這裡應該從0開始。
合起來應該是這樣:
#include
int sum_arry(int *p,int n);
main();
sum = sum_arry(a, 5);
printf("輸出元素的和為%d", sum);
sum = sum_arry(a + 3, 5);
printf("輸出元素的和為%d", sum);
int sum_arry(int *p,int n)}
10樓:王老虎愛吃蘿蔔
#include
int sum_arry(int *p,int n);
main();
int length = sizeof (a)/sizeof (int);
sum = sum_arry(a,length);
printf("輸出元素的和為%d",sum);
int sum_arry(int *p,int n)return sum;
/改了改,你先前寫那個錯誤太多了。
有一道數學題不知道怎麼解,求解,求解一道數學題。
40 40 100 80 80 答案自己算 先算出一塊邊長40cm方磚的面積40 40,再算出廚房總面積40 40 100,最後除以邊長80cm的面積,最後得出來就是塊數 用磚總面積 0.4 平方米 100 16 平方米 廚房面積 16 估算廚房長和寬 2米 8米 16平方米 0.4 5塊 0.4 ...
一道求ab的c語言題一道求AB的c語言題?
include define m 50 main 比較兩個的長短,把長的那個放到c裡,短的放到d裡 else if ia ib a 0 b 0 0 9 else 比較兩個的長短,把長的那個放到c裡,短的放到d裡 ic strlen c id strlen d 求出實際參加運算的c,d的長度 do 處...
c語言的一道選擇題,一道C語言選擇題 以下正確的程式段是
c語句以分號來表示語句的結束,注意到第2個for迴圈後面的分號了嗎?那表示for迴圈到那裡就結束了,後面的printf語句並不是for迴圈的1部分,所以只是輸出1個星號。因為print這句前有個分號,表示空語句,也就是說,迴圈體內的句子是空,迴圈完之後,又執行了一個列印操作。有點看不清啊,不過應該是...