C語言集合練習之流程控制
技術標籤:XD# C語言學習作業c語言
C語言集合練習1
由於這一些題目簡單,,主要考察流程控制,沒啥好解釋的,直接放出題目加原始碼,如果有需要解釋的,放在程式碼註釋裡面了^ _ ^
目錄(一共24題)
- 簡單程式_printf函式輸出字串
- 四則運算_加減乘除餘
- 計算球體重量
- 溫度轉換
- 數字字元
- 實數運算
- 計算球的體積
- 三角形判別_基本計算練習
- 判斷奇偶性
- 判斷整除
- 利率計算
- 最大公約和最小公倍數的計算
- 表示式計算--基本練習
- 計算整數各位數字之和
- 完數
- 完全平方數
- 計算日期
- 求奇數的和
- 階乘之和--雙層迴圈練習
- 數字個數統計--迴圈條件設定練習
- 階乘計算--階乘的公式運算練習
- 矩陣相乘--雙層迴圈練習
- 百元買雞
- 口袋抽取球
簡單程式_printf函式輸出字串
標題
簡單程式
描述
輸出特定的文字
輸入說明
無
輸出說明
用C程式輸出以下兩行文字
C programming language is useful!
I like it very much.
輸入樣例
無
輸出樣例
C programming language is useful!
I like it very much.
提示
使用printf輸出即可
#include "stdio.h"
int main()
{
printf("C programming language is useful!\nI like it very much." );
return 0;
}
四則運算_加減乘除餘
標題
四則運算
描述
輸入兩個整數,計算並輸出其和、差、積、商、餘的資訊,輸出計算結果
輸入說明
輸入使用scanf()函式,格式輸入,數之間以一個空格分割。
輸出說明
輸出使用printf()函式,格式結果依次為:和、差、積、商、餘。
輸入樣例
5 2
輸出樣例
7 3 10 2 1
提示
格式輸入,數字之間空一格,如:5 2
格式輸出,結果依次為和、差、積、商、餘,如:7 3 10 2 1
#include "stdio.h"
int main()
{
int a,b;//定義變數
scanf("%d%d" ,&a,&b);//輸入變數
printf("%d %d %d %d %d",a+b,a-b,a*b,a/b,a%b);
return 0;
}
計算球體重量
題目:計算球體重量
問題描述:
已知鐵的比重是7.86(克/立方厘米),金的比重是19.3(克/立方厘米)。寫一個程式,分別計算出給定直徑的鐵球與金球的質量,假定PI=3.1415926
輸入說明:
輸入兩個整數,分別表示鐵球與金球的直徑(單位為毫米)
輸出說明:
輸出兩個浮點數,分別表示鐵球與金球的質量(單位為克),小數點後保留3位小數,兩個浮點數之間用空格分隔
輸入樣例:
100 100
輸出樣例:
4115.486 10105.456
提示
用scanf輸入,用printf輸出,保留3位小數的格式控制字元為%.3f
#include<stdio.h>
#include<math.h>
int main()
{
double quality_fe,quality_gold,PI=3.1415926;//定義變數
int diameter_fe,diameter_gold;
scanf("%d%d",&diameter_fe,&diameter_gold);//輸入變數
quality_fe=4.0/3*PI*pow(diameter_fe/20,3)*7.86; //計算質量
quality_gold=4.0/3*PI*pow(diameter_gold/20,3)*19.3;
printf("%.3f %.3f",quality_fe,quality_gold);//輸出結果
return 0;
}
溫度轉換
題目:溫度轉換
問題描述:
已知華氏溫度到攝氏溫度的轉換公式為:攝氏溫度= (華氏溫度- 32)×5/9,寫程式將給定的華氏溫度轉換為攝氏溫度輸出
輸入說明:
只有一個整數,表示輸入的華氏溫度
輸出說明:
輸出一個表示攝氏溫度的實數,小數點後保留2位有效數字,多餘部分四捨五入
輸入樣例:
50
輸出樣例:
10.00
提示:
用scanf輸入,用printf輸出,保留2位小數的格式控制字元為%.2f
#include<stdio.h>
int main()
{
int Fahrenheit;//定義變數
double Celsius;
scanf("%d",&Fahrenheit);//輸入變數
Celsius=(Fahrenheit-32)*5.0/9;//變數運算
printf("%.2f",Celsius);//列印
return 0;
}
數字字元
數字字元
問題描述:
通過鍵盤輸入1個整數a(0<=a<=4),1個數字字元b(’0’<=b<=’5’),求a+b。
輸入說明:
整形資料、數字字元通過鍵盤輸入,輸入的整形資料介於0和4之間,輸入的數字字元介於‘0’和‘5’之間,二個輸入數之間用“,”分隔。
輸出說明:
分別以整數形式及字元形式輸出a+b,輸出的二個數之間用“,”分隔。
輸入樣例:
3 ,5
輸出樣例:
56,8
#include<stdio.h>
int main()
{
int a;//設定變數
char b;
scanf("%d,%c",&a,&b);//輸入變數
if((a<=4&&a>=0)&&(b<='5'&&b>='0'))//變數運算
{
printf("%d,%c",a+b,a+b);
}
return 0;
}
實數運算
- 實數運算
問題描述:
通過鍵盤輸入長方體的長、寬、高,求長方體的體積V(單精度)。
輸入說明:
十進位制形式輸入長、寬、高,輸入資料間用空格分隔。
輸出說明:
單精度形式輸出長方體體積V,保留小數點後3位,左對齊。
輸入樣例:
15 8.12 6.66
輸出樣例:
811.188
#include<stdio.h>
int main()
{
float wide,Long,high,V;//定義變數
scanf("%f%f%f",&Long,&wide,&high);//輸入變數
V=Long*wide*high;//計算體積
printf("%.3f\n",V);//列印
return 0;
}
計算球的體積
題目描述:輸入球的半徑,計算並輸出球的體積,假定pi=3.14,結果保留兩位小數。
輸入格式:共一行,輸入球體半徑,兩位小數。
輸出格式:共一行,輸出球體體積,結果保留兩位小數。
示例:
輸入:5.50
輸出:696.56
#include<stdio.h>
#include<math.h>
int main()
{
double radius,pi=3.14,V;//定義變數
scanf("%lf",&radius);//輸入變數
V=4.0/3*pi*pow(radius,3);//計算式
printf("%.2f",V);
return 0;
}
三角形判別_基本計算練習
標題
三角形判別
描述
已知三角形任意兩邊之和大於第三邊,給出三個正整數a,b,c,,請判斷能否構成一個三角形,並輸出相應結果。
類別
1
輸入說明
輸入資料為同一行上的3個整數a,b,c(0 < a,b,c < 1000),整數之間用空格分隔。
輸出說明
如果輸入的三個整數能夠構成一個三角形,輸出該三角形周長,否則輸出No
輸入樣例
3 3 2
1 1 5
輸出樣例
8
No
提示
能夠構成一個三角形,輸出該三角形周長,否則輸出No
#include<stdio.h>
int main()
{
int a,b,c;//定義變數
scanf("%d%d%d",&a,&b,&c);//輸入資料
if(((a<=1000)&&(a>=0))&&((b<=1000)&&(b>=0))&&((c<=1000)&&(c>=0)))
{ if((a+b>c)&&(a+c>b)&&(b+c>a))//條件判斷
printf("%d",a+b+c);
else
printf("No");
}
return 0;
}
判斷奇偶性
題目描述:編寫程式:輸入一個正整數,判斷該數的奇偶性,輸出判斷的結果(偶數/奇數)。
輸入格式:輸入一個正整數。
輸出格式:輸出“偶數”或“奇數”。
示例:
輸入:5
輸出:奇數
#include<stdio.h>
int main()
{
int a;//定義變數
scanf("%d",&a);//輸入資料
if(a>0)
{
if(a%2==1)
printf("奇數");
else
printf("偶數");
}
return 0;
}
判斷整除
題目描述:編寫程式,輸入一個正整數,判斷是否能被5和7同時整除,若可以,則輸出yes;否則輸出no。
輸入格式:輸入一個正整數。
輸出格式:輸出“yes”或“no”。
示例:
輸入:35
輸出:yes
#include<stdio.h>
int main()
{
int a;//定義變數
scanf("%d",&a);//輸入資料
if(a>0)
{
if((a%5==0)&&(a%7==0))
printf("yes");
else
printf("no");
}
return 0;
}
利率計算
題目:利率計算
問題描述:
假如我國國民生產總值的年增長率為9%,計算10年後我國國民總值與現在相比增長多少百分比。計算公式為
p=(1+r)^n
r為增長率,n為年數,p為與現在相比的倍數。
輸入說明:
輸入兩個浮點數,分別表示年增長率和年數,兩個浮點數之間用空格分隔。
輸出說明:
輸出一個浮點數,表示與現在相比的倍數,小數點後保留2位小數。
輸入樣例:
0.09 10
輸出樣例:
2.37
#include<stdio.h>
#include<math.h>
int main()
{
double r,n,p;
scanf("%lf%lf",&r,&n);
p=pow((1+r),n);
printf("%.2f",p);
return 0;
}
最大公約和最小公倍數的計算
題目:最大公約數和最小公倍數的計算
問題描述:
輸入兩個正整數m和n,求其最大公約數和最小公倍數。
輸入說明:
輸入兩個正整數m和n。
輸出說明:
輸出m和n的最大公約數和最小公倍數。
輸入樣例:
8 12
輸出樣例:
4 24
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%d%d",&a,&b);
d=a*b;
while(b)//此處採用輾轉相除法,中國人民的偉大智慧,直接簡化運算,比暴力的列舉方法好的不行
{
c=a%b;
a=b;
b=c;
}
printf("%d %d",a,d/a);
return 0;
}
表示式計算–基本練習
標題
表示式計算
描述
主函式中輸入一個由兩個正整數和一個符號構成的表示式,計算包括+、-、*、/和%。編寫函式cal()完成表示式識別,輸出表達式及其計算結果,主函式完成表示式輸入和呼叫。
類別
1
輸入說明
輸入一個由兩個正整數和一個符號構成的表示式,符號限於+、-和* ,整數小於100。
輸入形式:3 5 +、4 8 %等
輸出說明
格式輸出:輸出表達式及其計算結果。
輸入樣例
2 3 +
輸出樣例
2+3=5
提示
注意列印資訊不含空格。輸入格式控制%d%d %c。
建議使用switch分支結構。
#include<stdio.h>
double cal(int x,int y,char z);
int main()
{
int a,b,d;
char c;
scanf("%d%d %c",&a,&b,&c);
if((a>0&&a<100)&&(b>0&&b<100)&&(c=='+'||c=='-'||c=='*'||c=='/'||c=='%'))//按照XD的破系統評判標準,這個判斷條件可以不要
{
d=cal(a,b,c);
printf("%d%c%d=%d",a,c,b,d);
}
return 0;
}
double cal(int x,int y,char z)
{
int e;
switch(z)
{
case'+':e=1.0*x+y;break;
case'-':e=1.0*x-y;break;
case'*':e=1.0*x*y;break;
case'/':e=1.0*x/y;break;
case'%':e=x%y;break;
default:;
}
return (e);
}
計算整數各位數字之和
標題:
計算整數各位數字之和
問題描述:
假設n是一個由最多9位數字(d9, …, d1)組成的正整數。編寫一個程式計算n的每一位數字之和
輸入說明:
輸入資料為一個正整數n
輸出說明:
對整數n輸出它的各位數字之和後換行
輸入樣例:
3704
輸出樣例:
14
#include<stdio.h>
int main()
{
int n,sum;
scanf("%d",&n);
sum=0;
for(;n;n/=10)//第一個初始語句沒用,第二個判斷語句就是判斷n的值是否為0,第三個相信不用解釋了
sum+=n%10;
printf("%d\n",sum);
return 0;
}
完數
標題:
完數
問題描述:
請寫一個程式,給出指定整數範圍[a,b]內的所有完數,0 < a < b < 10000。
一個數如果恰好等於除它本身外的所有因子之和,這個數就稱為"完數"。
例如6是完數,因為6=1+2+3
輸入說明
輸入為兩個整數a和b,a和b之間用空格分隔
輸出說明
輸出[a,b]內的所有完數,每個數字佔一行
輸入樣例
1 10
輸出樣例
6
#include<stdio.h>
int main()
{
int a,b,sum;
scanf("%d%d",&a,&b);
for(int i=a;i<=b;i++)
{
sum=0;
for(int x=1;x<i;x++)
{
if(i%x==0)
sum+=x;
}
if(i==sum)
printf("%d\n",sum);
}
return 0;
}
完全平方數
標題
完全平方數
問題描述
若一個整數n能表示成某個整數m的平方的形式,則稱這個數為完全平方數。寫一個程式判斷輸入的整數是不是完全平方數。
輸入說明
輸入資料為一個整數n,0<=n<10000000。
輸出說明
如果n是完全平方數,則輸出構成這個完全平方數的整數m,否則輸出no。
輸入樣例
樣例1:
144
樣例2:
15
輸出樣例
樣例1輸出:
12
樣例2輸出:
no
#include<stdio.h>
#include<math.h>
int main()
{
int n;
double x;
scanf("%d",&n);
x=pow(n,0.5);
if((int)x==x)
printf("%d",(int)x);
else
printf("no");
return 0;
}
計算日期
Problem 8計算日期
描述:
給定一個年份y和一個整數d,問這一年的第d天是幾月幾日?
注意閏年的2月有29天,且滿足下面條件之一的是閏年:
1) 年份是4的整數倍,而且不是100的整數倍;
2) 年份是400的整數倍
輸入說明:
輸入包含兩個整數y和d,y表示年份,年份在1900到2018之間(包含1900和2018)。 d表示這一年的第幾天,d在1至365之間。
輸出說明:
在一行輸出兩個整數,分別表示答案的月份和日期。
輸入樣例
樣例1輸入
2015 80
輸出樣例
樣例1輸出
3 21
#include<stdio.h>
int main()
{
int a[2][12]={{31,29,31,30,31,30,31,31,30,31,30,31},{31,28,31,30,31,30,31,31,30,31,30,31}};
int y=0,d=0,j=0,i=0;
scanf("%d%d",&y,&d);
if((y%4==0&&y%100!=0)||y%400==0)
i=0;
else
i=1;
for(j=0;d>0;j++)
d=d-a[i][j];
printf("%d %d",j,d+a[i][j-1]);//計算出日期
return 0;
}
求奇數的和
題目描述:計算給定一組整數中奇數的和,直到遇到0時結束。
輸入格式:共一行,輸入一組整數,以空格分隔
輸出格式:輸出一個整數
示例:
輸入:1 2 3 4 5 0 6 7
輸出:9
#include <stdio.h>
int main()
{
int i=1,n=0;
while(i)
{
scanf("%d",&i);
if(i%2) n+=i;
}
printf("%d",n);
return 0;
}
階乘之和–雙層迴圈練習
標題
階乘之和
描述
輸入自然數N(N<10),採用雙層for迴圈結構,計算N!和ΣN!,並輸出結果。
輸入說明
輸入自然數N(<10),如7
輸出說明
輸出N、N!、ΣN!
輸入樣例
7
輸出樣例
7 5040 5913
提示
採用雙層for迴圈結構,不大於10的自然數的階乘之和
#include<stdio.h>
int main()
{
int N,sum,SUM=0;
scanf("%d",&N);
for(int i=1;i<N+1;i++)
{ sum=1;
for(int j=1;j<=i;j++)
sum*=j;
SUM+=sum;
}
printf("%d %d %d",N,sum,SUM);
return 0;
}
數字個數統計–迴圈條件設定練習
標題
數字個數統計
描述
統計能被7或11整除,但不能被7和11同時整除數的個數,求解500以內大於等於100的正整數個數,輸出結果。所有變數為整形
輸入說明
無
輸出說明
輸出個數統計結果
輸入樣例
無
輸出樣例
50
提示
採用for迴圈結構
#include<stdio.h>
int main()
{
int n=0;
for(int i=100;i<=500;i++)
{
if((i%7==0||i%11==0)&&(i%77!=0))
n++;
}
printf("%d",n);
return 0;
}
階乘計算–階乘的公式運算練習
標題
階乘運算
描述
編寫P(m,n)=m!/n!/(m-n)!,(m>n)。求出P(8,6)和P(5,2)的值。
時間限制
1
記憶體限制
10000
類別
1
輸入說明
輸入兩個整數(m>n),如8 6
輸出說明
輸出保留2位小數
輸入樣例
8 6
輸出樣例
28.00
提示
採用for迴圈結構,資料型別為單精度浮點型,輸出保留兩位小數,格式%.2f。
編寫階乘計算函式Mul(),主函式呼叫
#include<stdio.h>
float Mul(int x);
int main()
{
int m,n;
float p;
scanf("%d%d",&m,&n);
if(m>n)
{
p=1.0*Mul(m)/Mul(n)/Mul(m-n);
printf("%.2f",p);
}
return 0;
}
float Mul(int x)
{
int z=1;
for(int i=1;i<=x;i++)
z*=i;
return (z);
}
矩陣相乘–雙層迴圈練習
標題
矩陣相乘
描述
輸入2×3矩陣A和3×2矩陣B各元素值,計算2×2矩陣C並輸出其結果,矩陣相乘公式如下:
輸入說明
輸入整形資料,如矩陣元素A={{1,2,3},{4,5,6}},B={{1,2},{3,4},{5,6}}。
輸出說明
格式輸出:輸出矩陣A、B和A*B的結果,矩陣形式,分行分列輸出,矩陣之間空一行。
輸入樣例
1 2 3 4 5 6
1 2 3 4 5 6
輸出樣例
1 2 3
4 5 6
1 2
3 4
5 6
22 28
49 64
提示
採用三重迴圈結構實現計算過程,資料輸出格式%5d。
//這道題目不難,主要是看懂公式很重要
#include<stdio.h>
int main()
{
int a[2][3],b[3][2],c[2][2],sum;//定義變數
for(int i=0;i<2;i++)//輸入變數
{
for(int j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
for(int i=0;i<3;i++)
{
for(int j=0;j<2;j++)
scanf("%d",&b[i][j]);
}
printf("\n");
for(int i=0;i<2;i++)//計算
{
for(int j=0;j<2;j++)
{
sum=0;
for(int m=0;m<3;m++)
{
sum+=a[i][m]*b[m][j];
}
c[i][j]=sum;
}
}
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
for(int i=0;i<3;i++)
{
for(int j=0;j<2;j++)
printf("%d ",b[i][j]);
printf("\n");
}
printf("\n");
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
printf("%d ",c[i][j]);
printf("\n");
}
return 0;
}
百元買雞
一百個銅錢買了一百隻雞,其中公雞一隻5錢、母雞一隻3錢、小雞一錢3只,
問:一百隻雞中公雞、母雞、小雞各多少。
輸出格式:每一行分別輸出公雞、母雞、小雞個數,以空格分隔;
每行表示一種計算結果,列出所有可能結果;
計算結果按照公雞的數目從小到大排序。
#include<stdio.h>
int main()
{
int m,w,s;
for(m=1;5*m<100;m++)
{
for(w=1;(5*m+3*w)<100;w++)
{
for(s=1;(5*m+3*w+s*1.0/3)<=100;s++)
{
if((m+w+s)==100&&(5*m+3*w+s*1.0/3)==100)
printf("%d %d %d\n",m,w,s);
}
}
}
return 0;
}
口袋抽取球
題目描述:
口袋裡有12個球,3個紅色,4個白色,5個黑色,從中任意取出8個球,列出所有可能的取法
輸出格式:每一行分別輸出紅色球、白色球、黑色球個數,以空格分隔;
每行表示一種選擇情況,列出所有可能結果。
輸出結果按照紅球個數從小到大排序,當紅球個數相同時按照白球個數從小到大排序
示例:0 3 5
0 4 4
1 2 5
…
#include<stdio.h>
int main()
{
int r,w,b;
for(r=0;r<4;r++)
{
for(w=0;(w+r)<9;w++)
{
b=8-r-w;
if(b>=0&&b<=5&&w<=4)
printf("%d %d %d\n",r,w,b);
}
}
return 0;
}
總算把這一些寫完了,我會在這兩天裡爆肝,把我在XD上做過的題目全部寫出來,肯定是不會齊全的,要是有比較有意思的題目,可以私信發給我,我會把它收錄在題集裡
碼字不易,要是對你想用金錢來砸我,可以盡情打賞我喝n杯奶茶,畢竟我也窮啊,哈哈哈