c语言圈子,C语言经典编程
//?經(jīng)典1
//隨機(jī)產(chǎn)生20個(gè)[10,50]的正整數(shù)存到數(shù)組中,并求出數(shù)組中的所有元素最大值,最小值,平均值以及個(gè)元素之和,及第二大值
int?a[20]?=?{0};
printf("隨機(jī)產(chǎn)生的元素:\n");
for?(int?i?=?0;?i?
a[i]?=?arc4random()?%?(50?-?10?+1)?+?10;
printf("%d??",a[i]);
}
printf("\n");
//求所有元素的最大值
int?max?=?0;
for?(int?i?=?0;?i?
if?(a[i]?>?max)?{
max?=?a[i];
}
}
printf("max?=?%d\n",?max);
//求所有元素的最小值
int?min?=?a[0];
for?(int?i?=?1;?i?
if?(min?>?a[i])?{
min?=?a[i];
}
}
printf("min?=?%d\n",?min);
//求所有元素的和
int?sum?=?0;
for?(int?i?=?0;?i?
sum?+=?a[i];
}
printf("sum?=?%d\n",?sum);
//求所有元素的平均值
float?mid?=?0;
mid?=?sum?/?20;
printf("mid?=?%.2f\n",?mid);
//求第二大值
int?smax?=?0;
for?(int?i?=?0;?i?
if?(smax?
smax?=?a[i];
}
}
printf("smax?=?%d",?smax);
//?經(jīng)典2
//編程在一個(gè)已知的字符串中查找最長(zhǎng)單詞,假定字符串只含字母和空格,用空格來(lái)分隔單詞
//思路:
//主要是判斷單詞,連續(xù)的字母,就假定為一個(gè)單詞,從讀取到第一個(gè)字母開(kāi)始計(jì)數(shù),然后直接遇到空格,為一個(gè)單詞的長(zhǎng)度,用一個(gè)變量記錄,最長(zhǎng)單詞的長(zhǎng)度,如果要輸出最長(zhǎng)的單詞,一般是放在數(shù)組里面,記住下標(biāo).
char?targetString[]?=?"I?come?china";
int?maxLength?=?0;//最長(zhǎng)長(zhǎng)度
int?currentLength?=?0;//當(dāng)前得到的單詞的長(zhǎng)度
int?maxIndex?=?0;//當(dāng)前最長(zhǎng)單詞的起始下標(biāo)
int?tempArray[200]?=?{0};
for?(int?i?=?0;?i?<=?strlen(targetString);?i++)?{
if?(targetString[i]?!=?'?'?&&?targetString[i]?!=?'\0')?{
currentLength++;
}?else?{
if?(maxLength?<=?currentLength)?{
maxLength?=?currentLength;
maxIndex?=?i?-?currentLength;??//記錄當(dāng)前最長(zhǎng)單詞的起始下標(biāo)
tempArray[maxIndex]?=?maxLength;
}
currentLength?=?0;//同時(shí)給記錄單詞長(zhǎng)度的currentlength做清零操作
}
}
for?(int?i?=?0?;?i?
if?(tempArray[i]?==?maxLength)?{
for?(int?j?=?i;?j?
printf("%c",?targetString[j]);
}
printf("\n");
}
}
//?經(jīng)典3
//耶穌有13個(gè)門(mén)徒,其中有一個(gè)就是出賣耶穌的叛徒,請(qǐng)用排除法找出這位叛徒:13人圍坐一圈,從第一個(gè)開(kāi)始報(bào)號(hào):1,2,3,1,2,3...凡是報(bào)到'3'就退出圈子,最后留在圈子內(nèi)的人就是出賣耶穌的叛徒.請(qǐng)找出它原來(lái)的序號(hào)
int??array[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};//模擬報(bào)數(shù),0表示未退出圈子,1表示退出圈子
int??numbers=13;//表示剩余人數(shù)
int??count?=?0;//表示報(bào)數(shù)
int???i?=0;//?表示下標(biāo)的循環(huán)變量
while?(numbers?>?1)?{
if?(array[i]!=0)?{//如果當(dāng)前得到的數(shù)組元素不為0,表示沒(méi)有退出圈子,則count++表示報(bào)數(shù)
count++;
}
if?(count?==?3)?{
printf("%d號(hào)退出圈子\n",array[i]);
array[i]?=?0;//表示當(dāng)前報(bào)數(shù)的人報(bào)的數(shù)為3,則通過(guò)數(shù)組元素賦值為0來(lái)表示他退出圈子
count?=?0;//報(bào)數(shù)歸0
numbers?--;//表示退出圈子后剩余的人數(shù)
}
i++;
i?=?i?%13;//?如果i為13時(shí),讓i重新從0開(kāi)始
}
for?(?int?i?=0;?i?
if?(array[i]?>?0)?{
printf("%d號(hào)是叛徒",array[i]);
}
}
//?經(jīng)典4
//將兩個(gè)排好序的數(shù)組,合并到另一個(gè)數(shù)組中,并且合并之后的數(shù)組也是有序的
int?i?=?0,?m?=?5,?a[5]?=?{1,?3,?7,?9,?13};
int?j?=?0,?n?=?6,?b[6]?=?{2,?4,?8,?16,?20,?24};
int?k?=?0,?c[11];
while(i?+?j?
{
if(j?>=?n)?{
c[k++]?=?a[i++];
}
else?if(i?>=?m)?{
c[k++]?=?b[j++];
}
else?if(a[i]?
c[k++]?=?a[i++];
}
else?{
c[k++]?=?b[j++];
}
}
for(i?=?0;i?
printf("%d??",c[i]);
}
//?經(jīng)典5
//有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個(gè)數(shù)列的前20項(xiàng)之和。
float?sum?=?0;
float?x?=?2,?y?=?1,?temp?=?0;
for?(int?i?=?0;?i?
sum?=?sum?+?x?/?y;
temp?=?x;
x?=?x?+?y;
y?=?temp;
}
printf("%.3f",?sum);
//給一個(gè)不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。
//方法一:
long?a=0,b=0;
int?t=0;
printf("請(qǐng)輸入不多于5位的正整數(shù):\n");
scanf("%ld",&a);
if?(a?>=?100000)?{
printf("請(qǐng)輸入不多于5位的正整數(shù)\n");
}else?{
for(t=0;a>0;a/=10,t++)
{
b=(b*10)+a%10;
}
printf("這個(gè)數(shù)是%d位的,逆序數(shù)=%ld\n",t,b);
}
//方法二:
int?a?=?0,?b?=?0,?c?=?0,?d?=?0,?e?=?0,?x?=?0;
printf("請(qǐng)輸入不多于5位的整數(shù):\n");
scanf("%d",?&x);
if?(x?>?100000)?{
printf("請(qǐng)輸入不多于5位的整數(shù)");
}else{
a?=?x?/?10000;//分解出萬(wàn)位
b?=?x?%?10000?/?1000;//分解出千位
c?=?x?%?1000?/?100;//分解出百位
d?=?x?%?100?/?10;//分解出十位
e?=?x?%?10;//分解出個(gè)位
if?(a?!=0?)?{
printf("這個(gè)數(shù)是5位的,?逆序數(shù)?=?%d%d%d%d%d\n",e,?d,?c,?b,?a);
}else?if?(b!=0){
printf("這個(gè)數(shù)是4位的,?逆序數(shù)?=?%d%d%d%d\n",e,d,c,b);
}else?if?(c!=0){
printf("這個(gè)數(shù)是3位的,?逆序數(shù)?=?%d%d%d\n",e,d,c);
}else?if?(d!=0){
printf("這個(gè)數(shù)是2位的,?逆序數(shù)?=?%d%d\n",e,d);
}else?if?(e!=0){
printf("這個(gè)數(shù)是1位的,?逆序數(shù)?=?%d\n",e);
}
}
//?方法三
int?num?=?0,?temp?=?0,?i?=?0;
printf("請(qǐng)輸入一個(gè)數(shù)字\n");
scanf("%d",?&num);
while(num?>?0)
{
temp?=?num?%?10;
++i;
printf("%d",?temp);
num?=?num?/?10;
}
printf("\n這個(gè)數(shù)是%d位數(shù)",?i);
//?經(jīng)典6
//一個(gè)5位數(shù),判斷它是不是回文數(shù).即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同.
long?w?=?0,?q?=?0,?s?=?0,?g?=?0?,?x?=?0;
printf("請(qǐng)輸入一個(gè)5位數(shù):\n");
scanf("%ld",?&x);
if?(x?>?100000?||?x?
printf("請(qǐng)輸入一個(gè)5位數(shù):\n");
}else{
w?=?x?/?10000;//求萬(wàn)位的數(shù)字
q?=?(x?%?10000)?/?1000;?//求千位的數(shù)字
s?=?x?%?100?/?10;//求十位的數(shù)字
g?=?x?%?10;//求個(gè)位數(shù)字
if?(g?==?w?&&?q?==?s)?{
printf("是回文數(shù)");
}
else{
printf("不是回文數(shù)");
}
}
//經(jīng)典7
//星期一???Monday
//星期二???Tuesday
//星期三???Wednesday
//星期四???Thursday
//星期五???Friday
//星期六???Saturday
//星期日???sunday
//請(qǐng)輸入星期幾的第一個(gè)字母來(lái)判斷一下是星期幾,如果第一個(gè)字母一樣,則繼續(xù)判斷第二個(gè)字母
char?week1;
char?week2;
printf("星期一???Monday?\n星期二???Tuesday?\n星期三
Wednesday??\n星期四???Thursday??\n星期五???Friday??\n星期六???Saturday???\n星期日
sunday\nplease?enter?a?letter\n");
scanf("%c",&week1);
switch(week1)
{
case('M'?|?'m'):printf("the?answer?is?Monday\n");
break;
case'W':printf("the?answer?is?Wednesday\n");
break;
case('F'?|?'f'):printf("the?answer?is?Friday\n");
break;
case('S'?|?'s'):
{
printf("please?enter?the?second?letter\n");
scanf("%c",&week2);
getchar();
if(week2?==?('a'?|?'A'))
printf("the?answer?is?Saturday\n");
else
if(week2?==?('u'?|?'U'))
printf("the?answer?is?Sunday\n");
else
printf("there?is?no?answer\n");
}
break;
case('T'?|?'t'):
{
printf("please?enter?the?second?letter\n");
scanf("%c",&week2);
getchar();
if(week2?==?('U'?|?'u'))???????????????printf("the?answer?is?Tuesday\n");
else???????????????if(week2?==?('H'?|?'h'))
printf("the?answer?is?Thursday\n");
else
printf("there?is?no?answer\n");
}
break;
default:
printf("there?is?no?correct?answer\n");
break;
}
//?經(jīng)典8
//有1000000個(gè)數(shù),每個(gè)數(shù)取值范圍是0-999999找出其中重復(fù)的數(shù),重復(fù)次數(shù)
int?a[1000000]?=?{0},?b[1000000]?=?{0},?count?=?0;
for(int?i?=?0?;?i?
a[i]?=?arc4random()%1000000;
b[a[i]]++;
}
for?(int?j?=?0?;?j?
if(b[j]?>?1){
count++;
printf("重復(fù)數(shù)是%d?\n",j);
}
}
總結(jié)
以上是生活随笔為你收集整理的c语言圈子,C语言经典编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux中cd命令及范例,15个Lin
- 下一篇: c语言中lookup函数功能,Looku