#includestdio.h
目前累計(jì)服務(wù)客戶上千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)公司始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺(jué)傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
int search(int a[], int n, int searchValue) {
int i;
for(i=0; in; i++) if(a[i]==searchValue) return i;
return -1;
}
int main() {
int i;
int a[10],find,idx;
for(i=0; i10; i++) {
printf("Input a[%d]:",i);
scanf("%d",a[i]);
}
printf("Input searchValue:");
scanf("%d",find);
idx=search(a,10,find);
if(idx!=-1) printf("pos=%d",idx);
else printf("not found");
}
C語(yǔ)言中index并沒(méi)有什么特別的含義啊。
那段話的意思:
從“prevEnd”開始,返回“str”數(shù)組中下個(gè)單詞的第一個(gè)字符的索引。
“prevEnd”是字符數(shù)組“str”中的一個(gè)索引。
#includestdio.h
typedef struct
{float a[30];
int top;
}shuju;
typedef struct
{char b[30];
int futop;
}fuhao;
void initstack(shuju *s)
{s-top=-1;
}
void initstackk(fuhao *s)
{
s-futop=-1;
}
int youxianji(char n) /*符號(hào)優(yōu)先級(jí)比較*/
{
switch(n)
{case '#': return 0;
case '+': return 1;
case '-': return 1;
case '*': return 2;
case '/': return 2;
}
}
int shujujinzhan(shuju *s,float x) /*數(shù)據(jù)進(jìn)棧*/
{
if(s-top==29)
return (false);
s-top++;
s-a[s-top]=x;
return(true);
}
char fuhaojinzhan(fuhao *l,char y) /*運(yùn)算符進(jìn)棧*/
{
if (l-futop==29)
return (false);
l-futop++;
y=l-b[l-futop];
return y;
}
float shujuchuzhan(shuju *s,float *x) /*數(shù)據(jù)出棧*/
{
if(s-top==-1)
return (false);
else
{
*x=s-a[s-top];
s-top--;
return *x;
}
}
int fuhaochuzhan(fuhao *s,char *x) /*運(yùn)算符出棧*/
{
if(s-futop==-1)
return (false);
else
{
*x=s-b[s-futop];
s-futop--;
return(true);
}
}
float suzi(char i) /*數(shù)據(jù)組成*/
{ float z, j=0;
z=(float)(i-'0');
j=j*10+z;
return j;
}
float jisuan(float a,char b,float c) /*計(jì)算*/
{ float s;
switch(b)
{ case'+': s=float(a+b); break;
case'-': s=float(a-b); break;
case'*': s=float(a*b); break;
case'/': s=float(a/b); break;
}
return s;
}
int pangduanyunsuanfu(char i) /*判斷運(yùn)算符還是數(shù)據(jù)*/
{
if (i=='+'||i=='-'||i=='*'||i=='/')
return 1;
else
return 0;
}
void main()
{ char strink[60],k;
int i,n,m;
int a=0,j;
float z,s,h1,h2;
shuju q;
fuhao p;
initstack(q);
initstackk(p);
fuhaojinzhan(p,'#'); /*#進(jìn)棧做棧底元素*/
printf("請(qǐng)輸入計(jì)算公式\n");
gets(strink);
for (i=0;i60;i++)
{ if (strink[i]=='\0') /*判斷字符串是否為空*/
break;
else
{j=pangduanyunsuanfu(strink[i]); /*判斷是運(yùn)算符還是數(shù)據(jù)*/
if (j==1)
{ a=i++;
n=youxianji(strink[i]);
m=youxianji(p.b[p.futop]);
if (n-m0) /*比較運(yùn)算符的優(yōu)先級(jí)*/
fuhaojinzhan(p,strink[i]); /*運(yùn)算符進(jìn)符號(hào)棧*/
else
{ k=fuhaochuzhan(p,k);
h1=shujuchuzhan(q,h1);
h2=shujuchuzhan(q,h2);
s=jisuan(h1,k,h2); /*出棧的兩個(gè)元素與對(duì)應(yīng)的運(yùn)算符的計(jì)算*/
shujujinzhan(q,s); /*將計(jì)算的值回進(jìn)數(shù)據(jù)棧中*/
}
}
else
{
z=suzi(strink[i]); /*對(duì)數(shù)據(jù)進(jìn)行計(jì)算,*/
if (a!=i)
{ z=0;
shujujinzhan(q,z); } /*把得到相應(yīng)的數(shù)據(jù)進(jìn)棧*/
a=i++;
}
}
}
printf("%d",q.a[0]); /*輸出數(shù)據(jù)棧的最后一個(gè)元素,就是公式對(duì)應(yīng)的值*/
}
百度文庫(kù)VIP已幫您省0元現(xiàn)在恢復(fù)最低僅需0.3元/天
立即續(xù)費(fèi)
c語(yǔ)言數(shù)學(xué)計(jì)算公式
#includestdio.h
typedef struct
{float a[30];
int top;
}shuju;
typedef struct
{char b[30];
int futop;
}fuhao;
void initstack(shuju *s)
第 1 頁(yè)
{s-top=-1;
}
void initstackk(fuhao *s)
{
s-futop=-1;
}
int youxianji(char n) /*符號(hào)優(yōu)先級(jí)比較*/
{
switch(n)
{case '#': return 0;
itoa是廣泛應(yīng)用的非標(biāo)準(zhǔn)C語(yǔ)言擴(kuò)展函數(shù)。由于它不是標(biāo)準(zhǔn)C語(yǔ)言函數(shù),所以不能在所有的編譯器中使 用。但是,大多數(shù)的編譯器(如Windows上的)通常在stdlib.h頭文件中包含這個(gè)函數(shù)。在stdlib.h中與之有相反功能的函數(shù)是atoi。功能:把一整數(shù)轉(zhuǎn)換為字符串。
用法
char *itoa(int value, char *string, int radix);
頭文件: stdlib.h
程序例:
#include stdlib.h
#include stdio.h
int main()
{
int number = 123456;
char string[25];
itoa(number, string, 10);
printf("integer = %d string = %s\n", number, string);
return 0;
}
/* 實(shí)現(xiàn)itoa函數(shù)的源代碼 */
char *myitoa(int num,char *str,int radix)
{
/* 索引表 */
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
unsigned unum; /* 中間變量 *
int i=0,j,k;
/* 確定unum的值 */
if(radix==10num0) /* 十進(jìn)制負(fù)數(shù) */
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num; /* 其他情況 */
/* 逆序 */
do {
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='\0';
/* 轉(zhuǎn)換 */
if(str[0]=='-') k=1; /* 十進(jìn)制負(fù)數(shù) */
else k=0;
/* 將原來(lái)的“/2”改為“/2.0”,保證當(dāng)num在16~255之間,radix等于16時(shí),也能得到正確結(jié)果 */
for(j=k;j=(i-1)/2.0+k;j++)
{
num=str[j];
str[j]=str[i-j-1+k];
str[i-j-1+k]=num;
}
return str;
}
itoa的第三個(gè)參數(shù)用于將數(shù)字轉(zhuǎn)換成不同的進(jìn)制。舉個(gè)例子:
#include stdlib.h
#include stdio.h
int main(void)
{
int number = 12345;
char string[25];
itoa(number, string, 10); //按十進(jìn)制轉(zhuǎn)換
printf("integer = %d string = %s\n", number, string);
itoa(number, string, 16); //按16進(jìn)制轉(zhuǎn)換
printf("integer = %d string = %s\n", number, string);
return 0;
}
輸出結(jié)果:
integer = 12345 string = 12345 --說(shuō)明12345的十進(jìn)制表示就是12345
integer = 12345 string = 3039 ——說(shuō)明12345的十六進(jìn)制表示是0x3039
但是要注意,itoa并不是一個(gè)標(biāo)準(zhǔn)的C函數(shù),它是Windows特有的,如果要寫跨平臺(tái)的程序,請(qǐng)用sprintf。
用幾進(jìn)制表示吧:)
MSDN的例子
Example
/* ITOA.C: This program converts integers of various
* sizes to strings in various radixes.
*/
#include stdlib.h
#include stdio.h
void main( void )
{
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;
_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );
_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l, buffer );
_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul, buffer );
}
Output
String of integer 3445 (radix 10): 3445
String of integer 3445 (radix 16): 0xd75
String of integer 3445 (radix 2): 110101110101
String of long int -344115 (radix 16): 0xfffabfcd
String of unsigned long 1234567890 (radix 16): 0x499602d2
指定要轉(zhuǎn)換的進(jìn)制的基數(shù),其值好象在1--36之間都可以
這個(gè)不是C標(biāo)準(zhǔn)庫(kù)中的函數(shù),而是Windows平臺(tái)下擴(kuò)展的,標(biāo)準(zhǔn)庫(kù)中有sprintf,功能比這個(gè)更強(qiáng),用法跟printf類似:
char str[255];
sprintf(str, "%x", 100); //將100轉(zhuǎn)為16進(jìn)制表示的字符串。
一種是用戶自定義函數(shù),就是自己根據(jù)功能的需要自己編寫的函數(shù);另一種是系統(tǒng)自帶的函數(shù),如sqrt(x)函數(shù) (就是求x的二次方根),這樣的可以直接用,前提是得在頭文件中把它們包含進(jìn)去。
在編程領(lǐng)域中,C語(yǔ)言的運(yùn)用非常之多,它兼顧了高級(jí)語(yǔ)言的匯編語(yǔ)言的優(yōu)點(diǎn),相較于其它編程語(yǔ)言具有較大優(yōu)勢(shì)。計(jì)算機(jī)系統(tǒng)設(shè)計(jì)以及應(yīng)用程序編寫是C語(yǔ)言應(yīng)用的兩大領(lǐng)域。同時(shí),C語(yǔ)言的普適較強(qiáng),在許多計(jì)算機(jī)操作系統(tǒng)中都能夠得到適用,且效率顯著。
擴(kuò)展資料:
C語(yǔ)言包含有各種控制語(yǔ)句僅有9種,關(guān)鍵字也只有32 個(gè),程序的編寫要求不嚴(yán)格且多以小寫字母為主,對(duì)許多不必要的部分進(jìn)行了精簡(jiǎn)。
實(shí)際上,語(yǔ)句構(gòu)成與硬件有關(guān)聯(lián)的較少,且C語(yǔ)言本身不提供與硬件相關(guān)的輸入輸出、文件管理等功能,如需此類功能,需要通過(guò)配合編譯系統(tǒng)所支持的各類庫(kù)進(jìn)行編程,故c語(yǔ)言擁有非常簡(jiǎn)潔的編譯系統(tǒng)。
如果一個(gè)變量名后面跟著一個(gè)有數(shù)字的中括號(hào),這個(gè)聲明就是數(shù)組聲明。字符串也是一種數(shù)組。它們以ASCII的NULL作為數(shù)組的結(jié)束。要特別注意的是,方括內(nèi)的索引值是從0算起的。
參考資料來(lái)源:百度百科-c語(yǔ)言
參考資料來(lái)源:百度百科--C語(yǔ)言函數(shù)
1.索引表的類型可定義如下:
struct IndexItem
{
IndexKeyType index;
//IndexKeyType為事先定義的索引值類型
int start;
//子表中第一個(gè)元素所在的下標(biāo)位置
int length;
//子表的長(zhǎng)度域
};
2.首先根據(jù)給定的索引值K1,在索引表上查找出索引值等于K1的索引項(xiàng),以確定對(duì)應(yīng)子表在主表中的開始位置和長(zhǎng)度,然后再根據(jù)給定的關(guān)鍵字K2,在對(duì)應(yīng)的子表中查找出
3。關(guān)鍵字等于K2的元素。
設(shè)數(shù)組A是具有mainlist類型的一個(gè)主表,數(shù)組B是具有indexlist類型的在主表A上建立的一個(gè)索引表,m為索引表B的實(shí)際長(zhǎng)度,即所含的索引項(xiàng)的個(gè)數(shù),K1和K2分別為給定
帶查找的索引值和關(guān)鍵字,并假定每個(gè)子表采用順序存儲(chǔ),則索引查找算法為:
int Indsch(mainlist A, indexlist B, int m, IndexKeyType K1, KeyType K2)
{//利用主表A和大小為 m 的索引表B索引查找索引值為K1,關(guān)鍵字為K2的記錄
//返回該記錄在主表中的下標(biāo)位置,若查找失敗則返回-1
int i, j;
for (i = 0; i m; i++)
if (K1 == B[i].index)
break;
if (i == m)
return -1; //查找失敗
j = B[i].start;
while (j B[i].start + B[i].length)
{
if (K2 == A[j].key)
break;
else
j++;
}
if (j B[i].start + B[i].length)
return j; //查找成功
else
return -1; //查找失敗
}