#include
#include
#include
// 空格剪除函数
void trimall(char * _pStr)
{
int i, s, e, len;
len = strlen(_pStr);
// 找出前导空格截止位置
for(s= 0; s< len; s++);
{
if(_pStr[s] != 0x20)
break; // 第一个非空格字符时终止循环
}
if(s == len)
s = len-1;
// 找出尾部空格截止位置
for(e = len - 1; e >= 0; e--)
{
if(_pStr[s] != 0x20)
break;
}
if(e < 0)
e = 0;
// 移动字符,消除空格(此处可用memmov效率更高)
for(i = s; i < e; i++)
{
_pStr[i-s] = _pStr[i];
}
_pStr[i] = '\0'; // 字符串结束符
}
// 主函数
void main()
{
char str_sample[] = “ This is a test ”;
printf("原字符串:%s", str_sample);
trimall(str_sample);
printf("修剪空格后字符串:%s", str_sample);
}
主函数就不写了。
void trimall(char *s)
{ char *p,*q;
int i,l;
while(s[0]=' ')
for(q=s,*q!='0';q++)*q=*(q+1); /*去串首空格*/
l=strlen(s);
i=l-1;
while(s[i]=' '&&i>=0) /*空串时i=0,防止出现i<0的异常情况*/
{ s[i]='\0';
i--;
} /*去串尾空格*/
}
我只做了第二题,第一题没做过这类,所以暂时不做,看有没有大神能回答~顺便学习~~
至于第二题,我的思路是先自己构成公式,因为1角、5角和1元一样高,所以有相应关系(设个数分别为a,b,c)
则高度上有1.8a=1.5b=2.0c 全部转成跟a相关,则有b=1.2a c=0.9a
因为能换成若干张10元,所以有对应关系 0.1a+0.5b+1c=10n..
即(0.1a+0.5b+1c)%10=0 余数为0,再套用b、c与a的关系,得1.6a%10=0
还有一点~因为c与a关系是c=0.9a~~所以a个位数只能是0,不然c就不是整数了~
接着写程序~如下:
#include
#define num 1000
void main()
{
int a[50],b[50],c[50],j=0;
for (int i=1;i
if ((16*i%100==0)&&(i%10==0)) //这里因为c的关系,i%10余数要等于0
{
a[j]=i;
b[j]=int(1.2*a[j]);
c[j]=int(0.9*a[j]);
j++;
}
}
for(i=0;i
printf("%d,%d,%d,%d\n",a[i],b[i],c[i],16*a[i]/10);
}
}
最后得出楼主所要的答案~分别是1角,5角,1元,总金额