1樓:問明
#include
#include
void output(char *s, int n); //定義輸出函式
int main()
//輸出函式
void output(char *s, int n)for(j=0, printf("there is %d number in the string.\nresult: ", m); jprintf("\n");}
2樓:匿名使用者
void search(char *p1,double *p2,int *p3)
/* //1. 修改
else if(i!=0)//當遇到字串中的一個非整數的字元時,執行以下操作
else continue;//如果字串中的第一個字元就不是整數,
} //那麼就直接跳出本次迴圈進行下一個字元的檢測
// 2. 增加
if (j != 0)
/*// 3. 修改
*(p3)=n+1;//記憶檢測到的整數個數,「傳回」主函式
*/*(p3)=n;
}對你的**做了3處修改。分別說明如下:
1. 判斷條件的修改,原條件無法判斷兩個數字中間的非字元數大於1的情況
迴圈變數h由遞增改為遞減,因為陣列a中,下標從小到大分別表示的是從高位到低位,比如123儲存在a中,那麼a[0]儲存的是百位
增加了一個乘法,因為pow只能計算該位置的單位,而不能表示具體數值,比如321,pow只能計算出100 + 10 + 1
為什麼要減去'0',因為a中儲存的是字元,而不是整數。
2. 增加了一次迴圈,如果字串不是以非數字字元結尾,那麼,最後一次讀到陣列a中的資料則無法u取出
3. 函式第三個引數的賦值修改為n而不是n+1,每次讀完一個數字,n自動完成了加1,因此最後無需再對其進行加1操作
3樓:
if (*p>='0' && *p<='9')這一段中連續數字字元每處理一個就sum++;了,按要求是一個整數sum增1一次;char a[10]=;這個宣告也有問題,a的元素只有1位元組,絕大多數整都放不下。所以再沒有往下看,寫得也太複雜,下面提供一個作參考……
//#include "stdafx.h"//vc++6.0加上這一行.
#include "stdio.h"
#include "string.h"
int main(void){
char s="a123x56 17960?302tab5876";
int a[1000],i,j,k,ln=strlen(s);
for(j=k=i=0;i
4樓:鎏金閣
char cmix[100]="sdf34534hjkljk56365jhl huo4578bhj45t";
char *pchar=cmix;
int integer[10][16];//最多隻能10組數字,每組最多15個數字字元。
int j,i=0;//整數陣列下標
while(*pchar)//混合字串未結束j=0;//新組第一個數字
while(isdigit(*pchar)&&j<14)//*pchar是數字&&j<14
integer[i][j]='\0' ;//字串結尾標誌i++;//準備下一個數字組}
C語言字串陣列問題
c語言中,賦值 與 賦初值 又叫初始化 是不一樣的。在定義變數的同時賦值,叫賦初值,而定義後賦值就是普通的賦值了。你說的 不能用賦值語句將一字串常量或字元陣列直接賦值給一個字元陣列 這句話是說普通賦值的情況,也就是,不能定義一個字元陣列以後,再給他直接賦值。而 char s 12345 這個語句,是...
c為字串陣列動態賦值的問題,C 為字串陣列動態賦值的問題
改用list吧.方法一是沒有new 沒有分配空間 方法二是在new的時候沒有指定大小,預設是0個元素,所以對其任意一個元素賦值都是越界.在c 中,陣列一般用來存放大小確定的資料.如果陣列大小未知,建議使用list lista new list a.add we messagebox.show a 0...
c語言輸入字串,將該字串中從第m個字元開始的全部字元複製到另字串
這樣 include include int main void copystr char char int int m char str1 20 str2 20 printf input string gets str1 printf which character that begin to c...