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