A,輸出一串數字序列
Description
輸入一行數字n
在下一行輸出 n 個數字,這 n 個數字為 n 到 1 的 n 個數字
Input
輸入一個整型n(1<=n<=100)
Output
輸出占一行
代碼:
#include <cstdio> int main() { int n; scanf("%d",&n); for(int i=n;i>=1;i--){ printf("%d ",i); } return 0; }
B,列序字數串一出輸
Description
多組輸入
“入輸組多”
Input
每組數據占兩行:
第一行為一個數字n(n ≤ 10000)
下一行為n個數字 (int)
Output
將這 n個數字“出輸”,如果數字不足五位就在前面補零
每組“出輸”占一行,行末沒有多余空格
代碼:
#include <stdio.h> int ans[10005]; int main() { int n; while(~scanf("%d",&n)){ for(int i=0;i<n;i++){ scanf("%d",&ans[i]); } for(int i=n-1;i>=0;i--){ if(i==n-1){ printf("%05d",ans[i]); } else{ printf(" %05d",ans[i]); } } printf("\n"); } return 0; }
C,轉簽義到題
按要求輸出樣例中的內容
代碼:
#include <stdio.h> int main() { printf("\"9900\\100=99,but 99!=100\"\n\"The operation symbol above is wrong\"\n\"Success requires %99 diligence and %1 talent\""); return 0; }
D,王木辛r發明時光機
Description
王木辛r在之前的比賽中發現了常潤茶發明了時光機。並且取得了非常好的成績。時光機是個什么好東西呢。他可以穿越時空。(穿越到之前或之后的時間並且可以抄到nsz的代碼)。
因為王木辛r對年齡問題很敏感。每當被問及年齡的時候,他總想要逃避。所以王木辛r連夜苦思冥想夜夜通宵廢寢忘食學習跟常潤茶加班,也發明了時光機。於是當他18歲以下的時候,別人問他多少歲,他會如實回答,當他年齡大於18時候,他會回答:18。
他坐着時光機穿越到不同的年份,他知道自己穿越后的年齡。那么當他穿越后別人問他年齡的時候他應該怎么回答呢?
Input
第一行一個整數n,(1<=n<=1000),表示穿越時光機的次數;
接下來n行每行一個整數x,(1<=x<=10000),表示穿越后的年齡。
Output
共n行,每行一個整數表示一次穿越后回答的年齡。
解析:
根據題意,此題只需要判斷給你的數是否大於18,如果大於18,輸出18,如果小於等於18,則原樣輸出。
代碼:
#include <stdio.h> int main() { int n; scanf("%d",&n); while(n--){ int q; scanf("%d",&q); if(q<18){ printf("%d\n",q); } else{ printf("18\n"); } } return 0; }
E,自動WA掘機
Description
小A的家門口有一條很長的路,這條路的一側長滿了參天大樹,但就在不久前,小A的城市經歷了一場台風,這場台風把位置不是素數的樹都吹斷了,現在要重新種樹來把吹斷的樹替換掉,但是所有斷了的樹的樹根都留在了地下,想要種樹的話就必須把樹根先挖出來,小A現在要請挖掘機師傅把l到r之間的樹根都挖出來,每挖一個樹根要給挖掘機師傅w元,請問小A一共需要支付多少錢?
Input
輸入三個數:l,r,w(1<= l <=5000,1<= r <=5000),(1<=w<=998244353)
Output
輸出小A一共支付的錢
注意:
注意數據范圍,需要開long long或long long int
代碼:
#include <stdio.h> #include <stdlib.h> #include <math.h> #define ll long long//宏定義 int main() { ll l,r,w;//注意題目的數據范圍,再去確定是用int還是long long scanf("%lld%lld%lld",&l,&r,&w); if(l>r)//題目沒明確說明l,r的大小,並且在提示中也提示了l,r大小不明確 { int t=l; l=r; r=t; } ll num=0; if(l==1)//注意這個1,如果去找合數的話一定要特判這個1 num++; for(int i=l;i<=r;i++) { for(int j=2;j<=sqrt(i);j++) { if(i%j==0) { num++; break; } } } ll ans=num*w; printf("%lld\n",ans); return 0; }
F,AC自動機
Description
小C同學剛剛接觸到了ACM,在一次偶然的機會下,小C得到了一個密碼箱(里面有自動AC題目的終極代碼)和一篇文檔,密碼箱上有一個五位的密碼,通過神秘人得知密碼就是文檔里面元音字母的個數,現在小C向你發出了求助,請求你來幫助他得到終極代碼。
Input
第一行輸入一個t(1<= t <=100);
接下來有t組數據,每組數據占兩行:
第一行輸入文檔(字符串)的長度n(1<=n<=500)
第二行輸入小C的文檔(字符串)
Output
每次輸出五個數據:每個元音字母的數量
每組輸出占一行
題解:
用C語言處理字符串相關題目的時候,有的時候需要用getchar()吸收換行,否則會影響下一次字符的讀取。
代碼:
#include <stdio.h> int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); getchar(); char s[1005]; scanf("%s", s); int a = 0, b = 0, c = 0, d = 0, e = 0; for (int i = 0; i < n; i++) { if (s[i] == 'a') a++; if (s[i] == 'e') b++; if (s[i] == 'i') c++; if (s[i] == 'o') d++; if (s[i] == 'u') e++; } printf("%d %d %d %d %d\n", a, b, c, d, e); } return 0; }
G,我是簽到題
Description
混一天和努力一天,一天看不出任何差別,
三天看不到任何變化,七天也看不到任何距離……
但是一個月后會看到話題不同,三個月后會看到氣場不同,
半年后會看到距離不同,一年后會看到人生道路截然不同……
Input
無輸入
Output
請按照格式輸出下面這段話:
混一天和努力一天,一天看不出任何差別,
三天看不到任何變化,七天也看不到任何距離……
但是一個月后會看到話題不同,三個月后會看到氣場不同,
半年后會看到距離不同,一年后會看到人生道路截然不同……
代碼:
- int main()
- {
- printf("混一天和努力一天,一天看不出任何差別,\n三天看不到任何變化,七天也看不到任何距離……\n但是一個月后會看到話題不同,三個月后會看到氣場不同,\n半年后會看到距離不同,一年后會看到人生道路截然不同……\n");
- return 0;
- }
Description
Caps lock是一種計算機鍵盤鍵。按此鍵可設置輸入模式,默認情況下,鍵入的字母為大寫。如果它是偶然按下的,它就會產生一些事故。
讓我們考慮鍵入一個字符時Caps lock鍵意外打開的情況,如果:
1、它只包含大寫字母;
2、除第一個字母外,所有字母都是大寫的。
在這兩種情況下,我們應該更改所有字母的大小寫。例如,單詞“hELLO”、“HTTP”、“z”的單詞大小寫應該改變。
編寫一個應用上述規則的程序。如果無法應用規則,程序應保持單詞不變。
Input
第一行包含一個由大寫和小寫字母組成的單詞。單詞的長度小於等於100。
Output
打印單詞的處理結果。
題解:簡單改變大小寫的題,只需要考慮到何時改變;
在兩種情況下需要改變小寫:1,所有字母都是大寫。2,第一個字母是小寫,其余都是大寫。3,只有一個小寫字母(此種情況只需要在寫完代碼過后,驗證自己寫的代碼符不符合,如果不符合,就在自己的代碼中多加一個判斷就行)。
c代碼:
#include <stdio.h> #include <string.h> char s[111]; int main() { scanf("%s",s); int len=strlen(s); int sum=0;//統計大寫字母的個數 for(int i=0;i<len;i++){ if(s[i]>='A'&&s[i]<='Z'){ sum++;//如果是大寫就加一 } } if(sum==len){//如果全是大寫字母 for(int i=0;i<len;i++){ s[i]+=32;//把所有的大寫字母變成小寫字母 } } else if(sum==len-1){//如果有len-1個大寫字母,即只有一個小寫字母 if(s[0]>='a'&&s[0]<='z'){ for(int i=0;i<len;i++){ if(i==0){ s[i]-=32; } else{ s[i]+=32; } } } } printf("%s",s); return 0; }
cpp代碼:
#include <iostream> #include <cstdio> #include <string> using namespace std; int main() { string s; cin>>s; int sum=0; int len=s.length(); for(int i=0;i<len;i++){ if(s[i]>='A'&&s[i]<='Z'){ sum++; } } if(sum==len||((s[0]>='a'&&s[0]<='z')&&sum==len-1)){ for(int i=0;i<len;i++){ if(s[i]>='A'&&s[i]<='Z'){ s[i]+=32; } else{ s[i]-=32; } } cout<<s<<endl; } else{ cout<<s<<endl; } return 0; }