C语言---程序设计练习题目及学习方法1

学习方法

  1. 要多练习
    • 在这些题目中的代码和题目 自己动手去敲
    • 练习也是在熟悉语法,写代码第一步就是熟悉语法
    • 练习是在锻炼编程思维,把实际问题转换为代码的能力
  2. 学会画图
    • 画图去理解内存,理解指针这些比较难懂的知识
    • 画图可以更好的理清思路
    • 辅助理解,强化理解
  3. 学会调试
    • 借助调试,更好的理解代码和感知代码
    • 找出代码中的bug和程序逻辑
(1)自增自减运算符
	int a=5,b,c,i=10;
	b=a++;
	c=++b;

	printf("a = %d, b = %d, c = %d\n",a,b,c);  //a = 6, b = 6, c = 6 
	printf("%d\n",++i);  //11 
	printf("%d\n",--i);  //9 
	printf("%d\n",i++);	 //10 
	printf("%d\n",i--);  //10 
	printf("%d\n",-i++); //9 
	printf("%d\n",-i--); //9 
	getchar();

变量定义这里就不赘述

b=a++;

这里执行操作是

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

c=++b;

  • b=b+1
  • c=b

要清楚

++在前和++在后

之间不同的运算顺序

(2)包含while和for循环
#include <stdio.h>
int main() {
	int i,b,k=0;
	for(i=1;i<=5;i++){
		b=i%2;
		while(b-->=0)
		k++;
	}
	printf("%d,%d",k,b);
	return 0;
}

程序运行结果为()?

分析:

首先声明了三个整型变量ibk

并初始化k为0。

for循环中,

i=1开始,

i小于或等于5时执行循环体,

每次循环结束后i的值增加1。

c 复制代码
    b = i % 2;

计算i除以2的余数,

并将其赋值给变量b

(用于判断奇偶数)

c 复制代码
    while(b-- >= 0)
        k++;

while循环,

条件是b的值递减直到小于0。

每次循环,
k的值增加1。

  1. i=1时,b=1,进入while循环,b递减到0,k增加1次,b变为-1,退出while循环。
  2. i=2时,b=0,进入while循环,b递减到-1,k增加1次,退出while循环。
    ·············

所以,
k的值在每次i为奇数时增加1,

i为偶数时也增加1,

总共循环5次,
k增加5次。

最后结果

输出8,-2

(3)判断一个数是否为奇数
int a=0;
	scanf("%d",&a);   
	if(a%2==0){
		printf("不是奇数"); 
	}
	else
		printf("是奇数");

很简单

(4)三个数比较大小
	int a, b, c, t;  
	// 定义四个整数变量a, b, c
	用于存储输入的三个数字,
	t用于交换时的临时存储

    // 输入三个数字
    scanf("%d%d%d", &a, &b, &c);
   
    // 如果a大于b,交换a和b
    if (a > b) {  
        t = a;  // 使用t作为中间变量,首先将a的值保存起来
        a = b;  // 将b的值赋给a
        b = t;  // 将t(原来a的值)赋给b,完成交换
    }  

    // 如果a大于c,交换a和c 
    if (a > c) {  
        t = a;  // 同上,使用t作为中间变量进行交换
        a = c;  
        c = t;  
    } 
    // 如果b大于c,交换b和c 
    if (b > c) {  
        t = b;  // 再次使用t作为中间变量进行交换
        b = c;  
        c = t;  // 现在b和c的值被交换,确保c是最大的
    }
    // 确保a是最小的,b是次大的,c是最大的
    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)求绝对值
int x;
	printf("请输入一个数:");
	scanf("%d",&x);
	//scanf("请输入一个数:",&x);  这里有错误的 
	if(x<0){
		x = -x;
	}
	printf("X的绝对值为%d",x);  //注意输入输出格式 

思考:输入两个实数,按代数值由小到大次序输出这两个数

(6)局部变量的作用域
//作用域较小的局部变量隐藏作用域较大的局部变量 
	int x=1,y=1;
	{
		int y=2;
		x=3;
		printf("x=%d,y=%d\n",x,y);
	}
	printf("x=%d,y=%d\n",x,y);
输出结果为:
x=3,y=2
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))

    #include <stdio.h>
    int main()
    { int n;
    // 遍历1900年到2000年
    for (year = 1900; year <= 2000; year++) {
    // 判断是否为闰年
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    printf("%d\n", year);
    }
    return 0;
    }

(8)输入10个数,输出其中最大的一个数
#include <stdio.h>

int main() {
    int numbers[10]; // 定义一个数组来存储10个整数
    int i, max;

    // 输入10个数
    printf("请输入10个整数:\n");

    // 循环读取输入的数
    for (i = 0; i < 10; i++) {
        printf("输入第 %d 个数:", i + 1);
        scanf("%d", &numbers[i]);
    }

    // 假设第一个数是最大的
    max = numbers[0];

    // 循环遍历数组中的每个数,找出最大的数
    for (i = 1; i < 10; i++) {
        if (numbers[i] > max) {
            max = numbers[i];
        }
    }

    // 输出最大的数
    printf("最大的数是:%d\n", max);
    return 0;
}
(9) 求5!的阶乘
	int i,t;
	t=1;
	i=2;
	while(i<=5){
		t=t*i;
		i++;
	} 
	printf("%d\n",t);
(10) 求所占字节大小
	int a=1;
	float b=1;
	char c=1;
	double d=1;
	printf("%d",sizeof(a));    //int占用字节4 
	printf("%d",sizeof(b));    //float占用字节4 
	printf("%d",sizeof(c));    //char占用字节1
	printf("%d",sizeof(d));    //double占用字节8
相关推荐
weixin_4866811436 分钟前
C++系列-STL容器中统计算法count, count_if
开发语言·c++·算法
一道秘制的小菜44 分钟前
C++第七节课 运算符重载
服务器·开发语言·c++·学习·算法
标标大人1 小时前
c语言中的局部跳转以及全局跳转
android·c语言·开发语言
咕噜咕嘟嘟嘟2 小时前
343. 整数拆分
数据结构·算法
WenGyyyL2 小时前
力扣最热一百题——二叉树的直径
java·c++·算法·二叉树·深度优先
sdlkjaljafdg2 小时前
vector<bool>性能测试
开发语言·c++·算法
muyierfly3 小时前
36.贪心算法3
算法·贪心算法
Kenneth風车4 小时前
【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·分类·数据分析·回归
m0_631270406 小时前
标准C++(二)
开发语言·c++·算法
banjin6 小时前
AI驱动TDSQL-C Serverless 数据库技术实战营-ai学生选课系统数据分析
c语言·人工智能·serverless