c语言之字符个数统计、 统计成绩、打印沙漏 、整数的分类处理 、不变初心数
字符個數統計
從鍵盤輸入一串字符,統計出其中的英文字母個數、數字字符個數以及其他字符個數并輸出。
輸入格式:
輸入一行字符,以回車結束。
輸出格式:
輸出英文字母個數、數字字符個數以及其他字符個數,中間用逗號進行分隔。
輸入樣例:
abzxAXZ0123456789&&&&%%%@@@輸出樣例:
7,10,10 #include<stdio.h> int main() {int a, b, c;char k;a = 0;b = 0;c = 0; while ((k = getchar()) != '\n') {if (('A' <= k && k <= 'Z') || ('a' <= k && k <= 'z')) a++; else if ('0' <= k && k <= '9')b++;elsec++;}printf("%d,%d,%d", a, b, c); return 0; }?統計成績
輸入一個班的成績,輸出最高分、最低分和平均分。
輸入格式
班級人數n?(n>0)
n?名學生的成績?s1?,s2?,?,sn??(0≤si?≤100,1≤i≤n)
輸出格式
最高分、最低分、平均分
要求:所有分數只輸出1位小數。
輸入樣例
15 98.5 67.3 45.5 90 75.2 65 77 99.5 20 100 80.5 69.5 88.5 66.5 87.5輸出樣例
100.0 20.0 75.4 #include<stdio.h> int main() {int number = 0;scanf("%d", &number);double grade = 0;double max = 0;double min = 100;double sum = 0;for (int i = 0; i < number; i++){scanf("%lf", &grade);sum += grade;if (grade > max) max = grade;if (grade < min) min = grade;}printf("%.1lf %.1lf %.1lf", max, min, sum / number);return 0; }打印沙漏?
本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”,要求按下列格式打印
************ *****所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。
給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉盡可能多的符號。
輸入格式:
輸入在一行給出1個正整數N(≤1000)和一個符號,中間以空格分隔。
輸出格式:
首先打印出由給定符號組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號數。
輸入樣例:
19 *輸出樣例:
************ ***** 2 #include<stdio.h> int main() {int hang, sum = -1, n, i, yu, b, k; char a;scanf("%d %c", &n, &a);for (i = 1;; i++){sum = sum + 2 * (2 * i - 1);if (n - sum < 0) break;b = sum;}yu = n - b;hang = i - 1;for (i = hang; i > 0; i--){for (k = hang - i; k > 0; k--)printf(" ");for (k = 1; k <= 2 * i - 1; k++)printf("%c", a);printf("\n");}for (i = 2; i <= hang; i++){for (k = hang - i; k > 0; k--)printf(" ");for (k = 1; k <= 2 * i - 1; k++)printf("%c", a);printf("\n");}printf("%d", yu);return 0; }整數的分類處理?
給定 N 個正整數,要求你從中得到下列三種計算結果:
- A1 = 能被 3 整除的最大整數
- A2 = 存在整數 K 使之可以表示為 3K+1 的整數的個數
- A3 = 存在整數 K 使之可以表示為 3K+2 的所有整數的平均值(精確到小數點后 1 位)
輸入格式:
輸入首先在第一行給出一個正整數 N,隨后一行給出 N 個正整數。所有數字都不超過 100,同行數字以空格分隔。
輸出格式:
在一行中順序輸出 A1、A2、A3的值,其間以 1 個空格分隔。如果某個數字不存在,則對應輸出NONE。
輸入樣例 1:
8 5 8 7 6 9 1 3 10輸出樣例 1:
9 3 6.5輸入樣例 2:
8 15 18 7 6 9 1 3 10輸出樣例 2:
18 3 NONE #include <stdio.h>int main() {int N,n,i,t,k,o,b;float j=0;scanf("%d",&N);int a[N];for (n=0;n<N;n++)scanf("%d",&a[n]); for(n=0;n<N-1;n++)for(i=0;i<N-n-1;i++){if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t; }}k=0; for (n=0;n<N;n++){if(a[n]%3==0){printf("%d",a[n]);k=1; break;}}if (k==0){ printf("NONE");}o=0;j=0;b=0;for (n=0;n<N;n++){if (a[n]%3==1){o++; }if (a[n]%3==2){j+=a[n]; b++;}}if(o==0)printf(" NONE");elseprintf(" %d",o);if(b==0)printf(" NONE");elseprintf(" %.1f",j/b);return 0; }不變初心數
不變初心數是指這樣一種特別的數,它分別乘 2、3、4、5、6、7、8、9 時,所得乘積各位數之和卻不變。例如 18 就是這樣的數:18 的 2 倍是 36,3+6=9;18 的 3 倍是 54,5+4=9;…… 18 的 9 倍是 162,1+6+2=9。對于 18 而言,9 就是它的初心。本題要求你判斷任一個給定的數是否有不變的初心。
輸入格式:
輸入在第一行中給出一個正整數 N(≤?100)。隨后 N 行,每行給出一個不超過?105?的正整數。
輸出格式:
對每個給定的數字,如果它有不變的初心,就在一行中輸出它的初心;否則輸出?NO。
輸入樣例:
4 18 256 99792 88672輸出樣例:
9 NO 36 NO #include<stdio.h>int main() {int t, c, f, a, n;scanf("%d", &n);while (n--){scanf("%d", &a);for (int i = 1; i <= 9; i++){t = a * i;f = 0;if (i == 1){c = 0;while (t){c += t % 10;t /= 10;}}else//與2~9相乘時{int b = 0;while (t){b += t % 10;t /= 10;}if (b == c){f = 1;}else break;}}if (f == 0)printf("NO\n");else printf("%d\n", c);}return 0; }總結
以上是生活随笔為你收集整理的c语言之字符个数统计、 统计成绩、打印沙漏 、整数的分类处理 、不变初心数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqllite查询数据量_Sqlite3
- 下一篇: java基础-语句-已阅