C语言入门必刷100题合集之每日一题(1-20)

一、用C语言实现华氏温度转换为以摄氏法表示的温度。

解题思路:这个问题的算法很简单,关键在于找到二者之间的转化公式,摄氏度等于九分之五乘以华氏度减去32的积,也就是:

centigrade=(5.0/9)*(f_Degree-32);

源代码演示:

#include<stdio.h>//头文件
 int main() //主函数
 {
   float f_Degree,centigrade; //定义浮点型变量
   f_Degree=98.0;//初始化华氏度变量
   centigrade=(5.0/9)*(f_Degree-32);//注意此处应该是5.0
   printf("华氏度98的摄氏度为:%f\n",centigrade);//输出结果
   return 0;//函数返回值为0
 }

编译结果:

华氏度98的摄氏度为:0.000000

--------------------------------
Process exited after 1.967 seconds with return value 0
请按任意键继续. . .

大家应该会很容易的看懂这道例题,但是有一点需要读者格外的注意,就是这行代码

centigrade=(5.0/9)*(f_Degree-32);

如果写成

centigrade=(5/9)*(f_Degree-32);

那么就会出现逻辑性错误,如下输出:

华氏度98的摄氏度为:0.000000

--------------------------------
Process exited after 1.967 seconds with return value 0
请按任意键继续. . .

为什呢么?

在C语言中不声明格式,这种整数相除的被除数比除数大的,会直接等于0,没有小数点后面的数字。

二、用C语言计算存款利息。

假设有本金1000元,想存一年,有三种方法可选择:

  • 活期,年利率为0.0036;

  • 一年期定期,年利率为0.0225;

  • 存两次半年定期,年利率为0.0198。

请分别计算出一年后按3种方法所得到的本息和

解题思路:这个问题的算法很简单,关键在于找到公式,若存款额为principal_0,也就是本金

活期存款一年后的本息和为:

principal_0*(1+interest_Rate1);

一年定期存款后,本息和为:

principal_0*(1+interest_Rate2);

两次半年定期存款,一年后本息和:

principal_0*(1+interest_Rate3/2)*(1+interest_Rate3/2);

源代码演示:

#include<stdio.h>//头文件
int main() //主函数
{
  float interest_Rate1,interest_Rate2,interest_Rate3;//定义浮点型利率变量
  interest_Rate1=0.0036; //初始化第一种方式年利率
  interest_Rate2=0.0225; //初始化第二种方式年利率
  interest_Rate3=0.0198; //初始化第三种方式年利率
    
  float principal_0,principal_1,principal_2,principal_3;//定义变量
  principal_0=1000;//初始化本金

  principal_1=principal_0*(1+interest_Rate1);//第一种本息和
  principal_2=principal_0*(1+interest_Rate2);//第二种本息和
  principal_3=principal_0*(1+interest_Rate3/2)*(1+interest_Rate3/2);//第三种本息和

  printf("第一种本息和:%f\n",principal_1);//输出第一种本息和
  printf("第二种本息和:%f\n",principal_2);//输出第二本息和
  printf("第三种本息和:%f\n",principal_3);//输出第三种本息和
  
  return 0; //函数返回值为0
}

编译结果:

第一种本息和:1003.599976
第二种本息和:1022.500000
第三种本息和:1019.898010

--------------------------------
Process exited after 0.07304 seconds with return value 0
请按任意键继续. . .

大家应该会很容易的看懂这道例题,但是有一点需要读者格外的注意,就是应该定义为浮点型类型的变量,因为存款的钱都是有小数点的,不要定义成整型的。

毕竟14亿人的一分钱加起来可是1400万人民币。

三、C语言实现将大写字母A,输出为小写字母a

解题思路:字符数据以ASCII码存储在内存的,形式与整数的存储形式相同,所以字符型数据和其他算术型数据之间可以互相赋值和运算。

比如A在ASCII码表的值为65,如下代码

#include<stdio.h> //头文件
int main() //主函数
{
  char character_Big;//定义字符变量
  character_Big='A';//初始化
  printf("%d",character_Big);//注意这里的格式控制符是%d
}

运行后,输出

65
--------------------------------
Process exited after 0.08885 seconds with return value 0
请按任意键继续. . .

