昨天的面试题,大家看看错在哪里

ham163 2005-12-15 10:25:11
1, 实现截取字符串左边(或右边)中指定字符,输出剩余字符串。
#include “stdio.h“
#include “string.h”
void trim(char *a,char p)
{ char *a;
char p;
int i, j;
a = = new a[100];
for(i=0,i<j,i++)
{ if(*a==p)
printf(“%c\n”,a[j]);
else printf(“%c\n”,a[i]);
}
delete []a;
}

void main()
{
char trim(char *a,char p)
scanf(“%c\n”,*a);
scanf(“%c\n”,p);
printf(“%c\n”,trim());
}
2,从键盘录入年龄,工资,姓名,输入完毕后按工资排序。
Create table employer(age int,paycheck int, name char)
insert into employer select 25,3000,'ham'
insert into employer select 24,3500,'jim'
insert into employer select 29,6000,'ella'
insert into employer select 35,8000,'selina'
Select * from table orderby paycheck ASM

3,已知两个日期(YYMMDD),编写一函数,计算两个日期相差的天数。
#include <stdio.h>
void datediff()
{
int d,i,yy, mm,dd,yy1,mm1,dd1;
switch daysinmonth[i]
{
case ‘1‘:printf(“31\n”);break;
case ‘2‘: if(yy/4=0&&yy/400!=0)
printf(“”28\n”);
else printf(“29\n”);break;
case ‘3‘:printf(“31\n”);break;
case ‘4‘:printf(“30\n”);break;
case ‘5‘:printf(“31\n”);break;
case ‘6‘:printf(“30\n”);break;
case ‘7‘:printf(“31\n”);break;
case ‘8‘:printf(“31\n”);break;
case ‘9‘:printf(“30\n”);break;
case ‘10‘:printf(“31\n”);break;
case ‘11‘:printf(“30\n”);break;
case ‘12‘:printf(“31\n”);break;
}

if (dd>dd1)
d= dd-dd1;
else d=daysinmonth[i]+(dd-dd1);
if(mm>mm1)
d+=daysinmonth(i);
else d=
else for (int i=1;i<mm,i++)
d+=daysinmonth[i];

}

void main()
{
scanf(“%d-%d-%d\n” ,“%d-%d-%d\n”,#yy-mm-dd#,#yy1-mm1-dd1#);
printf(“%d\n”,datediff())
}



d=(yy-yy1)*365+(mm-mm1)*daysinmonth[i]+
...全文
347 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovememememe 2006-02-12
  • 打赏
  • 举报
回复
amrk
ouyh12345 2005-12-15
  • 打赏
  • 举报
回复
第一题
>for(i=0,i<j,i++)
> { if(*a==p)
> printf(“%c\n”,a[j]);
> else printf(“%c\n”,a[i]);
> }

注意到for里面是逗号!
什么都没做嘛,除了在*a == p 时输出了a[j],其他的都输出了
应该这样
char *tmp = a;
for(i=0;i<j;i++)
{
if(tmp[i]==p)
{
*tmp='\0';
break;
}
}
if(i==j)
{
//a里没有p
//打印a或空
}
else
{
tmp++;
//打印a,p之前
//打印tmp,p之后
}

jaycsu 2005-12-15
  • 打赏
  • 举报
回复
#include “stdio.h“
#include “string.h”
void trim(char *a,char p)
{ char *a; //这里不能在定义a,p参数列表中都有了
char p;
int i, j;
a = = new a[100]; //这里的= =变为=
for(i=0,i<j,i++)
{ if(*a==p)
printf(“%c\n”,a[j]);
else printf(“%c\n”,a[i]);
}
delete []a;
}

void main()
{
char trim(char *a,char p) //这里要是函数声明的话应该用 ';'结束
scanf(“%c\n”,*a);
scanf(“%c\n”,p); //这两句的p和a 没有定义
printf(“%c\n”,trim()); //trim没有实际参数
}
其它的没有改出来
踏岸寻柳 2005-12-15
  • 打赏
  • 举报
回复
试一试第三个:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

// 获取日期信息,参数格式:yyyymmdd
int check(char *Date, char *year, char *month, char *day)
{
int i;
// Format : yyyymmdd
if( (i=strlen(Date))!=8 )
return -1;

strncpy(year, &Date[0], 4);
strncpy(month, &Date[4], 2);
strncpy(day, &Date[6], 2);

printf("time : %s/%s/%s\n", year, month, day);

return 0;
}

// 比较两个日期(yyyymmdd)的差,单位:天
int diff(char *date1, char *date2)
{
char y1[6], m1[4], d1[4];
char y2[6], m2[4], d2[4];

memset(y1, 0, sizeof(y1));
memset(m1, 0, sizeof(m1));
memset(d1, 0, sizeof(d1));
memset(y2, 0, sizeof(y2));
memset(m2, 0, sizeof(m2));
memset(d2, 0, sizeof(d2));

if( check(date1, y1, m1, d1)<0 ||
check(date2, y2, m2, d2)<0 )
return -1;

time_t t1, t2, t3;
struct tm tm1, tm2;

tm1.tm_year = atoi(y1) - 1900;
tm1.tm_mon = atoi(m1) - 1;
tm1.tm_mday = atoi(d1);
tm1.tm_hour = 0;
tm1.tm_min = 0;
tm1.tm_sec = 0;

tm2.tm_year = atoi(y2) - 1900;
tm2.tm_mon = atoi(m2) - 1;
tm2.tm_mday = atoi(d2);
tm2.tm_hour = 0;
tm2.tm_min = 0;
tm2.tm_sec = 0;

t1 = mktime(&tm1);
t2 = mktime(&tm2);
t3 = t1 - t2;

printf("day1 = %d, day2 = %d, day1 - day2 = %d\n", t1, t2, t3);

return ( t3/(60*60*24) );
}

int main(int argc ,char *argv[])
{
if( argc!=3 )
{
printf("bad args\n");
return -1;
}

printf("day(s) = %d\n", diff(argv[1], argv[2]));

return 0;
}
ham163 2005-12-15
  • 打赏
  • 举报
回复
第二题我好像没有实现要求,没有从键盘输入

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