C语言---步伐计划练习标题及学习方法1

打印 上一主题 下一主题

主题 847|帖子 847|积分 2541

学习方法

  • 要多练习

    • 在这些标题中的代码和标题 自己动手去敲
    • 练习也是在熟悉语法,写代码第一步就是熟悉语法
    • 练习是在锻炼编程头脑,把现实问题转换为代码的本领

  • 学会画图

    • 画图去理解内存,理解指针这些比力难懂的知识
    • 画图可以更好的理清思路
    • 辅助理解,强化理解

  • 学会调试

    • 借助调试,更好的理解代码和感知代码
    • 找出代码中的bug和步伐逻辑

(1)自增自减运算符

  1.         int a=5,b,c,i=10;
  2.         b=a++;
  3.         c=++b;
  4.         printf("a = %d, b = %d, c = %d\n",a,b,c);  //a = 6, b = 6, c = 6
  5.         printf("%d\n",++i);  //11
  6.         printf("%d\n",--i);  //9
  7.         printf("%d\n",i++);         //10
  8.         printf("%d\n",i--);  //10
  9.         printf("%d\n",-i++); //9
  10.         printf("%d\n",-i--); //9
  11.         getchar();
复制代码
变量定义这里就不赘述
b=a++;
这里执行操纵是


  • b=a (先把a的值赋给b)
  • a=a+1 (a再自增1)
c=++b;


  • b=b+1
  • c=b
要清楚
++在前和++在后
之间不同的运算顺序
(2)包含while和for循环

  1. #include <stdio.h>
  2. int main() {
  3.         int i,b,k=0;
  4.         for(i=1;i<=5;i++){
  5.                 b=i%2;
  6.                 while(b-->=0)
  7.                 k++;
  8.         }
  9.         printf("%d,%d",k,b);
  10.         return 0;
  11. }
复制代码
步伐运行结果为()?
分析:
首先声明白三个整型变量i、b和k,
并初始化k为0。
for循环中,
从i=1开始,
当i小于或等于5时执行循环体,
每次循环结束后i的值增长1。
  1.     b = i % 2;
复制代码
计算i除以2的余数,
并将其赋值给变量b。
(用于判断奇偶数)
  1.     while(b-- >= 0)
  2.         k++;
复制代码
while循环,
条件是b的值递减直到小于0。
每次循环,
k的值增长1。

  • 当i=1时,b=1,进入while循环,b递减到0,k增长1次,b变为-1,退出while循环。
  • 当i=2时,b=0,进入while循环,b递减到-1,k增长1次,退出while循环。
    ·············
以是,
k的值在每次i为奇数时增长1,
在i为偶数时也增长1,
统共循环5次,
k增长5次。
末了结果
输出8,-2。
(3)判断一个数是否为奇数

  1. int a=0;
  2.         scanf("%d",&a);   
  3.         if(a%2==0){
  4.                 printf("不是奇数");
  5.         }
  6.         else
  7.                 printf("是奇数");
复制代码
很简单
(4)三个数比力大小

  1.         int a, b, c, t;  
  2.         // 定义四个整数变量a, b, c
  3.         用于存储输入的三个数字,
  4.         t用于交换时的临时存储
  5.     // 输入三个数字
  6.     scanf("%d%d%d", &a, &b, &c);
  7.    
  8.     // 如果a大于b,交换a和b
  9.     if (a > b) {  
  10.         t = a;  // 使用t作为中间变量,首先将a的值保存起来
  11.         a = b;  // 将b的值赋给a
  12.         b = t;  // 将t(原来a的值)赋给b,完成交换
  13.     }  
  14.     // 如果a大于c,交换a和c
  15.     if (a > c) {  
  16.         t = a;  // 同上,使用t作为中间变量进行交换
  17.         a = c;  
  18.         c = t;  
  19.     }
  20.     // 如果b大于c,交换b和c
  21.     if (b > c) {  
  22.         t = b;  // 再次使用t作为中间变量进行交换
  23.         b = c;  
  24.         c = t;  // 现在b和c的值被交换,确保c是最大的
  25.     }
  26.     // 确保a是最小的,b是次大的,c是最大的
  27.     printf("最大的数是:%d\n", t);