需要特别注意的是,printf语句我用的格式控制符是%d,输出的是整型

学习过上面的小案例,再来看例题就容易理解了

源代码演示:

#include<stdio.h> //头文件
int main() //主函数
{
  char character_Small,character_Big;//定义字符变量
  character_Big='A'; //字符变量初始化,即把赋值字母A赋值给character_Big
  character_Small=character_Big+32;//ASCII码表值+32
  printf("大写字母%c",character_Big);//输出大写字母A
  printf("的小写字母是:%c\n",character_Small);//输出小写字母a
  return 0;//函数返回值为空
}

编译结果:

大写字母A的小写字母是:a

--------------------------------
Process exited after 1.442 seconds with return value 0
请按任意键继续. . .

上述C语言代码的这行

character_Small=character_Big+32;

意思是把字符变量character_Big的值与整数32相加得到97,再把97赋给字符变量character_Small,97在ASCII码表中对应的就是小写字母a。

四、C语言实现用%f输出实数,且只能得到6位小数

解题思路:不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。

源代码演示:

#include<stdio.h>//头文件
int main() //主函数
{
  double double_temp,temp;//定义双精度浮点型变量
  double_temp=1.0;//初始化double_temp
  temp=double_temp/3;//将double_temp除以3得到得结果赋值给temp
  printf("%f\n",temp);//输出temp
  return 0;//函数返回值为0
}

编译结果:

0.333333

--------------------------------
Process exited after 0.074 seconds with return value 0
请按任意键继续. . .

在上述代码中,虽然double_temp是双精度型,double_temp/3的结果也是双精度,但是用%f格式声明只能输出6位小数。

这里也可以用%m.nf指定数据宽度和小数位数。

在C语言中,/ 是除,如果是整数相除,只取整数部分,没有四舍五入之类的;%是取模,即取除法的余数。

如果取模发现被除数比除数小,比如:

#include<stdio.h>//头文件
int main() //主函数
{
  printf("%d",2%5);
}

%的结果是商为0余2 ,输出如下:

2
--------------------------------
Process exited after 1.792 seconds with return value 0
请按任意键继续. . .

大白话就是在求模时,如果被除数比除数小,输出的值则是被除数本身。

五、C语言实现先后输出Love四个个字符

解题思路:定义4个字符变量,分别赋以初值L、o、v、e’,然后用putchar函数输出4个字符变量的值。

源代码演示:

#include<stdio.h>
int main()
{
  char character1,character2,character3,character4;//定义字符变量
  character1='L';//初始化变量,将字符L赋值给character1
  character2='o';//初始化变量,将字符o赋值给character2
  character3='v';//初始化变量,将字符v赋值给character3
  character4='e';//初始化变量,将字符e赋值给character3
  putchar(character1);//输出字符L
  putchar(character2);//输出字符o
  putchar(character3);//输出字符v
  putchar(character4);//输出字符e
  putchar('\n');//换行
  return 0;//函数返回值为0
}

编译结果:

Love

--------------------------------
Process exited after 0.06673 seconds with return value 0
请按任意键继续. . .

在上述代码中哦可以看出:用putchar函数既可以输出能在显示器屏幕上显示的字符,也可以输出屏幕控制字符,如putchar('\n')的作用是输出一个换行符,使输出的当前位置移到下一行的开头。

六、C语言实现输入两个实数,按照数值由小到大的顺序输出这两个数。

解题思路:这道题目的逻辑很简单,只要做一次比较,然后进行交换即可。

源代码演示:

#include<stdio.h>//头文件
int main() //主函数
{
  float num1,num2;//定义浮点型变量
  printf("请输入输入2个实数:");
  scanf("%f,%f",&num1,&num2);//键盘输入输入两个数,注意两个%f之间的逗号
  float temp; //定义中间变量
  if(num1>num2) //判断条件,如果num1大于num2,就交换数值
  {
    temp=num1;
    num1=num2;
    num2=temp;
  }
  printf("%.2f,%.2f\n",num1,num2);//输出.2的意思是,保留到小数点后两位
  return 0;
}

编译结果:

请输入输入2个实数:2.3,2.1
2.10,2.30

--------------------------------
Process exited after 9.335 seconds with return value 0
请按任意键继续. . .

在上述代码中哦可以看出,为了将num1和num2对换,借助了中间变量temp。

