當前位置:首頁 » 編程語言 » 杭電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在檢查的時候是用文件檢查的。