1樓:藝燊
增加一句:#include""
#include""
void main(),b[100]=,sum[101]=,len1,len2,max;
int r,y,x,i;
scanf("%s%s",&a,&b);
len1=strlen(a);
len2=strlen(b);
max=len1>len2?len1:len2;
strrev(a);
strrev(b);
for(i=0;i=len1)a[i]='0';
if(i>=len2)b[i]='0';
r=a[i]+b[i]-'0'-'0';
y=r%10;
x=r/10;
sum[i]+=y+'0';
if(sum[i]>'9') 我增加的。
sum[i+1]+=x+0;
if(sum[i-1]>'9'){
sum[i-1]=(sum[i-1]-'0')%10+'0';
sum[i]='1';
else if(sum[i]!=0)sum[i]+=0';
strrev(sum);
printf("%s",sum);
2樓:公文小哥
for函式之前先判斷一下是否大於100 在決定是否處以100還是10
為什麼這道c語言的關於字元陣列的題我做錯了?高手幫忙看下~~
3樓:網友
//第一,「n位置的開始處」這個說法很不準確,我的理解是:如果n位置是字元'x',那麼插入字元後為:xbbbb(設"bbbb"為插入的字元)
按照你介紹,加上空格這個字元,'o'前面的位置應該是9
第二,你的字串太小了,如果str1裡的字元為12個,str2裡的字元10個,這樣插入的話很容易就溢位。
第三,插入的方法不對。
#include
int main()
for(i=0;i<100;i++)//計算str2裡的字元數。
還有其他的情況例如字元數過多(str1用了80個,str2有30個)等待情況都可以通過這兩個記錄來進行判斷,就不贅述了。
if(n<=0||n>size1)//判斷條件"n<=0||n>20"也不對,在n=18處插入乙個大小為4的字串是不行的。
我用這個判斷插入點是否在str1的那些字元內,自己定的,好像你沒這個要求。
while(n<=0||n>size1);
* while(str1[i]!=str1[k])
i++;while(str1[i++]=str2[j++]='\0')
puts(str1);
你的這個實現插入的語句有問題,在插入的時候,要先找到插入點,將str1的插入點之後的字元往後挪,以空處size2個長度來存放str2的字元。
for(i=size1+size2-1;i>n;i--)//後挪。
str1[i]=str1[i-size2];//ok
for(i=n;i//ok
puts(str1);
return 0;}
4樓:網友
錯誤在倒數第五行:
while(str1[i++]=str2[j++]='\0')應該為while((str1[i++]=str2[j++]='\0')
請原諒我為了明顯使用了全形括號。
不等號(!=)的優先順序大於賦值號(=),所以你那一句實際上是while(str1[i++]=(str2[j++]='\0'))
str1裡不是1就是0,怎麼可能對。。。
儘量不要再邏輯表示式中使用賦值號(=),很容易出錯,要格外小心。
5樓:網友
有問題先檢查一下,你能告訴我你那個k是什麼麼?沒有賦值過。
6樓:無影之牆
k沒賦值,輸入的n沒用到。
C語言問題,指標,字元陣列方面的
strcpy str 1,p1 2 後,str從abcdefg變成acde。注意,這裡fg就沒有了,因為strcpy將第二引數的字串拷貝到第一引數後,會在最後加上 0 strcpy str 3,p2 3 後,str從acde變成acd45 strcpy str 1,p1 2 的時候,str 從 b ...
c語言中關於字元陣列和字串的區別
陣列的長來度是固定的,源我們知道在哪個地方結束。對於c型別的字串,要想知道在那個地方結束的話,我們只需要檢測某個位置的字串是不是 0就行了,也就是說c型別的字串是以 0標記結束的。所以字元陣列和c型別字串的區別就是那個 0。其實從字元陣列和c型別字串的儲存位置上來說也是不同的,這也算是一個區別吧。結...
C語言,編寫函式,函式是用選擇排序法將陣列排序
px 10 改為 px a 編寫函式,使用選擇排序法對陣列進行排序 用c語言 include include include int main void if i tmp for i 0 i 10 i printf 3d a i printf n return 0 隨機產生陣列中的元素,更合理一些。...