读者如果不理解的话可以这样想,将A和B两个杯子里面的水互换,用两个杯子倒来倒去是不可能实现的,必须借助第三个杯子。这就是程序中实现两变量换值的算法。

有一点读者需要额外注意下,就是这行代码:

scanf("%f,%f",&num1,&num2);

两个%f之间我写的是英文逗号,因此在键盘输入时也要输入英文逗号,如果键盘输入中文逗号,结果如下:

请输入输入2个实数:2.3,2.1
-0.00,2.30

--------------------------------
Process exited after 5.91 seconds with return value 0
请按任意键继续. . .

七、输入一个字符,判别它是否为大写字母,如果是,将它转换成小写,如果不是,不转换。然后输出最后得到的字符,要求使用三目运算符。

解题思路:用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  char character_Big,character_Small;//定义字符变量
  printf("请输入字母:");
  scanf("%c",&character_Big);//键盘输入字符
  character_Small=(character_Big>='A'&&character_Big<='Z')?(character_Big+32):character_Big;
  printf("%c\n",character_Small);//输出
  return 0;//函数返回值为0
}

编译结果:

请输入字母:B
b

--------------------------------
Process exited after 5.149 seconds with return value 0
请按任意键继续. . .

先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值,条件表达式相当于一个不带关键字if的if语句,用它处理简单的选择结构可使程序简洁。

此外,在C语言中有且只有一个三目运算符。

八、C语言实现当num<0时,输出result=-1;当num>0时,result=1;当num=0时,result=0。编写一个C程序,输入一个num值,要求输出相应的result值。

解题思路:用if语句检查num的值,根据num的值决定赋予result的值。由于result的可能性不是两个而是3个,因此不可能只用一个简单的if语句就可以实现,,需要用到if语句的嵌套。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int num,result; //定义整型变量
  printf("请输入num:");//提示语句
  scanf("%d",&num);//键盘输入
  if(num<0) //判断条件小于0时
  {
    result=-1;
  }
  else if(num==0)//判断条件等于0时
  {
    result=0;
  }
  else //判断条件大于0时
  {
    result=1;
  }
  printf("%d\n",result);//输出结果
  return 0;//函数返回值为0
}

编译结果:

请输入num:4
1

--------------------------------
Process exited after 4.581 seconds with return value 0
请按任意键继续. . .

为了使程序更清晰,易读,写程序时对选择结构和循环结构应采用锯齿形的缩进形式。

九、C语言实现按照考试成绩的等级输出百分制分数段,A等为85-100分,B等为70-84分,C等为60-69分,D等为60分以下。

解题思路:这是一个多分支选择问题,根据百分制分数将学生成绩分为4个等级,如果用if语句来处理至少需要3层嵌套的if,进行3次检查判断。用switch语句,进行一次检查即可得到结果。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  char grade; //定义成绩级别字符变量
  printf("输入成绩级别:");//提示语句
  scanf("%c",&grade); //键盘输入
  printf("成绩段:");//提示语句
  switch(grade) //switch多分支
  {
    case'A':printf("85-100\n");break;//输出A的成绩分布
    case'B':printf("70-84\n");break;//输出B的成绩分布
    case'C':printf("60-69\n");break;//输出C的成绩分布
    case'D':printf("不及格小于60\n");break;//输出D的成绩分布
    default:printf("输入成绩等级有误\n");//输出成绩级别有误
  }
  return 0;//函数返回值为0
}

编译结果:

输入成绩级别:D
成绩段:不及格小于60

--------------------------------
Process exited after 1.931 seconds with return value 0
请按任意键继续. . .

读者需要注意的一点是:switch后面括号内的“表达式”,其值的类型应为整数类型(包括字符型),switch语句的作用是根据表达式的值,使流程跳转到不同的语句。

十、C语言实现判断某一年是否是闰年。

解题思路:首先要想出如果这一年是闰年的条件,闰年是公历中的名词,分为普通闰年和世纪闰年,普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年;世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int year;//定义整型变量
  printf("随意输入一年:");//提示语句
  scanf("%d",&year);//键盘输入年份
  if((year%4==0 && year%100!=0)||year%400==0)//判断闰年的条件
  {
    printf("%d是闰年\n",year);
  }
  else
  {
    printf("%d不是闰年\n",year);
  }
  return 0; //函数返回值为0
}

