引言
? ? ? ? 針對初學者,每日練習幾個題,快速上手C語言。第三天。(會連續更新)
? ? ? ? 采用在線OJ的形式
什么是在線OJ?
? ? ? ? 在線判題系統(英語:Online Judge,縮寫OJ)是一種在編程競賽中用來測試參賽程序的在線系統,也可以用于平時的練習。
????????詳細內容可以看一下這篇博客:關于C/C++語言的初學者在哪刷題,怎么刷題-CSDN博客https://blog.csdn.net/2401_88433210/article/details/146056171?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
1.?計算體重指數
????????點進去直接做題
計算體重指數_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/422f6341cf1b4212a7f8c703df111389?tpId=107&&tqId=33306&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
#include <stdio.h>
#include <math.h>
int main()
{int a =0;int b =0;scanf("%d %d",&a,&b);float c =pow((1.0*b)/100,2);printf ("%.2f",1.0*a/c);return 0;
}
解析:
? ? ? ? 1.要得到浮點數,要進行浮點數除法,這里就得保證/兩端的操作數至少有一個數是浮點數。
? ? ? ? 2.pow(n,m)是計算n的m次方的函數, 包含在<math.h>頭文件里;
? ? ? ? 3. 結果要保留兩位小數,所以得是%.2f來打印
2.計算三角形的周長和面積
? ? ? ? 點進去直接做題計算三角形的周長和面積_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/109a44d649a142d483314e8a57e2c710?tpId=107&&tqId=33307&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
#include<stdio.h>
#include<math.h>
#define pi 3.1415926
int main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);float circumference = a+b+c;//周長float d = circumference/2.0;float area = sqrt(d*(d-a)*(d-b)*(d-c));//sqrt開平方printf("circumference=%.2f area=%.2f",circumference,area);return 0;}
解析:?
? ? ? ? 1.借助海倫公式來求面積,
????????海倫公式,又稱希倫公式、海龍公式,是已知三角形三邊長度求其面積的一個經典公式。以下是其具體信息:
?
公式表達式
????????S = \sqrt{p(p - a)(p - b)(p - c)},其中S表示三角形的面積,a、b、c為三角形的三條邊長,p=(a + b + c) / 2,即三角形周長的一半。
????????2.sqrt是開平方函數,包含在頭文件<math.h>;? ? ?
? ?3.計算球體的體積
????????????????點進去直接做題
計算球體的體積_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/0f5d9bfcd63b47fda2052a583b1fbd1f?tpId=107&&tqId=33308&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
int main()
{float r;double V;//因為float只占四個字節,有效位是7位 需要用doublescanf("%f",&r);V=(4.000*3.1415926*r*r*r)/3.000;printf("%.3f",V);return 0;
}
解析:
????????注意,輸入輸出,照著公式寫代碼就行。
這個題目,如果使用 float 來求解,答案的精度是不夠的,所以試錯后,使用double類型合適。
這里要知道float和double為啥進度有區別,簡單介紹一下,float在內存中使用4個字節,double在內存中使用8個字節,使用double的精度更高
4.成績輸入輸出?
????????點進去直接做題? ? ??
成績輸入輸出_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/eb49750ef0de47168c21761de086d97c?tpId=107&&tqId=33291&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
方案一:
#include <stdio.h>
int main()
{int a, b, c = 0;scanf("%d %d %d", &a, &b, &c);printf("score1=%d,score2=%d,score3=%d", a, b, c);return 0;
}方案二:
#include <stdio.h>int main() {int smb[3] = {0}; //用數組來存scanf("%d %d %d", &smb[0], &smb[1], &smb[2]);printf("score1=%d,score2=%d,score3=%d", smb[0], smb[1], smb[2]);return 0;
}
解析:非常簡單的一道輸入輸出題
5.變種水仙花
????????點進去直接做題
變種水仙花_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/c178e3f5cc4641dfbc8b020ae79e2b71?tpId=107&&tqId=33319&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
//法一:暴力解法:
#include <stdio.h>
#include <stdbool.h>bool P(int x)
{int a = x % 10; //倒數1位int i = x / 10; //前四位int h = x / 100; // 前三位int b = x % 100; //倒數2 位int g = x / 1000; // 前兩位int c = x % 1000; // 倒數3 位int d = x % 10000; // 倒數4 位int f = x / 10000; // 第一位 if((a * i + h * b + g * c + d * f) == x) return true;return false;
}int main() {int a, b;for(int i = 10000; i <= 99999; i++){if(P(i))printf("%d ", i);}return 0;
}//法二:找到規律
#include<stdio.h>
int main()
{int i,j;for(i=10000;i<99999;i++){int sum=0;for(j=10;j<=10000;j=10*j){sum+=(i/j)*(i%j);}if(sum==i)printf("%d ",i);}return 0;
}
解析:
????????分析題目后發現,lily數求和的每一項都是對同一個數(10/100/1000...)的取模或者整除取商。 這樣的話,產生10,100,1000,10000 這些數字,分別對被判斷的數字取模或者取商,然后乘起來,再計算和,再判斷就行。
6.?kiki算數
? ? ? ? 點進去直接做題:
kiki算數_牛客題霸_牛客網 (nowcoder.com)https://www.nowcoder.com/practice/bcaf710fb58a44e1b678a890e6e90d7c?tpId=107&&tqId=33301&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking參考代碼:
代碼一:
#include<stdio.h>
int main(){int a = 0, b = 0;scanf("%d %d",&a,&b);printf("%d\n",(a+b)%100);return 0;
}代碼二:
#include<stdio.h>
int main(){int a = 0, b = 0;scanf("%d %d",&a,&b);printf("%d\n",(a+b)%100);return 0;
}
解析:非常簡單的一道模擬題?