#includestdio.h
目前累计服务客户上千家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供成都网站建设、网站建设、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联公司始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。
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语言中index并没有什么特别的含义啊。
那段话的意思:
从“prevEnd”开始,返回“str”数组中下个单词的第一个字符的索引。
“prevEnd”是字符数组“str”中的一个索引。
#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) /*符号优先级比较*/
{
switch(n)
{case '#': return 0;
case '+': return 1;
case '-': return 1;
case '*': return 2;
case '/': return 2;
}
}
int shujujinzhan(shuju *s,float x) /*数据进栈*/
{
if(s-top==29)
return (false);
s-top++;
s-a[s-top]=x;
return(true);
}
char fuhaojinzhan(fuhao *l,char y) /*运算符进栈*/
{
if (l-futop==29)
return (false);
l-futop++;
y=l-b[l-futop];
return y;
}
float shujuchuzhan(shuju *s,float *x) /*数据出栈*/
{
if(s-top==-1)
return (false);
else
{
*x=s-a[s-top];
s-top--;
return *x;
}
}
int fuhaochuzhan(fuhao *s,char *x) /*运算符出栈*/
{
if(s-futop==-1)
return (false);
else
{
*x=s-b[s-futop];
s-futop--;
return(true);
}
}
float suzi(char i) /*数据组成*/
{ float z, j=0;
z=(float)(i-'0');
j=j*10+z;
return j;
}
float jisuan(float a,char b,float c) /*计算*/
{ 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) /*判断运算符还是数据*/
{
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,'#'); /*#进栈做栈底元素*/
printf("请输入计算公式\n");
gets(strink);
for (i=0;i60;i++)
{ if (strink[i]=='\0') /*判断字符串是否为空*/
break;
else
{j=pangduanyunsuanfu(strink[i]); /*判断是运算符还是数据*/
if (j==1)
{ a=i++;
n=youxianji(strink[i]);
m=youxianji(p.b[p.futop]);
if (n-m0) /*比较运算符的优先级*/
fuhaojinzhan(p,strink[i]); /*运算符进符号栈*/
else
{ k=fuhaochuzhan(p,k);
h1=shujuchuzhan(q,h1);
h2=shujuchuzhan(q,h2);
s=jisuan(h1,k,h2); /*出栈的两个元素与对应的运算符的计算*/
shujujinzhan(q,s); /*将计算的值回进数据栈中*/
}
}
else
{
z=suzi(strink[i]); /*对数据进行计算,*/
if (a!=i)
{ z=0;
shujujinzhan(q,z); } /*把得到相应的数据进栈*/
a=i++;
}
}
}
printf("%d",q.a[0]); /*输出数据栈的最后一个元素,就是公式对应的值*/
}
百度文库VIP已帮您省0元现在恢复最低仅需0.3元/天
立即续费
c语言数学计算公式
#includestdio.h
typedef struct
{float a[30];
int top;
}shuju;
typedef struct
{char b[30];
int futop;
}fuhao;
void initstack(shuju *s)
第 1 页
{s-top=-1;
}
void initstackk(fuhao *s)
{
s-futop=-1;
}
int youxianji(char n) /*符号优先级比较*/
{
switch(n)
{case '#': return 0;
itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使 用。但是,大多数的编译器(如Windows上的)通常在stdlib.h头文件中包含这个函数。在stdlib.h中与之有相反功能的函数是atoi。功能:把一整数转换为字符串。
用法
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;
}
/* 实现itoa函数的源代码 */
char *myitoa(int num,char *str,int radix)
{
/* 索引表 */
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
unsigned unum; /* 中间变量 *
int i=0,j,k;
/* 确定unum的值 */
if(radix==10num0) /* 十进制负数 */
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num; /* 其他情况 */
/* 逆序 */
do {
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='\0';
/* 转换 */
if(str[0]=='-') k=1; /* 十进制负数 */
else k=0;
/* 将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果 */
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的第三个参数用于将数字转换成不同的进制。举个例子:
#include stdlib.h
#include stdio.h
int main(void)
{
int number = 12345;
char string[25];
itoa(number, string, 10); //按十进制转换
printf("integer = %d string = %s\n", number, string);
itoa(number, string, 16); //按16进制转换
printf("integer = %d string = %s\n", number, string);
return 0;
}
输出结果:
integer = 12345 string = 12345 --说明12345的十进制表示就是12345
integer = 12345 string = 3039 ——说明12345的十六进制表示是0x3039
但是要注意,itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
用几进制表示吧:)
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
指定要转换的进制的基数,其值好象在1--36之间都可以
这个不是C标准库中的函数,而是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似:
char str[255];
sprintf(str, "%x", 100); //将100转为16进制表示的字符串。
一种是用户自定义函数,就是自己根据功能的需要自己编写的函数;另一种是系统自带的函数,如sqrt(x)函数 (就是求x的二次方根),这样的可以直接用,前提是得在头文件中把它们包含进去。
在编程领域中,C语言的运用非常之多,它兼顾了高级语言的汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。
扩展资料:
C语言包含有各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且多以小写字母为主,对许多不必要的部分进行了精简。
实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。
参考资料来源:百度百科-c语言
参考资料来源:百度百科--C语言函数
1.索引表的类型可定义如下:
struct IndexItem
{
IndexKeyType index;
//IndexKeyType为事先定义的索引值类型
int start;
//子表中第一个元素所在的下标位置
int length;
//子表的长度域
};
2.首先根据给定的索引值K1,在索引表上查找出索引值等于K1的索引项,以确定对应子表在主表中的开始位置和长度,然后再根据给定的关键字K2,在对应的子表中查找出
3。关键字等于K2的元素。
设数组A是具有mainlist类型的一个主表,数组B是具有indexlist类型的在主表A上建立的一个索引表,m为索引表B的实际长度,即所含的索引项的个数,K1和K2分别为给定
带查找的索引值和关键字,并假定每个子表采用顺序存储,则索引查找算法为:
int Indsch(mainlist A, indexlist B, int m, IndexKeyType K1, KeyType K2)
{//利用主表A和大小为 m 的索引表B索引查找索引值为K1,关键字为K2的记录
//返回该记录在主表中的下标位置,若查找失败则返回-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; //查找失败
}