编译结果:

随意输入一年:2000
2000是闰年

--------------------------------
Process exited after 3.921 seconds with return value 0
请按任意键继续. . .

我们常说“学而不思则罔”,我们只有在学习C语言的同时加以总结与思考,才能对编程有更系统和深入地了解,学到的知识才真正能为自己所用。

大家可以进来小编的学习圈【981555921】领取C语言入门必刷一百题及其他学习资料,可以帮助大家更好的学习,一起学习交流,在学习C语言的过程中遇到任何的问题,都可以发出来一起讨论,每天晚上20:00都会有直播给大家分享C/C++编程学习知识和路线方法,会不定期更新最新的教程和学习方法,大家都是学习C/C++的,或是转行,或是大学生,还有工作中想提升自己能力的前端党,如果你是正在学习C/C++的小伙伴可以加入学习。

 十一、C语言实现求1+2+3+……+100的和,要求分别用while、do while、for循环实现。

解题思路:这是一个累加的问题,需要先后将100个数相加。要重复进行100次加法运算,显然可以用循环结构来实现。重复执行循环体100次,每次加一个数

源代码演示:

//for循环
#include<stdio.h> //头文件
int main() //主函数
{
  int i,sum=0;//定义变量
  for(i=1;i<101;i++)//循环条件和增量
  {
    sum=sum+i; //和
  }
  printf("%d",sum);//输出结果
  return 0;//函数返回值为0
}
//while循环
#include<stdio.h>//头文件
int main()//主函数
{
  int i=1,sum=0;//定义变量
  while(i<101)//循环条件和
  {
    sum=sum+i;//和
    i=i+1; //增量
  }
  printf("%d",sum);//输出结果
  return 0;//函数返回值为0
}
//do while循环
#include<stdio.h>//头文件
int main()//主函数
{
  int i=1,sum=0;//定义变量
  do{
    sum=sum+i;//和
    i=i+1; //增量
  }while(i<101); //循环条件
  printf("%d",sum);//输出结果
  return 0;//函数返回值为0
}

以上三种实现编译结果都是如下:

5050
--------------------------------
Process exited after 2.19 seconds with return value 0
请按任意键继续. . .

注意while循环和do……while循环的区别,还有for循环的使用,do……while循环while后面要有“;”。

十二、​​​​​​​在全系1000个学生中,征集慈善捐款,当总数达到10万元时就结束,统计此时的捐款人数,以及平均每人捐款的数目。

解题思路:显然应该用循环来处理。实际实际循环的次数事先不能确定,可以设置为最大值(1000)在循环体中累计捐款总数,并用if语句检查是否达到10万元,如果达到就不再继续执行循环,终止累加,并计算人均捐款数。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  float amount,aver,total;//定义浮点型变量
  float sum=100000; //定义浮点型变量且赋初值
  int i;//定义整型变量
  for(i=1,total=0;i<1001;i++)//循环条件
  {
    printf("请依次输入捐款钱数:");//提示语句
    scanf("%f",&amount); //键盘输入
    total=total+amount;
    if(total>sum)
    break;//跳出循环
  }
  aver=total/i;
  printf("第%d个人捐款之后达到10万+\n平均每人捐款:%5.2f\n",i,aver);
  return 0;//函数返回值为0
}

编译运行结果如下:

请依次输入捐款钱数:1000
请依次输入捐款钱数:45678
请依次输入捐款钱数:34521
请依次输入捐款钱数:7000
请依次输入捐款钱数:456.3
请依次输入捐款钱数:15689
第6个人捐款之后达到10万+
平均每人捐款:17390.72

--------------------------------
Process exited after 23.79 seconds with return value 0
请按任意键继续. . .

break的作用是使流程跳到循环体之外,接着执行循环体下面的语句。

注意:在C语言中break语句只能用于循环语句和switch语句之中,而不能单独使用。

十三、C语言实现统计100~200之间的不能被3整除的数。

解题思路:需要对100-200之间的每一个数进行遍历,如果不能被3整除,就将此数输出,若能被3整除,就不输出此数,读者可以考虑使用这个语句做判断条件:

