山东理工大学-2022级-程序设计基础I-顺序结构
A - C語言實驗—— Hello World! (printf練習)
語法點: c語言的程序的基本框架:
#include <stdio.h> //包含頭文件<stdio.h>
int main() //主函數
{
return 0; //向操作系統返回0表示程序正常結束
}
<stdio.h> 全稱為 standard input output(標準輸入輸出頭文件), 里面有printf、scanf等與輸入輸出有
關的庫函數
程序從主函數(main()函數)開始執行
return 0與main前面的int對應, 表示函數的返回值與其類型
語法點: printf()輸出函數
printf()為格式化輸出函數, 使用 printf(“”) , " “里面為要打印的內容, printf會把” "里面的內容原封不動 輸出
輸出的內容應與output內的東西完全一致,不應該輸出其他的額外信息, 否則會wa printf(“”)輸出的內容要用雙引號圍起來,最后的;不要忘記,表示的是一條語句
一般oj(除pta)會自動忽略最后的空格與換行(\n), 所以輸出 printf(“Hello World!\n”); 也是對的, 但不要在前面或者中間輸出任何無關的信息
B - C語言實驗——輸出字符串
與第一題相同,直接復制輸出框的內容即可,不要添加任何的無關信息(除了末尾的\n(換行符, 類似QQ聊天 按enter)可以選擇是否添加)
code B
C - C語言實驗——圖形輸出(字符常量練習)
打印一個由 ‘#’ 圍成的圖形, 只需要用 \n 控制好換行就可以,可以寫在一個printf語句里, 也可以分開成多 個printf語句
code C
7-4 輸出倒三角圖案
本題要求編寫程序,輸出指定的由“”組成的倒三角圖案。
輸入格式:
本題目沒有輸入。
輸出格式:
按照下列格式輸出由“”組成的倒三角圖案。
D - C語言實驗——求兩個整數之和
語法點: 數據類型, 賦值語句, 常用占位符
c語言基本數據類型包括整數類型和浮點類型。整數類型又包含char(字符型), int(整型), short int(短 整型), long int(長整型), long long int(更長的整型); 浮點類型(也叫實型)包括float(單精度浮點型)、 double(雙精度浮點型)、long double(更高精度的浮點型)。 在32位以上系統上, int范圍與long int范
圍相同, 而float精度較低一般不使用, 在實際做題的過程中, 需要整型我們一般直接定義int, 而需要 浮點型我們也一般直接使用double, 當題目數據較大時(大于10的9次方或2的32次方) 考慮使用long long
聲明一個變量的語法格式為: 數據類型 變量名; 如 int a; 表示聲明了一個整型變量, 變量名為a, 系 統會在內存中開辟一塊大小為4字節的空間(詳細了解請去看數據類型相關參考資料). 可以使用賦值 號 = 為變量賦值, 如 a = 4; 在變量聲明的時候為其賦初值叫做變量的初始化, 如 int a = 123;
占位符用于scanf和printf函數控制格式化輸入輸出. 如 printf(“sum = %d”, a); 這里的 %d 就是一
個占位符, 表示會把 , 后面的int整型變量a的值放到這個地方輸出, 如a的值為123,輸出的結果就是 sum = 123 .
每一種數據類型都對應一種占位符, 常見的占位符有:
%d int 類型占位符
%c char 類型占位符(單獨的一個字符變量)
%lld long long 類型占位符
%s char數組類型占位符 (用于讀取和輸出不含空格的字符串)
%f float 類型占位符(單精度浮點型)
%lf double 類型占位符(雙精度浮點型)
%o 八進制占位符
%x 十六進制占位符(其中字母部分輸出時為小寫字母)
%X 十六進制占位符(其中字母部分輸出時為大寫字母)
%p 指針變量類型占位符
一般來說printf與scanf的占位符是相同的, 最新的c標準double類型變量scanf的占位符為 %lf 而 printf的占位符為 %f , 當然使用 %lf 也不會錯
code D
E - A+B Problem
這個題數據規模比較小, 直接開int即可, 如果a和b范圍較大, 可能需要開long long
語法點: scanf輸入函數
scanf函數用于從標準輸入(鍵盤輸入)讀取數據, 并按照格式化賦值給對應的變量, 如
scanf(“%d %d”, &a, &b); 表示從鍵盤中讀取兩個整數并將其依次賦值給變量a和b, 如在鍵盤輸 入 123 456 a的值會變成123, b的值會變成456。 注意scanf函數與printf函數相同, 有幾個占位符后 面就要有幾個變量參數, 不然會發生錯誤; scanf函數后面賦值的變量前面必須有&符號, &為取地址 符號, 可以理解為需要找到這個變量的地址才能給它賦值,而printf打印則不需要地址. 有個特例為 char字符數組(字符串)使用%s賦值的時候不需要使用取地址符號, 因為數組名本身就是一個地址
code E
F - C語言實驗——交換兩個整數的值(順序結構)
語法點: 評測機制
評測程序像黑匣子, 從標準輸入流(stdin)或文件中讀取的輸入數據經過提交的程序, 得到輸出的結果 (存到文件或者標準輸出流stdout)并與事先的正確數據進行比對, 進而得到AC或WA(在運行代碼時可 能會出現CE/TLE/RTE等錯誤)
因此我們在考試or比賽中只需要保證程序得到正確的結果即可, 中間的過程不重要(平時練習還是要
code F
G - C語言實驗——逆置正整數(eg123變成321)
語法點: % 與 / 運算符
/ 為整除符號, / 符號運算的結果取決于左右值的精度大小, 如果 / 左右都是整數, 最后運算的結 果也是整數, 會忽略余數, 如3/ 2的結果是1, 而非1.5。
想算出來1.5可以將左右兩邊其中一邊改成小數, 如 3.0/ 2, 這樣運算的結果也是一個浮點數(1.5) 也可以乘以一個1.0, 如3 * 1.0 / 2, 這樣也相當于讓除號一邊變成浮點型 ;
% 運算則是求除法運算后的余數, 如3 % 2 的結果為 1
語法點: != 0 和 == 0 的簡寫
(非零) 表示真, (0)表示假
if(A != 0) 可以簡寫為 if(A)
if(A == 0) 可以簡寫為 if(!A)
拓展知識: C語言運算符
code G
H - C語言實驗——買糖果
Input
輸入爸爸給小瑜的錢n元,n為整數。
Output
小瑜最多能買回的糖塊數以及剩下的錢(單位為:角),用空格分隔。
Sample
Input
2
Output
6 2
注意換算一下單位, 還是 % 的簡單應用
code H
I - C語言實驗——三個整數和、積與平均值
Description
給出三個整數,請你設計一個程序,求出這三個數的和、乘積和平均數。
Input
輸入只有三個正整數a、b、c。
Output
輸出一行,包括三個的和、乘積、平均數。 數據之間用一個空格隔開,其中平均數保留小數后面兩位。
Sample
Input
2 3 3
Output
8 18 2.67
語法點: 整數 / 整數 與 整數 / 浮點數
計算 整數 / 整數 默認作為整除運算, 即只會獲得商的結果, 余數會自動舍棄; 而當 整數 / 浮點數 的 時候 (或者整數 * 浮點數), 在運算的時候會將兩個數都轉為精度更高的浮點數, 這樣才能得到小數結 果。 另一種轉為浮點型運算的方式是在式子后面 * 1.0, 如 a * 1.0 / b
語法點: 實型(浮點型) 保留精度(小數點后幾位)
%.mf表示保留小數點后幾位小數, 如 printf(“%.5f”, x) 表示輸出x并保留小數點后五位小數, %.0f 表示保留整數部分
保留精度的原則是"四舍六入五成雙", 可以不必深究, 大部分情況下均滿足"四舍五入"
(int)(x + 0.5) 與 round()函數可以實現較為嚴格的四舍五入
code I
#include <stdio.h>
int main()
{
int a, b, c;
scanf(“%d %d %d”, &a, &b, &c);
int sum, mul;
double ave; //平均數是小數 , 要定義成double
sum = a + b + c;
mul = a * b * c;
ave = sum / 3.0; //注意這里是3.0, 不然會進行整除運算
//這里也可以寫稱 ave = sum * 1.0 / 3;
printf(“%d %d %.2f”, sum, mul, ave); //%.2f控制精度為保留小數點后兩位小數 return 0;
}
J - C語言實驗——格式化輸出(常量練習)
只需要了解printf和scanf的常見占位符及其用法即可(當然也可以全當字符串輸出)
code J
K - C語言實驗——圓柱體計算
已知圓柱體的底面半徑r和高h,計算圓柱體底面周長和面積、圓柱體側面積以及圓柱體體積。其中圓周率定義為3.1415926。
輸入格式:
輸入數據有一行,包括2個正實數r和h,以空格分隔。
輸出格式:
輸出數據一行,包括圓柱體底面周長和面積、圓柱體側面積以及圓柱體體積,以空格分開,所有數據均保留2位小數。
這里的圓周率可以定義為常量
語法點: 常量的定義
常量一般有兩種定義的方式
第一種是用#define 宏定義
如 #define pi 3.14159
第二種是const 賦予變量只讀的屬性
如 const double pi = 3.14159;
注意第一種不需要寫數據類型也不需要寫分號, 而第二種需要寫
語法點: pi的表示方式
使用const修飾的變量或者#define宏定義都可以定義常量pi, 如果想使用更加精確的pi, 可以使用
L - C語言實驗——溫度轉換
按公式計算即可 ----輸入一個華氏溫度,輸出攝氏溫度,其轉換公式為:C=5(F-32)/9
#include <stdio.h>int main() { double f, c; scanf("%lf", &f); c = 5 * (f - 32) / 9; //除號前面為double類型 , 這里的9可以不寫成9.0 printf("%.2f", c); return 0; }M - C語言實驗——單個字符輸入和輸出(順序結構)
可以選擇getchar() 與 putchar() 函數, 也可以直接用scanf() 和 printf()的 %c 或 %s輸入輸出
code M
N - C語言實驗——轉換字母(順序結構)
Input
a
Output
A
轉換字母的大小寫一般有兩種方式, 即通過ASCII碼小寫字母比大寫字母大32或者計算偏移量來實現 (當 然也可以使用ctype.h頭文件下的tolower和toupper函數)
語法點: ASCII碼 && 常用ASCII碼
char類型字符變量在計算機中存儲的實際上是一個數(即ASCII碼值, 范圍為0 ~ 127, 因為char類型
常用的ASCII碼值:
‘0’: 48
‘a’: 97
‘A’: 65
其他的’1’ ~ ‘9’、‘b’ ~ ‘z’、 ‘B’ ~ ‘Z’的編碼值可以由’0’、‘a’、'A’推出
如果不知道字符的ASCII值, 可以用 %d 格式打印char類型變量, 打印出來的即為對應的ASCII碼值 如 char c = 'a '; printf(“%d”, c); 的值為97
code N
//小寫字母ASCII碼值 -32 = 對應大寫字母ASCII碼值
#include <stdio.h>int main() { char a; scanf("%c", &a);printf("%c", a - 32); return 0; } //小寫字母到'a '的距離與其對應的大寫字母到'A'的偏移量(距離)相同 , 這個技巧以后會經常用到 #include <stdio.h>int main() { char a; scanf("%c", &a);printf("%c", a - 'a ' + 'A'); return 0; } //使用<ctype.h>頭文件下的toupper函數轉換為大寫字母 #include <stdio.h> #include <ctype.h> int main() { char a; scanf("%c", &a);printf("%c", toupper(a)); return 0; }O - 實數的輸出和占位
可以仔細比對自己的輸出結果與output的結果
語法點: 控制輸出的寬度及左右對齊
寬度:
%md 為控制輸出寬度為m, 如果輸出的內容的長度小于m, 不足的位置會用空格填充, 比如 %8d 輸
出 123 時,結果為 (前面五個空格)123 ; 如果輸出內容長度>=m,則不影響輸出結果
%0md 也是控制輸出寬度為m, 只是不足m的部分會用 0 填充, 如 %08d 輸出 123 時, 結果 為 00000123
對齊:
C語言默認輸出為左對齊
當使用 %md 或 %0md 這種控制寬度的語句時會改變為右對齊 如 000123
在控制寬度語句的基礎上添加負號 - , 會重新變成左對齊
Description
輸入一個實數,請你按如下要求輸出:
第一行按雙精度默認輸出,
第二行雙精度數輸出共占 10 位,其中 3 位小數,右對齊,左補空格并在兩端添加星號包裹,
第三行雙精度數輸出共占 10 位,其中 3 位小數,左對齊,右補空格并在兩端添加星號包裹。
Input
一個double范圍內的正實數 a 。
Output
共三行,按題目描述輸出。
Sample
Input
123.56789
Output
123.567890
- 123.568*
*123.568 *
code O
#include <stdio.h>int main() { double a; scanf("%lf", &a); printf("%f\n", a); //雙精度默認輸出 , 注意最新的c標準double類型輸出用f而不是lf, 當然用lf也不會錯 printf("*%10.3f*\n", a);//設置寬度后會變成右對齊 printf("*%-10.3f*\n", a); //使用負號并且設置寬度會恢復左對齊 return 0; }P - 大整數的輸入輸出
注意long long類型占位符是%lld
Description
輸入兩個 long long 范圍內的整數,輸出他們的和。
Input
兩個 long long 范圍內的整數。
Output
輸出的兩個大整數的和,保證結果在 long long 范圍內。
Sample
Input
2222222222
3333333333
Output
5555555555
code P
#include <stdio.h>int main() { long long a, b; scanf("%lld %lld", &a, &b);printf("%lld", a + b); return 0; }Q - --帶’ 和 ”字符的輸出
Description
輸入一個字符,輸出兩行。
第一行將字符用 ’ 包裹。
第二行將字符用 " 包裹。
Input
輸入一個字符。
Output
按題目描述輸出。
Sample
Input
A
Output
‘A’
“A”
語法點: 轉義字符
在某些字母前面加上轉義符號 \ 會讓其有特殊的含義, 如 \n 表示換行, \t 表示tab(制表符), \0 表 示空字符NULL,常用作字符串結束標志, 如果想打印出來 \ " ’ % 等特殊字符, 也需要用轉義字符轉 義一下, 如 \ , \ ’ , " , %% 等, 注意只有 % 符號的轉義符號為 % , 其他均為
code Q
R - --'%'字符的輸入輸出
語法點同上一題, 注意的是 % 的轉義字符是 % , 其他的都是 \ ; 也可以當字符串直接輸出
Description
輸入三個用 % 分割的正整數 a b c 代表月,日,年,
要求按照輸入樣式原樣輸出。
Input
三個int范圍內的正整數,中間用 % 分割。
Output
按題目描述原樣輸出。
Sample
Input
9%17%2018
Output
9%17%2018
code R
//注意scanf輸入和printf輸出都需要把%轉義 #include <stdio.h>int main() { int a, b, c; scanf("%d%%%d%%%d", &a, &b, &c); printf("%d%%%d%%%d", a, b, c); return 0; } //直接當字符串輸出(如果使用gets需要用c提交) #include <stdio.h>int main() { char s[100]; gets(s); //gets用于讀取一行字符串(無視中間的空格), 但在cpp里已經棄用 , 需要用c提交 puts(s); //puts用于輸出字符串 ,并且會自動輸出換行符 return 0; }S - ‘\’字符的輸入輸出
*語法點同上一題, \ 的轉義字符為 *
Input
9\17\2018
Output
9\17\2018
code S
#include <stdio.h>int main() { int a, b, c; scanf("%d\\%d\\%d", &a, &b, &c); printf("%d\\%d\\%d", a, b, c); return 0; }T - 十六進制數輸出和占位
語法點: 十六進制數輸出
十六進制的每一位由 0 1 2 3 4 5 6 7 8 9 a(A) b(B) c? d(D) e(E) f(F) 組成, 其中字母為小寫時輸出
code T
題目:
輸入一個整數,請你按如下要求輸出:
第一行按原樣輸出,
第二行以十六進制輸出(字母小寫),
第三行以十六進制輸出(字母大寫)。
Input
一個int范圍內的正整數 a 。
Output
共三行,按題目描述輸出。
Sample
Input
456
Output
456
1c8
1C8
U - 八進制數輸出和占位
Description
輸入一個整數,請你按如下要求輸出:
第一行按原樣輸出,
第二行以八進制靠右輸出,不足 8 位左補 0 并在兩端添加星號包裹,
第三行以八進制靠左輸出,不足 8 位右補空格并在兩端添加星號包裹。
Input
一個int范圍內的正整數 a 。
Output
共三行,按題目描述輸出。
Sample
Input
123
Output
123
00000173
*173 *
語法點同O題 “控制輸出的寬度及左右對齊”
在控制寬度的%md前面加一個0, 也就是%0md,可以把寬度不足的位用0填充
語法點: 八進制數的輸出
%o 為八進制整數的占位符
code U
V - 十進制輸入輸出和其它非空格占位
語法點同O題 “控制輸出的寬度及左右對齊”
Description
輸入一個整數,請你按如下要求輸出:
第一行按原樣輸出,
第二行整數靠右原樣輸出,不足 8 位左補 0 并在兩端添加星號包裹,
第三行整數靠左原樣輸出,不足 8 位右補空格并在兩端添加星號包裹。
Input
一個int范圍內的正整數 a 。
Output
共三行,按題目描述輸出。
Sample
Input
123456
Output
123456
00123456
*123456 *
W - 十進制輸入輸出和空格占位
語法點同O題 “控制輸出的寬度及左右對齊”
Description
輸入一個整數,請你按如下要求輸出:
第一行按原樣輸出,
第二行按原樣靠右輸出,不足 8 位左補空格并在兩端添加星號包裹,
第三行按原樣靠左輸出,不足 8 位右補空格并在兩端添加星號包裹。
Input
一個int范圍內的正整數 a 。
Output
共三行,按題目描述輸出。
Sample
Input
123456
Output
123456
- 123456*
*123456 *
code W
#include <stdio.h>int main() { int a; scanf("%d", &a); printf("%d\n", a); printf("*%8d*\n", a); printf("*%-8d*\n", a); return 0; }X - 字符型數據輸出和占位
語法點同O題 “控制輸出的寬度及左右對齊”
Description
輸入一個字符,請你按如下要求輸出:
第一行字符數據默認輸出,
第二行字符型數據輸出共占 4 位,右對齊,左補 3 個空格并在兩端添加星號包裹,
第三行字符型數據輸出共占 4 位,左對齊,右補 3 個空格并在兩端添加星號包裹。
Input
輸入一個字符 。
Output
共三行,按題目描述輸出。
Sample
Input
c
Output
c
- c*
*c *
7-3 sdut-C語言實驗-虎子分糖果
我們中國各個地區都有拜年的美好習俗,小朋友最喜歡走親訪友了,因為親戚們會給準備很多糖果吃。虎子家也不例外,媽媽買了很多俄羅斯糖果準備給前來拜年的小朋友分。為了公平,給每個小朋友的糖果數一定得是一樣的。
假設虎子媽媽準備了m塊俄羅斯糖果,來了n位小朋友,請問每個小朋友可以分到多少塊糖?還剩多少塊?
輸入格式:
輸入n和m,其中n>0,m>0。
輸出格式:
輸出每個小朋友分到的糖果數和剩余的糖果數。
輸入樣例:
3 31
輸出樣例:
在這里給出相應的輸出。例如:
10 1
法一
#include <stdio.h> int main() {int a,b,c,d;scanf("%d %d",&a,&b);c=b/a;d=b-a*c;printf("%d %d",c,d);return 0; }法二
#include <stdio.h> int main() {int n,m,c,d;scanf("%d %d",&n,&m);c=m/n;d=m%n;printf("%d %d\n",c,d);return 0; }7-12 計算攝氏溫度
給定一個華氏溫度F,本題要求編寫程序,計算對應的攝氏溫度C。計算公式:C=5×(F?32)/9。題目保證輸入與輸出均在整型范圍內。
輸入格式:
輸入在一行中給出一個華氏溫度。
輸出格式:
在一行中按照格式“Celsius = C”輸出對應的攝氏溫度C的整數值。
輸入樣例:
150
輸出樣例:
Celsius = 65
7-13 整數四則運算
本題要求編寫程序,計算2個正整數的和、差、積、商并輸出。題目保證輸入和輸出全部在整型范圍內。
輸入格式:
輸入在一行中給出2個正整數A和B。
輸出格式:
在4行中按照格式“A 運算符 B = 結果”順序輸出和、差、積、商。
輸入樣例:
3 2
輸出樣例:
3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1
7-14 計算物體自由下落的距離
一個物體從100米的高空自由落下。編寫程序,求它在前3秒內下落的垂直距離。設重力加速度為10米/秒2。
輸入格式:
本題目沒有輸入。
輸出格式:
按照下列格式輸出
height = 垂直距離值
7-1 sdut-C語言實驗-求一個3*3矩陣對角線元素之和
分數 300
作者 馬新娟
單位 山東理工大學
給定一個3*3的矩陣,請你求出對角線元素之和。
輸入格式:
按照行優先順序輸入一個3*3矩陣,每個矩陣元素均為整數。
輸出格式:
從左下角到右上角這條對角線上的元素之和。
輸入樣例:
1 2 3
3 4 5
6 0 1
輸出樣例:
在這里給出相應的輸出。例如:
13
#include <stdio.h> int main() {int a[3][3];int i,j;for(i=0;i<=2;i++){for(j=0;j<=2;j++){scanf("%d",&a[i][j]);}}int sum=0;for(i=0;i<=2;i++){sum+=a[i][2-i];}printf("%d\n",sum); }7-2 sdut- C語言實驗-矩陣轉置
分數 300
作者 馬新娟
單位 山東理工大學
輸入N*N的矩陣,輸出它的轉置矩陣。
輸入格式:
第一行為整數N(1≤N≤100)。
接著是一個N*N的矩陣。
輸出格式:
轉置矩陣。
輸入樣例:
2
1 2
1 2
輸出樣例:
1 1
2 2
7-3 sdut-C語言實驗- 楊輝三角
分數 300
作者 馬新娟
單位 山東理工大學
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
上面的圖形熟悉嗎?它就是我們中學時候學過的楊輝三角。
楊輝三角,是二項式系數在三角形中的一種幾何排列,中國南宋數學家楊輝1261年所著的《詳解九章算法》一書中出現。在歐洲,帕斯卡(1623----1662)在1654年發現這一規律,所以這個表又叫做帕斯卡三角形。帕斯卡的發現比楊輝要遲393年,比賈憲遲600年。
21世紀以來國外也逐漸承認這項成果屬于中國,所以有些書上稱這是“中國三角形”(Chinese triangle)。
其實,中國古代數學家在數學的許多重要領域中處于遙遙領先的地位。中國古代數學史曾經有自己光輝燦爛的篇章,而楊輝三角的發現就是十分精彩的一頁。
讓我們開始做題吧!
輸入格式:
輸入數據包含多組測試數據。
每組測試數據的輸入只有一個正整數n(1≤n≤30),表示將要輸出的楊輝三角的層數。
輸入以0結束。
輸出格式:
對應于每一個輸入,請輸出相應層數的楊輝三角,每一層的整數之間用一個空格隔開,每一個楊輝三角后面加一個空行。
輸入樣例:
2
3
0
輸出樣例:
1
1 1
1
1 1
1 2 1
7-4 sdut-C語言實驗- 排序
分數 300
作者 馬新娟
單位 山東理工大學
給你N(N<=100)個數,請你按照從小到大的順序輸出。
輸入格式:
輸入數據第一行是一個正整數N,第二行有N個整數。
輸出格式:
輸出一行,從小到大輸出這N個數,中間用空格隔開。
輸入樣例:
5
1 4 3 2 5
輸出樣例:
1 2 3 4 5
7-5 冒泡法排序之過程
分數 300
作者 顏暉
單位 浙大城市學院
本題要求使用冒泡法排序,將給定的n個整數從小到大排序后輸出,并輸出排序過程中每一步的中間結果。
冒泡排序的算法步驟描述如下:
第1步:在未排序的n個數(a[0]? a[n?1])中,從a[0]起,依次比較相鄰的兩個數,若鄰接元素不符合次序要求,則對它們進行交換。本次操作后,數組中的最大元素“冒泡”到a[n?1];
第2步:在剩下未排序的n?1個數(a[0] ? a[n?2])中,從a[0]起,依次比較相鄰的兩個數,若鄰接元素不符合次序要求,則對它們進行交換。本次操作后,a[0] ? a[n?2]中的最大元素“冒泡”到a[n?2];
……
第i步:在剩下未排序的n?k個數(a[0]?a[n?i])中,從a[0]起,依次比較相鄰的兩個數,若鄰接元素不符合次序要求,則對它們進行交換。本次操作后,a[0] ? a[n?i]中的最大元素“冒泡”到a[n?i];
……
第n?1步:在剩下未排序的2個數(a[0] ?a[1])中,比較這兩個數,若不符合次序要求,則對它們進行交換。本次操作后,a[0] ? a[1]中的最大元素“冒泡”到a[1]。
輸入格式:
輸入第一行給出一個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。
輸出格式:
在每一行中輸出排序過程中對應步驟的中間結果,即每一步后a[0]? a[n?1]的值,相鄰數字間有一個空格,行末不得有多余空格。
輸入樣例:
5
8 7 6 0 1
輸出樣例:
7 6 0 1 8
6 0 1 7 8
0 1 6 7 8
0 1 6 7 8
7-6 求一批整數中出現最多的個位數字
分數 300
作者 徐鏡春
單位 浙江大學
給定一批整數,分析每個整數的每一位數字,求出現次數最多的個位數字。例如給定3個整數1234、2345、3456,其中出現最多次數的數字是3和4,均出現了3次。
輸入格式:
輸入在第1行中給出正整數N(≤1000),在第二行中給出N個不超過整型范圍的非負整數,數字間以空格分隔。
輸出格式:
在一行中按格式“M: n1 n2 …”輸出,其中M是最大次數,n1、n2、……為出現次數最多的個位數字,按從小到大的順序排列。數字間以空格分隔,但末尾不得有多余空格。
輸入樣例:
3
1234 2345 3456
輸出樣例:
3: 3 4
7-7 6-4在數組中查找整數
分數 300
作者 沙金
單位 石家莊鐵道大學
6-4本題要求從輸入的N個整數中查找給定的X。如果找到,輸出X的位置(從0開始數);如果沒有找到,輸出“Not Found”。
輸入格式:
輸入在第一行中給出兩個正整數N和X,第二行給出N個整數。數字均不超過長整型,其間以空格分隔。
輸出格式:
在一行中輸出X的位置,或者“Not Found”。
輸入樣例1:
在這里給出一組輸入。例如:
5 7
3 5 7 1 9
輸出樣例1:
在這里給出相應的輸出。例如:
2
輸入樣例2:
在這里給出一組輸入。例如:
5 7
3 5 8 1 9
輸出樣例2:
在這里給出相應的輸出。例如:
Not Found
#include <stdio.h> int main() {int n,x;scanf("%d %d",&n,&x);int i;int a[100];for(i=0;i<=n-1;i++){scanf("%d",&a[i]);}int k=0;for(i=0;i<=n-1;i++){if(a[i]==x) printf("%d",i);else k++;}if(k==n) printf("Not Found");}7-8 sdut- C語言實驗-數組逆序(數組移位)
分數 300
作者 馬新娟
單位 山東理工大學
有n個整數,使其最后m個數變成最前面的m個數,其他各數順序向后移m(m < n < 100)個位置。
輸入格式:
輸入數據有2行,第一行的第一個數為n,后面是n個整數,第二行整數m。
輸出格式:
按先后順序輸出n個整數。
輸入樣例:
5 1 2 3 4 5
2
輸出樣例:
在這里給出相應的輸出。例如:
4 5 1 2 3
#include<stdio.h> int main() {int i,n,j,m;int a[100];scanf("%d",&n);for(i=0;i<n;i++){if(i!=n-1)scanf("%d ",&a[i]);elsescanf("%d\n",&a[i]);}scanf("%d",&m);for(i=0;i<m;i++){int t=a[n-1];for(j=n-1;j>0;j--){a[j]=a[j-1];}a[0]=t;}for(i=0;i<n;i++){if(i==0)printf("%d",a[i]);else printf(" %d",a[i]);}return 0; }7-9 求矩陣各行元素之和
分數 300
作者 C課程組
單位 浙江大學
本題要求編寫程序,求一個給定的m×n矩陣各行元素之和。
輸入格式:
輸入第一行給出兩個正整數m和n(1≤m,n≤6)。隨后m行,每行給出n個整數,其間
以空格分隔。
輸出格式:
每行輸出對應矩陣行元素之和。
輸入樣例:
3 2
6 3
1 -8
3 12
輸出樣例:
9
-7
15
7-10 在數組中查找1
分數 300
作者 莊波
單位 濱州學院
編寫程序在 n 個元素的數組中查找指定的元素 x。
輸入格式:
第一行包含兩個整數 n 和 x,分別表示數組元素的個數(不超過 20)和待查找的數。
第二行包含 n 個整數,要求依次存入數組。
輸出格式:
若在數組中找到 x 提示找到,并給出在數組中第一出現的時下標。
若找不到,則提示未找到。
輸入樣例 1:
在這里給出一組輸入。例如:
5 3
1 2 3 4 5
輸出樣例 1:
在這里給出相應的輸出。例如:
Found 3 at 2
輸入樣例 2:
在這里給出一組輸入。例如:
5 6
1 2 3 4 5
輸出樣例 2:
在這里給出相應的輸出。例如:
Not found 6
#include <stdio.h> int main() {int n,x;scanf("%d %d",&n,&x);int a[100];int i;for(i=0;i<=n-1;i++){scanf("%d",&a[i]);}int k=0;for(i=0;i<=n-1;i++){if(a[i]==x)printf("Found %d at %d",x,i);else k++;}if(k==n) printf("Not found %d",x); }7-11 統計學生成績
分數 300
作者 陳建海
單位 浙江大學
本題要求編寫程序讀入N個學生的百分制成績,統計五分制成績的分布。百分制成績到五分制成績的轉換規則:
大于等于90分為A;
小于90且大于等于80為B;
小于80且大于等于70為C;
小于70且大于等于60為D;
小于60為E。
輸入格式:
輸入在第一行中給出一個正整數N(≤1000),即學生人數;第二行中給出N個學生的百分制成績,其間以空格分隔。
輸出格式:
在一行中輸出A、B、C、D、E對應的五分制成績的人數分布,數字間以空格分隔,行末不得有多余空格。
輸入樣例:
7
77 54 92 73 60 65 69
輸出樣例:
1 0 2 3 1
7-12 統計字符
分數 300
作者 顏暉
單位 浙大城市學院
本題要求編寫程序,輸入10個字符,統計其中英文字母、空格或回車、數字字符和其他字符的個數。
輸入格式:
輸入為10個字符。最后一個回車表示輸入結束,不算在內。
輸出格式:
在一行內按照
letter = 英文字母個數, blank = 空格或回車個數, digit = 數字字符個數, other = 其他字符個數
的格式輸出。
輸入樣例:
aZ &
09 Az
輸出樣例:
letter = 4, blank = 3, digit = 2, other = 1
總結
以上是生活随笔為你收集整理的山东理工大学-2022级-程序设计基础I-顺序结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 音乐播放器快捷键
- 下一篇: 使用rdp后parsec报错14003