复制代码
利用伪代码写出算法
S1: if a>b,将a和b对换 (交换后,a是a,b中的最小者)
S2: if a>c,将a和c对换 (交换后,a是a,c中的最小者,因此a是三者中的最小者)
S3: if b>c,将b和c对换 (交换后,b是b,c中的最小者,也是三者中的次小者)
S4:顺序输出abc
(5)求绝对值

  1. int x;
  2.         printf("请输入一个数:");
  3.         scanf("%d",&x);
  4.         //scanf("请输入一个数:",&x);  这里有错误的
  5.         if(x<0){
  6.                 x = -x;
  7.         }
  8.         printf("X的绝对值为%d",x);  //注意输入输出格式
复制代码
思索:输入两个实数,按代数值由小到大次序输出这两个数
(6)局部变量的作用域

  1. //作用域较小的局部变量隐藏作用域较大的局部变量
  2.         int x=1,y=1;
  3.         {
  4.                 int y=2;
  5.                 x=3;
  6.                 printf("x=%d,y=%d\n",x,y);
  7.         }
  8.         printf("x=%d,y=%d\n",x,y);
  9. 输出结果为:
  10. x=3,y=2
  11. x=3,y=1
复制代码
(7)练习

输出1900-2000年中是闰年的月份,符合下面两个条件之一:
(1)能被4整除,但不能被100整除
(2)能被100整除且能被400整除
分析:


  • 涉及到的知识-循环结构、运算符
  • 定义变量int n
  • n能被4整除 n%4=0
  • 不能被100整除 n%100!=0
  • 能被100整除且能被400整除
  • (year % 100 != 0) || (year % 400 == 0))
  1. #include <stdio.h>
  2. int main()
  3. {     int n;
  4.       // 遍历1900年到2000年
  5.       for (year = 1900; year <= 2000; year++) {
  6.      // 判断是否为闰年
  7.                 if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))        
  8.                 printf("%d\n", year);
  9.           }
  10. return 0;
  11. }
复制代码
(8)输入10个数,输出其中最大的一个数

  1. #include <stdio.h>
  2. int main() {
  3.     int numbers[10]; // 定义一个数组来存储10个整数
  4.     int i, max;
  5.     // 输入10个数
  6.     printf("请输入10个整数:\n");
  7.     // 循环读取输入的数
  8.     for (i = 0; i < 10; i++) {
  9.         printf("输入第 %d 个数:", i + 1);
  10.         scanf("%d", &numbers[i]);
  11.     }
  12.     // 假设第一个数是最大的
  13.     max = numbers[0];
  14.     // 循环遍历数组中的每个数,找出最大的数
  15.     for (i = 1; i < 10; i++) {
  16.         if (numbers[i] > max) {
  17.             max = numbers[i];
  18.         }
  19.     }
  20.     // 输出最大的数
  21.     printf("最大的数是:%d\n", max);
  22.     return 0;
  23. }
复制代码
(9) 求5!的阶乘

  1.         int i,t;
  2.         t=1;
  3.         i=2;
  4.         while(i<=5){
  5.                 t=t*i;
  6.                 i++;
  7.         }
  8.         printf("%d\n",t);
复制代码
(10) 求所占字节大小

  1.         int a=1;
  2.         float b=1;
  3.         char c=1;
  4.         double d=1;
  5.         printf("%d",sizeof(a));    //int占用字节4
  6.         printf("%d",sizeof(b));    //float占用字节4
  7.         printf("%d",sizeof(c));    //char占用字节1
  8.         printf("%d",sizeof(d));    //double占用字节8
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表