用来滤过每行输入最后的\n(表示回车的转义字符),这样多行输入均可以进行排序。
为旅顺口等地区用户提供了全套网页设计制作服务,及旅顺口网站建设行业解决方案。主营业务为成都做网站、成都网站设计、成都外贸网站建设、旅顺口网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
比如:
input:
abc
gid
如果不加getchar()第二次循环:
ch[0] = '\n';
ch[1] = 'g';
ch[2] = 'i';
然后排序输出显然是错误的。
#include stdio.h
#include stdlib.h
struct Data{
int n;
int num[1010];
}st[1010];
int cmp( const void *a ,const void *b) {
return (*(Data *)a).n (*(Data *)b).n ? 1 : -1;
}
int main(){
int idx=0,num;
char ch;
st[idx].n=0;
while(scanf("%d%c",num,ch)!=EOF){
st[idx].num[st[idx].n++]=num;
if (ch=='\n'){
idx++;
st[idx].n=0;
}
}
qsort(st,idx+1,sizeof(struct Data),cmp);
for(int i=0;i=idx;i++){
for(int j=0;jst[i].n;j++){
printf("%d",st[i].num[j]);
// if(j!=st[i].n-1)
printf(" ");
}
if(i!=idx)
printf("\n");
}
return 0;
}
这个代码老PE,我也不知道为什么了。你参考下哈。
#include "stdio.h"
#include "math.h"
int main() //main函数要声明成int型的
{
int m,n,i,j,t,k;
long fenshu[m][n],max;
while(scanf("%d %d",m,n)!=EOF)
{
max=0;
for(i=0;im;i++)
for(j=0;jn;j++)
{
scanf("%ld",fenshu[i][j]);
//下面的循环跟这个循环合并起来就行
if(labs(fenshu[i][j])labs(max))
{
max=fenshu[i][j];
t=i;
k=j;
}
}
printf("%d %d %ld\n",t+1,k+1,fenshu[t][k]);
}
return 0; //这里加return 0;
}
/*
你是在OJ上提交不AC吧,你的问题在于没有把main函数定义为int型的,这个在oj上是强制要求的,最后要有return 0;
另外,ACM讲究效率,你不需要两次循环,边读边比较就行,一次循环即可。可以节省一半时间。真正比赛,给你的数据规模都很大,多浪费一倍的时间应该是会超时的。
*/
如果你只输入一个字符串,可以把程序里的while循环改了,不过对于ACM程序的判定来说,输入一个也是可以用while来进行输入的,你可以先提交一下我的代码试试。
count函数用来判定字符串s是否是回文,如果是返回1,否则返回0.
#include stdio.h
#include stdlib.h
#include string.h
int Count(char *s)
{
int i, j, t;
t = strlen(s);
i=0, j=t-1;
while(ij)
{
if(s[i]!=s[j])
{
return 0;
}
i++, j--;
}
return 1;
}
int main()
{
char s[280];
while(scanf("%s", s)==1)
{
if(Count(s)==1)
{
putchar('Y');
}
else
{
putchar('N');
}
putchar('\n');
}
return 0;
}