1. 程式人生 > 其它 >C語言集合練習之流程控制

C語言集合練習之流程控制

技術標籤:XD# C語言學習作業c語言

C語言集合練習1

由於這一些題目簡單,,主要考察流程控制,沒啥好解釋的,直接放出題目加原始碼,如果有需要解釋的,放在程式碼註釋裡面了^ _ ^

目錄(一共24題)

簡單程式_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;
 } 

實數運算

  1. 實數運算
    問題描述:
    通過鍵盤輸入長方體的長、寬、高,求長方體的體積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杯奶茶,畢竟我也窮啊,哈哈哈