/* Note:Your choice is C IDE */1
#include
"stdio.h"
int
diGuiSum(
int
num);
void
main()
{
//
用递归求
100
内的和
printf(
"%d"
,diGuiSum(100));
}
int
diGuiSum(
int
num)
{
if
(num
==
1)
return
1;
return
num
+
diGuiSum(num
-
1);
//100的和等于99的和+100,依次类推。
}
/* Note:Your choice is C IDE */2
#include
"stdio.h"
#include
"string.h"
#define
N 50
void
main()
{
char
a[N];
int
i,start
=
0;
int
end
=
0,k;
char
t;
printf(
"
请输入一串字符
"
);
gets(a);
k
=
strlen(a);
end
=
k
-
1;
while
(start
<=
end)
//
颠倒整个字符串
{
t
=
a[start];
a[start]
=
a[end];
a[end]
=
t;
start
++
;
end
--
;
}
printf(
"
颠倒后的字符串是:
%s"
,a);
start
=
0;
for
(i
=
0;i
<
k;i
++
)
//
颠倒一个单词
{
if
(a[i]
==
32
||
a[i+1]
==
0)
//
如果是空格
或是结尾
{
if
(i
==
k
-
1)
//
判断是否最后一个
end
=
i;
else
end
=
i
-
1;
while
(start
<=
end)
//
调换空格与空格之间
{
t
=
a[start];
a[start]
=
a[end];
a[end]
=
t;
start
++
;
end
--
;
}
start
=
i
+
1;
//
起始位置
}
}
printf(
"\n
输出:
"
);
for
(i
=
0;i
<
k;i
++
)
{
printf(
"%c"
,a[i]);
}
}
/* Note:Your choice is C IDE */3
#include
"stdio.h"
#define
StoreLen 20
//
仓库数组的最大长度
#define
CarLen 10
//
购物车数组的最大长度
/*
超市购物车
*/
struct
product
{
int
id;
//
商品编号
char
name[50];
//
商品名
double
price;
//
商品价格
int
storeCount;
//
数量
double
sumPrice;
//
单种商品的总价
}
;
typedef
struct
product goods;
//
给这个结构体类型取别名
/*-------------------
初始化函数
--------------------*/
int
store(goods p[]);
//
进货
void
shopCar(goods p[],
int
goodsLen,
int
pid,
int
pcount);
//
购物
void
showProduct(goods p[],
int
len,
int
storeORcar);
//
显示信息
goods myCar[CarLen];
//
准备购物车
int
carLength
=
0;
//
购物车一开始为空
/*-------------------
主函数入口
--------------------*/
void
main()
{
goods p[StoreLen];
//
定义仓库商品数组
int
flag;
//
是否继续购买
int
pid;
//
购买商品编号
int
pcount;
//
购买商品数量
int
goodsLen
=
store(p);
//
进货完成,返回仓库目前存了几种商品(目前数组大小)
printf(
"----------
亲爱的顾客,本店有以下商品
--------\n"
);
showProduct(p,goodsLen,1);
//1
表示进
:
显示进货信息
while
(1)
{
printf(
"
请输入购买的商品编号,数量
:\n"
);
scanf(
"%d %d"
,
&
pid,
&
pcount);
shopCar(p,goodsLen,pid,pcount);
//
添加到购物车
printf(
"
是否继续购买?
:1(
继续
)/0(
退出
)\n"
);
scanf(
"%d"
,
&
flag);
if
(flag
==
0)
break
;
}
printf(
"----------
亲爱的顾客,你购买的商品信息如下:
----------\n"
);
showProduct(myCar,carLength,
-
1);
//-1
表示出
:
显示购物车信息
printf(
"\n----------
购买后超市商品信息如下:
----------\n"
);
showProduct(p,goodsLen,1);
//-1
表示出
:
显示购物车信息
}
/*--------------------
进货哦
---------------------*/
int
store(goods p[])
{
int
flag;
//
是否继续进货
int
nowNum
=
0;
//
目前的库存种类
while
(1)
{
if
(nowNum
<
StoreLen)
//
判断是否超过库存的最大存储量
{
printf(
"
请输入编号,商品名,单价,进货数量:
\n"
);
scanf(
"%d %s %lf %d"
,
&
p[nowNum]
.
id,
&
p[nowNum]
.
name,
&
p[nowNum]
.
price,
&
p[nowNum]
.
storeCount);
nowNum
+=
1;
//
每次存储完,数组大小增加
1
printf(
"
是否继续进货?
:1(
继续
)/0(
退出
)\n"
);
scanf(
"%d"
,
&
flag);
if
(flag
==
0)
break
;
}
else
{
printf(
"
很抱歉!仓库已经满了,不能再进货了!
\n"
);
break
;
}
}
return
nowNum;
//
返回数组大小
}
/*-------------
顾客购买
-----------------------*/
void
shopCar(goods p[],
int
goodsLen,
int
pid,
int
pcount)
//
参数:目前库存的商品,购买的商品编号、购买的商品数量
{
int
i;
int
index
=-
1;
int
carflag
=
0;
//
购物车中有没有已经购买的商品
for
(i
=
0;i
<
goodsLen;i
++
)
//
找超市里的商品是否有我输入的编号商品
{
if
(p[i]
.
id
==
pid)
{
index
=
i;
break
;
//
找到就不再往后循环查找了
}
}
if
(index
>=
0)
//
找到了
{
if
(pcount
<
p[index]
.
storeCount)
//
判断购买的数量是否大于该商品的库存量
{
//
查找购物车是否有存在的商品
for
(i
=
0;i
<
carLength;i
++
)
{
if
(myCar[i]
.
id
==
pid)
//
如果存在,只要更改数量即可
{
myCar[i]
.
storeCount
+=
pcount;
//
购物车数量加
p[index]
.
storeCount
-=
pcount;
//
商品架的数量减
myCar[i]
.
sumPrice
=
myCar[i]
.
storeCount
*
myCar[i]
.
price;
carflag
=
1;
break
;
}
}
if
(carflag
!=
1)
//
如果购物车不存在要购买的商品
{
myCar[carLength]
=
p[index];
//
往购物车中添加
myCar[carLength]
.
storeCount
=
pcount;
//
设置购买数量
myCar[carLength]
.
sumPrice
=
myCar[carLength]
.
storeCount
*
myCar[carLength]
.
price;
p[index]
.
storeCount
-=
pcount;
//
所购买的对应的超市商品数量要减
carLength
++
;
//
长度加
1
}
}
else
{
printf(
"
该商品库存不足!
\n"
);
}
}
else
{
printf(
"
编号错误
!
没有该商品
.\n"
);
}
}
/*------------------
显示信息
----------------------*/
void
showProduct(goods p[],
int
len,
int
storeORcar)
{
int
i;
if
(storeORcar
==
1)
{
printf(
"
编号:
\t
商品名:
\t
单价:
\t\t
数量:
\t\n"
);
for
(i
=
0;i
<
len;i
++
)
{
printf(
"%d\t %s\t\t %.2lf\t\t %d\t \n"
,p[i]
.
id,p[i]
.
name,p[i]
.
price,p[i]
.
storeCount);
}
}
else
if
(storeORcar
==-
1)
{
printf(
"
编号:
\t
商品名:
\t
单价:
\t\t
数量:
\t
总价:
\t\n"
);
for
(i
=
0;i
<
len;i
++
)
{
printf(
"%d\t %s\t\t %.2lf\t\t %d\t %.2lf \n"
,p[i]
.
id,p[i]
.
name,p[i]
.
price,p[i]
.
storeCount,p[i]
.
sumPrice);
}
}
}
#include
"stdio.h" //4
void
main()
{
int
year, month;
int
sumYearDays
=
0;
//
该变量是统计到现在的总年数天数
int
sumMonthDays
=
0;
//
月份总天数
int
sumDays
=
0;
//
总天数
int
week;
//
星期
int
y, i;
int
monthArr[]
=
{
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
}
;
//12
个月的天数
printf(
"
请输入一个日期
(2013-10):"
);
scanf(
"%d-%d-%d"
,
&
year,
&
month);
//
年
-
月
-
日
//
思路
: 1900
年
1
月
1
日是星期一
for
(y
=
1900; y
<
year; y
++
)
{
if
(y
%
400
==
0
||
(y
%
4
==
0
&&
y
%
100
!=
0))
{
sumYearDays
+=
366;
//
闰年
加
366
天
}
else
sumYearDays
+=
365;
//
平年
加
365
天
}
//
闰年的二月份
if
(year
%
400
==
0
||
(year
%
4
==
0
&&
year
%
100
!=
0) )
{
monthArr[1]
=
29;
}
//
累加今年的月份天数
for
(i
=
0; i
<
month
-
1; i
++
)
{
sumMonthDays
+=
monthArr[i];
}
sumDays
=
sumYearDays
+
sumMonthDays
+
1;
//
总天数
=
年得总天数
+
月、号得总天数
//
求本月的第一天是星期几
余数
week
=
sumDays
%
7;
printf(
"
星期日
\t
星期一
\t
星期二
\t
星期三
\t
星期四
\t
星期五
\t
星期六
\n"
);
for
(i
=
0; i
<
week; i
++
)
{
printf(
"\t"
);
}
for
(i
=
1; i
<=
monthArr[month - 1]; i
++
)
{
printf(
"%d\t"
, i);
if
((i
+
week)
%
7
==
0)
printf(
"\n"
);
}
}
/* Note:Your choice is C IDE */5
#include
"stdio.h"
void
main()
{
int
i,j;
int
row
=
10;
//
要显示多少行
for
(i
=
1;i
<=
row;i
++
)
{
for
(j
=
1;j
<=
row
-
i;j
++
)
{
printf(
" "
);
}
for
(j
=
1;j
<=
2
*
i
-
1;j
++
)
{
printf(
"*"
);
}
printf(
"\n"
);
}
}
/*
等腰直角三角型:填充式
&&&*
&&***
&*****
*******
*/
/* Note:Your choice is C IDE */6
#include
"stdio.h"
void
main()
{
int
i,j,row
=
10;
int
col
=
2
*
row
-
1;
for
(i
=
1;i
<=
row;i
++
)
{
for
(j
=
1;j
<=
col;j
++
)
{
if
(j
<=
row
-
i
||
j
>
col
-
(row
-
i))
printf(
" "
);
else
printf(
"*"
);
}
printf(
"\n"
);
}
}
/*
等腰直角三角型:填充式
&&&*&&&
&&***&&
&*****&
*******
*/
/* Note:Your choice is C IDE */7
#include
"stdio.h"
long
jieCheng(
int
num);
void
main()
{
//
求任意一个数的阶乘,但是不能求大数据,将结果输出。
printf(
"%d"
,jieCheng(19));
}
long
jieCheng(
int
num)
{
if
(num
==
1)
return
1;
return
num
*
jieCheng(num
-
1);
}
/* Note:Your choice is C IDE */8
#include
"stdio.h"
int
peach(
int
n)
{
if
(n
==
1)
return
1;
else
return
(peach(n
-
1)
+
1)
*
2;
}
void
main()
{
//
猴子吃桃:一只猴子摘了一堆桃子,它每天吃了其中的一半然后再多吃一个,
//
直到第
10
天,它发现只有
1
个桃子了,问:它第一天摘了多少个桃子?
int
days;
int
sum
=
0;
printf(
"
请输入天数
"
);
scanf(
"%d"
,
&
days);
sum
=
peach(days);
printf(
"\n
最初的桃子数
%d"
,sum);
}
/* Note:Your choice is C IDE */9
#include
"stdio.h"
#include
"string.h"
void
main()
{
char
a[20];
int
i,j,k;
printf(
"
请输入数字
"
);
gets(a);
k
=
strlen(a);
for
(i
=
0,j
=
k
-
1;i
<
j;i
++
,j
--
)
{
if
(a[i]
!=
a[j])
break
;
}
if
(i
>=
j)
{
printf(
"
是回文数
"
);
}
else
{
printf(
"
不是回文数
"
);
}
}
/* Note:Your choice is C IDE */10
#include
"stdio.h"
int
isSuShu(
int
number);
void
main()
{
//
所有素数的和
int
num;
for
(num
=
1;num
<=
1000;num
++
)
{
if
(isSuShu(num))
{
printf(
"%d\n"
,num);
}
}
}
int
isSuShu(
int
number)
{
int
flag
=
1,i;
for
(i
=
2;i
<
number;i
++
)
{
if
(number
%
i
==
0)
{
flag
=
0;
break
;
}
}
return
flag;
}
/* Note:Your choice is C IDE */11
#include
"stdio.h"
void
main()
{
//
打印九九乘法表
int
i,j;
for
(i
=
1;i
<=
9;i
++
)
{
for
(j
=
1;j
<=
i;j
++
)
{
printf(
"%d*%d=%d\t"
,j,i,i
*
j);
}
printf(
"\n"
);
}
}
/*
1*1=1;
1*2=2; 2*1=2;
1*3=3; 2*2=4;
...
1*9=9; 2*9=18;
*/
//
实际排列原理相反:
有多少行就有多少列。
/* Note:Your choice is C IDE */12
#include
"stdio.h"
#include
"string.h"
void
main()
{
// 2.
输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
char
s[200];
int
l,i,a
=
0,b
=
0,c
=
0;
printf(
"
请输入一行字符
"
);
gets(s);
l
=
strlen(s);
for
(i
=
0;i
<
l;i
++
)
{
if
(s[i]
==
' '
)
{
a
++
;
}
if
(s[i]
>=
'0'
&&
s[i]
<=
'9'
)
{
b
++
;
}
if
(s[i]
>=
'A'
&&
s[i]
<=
'Z'
||
s[i]
>=
'a'
&&
s[i]
<=
'z'
)
{
c
++
;
}
}
printf(
"
空格:
%d,
数字:
%d,
字母:
%d"
,a,b,c);
}
/* Note:Your choice is C IDE */13
#include
"stdio.h"
void
main()
{
int
r,c,row;
printf(
"
请输入菱形的对角线的长度
:"
);
scanf(
"%d"
,
&
row);
for
(r
=
1;r
<=
row
*
2
-
1;r
++
)
{
for
(c
=
1;c
<=
row
*
2
-
1;c
++
)
{
if
(r
<=
row
&&
c
==
row
+
1
-
r
||
c
==
row
-
1
+
r)
printf(
"*"
);
else
if
(r
>=
row
&&
c
==
r
-
row
+
1
||
c
==
row
+
row
*
2
-
1
-
r)
printf(
"*"
);
else
printf(
" "
);
}
printf(
"\n"
);
}
}
/* Note:Your choice is C IDE */14
#include
"stdio.h"
#define
X 9
void
main()
{
int
arr[X][X];
int
i,j;
int
L
=
X
/
2
+
1;
arr[0][0]
=
1;
//
确定顶角
for
(i
=
1;i
<=
L;i
++
)
{
for
(j
=
1;j
<=
X
-
i;j
++
)
{
//
右
if
(j
>=
i
-
1)
arr[i
-
1][j]
=
arr[i
-
1][j
-
1]
+
1;
//
核心代码
}
for
(j
=
i;j
<=
X
-
i;j
++
)
{
//
下
arr[j][X
-
i]
=
arr[j
-
1][X
-
i]
+
1;
}
for
(j
=
X
-
i
-
1;j
>=
i
-
1;j
--
)
{
//
左
arr[X
-
i][j]
=
arr[X
-
i][j
+
1]
+
1;
}
for
(j
=
X
-
i
-
1;j
>
i
-
1;j
--
)
{
//
上
arr[j][i
-
1]
=
arr[j
+
1][i
-
1]
+
1;
}
}
//
输出
for
(i
=
0;i
<
X;i
++
)
{
for
(j
=
0;j
<
X;j
++
)
{
printf(
"%d\t"
,arr[i][j]);
}
printf(
"\n\n"
);
}
}
/* Note:Your choice is C IDE */
#include
"stdio.h"
#define
num 10
void
main()
{
int
i,j,temp;
int
a[num]
=
{
1,4,2,5,9,3,6,12,55,0
}
;
printf(
"
冒泡排序:
\n"
);
for
(i
=
0;i
<
num
-
1;i
++
)
{
for
(j
=
i
+
1;j
<
num;j
++
)
{
if
(a[i]
>
a[j])
{
temp
=
a[j];
a[j]
=
a[i];
a[i]
=
temp;
}
}
}
for
(i
=
0;i
<
num;i
++
)
printf(
"%5d"
,a[i]);
}
/* Note:Your choice is C IDE */15
#include
"stdio.h"
#define
N 3
//
前几名
void
main()
{
int
arr[10]
=
{
20,30,50,60,60,76,85,85,96,96
}
;
//
已经升序的数组
char
names[10][20]
=
{
"jack"
,
"running"
,
"lucy"
,
"mary"
,
"hong"
,
"liu"
,
"wike"
,
"smith"
,
"boss"
,
"younth"
}
;
int
hasCount
=
0;
//
已经统计了的个数
int
count[N
+
1]
=
{
0
}
;
//
第一个
num[0]
不要,记录第几名的个数。
int
score[10]
=
{
0
}
;
//
统计成绩
score[1]=96 score[2]=85
记录第几名的成绩
int
k,j,i,len
=
0,c
=
0;
for
(k
=
1;k
<=
N;k
++
)
//
处理过程
{
hasCount
=
0;
for
(j
=
1;j
<=
k;j
++
)
{
hasCount
+=
count[j];
//
统计前面出现的总个数
}
for
(i
=
9
-
hasCount; i
>=
0; i
--
)
{
if
(arr[i]
==
arr[9 - hasCount])
{
score[k]
=
arr[9
-
hasCount];
//
记录具体第几名的分数
count[k]
++
;
//
记录具体第几名的个数
}
}
}
//
输出
for
(i
=
1; i
<
N
+
1; i
++
)
{
hasCount
=
0;
for
(j
=
1;j
<=
i;j
++
)
//
统计前面出现的总个数
{
hasCount
+=
count[j];
}
printf(
"\n
第
%d
名
,
个数
%d,
成绩为
:%d\n"
,i,count[i],score[i]);
for
(c
=
1,k
=
10
-
hasCount;c
<=
count[i];k
++
,c
++
)
//count[i]
是
当前第几名的个数
{
printf(
"
名字:
%s\n"
,names[k]);
}
}
}
/* Note:Your choice is C IDE */16
#include
"stdio.h"
#define
num 13
void
main()
{
/*
古典问题:有一对兔子,从出生后第
3
个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
问每个月的兔子总数为多少?兔子的规律为数列
1,1,2,3,5,8,13,21....*/
int
a[num]
=
{
1,1
}
;
int
i;
printf(
"
兔子问题:
\n"
);
for
(i
=
0;i
<
num;i
++
)
{
if
(i
<=
1)
{
printf(
"
第
%d
个月的兔子总数为
1
对
\n"
,i
+
1);
}
else
{
a[i]
=
a[i
-
1]
+
a[i
-
2];
printf(
"
第
%d
个月的兔子总数为
%d
对
\n"
,i
+
1,a[i]);
}
}
}
/* Note:Your choice is C IDE */17
#include
"stdio.h"
#define
N 28
void
main()
{
char
S1S88[N][15]
=
{
"
廖培鑫
1"
,
"
吴馨
1"
,
"
陈智聪
1"
,
"1
颜理
"
,
"
梅清康
1"
,
"
甘焕昌
1"
,
"
刘志威
1"
,
"
钟晖
1"
,
"
黄鹏
1"
,
"
李景生
1"
,
"
应俊伟
1"
,
"
黄协平
1"
,
"
余绍广
1"
,
"
朱海宁
1"
,
"
陈日鸿
1"
,
"
王瑾
1"
,
"
陈江东
1"
,
"
胡志雄
1"
,
"
张经纬
1"
,
"
林文山
1"
,
"
梁正丽
1"
,
"
蒋婷婷
1"
,
"
陈章维
1"
,
"
梁家英
"
,
"
黄胜利
1"
,
"
张李斌
1"
,
"
吴全辉
1"
,
"
戴志颖
1"
}
;
char
bl[N];
int
i,n;
int
index;
//
索引,轮到第几个人了
int
lastnum
=
N;
//
剩余人数
int
countNum
=
0;
//
报的数字
for
(i
=
0;i
<
N;i
++
)
{
bl[i]
=
1;
}
//28
个人都参与报数
printf(
"
请输入从第几个人开始报数:
"
);
scanf(
"%d"
,
&
n);
printf(
"\n
从
%s
开始报数
:"
,S1S88[n-1]);
index
=
n
-
1;
while
(lastnum
>
1)
//
如果剩余人数大于
1
说明还要继续报数
{
if
(bl[index])
//
表示还没报
3
的人。
{
countNum
++
;
if
(countNum
==
3)
{
countNum
=
0;
bl[index]
=
0;
//
标记报了
3
lastnum
--
;
//
剩余人数
-1
}
}
index
++
;
//
下一个人
if
(index
==
N)
//
报到最后,回来继续报数
index
=
0;
}
//
输出
for
(i
=
0;i
<
N;i
++
)
{
if
(bl[i])
printf(
"\n\n
留下来的是:
%s"
,S1S88[i]);
}
}
/* Note:Your choice is C IDE */ 18
#include
"stdio.h"
void
main()
{
//
求下列试子的值:
1/1-1/2+1/3-1/4+
……
+1/99-1/100
,将结果输出。
这里要注意
1.0
分子是小数才会是小数,用
float
会溢出。
int
fm;
double
sum
=
0.0;
for
(fm
=
1;fm
<=
100;fm
++
)
{
if
(fm
%
2
==
0)
{
sum
-=
1.0
/
fm;
}else{
sum
+=
1.0
/
fm;
}
}
printf(
"the result is : %.2f"
,sum);
}
/* Note:Your choice is C IDE */19
#include
"stdio.h"
void
main()
{
int
arr[15][15];
int
i,j;
for
(i
=
0;i
<
10;i
++
)
{
arr[i][0]
=
1;
arr[i][i]
=
1;
}
//
从第三行开始出现规律
for
(i
=
2;i
<
10;i
++
)
{
for
(j
=
1;j
<
i;j
++
)
{
arr[i][j]
=
arr[i
-
1][j]
+
arr[i
-
1][j
-
1];
}
}
//
输出
for
(i
=
0;i
<
10;i
++
)
{
/*for(j=0;j<10-(i+1);j++){
printf("\t");
}*/
for
(j
=
0;j
<=
i;j
++
)
{
printf(
"%d\t"
,arr[i][j]);
}
printf(
"\n"
);
}
}