迴圈的三個語句;無聊oj題的一些必備知識點
迴圈
(一開始學迴圈的時候分不清什麼初始值 執行條件 執行語句什麼的,就很煩,但其實也沒有什麼特別難的地方。反正每開啟一章都是新的,都難,學著學著就會了。)
1.輸出整數的位數
(1)while語句
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x;
int n=0;
scanf("%d",&x);
/* n=n+1;
x/=10;
可以打也可以不打*/
while (x>0){
printf("here\n");
//進行除錯
n=n+1;
x/=10;
printf("x=%d,n=%d\n",x,n);
//進行除錯:在程式適當的地方插入printf來輸出變數的內容
//x/=10,是改變迴圈的條件
}
printf("%d\n",n);
//計算機中的整數是有範圍的,最大十位
return 0;
}
(2)do while語句
#include <stdio.h>
#include <stdlib.h>
int main()
{
//do-while迴圈
int x;
scanf("%d",&x);
int n=0;
do{
x/=10;
n++;
}while(x>0);
printf("%d",n);
return 0;
}
2.對數函式的計算
(其實也類似於得到整數位數啦,每次除以對數函式的底數就加一,加一加一最後得到的值就是對數函式的y值)
#include <stdio.h>
//log2x
#include <stdlib.h>
int main()
{
int x;
int ret=0;
scanf("%d",&x);
//x=128;
int t=x;
//找一個替罪羊t,讓它賦上x的值,
while(t>1){
t/=2;
ret++;
}//對數函式計算方法!!!
printf("log2 of %d is %d",x,ret);
return 0;
}
3.猜數遊戲
(包含內容:隨機數;在迴圈中用選擇結構)
#include <stdio.h>
#include <stdlib.h>
//猜數遊戲
int main()
{
/*讓計算機隨機想一個數,記在變數number裡
一個負責計次數的變數count初始化為0
讓使用者輸入一個數字a
count遞增(加一)
判斷a和number的大小關係,如果a大,就輸出“大”,a小就輸出“小”
如果a和number是不相等的(無論大還是小),程式轉回到第三步
否則,程式輸出“猜中”和次數,然後結束
*/
//迴圈的條件是a和number不相等
srand(time(0));
int number = rand()%100+1;
//每次召喚 rand()就得到一個隨機的整數
int count = 0;
int a = 0;
printf("我已經想好了一個1到100之間的數。");
do {
printf("請猜這個1到100之間數:");
scanf("%d", &a);
if ( a > number ) {
printf("你猜的數大了。");
} else if ( a < number ) {
printf("你猜的數小了。");
}
count ++;
} while (a != number);
printf("太好了,你用了%d次就猜到了答案。\n", count);
return 0;
}
4.for迴圈語句(就這一道題 把我多年對for的巢狀的困惑搞明白了)
就一個sb雞兔同籠問題 無語 那天晚上我想了兩個小時
其實執行的思路就是一個一個列舉吧
#include<stdio.h>
int main()
{
int x,y;
int a,b,c;
scanf("%d%d",&x,&y);
for(a = 1;a < x;a++){
for(b=1;b < x;b++){
for(c=1;c < x;c++){
if((a+b+c==x)&&(2*a+4*b+6*c==y)){
printf("%d %d %d\n",a,b,c);
break;
}
}
}
}
return 0;
}
附:新增一些小知識點(做題必備知識點)
1.閏年平年的判斷
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d",&n);
if((n%4==0)&&(n%100!=0)||(n%400==0))
printf("閏年");
else
printf("平年");
return 0;
}
2.ascii碼
#include<stdio.h>
#include <stdlib.h>
int main()
{
char a,b,c;
int d,e;
scanf("%c%c%c",&a,&b,&c);
d=a-b;
e=b-c;
if(((a>='A' && a<='Z') || (a>='a' && a<='z'))&&((b>='A' && b<='Z') || (b>='a' && b<='z'))&&((c>='A' && c<='Z') || (c>='a' && c<='z')))
{
if((d==1&&e==1)||(d==-1&&e==-1)||(d==1&&e==-1)||(d==-1&&e==1))
printf("Yes\n");
else
printf("No\n");
}
else
printf("No\n");
return 0;
}
3.最大公約數 最小公倍數
#include <stdio.h>
#include <stdlib.h>
int main() {
int m,n,r,t=0;
scanf("%d%d",&m,&n);
if(n>m){
r=m;
m=n;
n=r;
}
r=m%n;//最大公約數
while(r!=0){
m=n;
n=r;
r=m%n;
}
t=m*n/r;//最小公倍數
printf("%d %d",r,t);
return 0;
}
4.素數判斷
#include<stdio.h>
int main()
{
int n,i,r=0;
scanf("%d",&n);
i=2;
do{
i++;
r=n%i;
}while((r!=0)&&(i<=n-1));
if(i==n-1)
printf("%d是素數",n);
else if(i==n-1)
printf("%d不是素數",n);
return 0;
}
5.解一元二次方程
包含內容:開根號;實根虛根求法
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float a,b,c,d,y,z,x1,x2;
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
y=sqrt(fabs(d))/(2*a);
z=-b/(2*a);
if(a==0){
printf("The equation is not quadratic.");
}
else{
if (d>0){
x1=z+y;
x2=z-y;
printf("The equation has two distinct real roots: %.4f and %.4f.",x1,x2);
}
else if(d==0){
x1=y+z;
printf("The equation has two equal roots: %.4f.",x1);
}
else if(d<0){
printf("The equation has two complex roots: %.4f+%.4fi and %.4f-%.4fi.",z,y,z,y);
}
}
return 0;
}
6.並且&& 或者|| 的應用
一個sb乒乓球比賽問題
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,n;
scanf("%d%d",&m,&n);
if((m>=0 && m<=10) &&(n>=0 && n<=10))
printf("no result");
else if((m==11)&&(n>=0 && n<10))
printf("A win");
else if((n==11)&&(m>=0 && m<10))
printf("B win");
else if((m>=10 && m<=200)&&(n>=10 && n<=200)){
if ((m==n)||(m==n+1)||(n==m+1))
printf("no result");
else if(m==n+2)
printf("A win");
else if(n==m+2)
printf("B win");
else if((m>n+2)||(n>m+2))
printf("error");
}
else if(((m>11 && m<=200)&&(n>=0 && n<10))||((m>=0 && m<10) && (n>11 && n<=200)))
printf("error");
else if((m>200)||(n>200))
printf("error");
else if((m<0)||(n<0))
printf("error");
return 0;
}
7.冪函式的呼叫
math.h 是關鍵 然後就是pow(x,y)表示x的y次方
#include <stdio.h>
#include <math.h>
int main() {
int x ,y;
scanf("%d%d",&x,&y);
int result = pow(x,y);//這裡!冪函式的使用
printf("%d\n", result);
return 0;
}
相關文章
- shell語句無限迴圈小常識
- Python的迴圈語句Python
- c語言中的三種迴圈語句結構C語言
- 加更—迴圈語句的練習題
- 必備知識點 模版
- 必備知識點 路由路由
- css必備知識點CSS
- Python 迴圈語句的使用Python
- 前端 JavaScript 中的三種 for 迴圈語句總結前端JavaScript
- 初識python必知的6個知識點Python
- 分支語句和迴圈語句
- 必備知識點 檢視
- 前端必備知識點—SVG前端SVG
- Ruby迴圈語句
- TypeScript 迴圈語句TypeScript
- MySQL迴圈語句MySql
- JavaScript for 迴圈語句JavaScript
- JavaScript 流程控制語句詳解:if語句、switch語句、while迴圈、for迴圈等JavaScriptWhile
- Redis的三個必知必會的問題Redis
- python迴圈語句判斷的使用Python
- 必備知識點 模型層ORM模型ORM
- Redis 面試必備知識點Redis面試
- 7-迴圈語句
- 七 while迴圈語句While
- JavaScript跳出for迴圈語句JavaScript
- 前端筆記之JavaScript(三)關於條件判斷語句、迴圈語句那點事前端筆記JavaScript
- 簡單介紹Lua中三種迴圈語句的使用
- 『無為則無心』Python基礎 — 15、Python流程控制語句(for迴圈語句)Python
- Python-條件語句和迴圈語句Python
- 【js迴圈語句】for與while的區別JSWhile
- JS的判斷語句:判斷、迴圈JS
- MyBatis xml foreach迴圈語句MyBatisXML
- 【Python基礎】for迴圈語句Python
- 流程控制、 迴圈語句
- 【必知必會的MySQL知識】④DCL語言MySql
- 【必知必會的MySQL知識】⑤DQL語言MySql
- 【必知必會的MySQL知識】③DML語言MySql
- python04: while迴圈語句 break continue for in 迴圈PythonWhile