if(i%3==0)

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int i;//定义整型变量
  for(i=100;i<201;i++)//设置循环初始值,循环条件,循环增量
  {
    if(i%3==0) //如果可以被3整数,那么取余结果会是0
    continue;//跳出当前循环,继续下一次循环
    printf("%d ",i);// 如果没有被3整数,那么输出这个数
  }
  printf("\n");//换行
  return 0;//函数返回值为0
}

编译运行结果如下:

100 101 103 104 106 107 109 110 112 113 115 116 118 119 121 122 124 125 127 128 130 131 133 134 136 137 139 140 142 143 145 146 148 149 151 152 154 155 157 158 160 161 163 164 166 167 169 170 172 173 175 176 178 179 181 182 184 185 187 188 190 191 193 194 196 197 199 200

--------------------------------
Process exited after 1.522 seconds with return value 0
请按任意键继续. . .

当i能被3整除时,执行continue语句,流程跳转当前循环,继续下一次循环。

十四、C语言实现输出4*5的矩阵。

解题思路:可以用循环的嵌套来处理此问题,用外循环来输出一行数据,用内循环来输出一列数据。要注意设法输出矩阵的格式,即每输出完5个数据后换行。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int i,j;//定义变量
  int temp=0;
  for(i=1;i<5;i++)//for循环嵌套,外层循环做行
  {
    for(j=1;j<6;j++,temp++)//for循环嵌套,外层循环做列
    {
      if(temp%5==0)//每5个数进行一下
      {
        printf("\n");
      }
      printf("%d\t",i*j);//输出数
    }
  }
  return 0;//函数返回值为0
}

编译运行结果如下:

1       2       3       4       5
2       4       6       8       10
3       6       9       12      15
4       8       12      16      20
--------------------------------
Process exited after 1.816 seconds with return value 0
请按任意键继续. . .

\t的意思是水平制表符。

十五、求Fibonacci数列的前40个数。这个数列有以下特点:第1,2两个数为1,1,。从第三个数开始,该数是其前两个数之和。(斐波那契不死神兔)

解题思路:从前两个月的兔子数可以推出第3个月的兔子数。设第1个月的兔子数f1=1,第2个月的兔子数为f2=1,第3个月的兔子数f3=f1+f2=2。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数,程序的入口
{
  int i,f1,f2,f3,row; //定义变量
    f1=1,f2=1; //变量初始化
    printf("输入需要输出的行数:");//提示语句
    scanf("%d",&row); //键盘输入行数
    printf("%d\n%d\n",f1,f2); //先输出第一行和第二行
    for(i=1;i<row-1;i++) ///循环控制后row-2行
    {
      f3=f2+f1; //第3行的值是前面两行之和
      printf("%d\n",f3);
      f1=f2; //变量赋值
      f2=f3;
    }
}

编译运行结果如下:

输入需要输出的行数:30
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040

--------------------------------
Process exited after 2.806 seconds with return value 29
请按任意键继续. . .

注意此程序只是简单的输出前30行,数字还是比较小的,如果想要更多的输出,要用long int(长整型)定义,要不然回超出int的范围,出现下面所示:

输入需要输出的行数:600
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
………………
-1831132203
1787838701
-43293502
1744545199
1701251697
-849170400

--------------------------------
Process exited after 2.706 seconds with return value 599
请按任意键继续. . .

十六、C语言实现输入一个大于3的整数n,判断他是否为素数(质数)。

解题思路:本题采用的算法是,让n被i除,如果number能被2~(number-1)之中的任何一个整数整除,则表示number肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int number,i;//定义变量
  printf("请随机输入一个数:");//提示语句
  scanf("%d",&number);//键盘输入需要判断的数
  for(i=2;i<=number-1;i++)//循环从2开始,到这个数的掐前一个数为止
  {
    if(number%i==0)//如果取余结果为0
    break;
  }
  if(i<number)
  {
    printf("%d不是素数",number);
  }
  else
  {
    printf("%d是素数",number);
  }
  return 0; //函数返回值为0
}

编译运行结果如下:

请随机输入一个数:56
56不是素数
--------------------------------
Process exited after 4.465 seconds with return value 0
请按任意键继续. . .

素数一般指质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

