#includevoid splitfloat( float x, int *intpart, float *fracpart ); int main() { float x, fracpart; int intpart; scanf("%f", &x); splitfloat(x, &intpart, &fracpart); printf("The integer part is %dn", intpart); printf("The fractional part is %gn", fracpart); return 0; } void splitfloat( float x, int *intpart, float *fracpart ){ *intpart = (int)x; *fracpart = x- (*intpart); }
#includeint main() { float x; int a,b; printf("Enter x:"); scanf("%f",&x); a=x; b=(int)(x*100)%100; printf("%d %d",a,b); return 0; }
例:输入20.21
第一种方法输出的是:20和0.21;
第二种方法输出的是:20和21。
字符串的应用:
#include#define MAXN 10 int main(void) { int i,k=0; char line[MAXN]; printf("Enter string:"); while((line[k]=getchar())!='n'){ k++; } line[k]=' '; i=0; k=k-1; while(i =k){ printf("这是回文!"); }else{ printf("这不是回文!"); } }
*字符串压缩*/ #include#define MAXN 30 void zip(char *p); int main() { char line[MAXN]; printf("Enter string:"); gets(line); zip(line); puts(line); return 0; } void zip(char *p){ char *q=p; int n; while(*p!=' '){ n=1; while(*p==*(p+n)) { n++; } if(n>=10){ *q++=(n/10)+'0'; *q++=(n%10)+'0'; }else if(n>=2){ *q++=n+'0'; } *q++=*(p+n-1); p+=n; } *q=' '; }
字符串常用处理函数
(1)输入与输出:printf,scanf,gets(s),puts(s).
scanf与gets的区别在于当输入空格键或tab时,scanf会认为该字符串结束读取,将空格后的字符串列为下一项,而gets会继续读取字符串,直到换行。
(2) 字符串复制函数:char *strcpy(char *s1,char *s2).
将s2复制到s1,直到遇到s2中的 ' ' 为止。且s1要有足够的内存空间存放s2,且函数返回值是s1。
参数s1必须是字符型数组基地址,s2可以是字符数组名或字符串常量。
(3)字符串连接函数:char *strcat(char *s1,char *s2).
将s2连接到s1后面。s1原有的 ' ' 结束符被放在连接后的结束位置上。所以s1需要有足够的空间。
s1与s2类型要求同上。
注意:C语言中不允许直接使用算术运算符将两个字符串连接。
另外,strcpy,strcat容易出现安全问题,当s1内存空间不足时,从s2拷贝的数据可能会越界进入其他地址或者造成数据丢失,且有时候不太容易知道s1的内存空间。char *strncpy和char *strncat是较为安全的版本,其中的 ’n' 表示最多可以从s2拷贝多少个字符,若输入的字符串个数大于n,函数会自动地把n后面的字符删掉。
(4)字符串比较函数:char *strcmp(char *s1,char *s2).
s1和s2可以是字符数组名或字符串常量。
若s1 s2大小相等,返回 0;
若s1大于s2,返回一个正数;
若s1小于s2,返回一个负数。
当输入printf(“%dn",'a' -'A') ; 时,输出的值为32,说明a大于A。
(5)字符串长度函数:strlen(s1).
s1可以是字符数组名或者字符串常量。
其计算的s1的有效长度不包括 ‘ ' 。
在使用字符串处理函数时,必须要提供函数原型。通常用 #include



