網(wǎng)上做涉黃網(wǎng)站怎么判北京網(wǎng)聘咨詢(xún)有限公司
前言
這些題目來(lái)自與一些刷題網(wǎng)站,以及c primer plus,繼續(xù)練習(xí)
第一題
給你一個(gè)數(shù),讓他進(jìn)行巴啦啦能量,沙魯沙魯,小魔仙大變身,如果進(jìn)行變身的數(shù)不滿(mǎn)足條件的話(huà),就繼續(xù)讓他變身。。。直到滿(mǎn)足條件為止。
巴啦啦能量,沙魯沙魯,小魔仙大變身:對(duì)于一個(gè)數(shù),把他所有位上的數(shù)字進(jìn)行加和,得到新的數(shù)。
如果這個(gè)數(shù)字是個(gè)位數(shù)的話(huà),那么他就滿(mǎn)足條件。
給一個(gè)整數(shù)數(shù)字n(1<=n<=1e9) 輸出由n經(jīng)過(guò)操作滿(mǎn)足條件的數(shù)
1分析
哎呀其實(shí)思路很簡(jiǎn)單, int 類(lèi)型的大小大概可以到20億左右
而這里的n的大小只有10億 只需使用int類(lèi)型的整型即可
那它要一個(gè)整數(shù)的各位之和,當(dāng)然如果大家從來(lái)沒(méi)有做過(guò)這類(lèi)題目可能要斟酌一下
但是我們一眼就看出來(lái)了 使用while循環(huán)? 判斷條件即為該數(shù)
限制條件就是對(duì)他除10, 循環(huán)內(nèi)部對(duì)它求??梢缘玫剿膫€(gè)位數(shù)大小
一次進(jìn)行就可以得到它的各位之和,然而它還可以大于10之后加一個(gè)判斷這個(gè)題目就出來(lái)了
2代碼實(shí)現(xiàn)
#include <stdio.h>
int Ifbecome(int x)
{int flag=x;while(1){int a=0;while(flag){a+=flag%10;flag/=10;}if(a<10)return a;elseflag=a;}
}int main() {int a, b;while (scanf("%d", &a) != EOF) {
printf("%d",Ifbecome(a));}return 0;
}
第二題
請(qǐng)統(tǒng)計(jì)某個(gè)給定范圍[L, R]的所有整數(shù)中,數(shù)字2出現(xiàn)的次數(shù)
比如給定范圍[2, 22],數(shù)字2在數(shù)2中出現(xiàn)了1次,在數(shù)12中出現(xiàn)1次,在數(shù)20中出現(xiàn)1次,在數(shù)21中出現(xiàn)1次,在數(shù)22中出現(xiàn)2次,所以數(shù)字2在該范圍內(nèi)一共出現(xiàn)了6次
輸入共1行,為兩個(gè)正整數(shù)L和R,之間用一個(gè)空格隔開(kāi)。
輸出共1行,表示數(shù)字2出現(xiàn)的次數(shù)。
1分析
這些題目還是很好的,用來(lái)打基礎(chǔ)真的挺好
很明顯和上個(gè)題目是有相似之處的 我們只要分別對(duì)范圍內(nèi)的數(shù)比較他們的各個(gè)位 數(shù)的大小與
2相判斷即可 其實(shí)會(huì)上個(gè)題目 這個(gè)題目也會(huì)做
2,代碼實(shí)現(xiàn)
#include <stdio.h>
int Count(int x)
{int a=0;while(x){if(2==x%10)a++;x/=10;}return a;
}
int main() {int a, b;while (scanf("%d%d", &a,&b) != EOF) { int i;int j=0;for(i=a;i<=b;i++){j+=Count(i);}printf("%d",j);}return 0;
}
第三題
牛牛很喜歡發(fā)短信,他所用的通訊公司的收費(fèi)方法如下:
1.每條短信收費(fèi)0.1元
2.每條短息的字?jǐn)?shù)不超過(guò)60字,如果超過(guò)60字,將按照0.2元的價(jià)格收費(fèi)。
牛牛這個(gè)月發(fā)了 n 條短信,請(qǐng)問(wèn)牛牛一共要繳多少短信費(fèi)
第一行輸入一個(gè)正整數(shù) n ,表示發(fā)送短信的條數(shù),
第二行輸入 n 個(gè)正整數(shù),表示牛牛發(fā)送的 n 條短信中每條短信的字?jǐn)?shù)
輸出牛牛這個(gè)月要繳的短信費(fèi)
1分析?
這個(gè)題目太簡(jiǎn)單了,簡(jiǎn)單的說(shuō)一下
首先判斷字?jǐn)?shù),一個(gè)if就行 然后注意得用浮點(diǎn)型來(lái)輸出其他沒(méi)什么
2代碼實(shí)現(xiàn)
#include <stdio.h>
float Price(int x)
{if(x>60){return 0.2;}elsereturn 0.1;
}
int main() {int a, b;float c=0.0f;while (scanf("%d", &a) != EOF) {while(a){scanf("%d",&b);c+=Price(b);a--;}printf("%.1f",c);}return 0;
}
第四題
牛牛剛剛學(xué)了素?cái)?shù)的定義:素?cái)?shù)值指在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)的自然數(shù)
牛牛想知道在 [l,r] 范圍內(nèi)全部素?cái)?shù)的和
輸入兩個(gè)正整數(shù) l,r 表示閉區(qū)間范圍 輸出 [l,r] 范圍內(nèi)的素?cái)?shù)的和
1分析怎么說(shuō)素?cái)?shù)的定義都告訴我們了 我們不就是讓這個(gè)區(qū)間的數(shù)一直除以非1和非本身的數(shù)
只要不被整除,那么他就是素?cái)?shù)
當(dāng)然 我們可以有優(yōu)化方案
就是說(shuō),在數(shù)學(xué)中只要一直除以它的算術(shù)平方根就行了
2代碼實(shí)現(xiàn)
#include <stdio.h>
#include<math.h>
int Iszhishu(int x)
{if(x==1)return 0;int i;for(i=2;i<=sqrt(x);i++){if(x%i==0)return 0; }return x;
}
int main() {int a, b;while (scanf("%d %d", &a, &b) != EOF) { int i;int count=0;for(i=a;i<=b;i++){count+=Iszhishu(i);}printf("%d",count);}return 0;
}
第五題
前面幾個(gè)題目來(lái)自于??途W(wǎng),大家可以去那里刷題,現(xiàn)在來(lái)看看比較基礎(chǔ)的
接下來(lái)看 c primer plus的題目
設(shè)計(jì)一個(gè)函數(shù)min(x,y),返回兩個(gè)double類(lèi)型值的較小值
基礎(chǔ)但是,多練
直接代碼實(shí)現(xiàn)吧
#include<stdio.h>
double Min(double a,double b)
{
return a>b?b:a;}
int main()
{
double a,b;
scanf("%lf %lf",&a,&b);
printf("%.2lf",Min(a,b));
return 0;
}
第六題
設(shè)計(jì)一個(gè)函數(shù)chline(ch,i,j)打印指定的字符i列j行
1分析這個(gè)題目很基礎(chǔ),沒(méi)辦法,題目是這樣的,如果不會(huì),建議你多多看書(shū)
2代碼實(shí)現(xiàn)
#include<stdio.h>
void chline(char ch, int a, int b)
{int i, j;for (i = 0; i < a; i++){for (j = 0; j < b; j++){printf("%c", ch);}printf("\n");}
}
int main()
{while (1){char ch;int ch0;int a, b;printf("輸入要打印的字符\n");scanf("%c", &ch);printf("輸入要打印的行列\(zhòng)n");scanf("%d%d", &a, &b);chline(ch, a, b);while ((ch0 = getchar()) && ch0 != '\n');}return 0;
}
3細(xì)節(jié)之處在于我們的萬(wàn)能清除緩存區(qū)最后一行的while中
通過(guò)這個(gè)函數(shù)可以把所有的"\n"清除防止被scanf接收到
雖然簡(jiǎn)單但是細(xì)節(jié)
我們發(fā)現(xiàn)這本書(shū)上的代碼實(shí)踐性更高
第七題
計(jì)算調(diào)和平均數(shù)先求兩數(shù)的倒數(shù),再求兩個(gè)倒數(shù)的平均值,最后就算結(jié)果的倒數(shù)
直接代碼實(shí)現(xiàn)
double Tiaohe(double x, double y)
{//return 1/((1/x+1/y)/2);這個(gè)結(jié)果沒(méi)有化簡(jiǎn)return 2 / (1 / x + 1 / y);//化簡(jiǎn)后代碼其實(shí)更高效
}
int main()
{double a, b;printf("請(qǐng)輸入兩個(gè)數(shù)\n");scanf("%lf %lf", &a, &b);double c=Tiaohe(a, b);printf("%.2lf", c);return 0;
}
值得注意的是,該調(diào)和平均數(shù)的算式可以化簡(jiǎn),不要死算哦
第八題
編寫(xiě)一個(gè)函數(shù),從標(biāo)準(zhǔn)輸入中讀取字符,直至遇到文件結(jié)尾程序得報(bào)告每個(gè)字符是否為字母
如果是還要報(bào)告字母在字母表的位置
再編寫(xiě)一個(gè)函數(shù), 以一個(gè)字符為參數(shù)如果是字母返回一個(gè)數(shù)值位否則返回-1
沒(méi)什么好說(shuō)的代碼
int Ifzimu(char ch);
void Readchar();
int main()
{Readchar();return 0;
}
void Readchar()
{char ch;while ((scanf("%c", &ch))==1){int a=Ifzimu(ch);if (a!=-1)printf("%d ", a);}
}
int Ifzimu(char ch)
{if (ch >= 'A' && ch <= 'Z'){return (int)(ch - 'A' + 1);}else if (ch >= 'a' && ch <= 'z')return (int)(ch - 'a' + 1);elsereturn -1;
}
總結(jié)
今天的題目到此為止祝大家開(kāi)心