版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计经典100例说明:本文100例按「基础语法→数组字符串→指针→函数→结构体→文件操作→算法进阶→综合应用」分类,覆盖C语言核心知识点,每例均提供完整可运行代码、详细解析及注意事项,适配C99标准,可直接用GCC(gcc文件名.c-std=c99-o文件名)编译运行,适合初学者入门练习、进阶者巩固提升。第一部分:基础语法(1-10例)例1:HelloWorld(最基础C程序)题目:编写程序,输出"Hello,World!"。分析:C语言入门第一个程序,核心是掌握printf函数的基本使用,以及程序的基本结构(包含头文件、main函数、return语句)。c
#include<stdio.h>//包含标准输入输出头文件,printf函数需此头文件
intmain(){//程序入口,main函数是C程序的必选函数
printf("Hello,World!\n");//输出字符串,\n表示换行
return0;//表示程序正常结束,返回0给操作系统
}注意:每个语句末尾必须加分号;printf函数的双引号内是要输出的内容,转义字符\n用于换行。例2:交换两个整数(两种方法)题目:从键盘输入两个整数,交换它们的值并输出。分析:方法1(借助临时变量):最直观,用第三方变量暂存一个值,避免交换时数据丢失;方法2(利用异或运算):无需临时变量,利用异或的性质(a^a=0,a^0=a)实现交换,适合进阶理解位运算。c
#include<stdio.h>
intmain(){
inta,b,temp;
printf("请输入两个整数(用空格分隔):");
scanf("%d%d",&a,&b);//读取键盘输入,&是取地址符,用于接收输入值
//方法1:借助临时变量(推荐初学者使用)
temp=a;
a=b;
b=temp;
//方法2:利用异或运算(无需临时变量),注释方法1后可运行
//a=a^b;
//b=a^b;
//a=a^b;
printf("交换后:a=%d,b=%d\n",a,b);
return0;
}
注意:scanf函数中,变量前必须加&(除数组名外),否则无法接收输入;异或交换仅适用于整数,不适用于浮点数。例3:判断一个数是否为完全平方数题目:从键盘输入一个正整数,判断该数是否为完全平方数(如4、9、16,其平方根为整数)。分析:利用数学库中的sqrt函数计算该数的平方根,将平方根强制转换为整数后,再平方与原数比较,若相等则为完全平方数;需包含math.h头文件。c
#include<stdio.h>
#include<math.h>//sqrt函数所需头文件
intmain(){
intn;
printf("请输入一个正整数:");
scanf("%d",&n);
intsqrt_n=(int)sqrt(n);//计算平方根并强制转换为整数
if(sqrt_n*sqrt_n==n){//判断平方后是否等于原数
printf("%d是完全平方数\n",n);
}else{
printf("%d不是完全平方数\n",n);
}
return0;
}
注意:编译时需加-lm参数(gcc文件名.c-std=c99-o文件名-lm),否则会提示sqrt函数未定义;sqrt函数返回值为double类型,强制转换为int时会舍弃小数部分。例4:根据日期判断当年第几天题目:输入某年某月某日,计算这一天是该年的第几天(需考虑闰年)。分析:先计算该月之前所有月份的总天数,再加上当月天数;闰年2月有29天,平年2月有28天,闰年判断规则:能被400整除,或能被4整除但不能被100整除。c
#include<stdio.h>
intmain(){
intyear,month,day,sum=0;
printf("请输入年月日(格式:年月日,用空格分隔):");
scanf("%d%d%d",&year,&month,&day);
//计算当月之前所有月份的总天数
switch(month){
case1:sum=0;break;//1月之前无月份,总天数为0
case2:sum=31;break;//1月有31天
case3:sum=31+28;break;//1+2月(默认平年)
case4:sum=31+28+31;break;
case5:sum=31+28+31+30;break;
case6:sum=31+28+31+30+31;break;
case7:sum=31+28+31+30+31+30;break;
case8:sum=31*4+30*2+28;break;
case9:sum=31*5+30*2+28;break;
case10:sum=31*6+30*2+28;break;
case11:sum=31*7+30*3+28;break;
case12:sum=31*8+30*3+28;break;
default:printf("月份输入错误!\n");return1;//输入错误,退出程序
}
//判断是否为闰年,若为闰年且月份大于2,总天数加1
if((year%400==0)||(year%4==0&&year%100!=0)){
if(month>2){
sum+=1;
}
}
sum+=day;//加上当月天数
printf("%d年%d月%d日是该年的第%d天\n",year,month,day,sum);
return0;
}
注意:switch语句中,每个case后必须加break,否则会继续执行下一个case;闰年判断逻辑需准确,避免遗漏特殊年份(如2000年是闰年,1900年不是闰年)。例5:将三个数按由小到大顺序输出题目:输入三个整数,按从小到大的顺序输出。分析:通过多次比较和交换,将最小的数放到最前面,中间的数放中间,最大的数放最后;可通过if语句嵌套实现,逻辑清晰,适合初学者掌握比较和交换逻辑。c
#include<stdio.h>
intmain(){
intx,y,z,temp;
printf("请输入三个整数(用空格分隔):");
scanf("%d%d%d",&x,&y,&z);
//确保x是最小的数
if(x>y){temp=x;x=y;y=temp;}
if(x>z){temp=x;x=z;z=temp;}
//确保y是中间的数(此时x已最小,只需比较y和z)
if(y>z){temp=y;y=z;z=temp;}
printf("从小到大顺序:%d<%d<%d\n",x,y,z);
return0;
}
注意:交换逻辑需严谨,避免出现数据覆盖;也可使用数组排序实现,后续数组章节会详细讲解。例6:用字符输出字母C的图案题目:用字符(如'*')打印出字母C的图案。分析:先在纸上勾勒出字母C的轮廓,确定每行需要输出的字符和空格数量,通过printf函数逐行输出,利用空格控制字符的位置,形成C的形状。c
#include<stdio.h>
intmain(){
//逐行输出,空格控制位置,*组成C的轮廓
printf("****\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("****\n");
return0;
}
注意:每行的空格和字符数量需对应,否则图案会变形;可根据需求修改字符(如将'*'改为'#'),调整空格数量改变图案大小。例7:输出菱形图案题目:用'*'输出一个菱形图案(以5行菱形为例,可扩展)。分析:菱形分为上半部分(递增)和下半部分(递减),上半部分每行的空格数递减、*数递增,下半部分相反;通过循环控制行数、空格数和*数,实现图案的动态生成。c
#include<stdio.h>
intmain(){
intn=5;//菱形的行数(奇数,可修改为3、7等)
inti,j,k;
//上半部分(包括中间一行)
for(i=1;i<=(n+1)/2;i++){
//输出空格
for(j=1;j<=(n+1)/2-i;j++){
printf("");
}
//输出*
for(k=1;k<=2*i-1;k++){
printf("*");
}
printf("\n");//换行
}
//下半部分(不包括中间一行)
for(i=(n+1)/2-1;i>=1;i--){
//输出空格
for(j=1;j<=(n+1)/2-i;j++){
printf("");
}
//输出*
for(k=1;k<=2*i-1;k++){
printf("*");
}
printf("\n");//换行
}
return0;
}
注意:n需设为奇数,否则菱形会不对称;修改n的值可改变菱形的大小,例如n=3时为小菱形,n=7时为大菱形。例8:打印9*9乘法口诀表题目:打印标准的9*9乘法口诀表(上三角或下三角均可)。分析:使用双重循环,外层循环控制行数(1-9),内层循环控制每行的列数(1-当前行数),通过printf函数格式化输出,确保口诀表对齐美观。c
#include<stdio.h>
intmain(){
inti,j;
//外层循环控制行数(i表示被乘数)
for(i=1;i<=9;i++){
//内层循环控制列数(j表示乘数,j<=i,避免重复)
for(j=1;j<=i;j++){
//%2d表示占2个字符宽度,确保对齐
printf("%d×%d=%2d",j,i,i*j);
}
printf("\n");//每行结束换行
}
return0;
}
注意:printf中的%2d用于格式化输出,使口诀表对齐;若想打印上三角口诀表,可将内层循环改为j从i到9。例9:输出国际象棋棋盘图案(黑白交替)题目:用'*'和空格输出8*8的国际象棋棋盘(黑白交替,即相邻格子颜色不同)。分析:国际象棋棋盘共8行8列,每行的起始字符交替变化(第一行以空格开始,第二行以*开始,依次交替);通过双重循环,判断行和列的奇偶性,控制输出空格或*。c
#include<stdio.h>
intmain(){
inti,j;
//外层循环控制行数(8行)
for(i=1;i<=8;i++){
//内层循环控制列数(8列)
for(j=1;j<=8;j++){
//行+列为偶数时输出空格,奇数时输出*(交替效果)
if((i+j)%2==0){
printf("");
}else{
printf("*");
}
//每两个字符之间加一个空格,使棋盘更清晰
printf("");
}
printf("\n");//每行结束换行
}
return0;
}
注意:可通过调整输出的字符(如用'○'和'●')优化视觉效果;修改循环条件(如i和j到10)可生成更大的棋盘。例10:用字符打印笑脸图案题目:用简单字符组合,打印一个笑脸图案。分析:结合圆形轮廓(用'*'或'○')、眼睛(用'●'或'*')、嘴巴(用'_'或')('),逐行设计字符的位置,通过printf函数逐行输出,形成笑脸形状。c
#include<stdio.h>
intmain(){
//笑脸图案,可根据需求调整字符和空格
printf("******\n");
printf("**\n");
printf("*●●*\n");
printf("*∩*\n");
printf("**\n");
printf("******\n");
return0;
}
注意:特殊字符(如●、∩)可能因编译器或终端编码问题显示异常,可替换为普通字符(如*、_)。第二部分:数组与字符串(11-25例)例11:求解斐波那契数列(递归/非递归)题目:输出斐波那契数列的前n项(n由用户输入),分别用递归和非递归方法实现。分析:斐波那契数列规律:第1项为1,第2项为1,从第3项开始,每一项等于前两项之和(1,1,2,3,5,8...);非递归方法效率高(避免重复计算),递归方法逻辑简洁(适合理解递归思想)。c
#include<stdio.h>
//递归函数:求斐波那契数列第n项
intfib_recursive(intn){
if(n==1||n==2){
return1;//前两项均为1
}
returnfib_recursive(n-1)+fib_recursive(n-2);//递归公式
}
//非递归函数:输出前n项斐波那契数列
voidfib_non_recursive(intn){
inta=1,b=1,c;
if(n>=1)printf("%d",a);
if(n>=2)printf("%d",b);
for(inti=3;i<=n;i++){
c=a+b;
printf("%d",c);
a=b;//更新a为前一项
b=c;//更新b为当前项
}
}
intmain(){
intn;
printf("请输入斐波那契数列的项数n:");
scanf("%d",&n);
if(n<=0){
printf("请输入正整数!\n");
return1;
}
//非递归方法(推荐,效率高)
printf("非递归方法输出前%d项:",n);
fib_non_recursive(n);
printf("\n");
//递归方法(适合理解递归,n较大时效率低)
printf("递归方法输出前%d项:",n);
for(inti=1;i<=n;i++){
printf("%d",fib_recursive(i));
}
printf("\n");
return0;
}
注意:递归方法在n较大时(如n>30)会出现明显卡顿,因为存在大量重复计算;实际开发中优先使用非递归方法。例12:找出101到200之间的所有素数题目:编写程序,找出101到200之间的所有素数,并统计素数的个数。分析:素数是指大于1、且只能被1和自身整除的数;判断一个数是否为素数,可遍历2到该数的平方根,若能被其中任何一个数整除,则不是素数,否则是素数;遍历101到200的所有数,逐个判断并统计。c
#include<stdio.h>
#include<math.h>
//判断一个数是否为素数,是则返回1,否则返回0
intis_prime(intnum){
if(num<=1)return0;//小于等于1的数不是素数
for(inti=2;i<=sqrt(num);i++){
if(num%i==0){
return0;//能被整除,不是素数
}
}
return1;//不能被整除,是素数
}
intmain(){
intcount=0;//统计素数个数
printf("101到200之间的素数:\n");
for(inti=101;i<=200;i++){
if(is_prime(i)){
printf("%d",i);
count++;
}
}
printf("\n101到200之间共有%d个素数\n",count);
return0;
}
注意:判断素数时,循环只需遍历到sqrt(num),无需遍历到num-1,可大幅提高效率;101到200之间共有21个素数,可用于验证程序正确性。例13:找出指定范围内的水仙花数题目:找出100到999之间的所有水仙花数(水仙花数:三位数,其各位数字的立方和等于自身,如153=1³+5³+3³)。分析:遍历100到999的所有三位数,拆分每个数的百位、十位、个位,计算三个数字的立方和,若等于原数,则为水仙花数;拆分方法:百位=num/100,十位=(num/10)%10,个位=num%10。c
#include<stdio.h>
intmain(){
intnum,hundreds,tens,units;
printf("100到999之间的水仙花数:\n");
for(num=100;num<=999;num++){
//拆分百位、十位、个位
hundreds=num/100;
tens=(num/10)%10;
units=num%10;
//判断是否为水仙花数(立方和等于自身)
if(hundreds*hundreds*hundreds+tens*tens*tens+units*units*units==num){
printf("%d",num);
}
}
printf("\n");
return0;
}
注意:100到999之间的水仙花数共有4个:153、370、371、407,可验证程序输出是否正确;若要扩展到四位数(四叶玫瑰数),可修改遍历范围和立方和为四次方和。例14:对输入的正整数分解质因数题目:输入一个正整数,将其分解为质因数的乘积(如12=2×2×3,18=2×3×3)。分析:质因数是指能整除该数的质数,分解质因数的思路:从最小的质数2开始,依次尝试整除该数,若能整除,则记录该质数,并用商继续分解,直到商为1;若不能整除,则尝试下一个质数。c
#include<stdio.h>
intmain(){
intnum,i=2;
printf("请输入一个正整数:");
scanf("%d",&num);
if(num<=1){
printf("请输入大于1的正整数!\n");
return1;
}
printf("%d=",num);
//分解质因数
while(num!=1){
//若i能整除num,则i是质因数
while(num%i==0){
printf("%d",i);
num=num/i;//更新num为商
if(num!=1){
printf("×");//不是最后一个质因数,输出×
}
}
i++;//尝试下一个数
}
printf("\n");
return0;
}
注意:分解过程中,i会自动跳过非质数,因为非质数的因数已被更小的质数整除(如i=4时,若num能被4整除,早已被i=2整除);输入1或0时需提示错误。例15:用三目运算符求两个数的最大值题目:输入两个整数,用三目运算符(条件运算符)求它们的最大值。分析:三目运算符格式:条件表达式?表达式1:表达式2;若条件表达式为真,返回表达式1的值,否则返回表达式2的值;用三目运算符可简洁实现两数比较,无需if-else语句。c
#include<stdio.h>
intmain(){
inta,b,max;
printf("请输入两个整数(用空格分隔):");
scanf("%d%d",&a,&b);
//三目运算符求最大值:a>b为真则max=a,否则max=b
max=(a>b)?a:b;
printf("两个数的最大值是:%d\n",max);
return0;
}注意:三目运算符可嵌套使用(如求三个数的最大值),但嵌套过多会降低代码可读性;优先级低于算术运算符,使用时可适当加括号。例16:求两个数的最大公约数和最小公倍数题目:输入两个正整数,求它们的最大公约数(GCD)和最小公倍数(LCM)。分析:最大公约数:能同时整除两个数的最大整数,用欧几里得算法(辗转相除法)求解,效率最高;最小公倍数:两个数的乘积除以它们的最大公约数(LCM=a×b/GCD);注意避免a×b溢出,可先计算a/GCD再乘b。c
#include<stdio.h>
//欧几里得算法:求两个数的最大公约数
intgcd(inta,intb){
while(b!=0){
inttemp=b;
b=a%b;//余数赋值给b
a=temp;//原来的b赋值给a
}
returna;//当b=0时,a即为最大公约数
}
//求两个数的最小公倍数
intlcm(inta,intb){
//先算a/gcd,再乘b,避免a*b溢出
return(a/gcd(a,b))*b;
}
intmain(){
inta,b;
printf("请输入两个正整数(用空格分隔):");
scanf("%d%d",&a,&b);
if(a<=0||b<=0){
printf("请输入正整数!\n");
return1;
}
intg=gcd(a,b);
intl=lcm(a,b);
printf("最大公约数(GCD):%d\n",g);
printf("最小公倍数(LCM):%d\n",l);
return0;
}注意:欧几里得算法的核心是“辗转相除”,直到余数为0;最小公倍数的计算顺序(先除后乘)可避免两个大数相乘导致的整数溢出。例17:统计字符串中字母、数字、空格及其他字符的个数题目:输入一个字符串,统计其中英文字母(大小写)、数字、空格、其他字符的个数。分析:遍历字符串的每个字符,通过字符的ASCII码范围判断字符类型:字母(A-Z:65-90,a-z:97-122)、数字(0-9:48-57)、空格(32),其余为其他字符;用四个计数器分别统计各类字符的个数。c
#include<stdio.h>
#include<string.h>//strlen函数所需头文件
intmain(){
charstr[1000];//定义字符串数组,存储输入的字符串
intletter=0,digit=0,space=0,other=0;
inti,len;
printf("请输入一个字符串:");
gets(str);//读取字符串(包含空格),也可用fgets(str,1000,stdin)
len=strlen(str);//获取字符串长度
for(i=0;i<len;i++){
//判断字符类型
if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')){
letter++;//字母计数
}elseif(str[i]>='0'&&str[i]<='9'){
digit++;//数字计数
}elseif(str[i]==''){
space++;//空格计数
}else{
other++;//其他字符计数
}
}
printf("字母个数:%d\n",letter);
printf("数字个数:%d\n",digit);
printf("空格个数:%d\n",space);
printf("其他字符个数:%d\n",other);
return0;
}
注意:gets函数存在安全漏洞(可能导致缓冲区溢出),实际开发中建议用fgets替代;strlen函数计算的是字符串的有效长度(不包含末尾的'\0')。例18:计算s=a+aa+aaa+aaaa+...+a...a(n个a)的值题目:输入两个正整数a(1-9)和n(1-10),计算s=a+aa+aaa+...+a...a(n个a)的值(如a=2,n=3,s=2+22+222=246)。分析:观察规律,每一项都是前一项乘以10再加上a(如2→22=2×10+2,22→222=22×10+2);用循环控制n次,每次计算当前项,累加到总和s中。c
#include<stdio.h>
intmain(){
inta,n;
longlongs=0,term=0;//用longlong避免溢出(n=10时,项数较大)
printf("请输入a(1-9)和n(1-10):");
scanf("%d%d",&a,&n);
if(a<1||a>9||n<1||n>10){
printf("输入错误!a需为1-9,n需为1-10\n");
return1;
}
for(inti=1;i<=n;i++){
term=term*10+a;//计算当前项(如i=1:term=2;i=2:term=22)
s+=term;//累加到总和
}
printf("s=%lld\n",s);
return0;
}
注意:当n较大(如n=10,a=9)时,总和会超过int类型的范围(int最大约21亿),因此用longlong类型存储s和term,避免溢出;输出时用%lld格式化。例19:找出指定范围内的完数题目:找出1到1000之间的所有完数(完数:一个数等于它所有真因子的和,真因子:除自身以外能整除该数的正整数,如6=1+2+3,28=1+2+4+7+14)。分析:遍历1到1000的所有数,对每个数,找出其所有真因子(遍历1到num/2,因为真因子最大不超过num/2),计算真因子的和,若和等于原数,则为完数;1不是完数,可直接跳过。c
#include<stdio.h>
//判断一个数是否为完数,是则返回1,否则返回0
intis_perfect(intnum){
if(num<=1)return0;//1不是完数
intsum=1;//1是所有大于1的数的真因子,先加入和中
for(inti=2;i<=num/2;i++){
if(num%i==0){
sum+=i;//累加真因子
}
}
returnsum==num;//真因子和等于原数,即为完数
}
intmain(){
printf("1到1000之间的完数:\n");
for(inti=1;i<=1000;i++){
if(is_perfect(i)){
printf("%d",i);
}
}
printf("\n");
return0;
}
注意:1到1000之间的完数只有3个:6、28、496,可验证程序输出;遍历真因子时,只需到num/2,可提高效率。例20:计算球从指定高度落下后的反弹距离及总路程题目:一个球从h米高度自由落下,每次落地后反弹高度为原高度的一半,再落下,求第n次落地时的总路程和第n次反弹的高度(h和n由用户输入)。分析:总路程=初始高度+2×(第一次反弹高度+第二次反弹高度+...+第n-1次反弹高度);第n次反弹高度=h×(1/2)^n;用循环计算每次反弹的高度,累加总路程,注意第一次落地只有下落,没有反弹。c
#include<stdio.h>
#include<math.h>//pow函数所需头文件
intmain(){
doubleh,total=0,rebound;
intn;
printf("请输入初始高度h(米)和反弹次数n:");
scanf("%lf%d",&h,&n);
if(h<=0||n<=0){
printf("输入错误!h和n需为正整数/正数\n");
return1;
}
total=h;//第一次下落的路程
rebound=h/2;//第一次反弹高度
for(inti=1;i<n;i++){
total+=2*rebound;//每次反弹后,下落+反弹的路程(2×反弹高度)
rebound/=2;//反弹高度减半
}
printf("第%d次落地时,总路程:%.2lf米\n",n,total);
printf("第%d次反弹的高度:%.2lf米\n",n,rebound);
return0;
}
注意:用double类型存储高度和路程,保证精度;pow函数可用于计算(1/2)^n,但循环实现更直观,且避免浮点数精度误差;输出时用%.2lf保留两位小数,更符合实际需求。例21:猴子吃桃问题(递推求解)题目:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃前一天剩下的一半加一个,到第10天早上想再吃时,发现只剩下1个桃子。求第一天摘下多少个桃子。分析:采用逆推法,从第10天的1个桃子倒推:第n天的桃子数=(第n+1天的桃子数+1)×2;第10天:1个,第9天:(1+1)×2=4个,第8天:(4+1)×2=10个,依次逆推到第1天。c
#include<stdio.h>
intmain(){
intday=10;
intpeach=1;//第10天的桃子数
//逆推:从第9天到第1天
for(day=9;day>=1;day--){
peach=(peach+1)*2;
}
printf("第一天摘下的桃子数:%d个\n",peach);
return0;
}
注意:逆推法比正推法更简洁,无需复杂的方程求解;若修改天数(如第5天剩下1个),只需修改day的初始值和循环条件即可。例22:乒乓球比赛胜负推理(逻辑判断)题目:甲、乙、丙三人进行乒乓球比赛,每两人赛一场,共赛三场;已知:①甲胜乙;②丙胜甲;③乙胜丙;判断三场比赛的胜负情况,输出每场比赛的结果。分析:每场比赛有两种结果(胜/负),根据已知条件,用逻辑判断确定每场比赛的胜负;三人两两比赛,场次为:甲vs乙、甲vs丙、乙vs丙,结合已知条件直接推导结果。c
#include<stdio.h>
intmain(){
//定义变量:1表示胜,0表示负
int甲胜乙=1,甲胜丙,乙胜甲,乙胜丙,丙胜甲,丙胜乙;
//根据已知条件推导
乙胜甲=!甲胜乙;//甲胜乙,则乙负甲
丙胜甲=1;//已知丙胜甲
甲胜丙=!丙胜甲;//丙胜甲,则甲负丙
乙胜丙=1;//已知乙胜丙
丙胜乙=!乙胜丙;//乙胜丙,则丙负乙
//输出比赛结果
printf("乒乓球比赛胜负结果:\n");
printf("甲vs乙:%s\n",甲胜乙?"甲胜":"乙胜");
printf("甲vs丙:%s\n",甲胜丙?"甲胜":"丙胜");
printf("乙vs丙:%s\n",乙胜丙?"乙胜":"丙胜");
return0;
}
注意:逻辑判断中,!表示非运算(1变0,0变1);可根据实际已知条件修改变量值,推导不同的比赛结果;该思路可扩展到更多人的比赛推理。例23:打印指定的几何图案(三角形)题目:用'*'打印一个直角三角形(直角在左下角,5行为例)。分析:直角三角形的特点:第1行1个*,第2行2个*,...,第n行n个*;通过双重循环,外层循环控制行数,内层循环控制每行的*数,逐行输出即可。c
#include<stdio.h>
intmain(){
intn=5;//三角形的行数,可修改
inti,j;
//外层循环控制行数
for(i=1;i<=n;i++){
//内层循环控制每行的*数(第i行i个*)
for(j=1;j<=i;j++){
printf("*");
}
printf("\n");//换行
}
return0;
}注意:修改n的值可改变三角形的大小;若要打印直角在右上角的三角形,可在输出*前先输出对应数量的空格;若要打印等腰三角形,可参考例7的菱形上半部分逻辑。例24:计算数列2/1+3/2+5/3+8/5+...前n项和题目:计算数列前n项和,数列规律:分子是前两项分子之和(2,3,5,8...),分母是前两项分母之和(1,2,3,5...),即从第3项开始,分子=前两项分子和,分母=前两项分母和。分析:观察数列,分子和分母均遵循斐波那契数列规律(分子:2,3,5,8...;分母:1,2,3,5...);用变量存储前两项的分子和分母,循环计算每一项的值,累加到总和中。c
#include<stdi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校室外管网工程施工组织设计模板
- 公司应急预案类型(3篇)
- 下关茶厂营销方案(3篇)
- 医学检测营销方案(3篇)
- 停电如何应急预案(3篇)
- 公司师徒活动策划方案(3篇)
- 宴会包厢施工方案(3篇)
- 房屋横梁施工方案(3篇)
- 支架预压施工方案(3篇)
- 日常团建活动方案策划(3篇)
- (河北高考卷)2024年河北省普通高中学业水平选择性考试高考物化生+政史地真题试卷及答案
- 植物组织培养-植物组织培养的基本技术
- 2025年国家保安员资格考试模拟100题及答案
- 2025年宁波职业技术学院单招职业倾向性测试题库及答案(历年真题)
- 结构仿生学 课件 第5章 结构仿生学典型应用案例
- 纯英文版高三数学试卷
- 历年中职高考《农业经营与管理》考试真题题库(含答案)
- DJG330110-T 0101-2022 电动自行车充换电站建设及运营管理规范
- 9F级立式余热锅炉模块吊装工法
- 第三单元名著导读《经典常谈》课件-部编版语文八年级下册
- (完整)WORD-版本核心高考高频688词汇(高考高频词汇)
评论
0/150
提交评论