1.i/o函数
为上街等地区用户提供了全套网页设计制作服务,及上街网站建设行业解决方案。主营业务为成都网站设计、成都网站制作、外贸网站建设、上街网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
(1)scanf函数:
int
scanf(const
char
*format…..);
从标准输入流stdin中按格式format将数据写到参数表中;若操作成功,返回写到参数表中的参数个数,否则返回eof;
注意以下几点:
①scanf函数没有精度控制
如出现:
scanf(“%6.2f”,a);
是绝对错误的
②在以%c格式输入字符数据时,所有输入的均为有效字符
如:
scanf(“%c%c%c”,a,b,c);
输入:d
e
f
则a=’d’,b为空格字符'
',c=’d’
如果以%s读入字符串,则空格键和回车键都可以作为输入结束的标志
如:
scanf(“%s%s”,p,q);---------p,q均为指针
输入:hello
world与
hello
world
效果是相同的,p均指向hello这个字符串,q均指向world这个字符串
③如果在格式控制字符串中有非格式字符,则输入时要照原样入;
如:
scanf(“%d,%d,%d,”,,b,c);
则输入时必须加上逗号:5,6,7
④如果同while配合用的话,则需注意去掉回车键
如有下面一段程序:
while(scanf(“%d”,n)==1n!=0)
{
char
ch;
scanf(“%c”,ch);
printf(“%c\n”,ch);
}
则输出结果是:
2
3
结果表明ch字符是回车键
所以如果要消除影响:
有两种方法:
1)加上getchar();
while(scanf(“%d”,n)==1n!=0)
{
getchar();
char
ch;
scanf(“%c”,ch);
printf(“%c\n”,ch);
}
2)在while中加上%*c
while(scanf(“%d%*c”,n)==1n!=0)即可
2.数学函数
(1)求绝对值
double
fabs(double
);
float
fabsf(float);
long
double
fabsl(long
double);
int
abs(int);
long
int
labs(long
int);
(2)floor函数:返回不大于参数的整数
float
floor(float);
double
floor(double);
(3)ceil函数:返回不小于参数的整数
float
ceil(float);
double
floor(double);
(4)pow:返回x^y;
double
pow(double
x,double
y);
(5)sqrt:返回x的开方
double
sqrt(double
x);
(6)log2,log10:返回底数的自然对数值
double
log2(double
x);
double
log10(double
x);
3.字符串处理函数
(1)char
*strchr(const
char
*str,int
ch);
返回str中第一次出现字符ch的位置指针,否则返回null;
(2)char
*strstr(const
char
*str1,const
char
*str2);
返回str1中第一次出现str2的位置指针,否则返回null;
(3)int
stricmp(const
char
*str1,const
char
*str2);
忽略字符的大小写进行比较
(4)int
strncmp(const
char
*str1,const
char
*str2,int
count);
将str1前n个字符与str2的前n个字符进行比较
(5)char
*strncpy(char
*str1,const
char
*str2,int
count);
将str2的前n个字符复制到str1中
(6)char
*strrev(char
*str);
将字符串str逆序,并返回逆置后的结果
4.常用使用函数
(1)double
atof(const
char
*str);
将字符串str表示的数转换成浮点数
(2)int
atoi(const
char
*str);
将字符串str表示的数转换成整数
(3)void
qsort(void
*buf,int
count,int
size,cmp);————count为所需要进行排序的元素个数,size为每个元素所占用的空间
快速排序
1、C语言有现场的常用数学函数,所在函数库为math.h、stdlib.h。
函数名及解释:
int abs(int i) 返回整型参数i的绝对值
double cabs(struct complex znum) 返回复数znum的绝对值
double fabs(double x) 返回双精度参数x的绝对值
long labs(long n) 返回长整型参数n的绝对值
double exp(double x) 返回指数函数ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中
double ldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回+√x的值
double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度
double atan(double x) 返回x的反正切tan-1(x)值,x为弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度
double cos(double x) 返回x的余弦cos(x)值,x为弧度
double sin(double x) 返回x的正弦sin(x)值,x为弧度
double tan(double x) 返回x的正切tan(x)值,x为弧度
double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度
double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度
double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度
double hypot(double x,double y) 返回直角三角形斜边的长度(z),x和y为直角边的长度,z2=x2+y2
2、复杂的数学函数可以用自定义函数的形式实现。
例如:
double ConerVelocity(int A, double x1, double y1, double x2, double y2, double t1, double t2)
{
double T,V;
T=acos(abs(x1 * x2 + y1 * y2)/ sqrt(x1 * x1 +y1 * y1)/sqrt(x2 * x2 +y2 * y2));
V= (A * (t2-t1))/(2*sin(T/2));
return V;
}
(1)void add_data()
{
structstudent st;//创建结构体变量st
int b;
int k,i;
while(1)
{
printf("\n请输入学生信息:");
printf("\n编号\t姓名\t邮政编码\t电话号码");
printf("\n---------------------------------------------------------------\n");
scanf("%s%s%s%s",st.no,st.name,st.postcode,st.phonenumber);//将名字,电话号等组包放在st.no下
for(i=0;idd.count;i++)//for循环每个学号的学生
if(strcmp(dd.stu[i].no,st.no)==0) //如果学生学号和no的相同证明找到了
break;//中断
if(idd.count)//如果查找的学生数不在总数中
printf("您输入的学号已存在,请重新输入");
else//这个else是将学号姓名电话等存入stu数组中,并且计数
{
k =dd.count;
strcpy(dd.stu[k].no,st.no);
strcpy(dd.stu[k].name,st.name);
strcpy(dd.stu[k].postcode,st.postcode);
strcpy(dd.stu[k].phonenumber,st.phonenumber);
dd.count++;
}
printf("\n\n继续添加学生信息[1-yes 0-no]:");
scanf("%d",b);
if(b==0) break;
}
save_data();
}
//此段程序为输入程序,主程序为数组和while循环的结合体,并且实现的无重复编号的输入,从而实现的信息的准确性。
(2)void delete_data()
{
int i,k;
charno[10];
printf("\n请输入要删除学生的编号:");
scanf("%s",no);
k=-1;
for(i=0;idd.count;i++)//循环整个学生数
{
if(strcmp(dd.stu[i].no,no)==0)//如果找到该学号了
{
k=i;//将学号给k变量
break;
}
}
if(k==-1)//没有找到
{
printf("\n\n没有找到该学生(编号-%s)!",no);
}
else//根本就没有
{
for(i=k;idd.count-1;i++)//接着k学号之后的学生找
{
strcpy(dd.stu[i].no,dd.stu[i+1].no);
strcpy(dd.stu[i].name,dd.stu[i+1].name);
strcpy(dd.stu[i].postcode,dd.stu[i+1].postcode);
strcpy(dd.stu[i].phonenumber,dd.stu[i+1].phonenumber);
}
dd.count--;
save_data();
printf("\n\n删除(编号-%s)成功!",no);
}
}
#include stdio.h
int main ()
{
char c;
while ((c = getchar()) != '\n')
{
if(c==' ')
printf("*");
else
{
if(c=97c=122)
printf ("%d ", c-=96);
else
{
if(c=65c=90)
printf ("%d ", c-=38);
else
printf ("%c", c);
}
}
}
return 0;
}