当前位置:首页 » 编程语言 » 杭电2000题c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

杭电2000题c语言

发布时间: 2022-04-26 16:45:11

⑴ 杭电oj第2000题

//******************************************************************************
// 杭电2000 ASCII码排序 代码已AC
//******************************************************************************
#include<stdio.h>
int main()
{
char a[3]={'a','b','c'},temp;
int i=0,j;
while (scanf("%c%c%c",&a[0],&a[1],&a[2])==3)
{
getchar(); //添加此句 接收scanf 按下的换行 ,以免被赋值给a[0]
for (i=0;i<=2;i++)
{
for (j=i+1;j<=2;j++)
{
if (a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("%c %c %c",a[0],a[1],a[2]);
printf("\n");
}
}

//******************************************************************************
// 祝学习进步,更上一层楼 *(^-^)*
//******************************************************************************

⑵ 帮忙来看下这个简单的C程序那里错了……

在printf("%c %c %c\n",a,b,c);下加
fflush(stdin); //清空一下缓冲区,不然有\n干扰

看了原题,估计还是不对,格式问题,sample里是一起输入输出的,估计还得改
用数组吧,不知能不能通过时间和内存限制,明天再说吧

⑶ 杭电ACM第2000题。。

共两个错误,一个是输入的换行符没有吸收,下次scanf的时候会读取换行符。
比如你输入asd(Enter)键,scanf后那个enter键还保留在缓冲中,下次scanf的时候会读取。
第二个是比较的逻辑有点问题,修改的代码如下:
#include<stdio.h>
int main()
{
char a,b,c;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
if(a<=b)
{
if(b<=c) printf("%c %c %c\n",a,b,c); // c最大
else if(a<=c && c<=b) printf("%c %c %c\n",a,c,b); // c在a,b之间
else printf("%c %c %c\n",c,a,b); // c最小
}
else // a>b
{
if(b>=c) printf("%c %c %c\n",c,b,a); // c最小
else if(a>=c&&c>=b) printf("%c %c %c\n",b,c,a); // c在b,a之间
else printf("%c %c %c\n",b,a,c); // c最大
}
getchar(); // 一次scanf后吸收掉换行符
}
return 0;
}

⑷ 杭电acm 2000题C语言解答答案

#include<stdio.h>
int main()
{
char a,b,c;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
if(a<=b)
{
if(b<=c) printf("%c %c %c\n",a,b,c);
else if(a<=c && c<=b) printf("%c %c %c\n",a,c,b);
else printf("%c %c %c\n",c,a,b);
}
else
{
if(b>=c) printf("%c %c %c\n",c,b,a);
else if(a>=c&&c>=b) printf("%c %c %c\n",b,c,a);
else printf("%c %c %c\n",b,a,c);
}
getchar();
}
return 0;
}

⑸ 杭电ACM第2000题出现Output Limit Exceeded怎么解决

存在的问题:
在C中EOF的值是-1(随便写个打印的语句测试一下就行了),
而gets函数在读到结束符时返回的值是NULL,
NULL的值为0.
在DOS下按ctrl+Z相当于模拟提交一个结束符,因此你的程序中while((gets(a))!=EOF)在测试运行时结束不了,每次
模拟输入
一次结束符,
你的程序会重新输出3个上次成功输入的字符,(自己测试一下就知道了).
因此会出现Output
Limit
Exceeded错误.
解决办法:
改为while(
(gets(a))
!=
NULL)
或者利用
while(
(scanf("%s",a))
!=
EOF)
scanf函数
在读取错误时会返回EOF.

⑹ 杭电第2000题c++

int main()
{
char a,b,c;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
if(a<=b)
{
if(b<=c) printf("%c %c %c\n",a,b,c); // c最大
else if(a<=c && c<=b) printf("%c %c %c\n",a,c,b); // c在a,b之间
else printf("%c %c %c\n",c,a,b); // c最小
}
else // a>b
{
if(b>=c) printf("%c %c %c\n",c,b,a); // c最小
else if(a>=c&&c>=b) printf("%c %c %c\n",b,c,a); // c在b,a之间
else printf("%c %c %c\n",b,a,c); // c最大
}
getchar(); // 吸收换行符
}
return 0;
}

⑺ 杭电acm第2000两千题

简单的要命的题,思路根本都不用想。不过还是暴露了自己很多问题。
最大的问题是字符串的输入输出,%d会吃回车,在这里纠结了很长时间,后来加上getchar就好了。

#include <stdio.h>
void swap(char *x,char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}
int main()
{
char a,b,c;
while( scanf("%c%c%c",&a,&b,&c)!=EOF )
{
if(a>b)
swap(&a,&b);
if(b>c)
swap(&b,&c);
if(a>b)
swap(&a,&b);
printf("%c %c %c/n",a,b,c);
getchar();
}
return 0;
}

⑻ 杭电2000题 我的代码如下

/*具体原因是楼上的楼上已经说明了,所以在你的基础上改动没有多大用处,最好就是先打表,当用到时直接读出就行了代码如下:*/
#include<iostream>
using namespace std;
int main()
{
int i,n;
__int64 a[51];
a[0]=0;
a[1]=1;
for(i=2;i<51;i++)a[i]=a[i-1]+a[i-2];
while(cin>>n,n!=-1)cout<<a[n]<<endl;
}

⑼ 杭电ACM2000

逻辑没有错误,只是scanf()函数使用时出了点小问题,scanf("%c%c%c",&a,&b,&c),这样你在输入的时候a b c,则变量a='a',b=' '(空格),c='b',scanf()函数返回值为3,这样该知道为什么输出结果不是你所想的了吧,其实你按下F10,就会很容易发现该问题的,建议修改为scanf("%c,%c,%c",&a,&b,&c),或者在三个%c中间显示加上空格,也可以。

⑽ 杭电acm2000题

楼上的和楼主您都忽略了一个地方。就是如果a,b一样并且都大于C的情况,那么最后的输出结果将是大小大。楼主只需要再考虑一下这种情况将a,c对换就好了。
另外就是这个EOF是文件输入结束语言,OJ是后台文件输入。我们提交后OJ在检查的时候是用文件检查的。