此题的关键是看结束循环时i的值是否小于number,如果number能被2~(number-1)之间的一个整数整除,则必然是由break语句导致循环提前结束,即i并未达到number的值时,循环就终止了。

十七、C语言编程实现输出100~200之间的素数。

解题思路:这个问题的算法很简单,在上一节的基础上,只要在外层增加一个for循环作为限制100-200之间就可以了。

源代码演示:

#include<stdio.h>//头文件
#include<math.h>//为了引入sqrt求平方根函数
int main()//主函数
{
  int number,i;//定义变量
  for(number=100;number<201;number++)//这个for循环主要是限制100-200之间
  {
    for(i=2;i<=sqrt(number);i++)
    {
      if(number%i==0)//如果余数为0
      break;//跳出当前循环
    }
      if(number%i!=0)//如果求余不等于0,则为素数
    printf("%d\n",number);//输出素数
   }
   return 0;//函数返回值为0
}

编译运行结果如下:

101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199

--------------------------------
Process exited after 0.09292 seconds with return value 0
请按任意键继续. . .

根据常识,偶数不是素数,所以不必对偶数进行判定,只对奇数进行判定就可以。所以循环变量每次增值2。

十八、C语言编程实现九九乘法表,样式要求长方形、右三角形、左三角形。

解题思路:这个问题的算法很简单,就是两个for循环的嵌套,三角形的样式就是多了一些空格。

长方形源代码演示:

#include<stdio.h>//头文件
int main()//主函数入口
{
  int i,j; //定义变量
  for(i=1;i<=9;i++)//外层for循环控制行
  {
    for(j=1;j<=9;j++)//内层for循环控制列
    {
      printf("%d*%d=%2d\t", i, j, i*j);// %4d 控制宽度为两个字符,且右对齐
    }
    printf("\n");//换行
  }
  return 0;//函数返回值为0
}

编译运行结果如下:

 右三角源代码演示:

#include<stdio.h>//头文件
int main()//主函数入口
{
  int i,j;//定义变量
  for(i=1;i<=9;i++)//外层for循环控制行
  {
    for(j=1;j<=9;j++)//内层for循环控制列
    {
      if(j<i)//打印空格
      {
        printf(" ");
      }
      else
      {
        printf("%d*%d=%2d ",i,j,i*j);//输出结果,%2d 控制宽度为两个字符,且右对齐
      }
    }
    printf("\n");//换行
  }
  return 0;//函数返回值为0
}

编译运行结果如下:

 左三角源代码演示:

#include<stdio.h>//头文件
int main()//主函数入口
{
  int i,j;//定义变量
  for(i=1;i<=9;i++)//外层for循环控制行
  {
    for(j=1;j<=i;j++)//内层for循环控制列
    {
      printf("%d*%d=%2d ",i,j,i*j);//输出结果,%2d控制宽度为两个字符,且向右对齐
    }
    printf("\n");//换行
  }
  return 0;//函数返回值为0
}

编译运行结果如下:

 十九、C语言实现求(1+2+3….+100)+(1*1+2*2+….50*50)+(1/1+1/2+…1/10)

解题思路:这个问题的看似复杂不好写,实际上越是这种问题越好写,一共分三部分,一部分一部分写,最后把所求的三个部分加起来就可以了

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int i,j,k;//定义整型变量,用于循环初值和循环限制
  int sum1=0,sum2=0,sum3=0,sum;// 定义求和变量
  for(i=1;i<101;i++)//求1+2+3……+100的和
  {
    sum1=sum1+i;
  }
  for(j=1;j<51;j++)//求1*1+2*2+……+50*50的和
  {
    sum2=sum2+j*j;
  }
  for(k=1;k<11;k++)//求1/1+1/2+……+1/10的和
  {
    sum3=sum3+1/k;
  }
  sum=sum1+sum2+sum3;//最后将上述三个和加起来
  printf("(1+2+3…+100)+(1*1+2*2+…50*50)+(1/1+1/2+…+1/10)="); //提示语句
  printf("%d\n",sum);//输出结果
  return 0;//函数返回值为0
}

编译运行结果如下:

(1+2+3…+100)+(1*1+2*2+…50*50)+(1/1+1/2+…+1/10)=47976

--------------------------------
Process exited after 1.497 seconds with return value 0
请按任意键继续. . .

