-
printf("letter:%d,digit:%d,space:%d,others:%d",letter,digit,space,others);
這句話後面應該有乙個 return 語句。
else if (strcmp(str[i],''==0)也有故障。你把它和書比較,你寫錯了嗎?
-
strcmp() 函式可以採用以下形式使用:
int strcmp(const char* str1, const char* str2);
把else if (strcmp(str[i],'')==0)
更改為 else if (str[i]==' ') 來執行此操作。
程式如下:包括""
#include
int letter,digit,space,others;
int main()
int count(char str)
char text[80];
gets(text);
letter=0,digit=0,space=0,others=0;
count(text);
printf("letter:%d,digit:%d,space:%d,others:%d",letter,digit,space,others);
int count(char str)
int i;
for(i=0;str[i]!='\0';i++)
if((str[i]>='a'&&str[i]<='z')||str[i]>='a'&&str[i]<='z'))
letter++;
else if (str[i]>='0'&&str[i]<='9')
digit++;
else if (str[i]==' ')
space++;
else others++;
-
首先,讓我們用這種 C 語言回答錯誤的原因:
第乙個 gets 是未定義的:
出現此錯誤通常是因為未包含相應的標頭檔案,或者庫沒有此功能。 這裡不應該有這樣的功能。 gets(char *dest) 是乙個舊的庫函式,使用這個函式存在安全風險。
它只有乙個引數,如果輸入的字元數超過dext記憶體空間中的字元數,程式可能會失敗,或者黑客可能會利用此漏洞進行異常操作。 你可以改用 fgets(char *dest, int size, file *fp),這可以通過使用第二個引數設定最大輸入來解決上述問題。
後三個 strcat 引數 2 型別不匹配:
strcat 的第二個引數在語言 char * 中,呼叫時 jiji[i] 是 char,可以寫成 &jiji[i],改語法後沒有問題,邏輯要自己評估。
第四個返回區域性變數 re:
rE 是 LAI 函式內部的乙個陣列,在堆疊中,當函式執行時,它會釋放資源。 堆疊中的空間可能會在其他地方使用,並且內容可能會被更改。 建議不要返回區域性變數。
這就是這個語法錯誤的答案。
新增附加
總體來說,這個****比較長,for迴圈比較多,後面會優化一下。 先實現功能,再優化。 這是您可以參考的**。
-
您的編譯器版本是新的,在 C11 中刪除了 gets 函式,並且不再有此函式。
jiji[i] 的型別是 char,strcat 的第二個引數應該是 const char*,當然不是。
-
我已經為你完成了對你的C語言程式的修改,所以看看吧(有很多變化,所以你自己和原來的程式比較一下)。
#include
#include
#define n 100
#define s 101
#define z 26
char lai(int i),k,j,ch;
char s[s][n]=,r[s][n]=,b[2]=;
scanf("%d",&n);
for(i=0;iscanf("%s",s[i]);
for(i=0;ifor(k=0;s[i][k]!=0';k++)else if(ji[j][i]==1){
b[0]=lai(i);
strcat(r[j],b);
for(i=0;iprintf("%s",r[i]);
return 0;
-
求三角形每個角的度數的公式缺少分母的括號,其餘的都是正確的。
完整的 C 程式<>如下(注意公式中分母中的括號)。
-
nan 是的"not a number",即計算結果不是數字。
Ind 是 Indedefinite 的縮寫,即無法確定它是什麼。
諸如負數的平方、負數的對數、除以、乘以無窮大、除以無窮大等錯誤都會得到它。
-
你是乙個數學問題,而不是乙個程式設計問題
余弦公式為
cosa=(b*b+c*c+a*a)/(2*b*c)
-
十進位溢位無法表示,所以讓我們先看一下 cosa,b,c 的輸出。
-
【錯誤】ld returned 1 退出狀態是放在 main 函式之外的函式宣告,宣告是 FAC 函式,但是使用時寫成 F,所以結果不正確。
可能原因:1 黑匣子在執行嗎?
2 main有問題嗎?
解決方法:1、如果背景中已經有黑框再執行,則結束黑框;
2.如果沒有黑眼圈,可能是main函式有問題,可以檢查函式的定義是否寫入main函式中。
#include
float count(int a, int b, int c, float x);
int main(void)
int a = 0, b=0, c = 0;
float x = 0, y =0;
printf("請按順序輸入三元方程的係數 a、b 和 c x; 係數和 x 用空格鍵分隔:");
printf("%f", count(a, b, c, x));
*以下函式定義寫入 main 函式,並報錯資訊:[error] ld returned 1 exit status*
float count(int a, int b, int c, float x)
float y = 0;
y = a*x*x*x+b*x*x+c;
return y;
return 0;
-
1.您定義的陣列的大小僅為 10 個數字。
如果找不到 x,則將 x 新增到陣列中,這將導致陣列越界。
2。在加法的過程中,你直接給指標p賦值x,這是不對的,p只接收位址,不接收值。
它只是將陣列 w 的第乙個位址傳遞給 p,而不是將整個陣列傳遞給 p。
4。不要在迴圈中使用 printf 語句,因為它很容易導致迴圈一次列印語句。
這不是想要的結果,你可以在迴圈中,在if語句中標記它。
然後將 print 語句寫在迴圈之外。
#include
#definesize
定義了較大的陣列,以便稍後新增的數字不容易越線。
voidmain(),p,x,flag=0,count=0,n=10;
printf("請輸入您要查詢的號碼:")
scanf("%d",&x);
for(p=w;p 使用指標作為迴圈條件,n 是初始化陣列的數量。
if(flag==0)
這裡是判斷是否找到,1是找到的,0是沒有找到的。
elseprintf("%d 出現在陣列中的 %d 位置。 ",x,count);
PE 格式錯誤。
RE執行錯誤一般是執行過程中的記憶體溢位,數值超過上下限,時間到期,演算法需要優化。 >>>More
這是乙個唯讀變數,根本不是常量,輸出只是因為 consult 宣告的變數是由編譯器巨集定義的。 你可以用 gcc 來檢視編譯生成的編譯**,結果很明顯。