当前位置:首页 > 技能培训 > 正文

c语言基础编程100道,10道经典的C语言例题(含参考程序)

技能培训 · Sep 05, 2023

本文目录一览:

大学福音经典编程题适用于专升本


C语言100道适用专升本超有用
1.十进制数转任意进制数
2.数字三角形
3,编程求某年第 n 天的日期。
4.求周岁
5.编程求出使该算式成立时的这两个数
6.功能:(较难不用看) 编程求任意给两个日期(年 月日)相差的天数。
7.把一个数的二进制奇数位和偶数位交换
8.题目要求找出数组中的两个单身狗
9,数字字符串转换为整数
10.升序的数组插入一个数,还保持升序
11.输入年月判断该月多少天
12 .遍历法求名次
13.谁是凶手
14.输入一个整数数组,实现一个函数,来调整数组中的奇数和偶数的位置,奇数在前偶数在后
15.1元一瓶汽水,两个空瓶可以换一瓶,问20元可以喝多少瓶
16.打印一个菱形,输如n的打印2*n -1行的菱形
17.输入一个整数找出紧跟在他后面的素数
18.计数求和,Sn=2+22+222+2222+22222
19.输入两个数求最小公倍数和最大公因数,代码中有详解
20.一个数 +100之后是完全平方数,+168还是一个完全平方数
21.数字金字塔
22.字符串左旋
23.[稍难不用看] 要求:写一个函数判断一个字符串是否是另一个字符串旋转后得到的
24.给数组删除重复的元素
25.C语言编程题求1! + 2! + 3! + 4!....+N
26.C语言编程题求斐波那契数(循环法与递归法
27.C语言编程输入n,k求n的k次幂(递归与非递归)
28.(递归)输入一个数,把他的每一位相加在输出出来;
29,实现函数把字符数组的元素逆序 如“abc“,逆序成“cba“
30.递归拆分整数
31.设计以函数打印乘法口诀表
32构造一函数判断是否为素数100-200之间(只能被自己和1整除的数)
33.打印二进制数的奇数位和偶数位;分别打印二进制序列
34.计算M和N二进制中不同的位数,例如 1和7 有两位不同;
35输出1900到2000之间的所有闺年
36,猴子吃桃问题
37.选择排序法 升序排列
38.冒泡排序法
39.求3*3矩阵对角元素的和
40.把整数数组中的元素值逆序存放
41.杨辉三角形
42.折半查找---必须建立在有序的数组中
43,计算3行80个字符 的类型个数
44.原文与密码
45模拟strcat字符串连接函数
46.模拟strlen(3种方法)
47模拟strcmp
48.模拟字符串拷贝函数strcpy
49.strncpy的模拟
50.strncat模拟实现
51模拟strncmp
52.(较难些可以不看)模拟寻找子串的函数strstr
53.内存拷贝函数
54.判断一个数是不是素数:
53.3*3矩阵的转置
56任何比2大的偶数,总能表示两个素数
57.输入四位数字输出四个字符
58.把a数组的内容拷贝到b数组每拷贝三个放1个*
59.输入一串字符串把其中最长的字母拷贝放到另一个数组
60.16进制转换位10进制
61.输入10个整数,最大的和最后一个位置上的交换最小的和最前面的那个交换
62.报数问题n个人从1报数到3,每次报数到3的那个元素被清空
63.输入多个字符串,排序后输出
64.(难可不看)输入一个字符串,将连续的数字字符串放到另一个二维数组中
65.结构体指针问题
66.三天打鱼两天晒网,第 N 天是打鱼还是晒网?
67.输入多个字符串,然后输出最短的字符串
68.3 个数,有两个数一样, 找另一个数
69.有 1000 人捐款, 捐到 10 万就停止捐款。 统计捐款人数和总额
70.指定位置字符串逆序
71.水仙花数
72.求素数因子
73.判断一个数是不是完全平方数?
74.蠕虫问题
75.结构体排序学生情况
76.求一元二次方程的根, ax 方+bx + c=0,ab,c 自己输入
77.累加100--999之间个位数为7的素数女78斐波那契兔子
78迭代求平方根
79.累加二维数组边缘元素的和
80.逗号表达式方面小题
81.白马百担问题
82.八进制转10进制
83.func(func(x++,y++),func(--x,--y));函数调用问题
84.水手分桃子
85挖素数
86.两个有序递增 的数组存到另一个数组还是有序的
87.把字符串中的空格去掉女88.将b字符串的内容插入到a字符串,a字符串保持升席
89.用递归的方法把字符串逆序
90分解质因数
91.10进制转16进制
92.10进制转8进制
93.计算并输出n以内10个最大素数的和
94.完数
95打印X型图案
96.打印空心正方形
97.判断一个数组是否有序
98.整形数组删除指定的数字
99.给字符数组每个元素中间添加一个空格
100.旋转字符
101.求sinx近似值

初学编程100个代码( C语言编程)?

、学代码:前提是你的复有?个?较系统的学习.认真完成每?个课程中的案例.
2、读代码:分制两步?:前期能读懂??写的代码.2113 后期能读懂他?写的代码和?致的知道底层的某些源码的含义.多去5261看开发?档(开发?档建议使?官?提供的4102英?版、不要使?中???害??)
C语言是面向过程的编程语言,主要由函数组成,函数调用可以提高代码得复用性,代码能用函数的尽量使用函数
1.城乡收入差距适度性的判定
国际上通常以基尼系数为标准,将收入差距分为适度的收入差距和不适度的收入差距。按照国际惯例,当基尼系数在0.2—0.4之间,特别是在0.3—0.4之间时收入差距是适度的。而当基尼系数在0.2以下或0.4以上时收入差距是不适度的。基尼系数在0.2以下意味着收入分配过于平均。在此种状态下,人们处于竞争与活力缺乏的状态中,这不利于人们积极性的调动和国民经济效率的提高。而基尼系数在0.4以上则又意味着收入分配过于悬殊,将产生严重的社会负面效应。收入差距的适度性原则同样适用于城乡之间,但是因为城乡收入差距的衡量用得最多的是城乡收入差距指数。因此一般用城乡收入差距指数即城乡人均收入比率来说明城乡收入差距的适度性。根据国际劳工组织发表的1995年36个国家的资料,绝大多数国家的城乡人均收入比率都小于1.6,只有3个国家的比率超过2。据此,许多学者视城乡收入指数在1.5—2之间为城乡收入差距适度的警戒线。
2.我国城乡收入差距的适度性
统计资料显示:我国城乡居民收入差距指数从2000年到2004年一直处于2.5左右的水平。按照国际上通用的评判指标来看,我国的城乡收入差距非常之大,早就越过了国际警戒线。然而事实上由于各国的情况千差万别,同一水平的城乡收入差距指数在不同发展阶段和同一时期的不同国家所蕴涵的意义不同,对应的社会经济现象和后果有很大区别。我国国土面积幅员辽阔,农业人口众多,地域条件千差万别,所以在探讨我国收入差距的适度性时就不能盲目地套用国际惯例。而应该具体分析城乡收入差距与国家经济和社会稳定的关系。适度的城乡收入差距水平应当与一定的经济发展水平和发展阶段相适应,既能支持或促进国家经济的持续高效发展,又有利于社会稳定和进步。根据这一标准,考察改革开放以来我国经济发展和社会稳定的情况

求c语言程序设计实例80到100行

神奇了,这种作业都有!
#include /*头函数*/
int main(void) /*主函数*/
{
char c; /*指定c成为字符变量*/
printf("请输入0到9的任意一个数字\n"); /*输出请输入0到9的任意一个数字*/
c=getchar(); /*输入一个字符*/
while(c>=48&&c<=57) /*c的取值范围*/
{
getchar();
switch(c) /*根据c的值转换*/
{
case '0': printf("你喜欢奋斗吗?\n"); /*假如c=0,输出你喜欢奋斗吗?*/
break; /*中断跳出,执行c=getchar()*/
case '1': printf("你喜欢当模特吗?\n"); /*假如c=1,输出你喜欢当模特吗?*/
break; /*中断跳出,执行c=getchar()*/
case '2': printf("你喜欢和谐吗?\n"); /*假如c=2,输出你喜欢和谐吗?*/
break; /*中断跳出,执行c=getchar()*/
case '3': printf("你喜欢道家吗?\n"); /*假如c=3,输出你喜欢道家吗?*/
break; /*中断跳出,执行c=getchar()*/
case '4': printf("你是广东人吗?\n"); /*假如c=4,输出你是广东人吗?*/
break; /*中断跳出,执行c=getchar()*/
case '5': printf("你喜欢武术吗?\n"); /*假如c=5,输出你喜欢武术吗?*/
break; /*中断跳出,执行c=getchar()*/
case '6': printf("祝你一帆风顺!\n"); /*假如c=6,输出祝你一帆风顺!*/
break; /*中断跳出,执行c=getchar()*/
case '7': printf("观察等待好机会!\n"); /*假如c=7,输出观察等待好机会!*/
break; /*中断跳出,执行c=getchar()*/
case '8': printf("你喜欢交际吗?\n"); /*假如c=8,输出你喜欢交际吗?*/
break; /*中断跳出,执行c=getchar()*/
case '9': printf("追求完美吧!\n"); /*假如c=9,输出追求完美吧!*/
break; /*中断跳出,执行c=getchar()*/
}
c=getchar(); /*再输入一个字符*/
}
return 0; /*返回值*/
}

10道经典的C语言例题(含参考程序)


1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。
#include
#include
int main()
{
int bai_wei,shi_wei,ge_wei,i,sum=0;
for(i=100;i<1000;i++)
{
bai_wei=i/100;
shi_wei=(i%100)/10;
ge_wei=i%10;
if(i==pow(bai_wei,3)+pow(shi_wei,3)+pow(ge_wei,3))
{
printf("%d ",i);
sum++;
if(sum%5==0)
printf(" ");
}
}
printf(" ");
return 0;
}
2.请输入任意两个整数x和y,求其最大公约数和最小公倍数。
#include
int main()
{
int x,y,min,max,i;
printf("请输入任意两个整数:");
scanf("%d%d",&x,&y);
min=x>y?y:x;
max=x>y?x:y;
for(i=min;i>0;i--)
if(x%i==0&&y%i==0)
{
printf("这两个整数的最大公约数为:%d ",i);
break;
}
for(i=max;i<=x*y;i++)
if(i%x==0&&i%y==0)
{
printf("这两个整数的最小公倍数为:%d ",i);
break;
}
return 0;
}
3.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include
#include
#define N 50
int main()
{
int sum1=0,sum2=0,sum3=0,sum4,i=0;
char str[N];
printf("请输入一串字符串:");
scanf("%s",str);
for(i=0;i
{
if((str[i]>='a'&&str[i]='A'&&str[i]<='Z'))
sum1++;
if(str[i]==' ')
sum2++;
if(str[i]>='0'&&str[i]<='9')
sum3++;
}
sum4=strlen(str)-sum1-sum2-sum3;
printf("英文字母的个数:%d ",sum1);
printf("空格的个数:%d ",sum2);
printf("数字的个数:%d ",sum3);
printf("其他符号的个数:%d ",sum4);
return 0;
}
4.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
#include
#include
int main()
{
int a,n,s=0,i,x=0,y=0;
printf("请输入整数a的值:");
scanf("%d",&a);
printf("请输入相加的个数n:");
scanf("%d",&n);
for(i=0;i
{
x=y+2*pow(10,i);
y=x;
s=s+x;
}
printf("s=%d ",s);
return 0;
}
5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。
#include
int main()
{
int sum=0,i,j;
printf("在1000以内的完数有:");
for(i=2;i<=1000;i++)
{
for(j=1;j
if(i%j==0)
sum=sum+j;
if(sum==i)
printf("%d ",i);
sum=0;
}
printf(" ");
return 0;
}
6.输入一个不多于5位的正整数,要求:1、求它是几位数;2、逆序打印出个位数字。
#include
int pows(int a,int n)
{
int sum=1,i;
for(i=0;i
sum=sum*a;
return sum;
}
int main()
{
int n,i,k,x;
printf("n=");
scanf("%d",&n);
for(i=1;i<6;i++)
if(n/pows(10,i)==0)
{
printf("%d ",i);
k=i;
break;
}
for(i=0;i
{
x=n/pows(10,i)%10;
printf("%d",x);
}
printf(" ");
return 0;
}
7.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#include
int main()
{
int n,a[5],i=0;
printf("请输入一个5位数:");
scanf("%d",&n);
while(n!=0)
{
a[i]=n%10;
n=n/10;
i++;
}
if(a[0]==a[4]&&a[1]==a[3])
printf("这个数是回文数 ");
else
printf("这个数不是回文数 ");
return 0;
}
8.利用递归算法,将所输入的5个字符,以相反顺序打印出来。
#include
void digui(char a[],int n)
{
if(n==1)
printf("%c",a[0]);
else
{
printf("%c",a[n-1]);
digui(a,n-1);
}
}
int main()
{
char str[5];
printf("请输入5个字符:");
scanf("%s",str);
digui(str,5);
printf(" ");
return 0;
}
9.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…球出这个序列的前20项之和。
#include
int main()
{
int i,a=1,b=1;
float sum=0.0;
for(i=1;i<=20;i++)
{
sum=sum+(float)(a+i)/b;
b=a+i;
a=i;
}
printf("sum=%f ",sum);
return 0;
}
10.利用递归算法求5!。
#include
int digui(int n)
{
if(n==1)
return 1;
else
return n*digui(n-1);
}
int main()
{
int n,sum;
printf("n:");
scanf("%d",&n);
sum=digui(n);
printf("sum=%d ",sum);
return 0;
}

单片机c语言编程100个实例

51单片机C语言编程实例 基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。 C语言编程基础: 1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚) 代码 1. #include //该头文档中有单片机内部资源的符号化定义,其中包含P1.3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。 在某引脚输出低电平的编程方法:(比如P2.7引脚) 代码 1. #include //该头文档中有单片机内部资源的符号化定义,其中包含P2.7 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 在某引脚输出方波编程方法:(比如P3.1引脚) 代码 1. #include //该头文档中有单片机内部资源的符号化定义,其中包含P3.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 5. { 6. P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC 7. P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND 8. } //由于一直为真,所以不断输出高、低、高、低……,从而形成方波 9. } 将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) ) 代码 1. #include //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { 7. if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC 8. { P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 2 51单片机C语言编程实例 9. else //否则P1.1输入为低电平GND 10. //{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 11. { P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC 12. } //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平 13. } 将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) ) 代码 1. #include //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { //取反的方法是异或1,而不取反的方法则是异或0 7. P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出 8. } //由于一直为真,所以不断将P3取反输出到P2 9. } 注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。 第一节:单数码管按键显示 单片机最小系统的硬件原理接线图: 1. 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF 2. 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF 3. 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理 4. 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机I/O输出 将一发光二极管LED的正极(阳极)接P1.1,LED的负极(阴极)接地GND。只要P1.1输出高电平VCC,LED就正向导通(导通时LED上的压降大于1V),有电流流过LED,至发LED发亮。实际上由于P1.1高电平输出电阻为10K,起到输出限流的作用,所以流过LED的电流小于(5V-1V)/10K = 0.4mA。只要P1.1输出低电平GND,实际小于0.3V,LED就不能导通,结果LED不亮。 开关双键的输入:输入先输出高 一个按键KEY_ON接在P1.6与GND之间,另一个按键KEY_OFF接P1.7与GND之间,按KEY_ON后LED亮,按KEY_OFF后LED灭。同时按下LED半亮,LED保持后松开键的状态,即ON亮OFF灭。 代码 1. #include 2. #define LED P1^1 //用符号LED代替P1_1 3. #define KEY_ON P1^6 //用符号KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符号KEY_OFF代替P1_7 5. void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值 6. { 7. KEY_ON = 1; //作为输入,首先输出高,接下KEY_ON,P1.6则接地为0,否则输入为1 8. KEY_OFF = 1; //作为输入,首先输出高,接下KEY_OFF,P1.7则接地为0,否则输入为1 9. While( 1 ) //永远为真,所以永远循环执行如下括号内所有语句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1输出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1输出低,LED灭 13. } //松开键后,都不给LED赋值,所以LED保持最后按键状态。 14. //同时按下时,LED不断亮灭,各占一半时间,交替频率很快,由于人眼惯性,看上去为半亮态 15. } 数码管的接法和驱动原理 一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。作为习惯,分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。 我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。 以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据

c语言100道题中,兔子生兔子程序怎么理解

有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列:
1, 1, 2, 3, 5, 8, 13, 21 ....下面使用了迭代、递归和数组三种解法。【代码一】使用迭代:
#include int main(){ long f1=1, f2=1; // 兔子的数量 int i; // 循环次数 int n; // 要计算的月份 printf("输入要计算的月数:"); scanf("%d", &n); // 计算出循环次数 if(n%2==1){ n = (n+1)/2; }else{ n = n/2; } for(i=1;i<=n;i++){ printf("第%d个月有%d只\n", i*2-1, f1); printf("第%d个月有%d只\n", i*2, f2); f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } return 0;}运行结果:
输入要计算的月数:10第1个月有1只第2个月有1只第3个月有2只第4个月有3只第5个月有5只第6个月有8只第7个月有13只第8个月有21只第9个月有34只第10个月有55只【方法二】使用递归:
#includeint Feibonacci(int n){ if(n==1||n==2) return 1; else return Feibonacci(n-1)+Feibonacci(n-2);}int main(){ int n; // 要计算的月份 printf("输入要计算的月数:"); scanf("%d", &n); printf("%d个月的兔子总数为%d\n", n, Feibonacci(n)); return 0;}运行结果:
输入要计算的月数:1010个月的兔子总数为55递归看上去非常符合逻辑,但是这种递归效率是非常慢的,不信你计算20, 30, 40 个月的兔子数试试,明显比另外两种方法慢多了,具体分析请看:C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈【代码三】使用数组
#includevoid main(){ int a[100] ,i,n; printf("请输入月数:"); scanf("%d",&n); a[0]=a[1]=1; for(i=2;i请输入月数:10第10个月的兔子为:55

C语言 编程题目 程序设计题目 高中信息科技竞赛编程题目 【100分】

第一题:先分成2部分,第一部分剪出最大圆,就是取长宽的最小值为半径,计算周长。之后计算体积,保存体积。
逐渐扩大剪出的第一部分的面积,重复上面的计算,将每次计算的结构与第一次计算的体积比较,若新的值大,则保留,反之则弃之。
思路就是这样,程序慢慢做。第二题明天看,吃饭了。。。。
【第一道】
#include
using namespace std;
#define pi 3.14159265
double maxvolume(double a,double b)
{
double v1,v2,r;
r=b/(2*pi+2);
v1=pi*r*r*a;
r=a/(2*pi+2);
v2=pi*r*r*b;
if(v1>v2)
return v1;
else
return v2;
}
int main()
{
double a,b;
cout<<"请输入矩形的长宽:";
cin>>a;
cin>>b;
cout<<"最大圆柱体积:"<return 0;
}
【第二道】
//事实上,涂色方案不止样例上的一种,我把所有的可行方案都输出了一下
#include
using namespace std;
int data[][8]={ {0},
{0,0,1,0,0,0,1,1},
{0,1,0,1,1,1,1,0},
{0,0,1,0,1,0,0,0},
{0,0,1,1,0,1,0,0},
{0,0,1,0,1,0,1,0},
{0,1,1,0,0,1,0,1},
{0,1,0,0,0,0,1,0}
};
int total;
int color[8];
char COLOR[5]={' ','R','Y','B','W'};
void output()
{
total++;
cout<<"["<for(int i=1;i<=7;i++)
{
cout.width(2);
cout<}
cout<}
bool checkcolor(int s)
{
for(int i=1;i<=7;i++)
{
if(data[i][s]==1&&color[i]==color[s])
return false;
}
return true;
}
void drawcolor(int s)
{
if(s>7)
output();
else
for(int i=1;i<=4;i++)
{
color[s]=i;
if(checkcolor(s))
drawcolor(s+1);
}
}
int main()
{
cout<<" \t";
for(int i=1;i<=7;i++)
{
cout.width(2);
cout<}
cout<drawcolor(1);
cout<return 0;
}

编程高手请进!(C语言)

1.
#include
#include
#include
main()
{
int count;/*猜数字的次数*/
int number;/*系统产生的随机数字*/
int guess;/*程序员输入数字*/
char yes='Y';
clrscr();
printf("\nNow let us play the game.\n Guess the number:");
while (toupper(yes)=='Y')
{
count=0;
randomize();
number=random(100)+1;
do
{
do
{
printf("\nInput an integer number(1~100):");
scanf("%d",&guess);
}while(!(guess>=1&&guess<=100));/*结束第二层DO~WHILE循环*/
if (guessprintf("\n Your answer is low,try again!");/*如果用户输入的数字小于系统随机数,则输出数字太小的提示信息*/
if (guess>number)
printf("\n Your answer is high,try again!");/*如果用户输入的数字大于系统随机数,则输出数字太小的提示信息*/
count++;/*猜测次数加一*/
if (count==15)
{
printf("\n This is the %d times! Think it hard next!",count);
exit(0);/*如猜测15次还没猜对,则退出游戏*/
}
}while (!(guess==number));
if (count<=7)/*猜测的次数小于7次*/
{
printf("\n You have got it in %d times.\n",count);
printf("\n you guess right,Congretulations!");/*游戏成功则提示祝贺信息*/
}
else
{
printf("\n You got it in %d times.\n",count);
printf("\n I bet you can do it better!");/*游戏失败则提示鼓励信息*/
}
printf("\n NEXT?(Y/N):");/*选择是否重新游戏*/
scanf("%c",&yes);
}
}
2.
#include
void main()
{
int gj, mj, xj, t1, t2;
for (gj=1; gj<=20; gj++)
{
for (mj=1; mj<34; mj++)
{
xj=100-gj-mj;
t1=xj%3;
t2=5*gj+3*mj+xj/3;
if (t1==0&&t2==100)
printf("gj=%d,mj=%d,xj=%d\n",gj,mj,xj);
}
}
}
3.
/* (a part of parser)
simple integer arithmetic calculator
-> {}
-> + | -
-> { }
-> * | /
-> () | Number
see( page 12 of textbook )
Inputs a line of text from array
Outputs "Error" or the result.
*/
#include
#include
#include
#include
#include
char token;
char array[50]="";
int pos=0;
char string[50]="";
int exp(void);
int term(void);
int factor(void);
bool isnumber(char ch)
{
if(ch>=48 && ch<=57)
return(true);
else return(false);
}
int CharToInt(char ch)
{
int temp = 0;
while((ch >= 48)&&(ch <= 57))
{
temp = temp*10+(ch-48);
ch = GetNextChar();
}
return temp;
}
void Error(char ch,int type)
{
if(type==0)
{
cout<<"Error: Missing symbol "<getch();
}
else if(type==1)
{
cout<<"Error: "<<"'"<getch();
}
else{printf("Error: '%c' is unwanted !\n",token);getch();}
exit(1);
}
char GetNextChar()
{
return(array[pos++]);
}
void Match(char shouldtoken)
{
if(token==shouldtoken)
token=GetNextChar();
else Error(shouldtoken,0);
}
void ReadTextFile(char str[])
{
FILE *fp;
char ch;
int i=0;
if((fp=fopen("text.txt","r"))==NULL)
{
printf("the file text.txt can not open!\n");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
str[i++]=ch;
ch=fgetc(fp);
}
strcpy(string,str);
str[i]='.';
fclose(fp);
}
//***********************************************************8
void main()
{
ReadTextFile(array);
int result;
token=GetNextChar();
result=exp();
if(token=='.')
printf("\n\n\ %s = %d\n\n",string,result);
else Error(token,2);
cout<<"input any key to exit....."<getch();
}
int exp(void)
{
int temp=term();
while((token=='+')||(token=='-'))
switch(token)
{
case '+':
Match('+');
temp+=term();
break;
case '-':
Match('-');
temp-=term();
break;
default:
break;
}
return(temp);
}
int term(void)
{
int temp=factor();
while((token=='*')||(token=='/'))
switch(token)
{
case '*':
Match('*');
temp*=factor();
break;
case '/':
Match('/');
temp/=factor();
break;
default:break;
}
return(temp);
}
int factor(void)
{
int temp;
if(token=='(')
{
Match('(');
temp=exp();
Match(')');
}
else if(isnumber(token))
{
temp=CharToInt(token);
token=GetNextChar();
}
else Error(token,1);
return(temp);
}
4.
#include
int main(void)
{
int a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
return 0;
}
5.
int binarysearch(int a[],int x,int n)
{
int left,right,middle;
left=0;
right=n-1;
while(left<=right)
{
middle=(left+right)/2;
if(x==a[middle])
return middle;
if(x>a[middle])
left=middle+1;
else right=middle-1;
}
return -1;
}
8.
#include
#include
int cmp(const void* a, const void* b)
{
return (int)(*(char*)b - *(char*)a);
}
int sort(int n)
{
char buf[8];
sprintf(buf, "%d", n);
qsort(buf, 5, 1, cmp);
return atoi(buf);
}
int main(void)
{
int n;
scanf("%d", &n);
if(9999 < n && n < 100000)
printf("%d\n", sort(n));
return 0;
}
9.
int fun(int p[m][N],int m,int N)//m为行数,n为列数
{
int sum = 0;
for(int i=0;isum += p[m][0];
for(int j=0;jsum += p[m][n-1];
for(int k=1;ksum += p[0][k];
for(int k=1;ksum += p[m-1][k];
return sum;
}
10.
char[] substr(char s[],int n1,int n2){
char ret[255];int i = 0;
for(;iret[i++] = '\0';
return ret;
}

C语言编程 100以内整数加减法

srand(time(0));int a[20];for(int i=0;i<20;i++){ a[i]=rand()%100;}for(int i=10;i<20;i+=2){ if(a[i]=10&x=a[i]-a[i+1]) ) { score+=10; cout<"回答正确"<#include
#include
int main()
{
int a[20];
int i;
for(i = 0;i < 20;i++)
{
a[i] = rand() % 100;
}
retunr 0;
}
仅此提示到这里,以上只是随机产生20个小于一百的整数并放入a[20]这个数组。后面的应该很容易的!
#include
#include
#include
void rnd(int m, int *a, int n)
{
int *p = (int*)malloc(m*sizeof(int));
int i,t;
for(i=0;i for(i=0;i {
t=rand()%m--;
a[i]=p[t];
p[t]=p[m];
}
free(p);
}
int main()
{
int a[20],i;
srand(time(0));
rnd(21,a,20);
for(i=0;i<20;i++)printf("%d ",a[i]);
}
这对于初学者还真不简单;要产生真正的随机数,必须用时间函数初始化随机种子,还有相应提示等。你参考下下面的代码:
#include#include#includeint main(){ int i,a[20],answer,score=0; srand(time(NULL)); for(i=0;i<20;i++) a[i]=rand()%90+10;//产生20个10到99间的随机数 printf("请输入答案,共10道题:\n"); for(i=0;i<10;i+=2) {//取前10个数,组成5个加法题 printf("%d+%d=",a[i],a[i+1]); scanf("%d",&answer); if(a[i]+a[i+1]==answer) score+=10;//对了加10分 } for(;i<20;i+=2) {//取前10个数,组成5个加法题 if(a[i]>a[i+1])//保证不出现小的数减大的数 printf("%d-%d=",a[i],a[i+1]); else printf("%d-%d=",a[i+1],a[i]); scanf("%d",&answer); if(a[i]-a[i+1]==answer) score+=10;//对了加10分 } switch(score){ case 100: printf("酷毙了!!\n");break; case 80: case 90: printf("真棒!\n");break; case 60: case 70: printf("真不错哦!!!\n");break; default: printf("要加油哦!\n"); } return 0;}