注意for循环使用的时候不是嵌套,而是并列,三个for循环之间没有直接联系,只是分别求3个和,最后再将3个和相加。

二十、C语言实现打印出心形,初学者的表白神器。

解题思路:这道例题我分了4部分,前3行一部分,4-6行一部分,7-13行一部分,最后一行一部分,读者请仔细阅读注释,小林写的很详细了。

前三行输出,为了让初学者知道,即使最笨的方法也是可以打印的。

4-6行,这三行输出效果一样。

for(i=0;i<3;i++)
   {
     for(j=0;j<29;j++)
     {
      printf("*");
    }
     printf("\n");
  }

最后一行,只是输出一个*。

for(i=0;i<14;i++)
  {
    printf(" ");
  }
   printf("*\n");

源代码演示,前三行代码样式请参考上述截图,文章中的源码空格有点小bug:

#include<stdio.h>//头文件
int main()//主函数入口
{
  printf(" **** ****\n");//打印第一行
   printf(" ********* *********\n");//打印第二行
   printf("************* *************\n");//打印第三行
   int i,j;//定义变量
   for(i=0;i<3;i++)//打印4-6行,一共3行,因此i小于3
   {
     for(j=0;j<29;j++)//限制每行输出*的个数
     {
      printf("*");//这三行只打印*号,无空格输出
    }
     printf("\n");//打印完一行需要进行换行
  }
  for(i=0;i<7;i++) //打印7-13行,一共7行,因此i小于7
   {
     for(j=0;j<2*(i+1)-1;j++)//这个for循环和下面的for是并列的
     {
      printf(" ");//打印空格
    }
     for(j=0;j<27-i*4;j++)//读者可以带入几个数找出条件
     {
      printf("*");//打印*
    }
     printf("\n");
    }
  for(i=0;i<14;i++)//打印最后一行的*
  {
    printf(" ");//打印空格
  }
   printf("*\n") ;//打印*
 return 0;
}

编译运行结果如下:

​​​​​​​

上述代码中的*,读者可以自行替换,读者可以用这个符号替换试试♥,看是否可行,自己动脑思考一下。

第二种表白源代码演示:

#include<stdio.h>//头文件
#include<math.h>//为了引用pow函数
int main()//主函数入口
{
   float y, x, z;//定义浮点型变量
   printf("独时想起你\n");//提示语句
   printf("落泪时想搂住你\n");//提示语句
   printf("开心时想扑向你\n");//提示语句
   printf("兴奋时想吻你\n");//提示语句
   printf("一切尽在这三个字签名没有签上\n");//提示语句
   printf("\n");//换行
   for (double y = 2.5; y >= -1.6; y = y - 0.2)
   {
     for (double x = -3; x <= 4.8; x = x + 0.1)
     {
       //下面是个三目运算,读者请仔细看下,||这个是或
        (pow((x*x + y*y - 1), 3) <= 3.6*x*x*y*y*y
        || (x>-2.4 && x<-2.1 && y<1.5 && y>-1)
          || (((x<2.5 && x>2.2) || (x>3.4 && x<3.7)) && y>-1 && y<1.5)
         || (y>-1 && y<-0.6 && x<3.7 && x>2.2)) ? printf("*") : printf(" ");
     }
     printf("\n");//换行
   }
   getchar();
   return 0;//函数返回值为0
}

编译运行结果如下:

 C语言打印出心形的方法有很多,大家可以自己多尝试尝试,即使一行一行用printf也是一种方式,小编能帮你的只能到这了,女朋友还是要自己找

 以上,如果你看了觉得对你有所帮助,就点个赞叭,这样也有更新下去的动力,跪谢各位父老乡亲啦~

需要更多C语言入门大礼包、各种C语言C++学习资料的小伙伴可以加入小编的学习圈,里面聚集了一些正在学习C语言的小伙伴,在学习C语言的过程中遇到任何的问题,大家都可以一起交流,希望大家都能够实现自己的梦想,加油!

点击链接加入群聊【C语言/C++交流群】icon-default.png?t=M666http://点击链接加入群聊【C语言/C++交流群】:https://jq.qq.com/?_wv=1027&k=udV3CQWj​​​​​​​

猜你喜欢

转载自blog.csdn.net/kxtxdy/article/details/125901865