C语言必刷题上(保姆式详解)

C语言必刷题上(保姆式详解)_第1张图片

目录

说明:

(1)

(2)

错题

1.printf输出 

(1)关于printf的输出

(2)注意点

2.  关键字

3. ASCII编码

4.转义字符

​编辑

5.变量

6.for循环

(1)线段图案

​编辑

(2) for循环体

(3) 素数

(4)"x"型图案 

(5)正方形图案

7.while循环 

(1)注意点

(2)求两个数的最大公约数

8.switch..case语句

(1)switch..case中的break

(2) 注意点

9.数组 

10.函数

(1)

(2) 9*9乘法口诀表

重点题型

1.关于strlen和sizeof计算的题目

(1)strlen作用与数组

(2)转义字符和strlen 

(3)关于sizeof题目 

(4)strlen和sizeof的计算 

4.1

4.2 

2.前置++和后置++ 

3.数组&函数 

编程题

1.将三个数从大到小排序

2.在数组中寻求最大值

 ​编辑

3.计算分组求和

方法一

方法二 

4.数数字

5.数组的并序并升序


说明:

(1)

以下所列题目是我结合平常时所做错重点题型和编程题.

(2)

必刷题上更新至函数

错题

1.printf输出 

(1)关于printf的输出

C语言必刷题上(保姆式详解)_第2张图片

(2)注意点

printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1个 

2.  关键字

C语言必刷题上(保姆式详解)_第3张图片

continue语句和break语句相似。

所不同的是,

它不是退出一个循环,而是开始循环的一次新迭代。 

3. ASCII编码

C语言必刷题上(保姆式详解)_第4张图片

4.转义字符

C语言必刷题上(保姆式详解)_第5张图片

5.变量

局部变量是放在内存的栈区的,全局变量是放在内存的静态区 

6.for循环

(1)线段图案

C语言必刷题上(保姆式详解)_第6张图片

(2) for循环体

C语言必刷题上(保姆式详解)_第7张图片

(3) 素数

打印100-200的素数

素数:这个数只能除1和它本身的数

int main()
{
	int i = 0, count = 0;
	for (i = 100; i <= 200; i++)
	{
		int j = 0;
		for (j = 2; j <= i; j++)
		{
			if (i % j == 0)
			{
				break;
			}
			
		}
		if (i == j)              //它本身
		{
			count++;
			printf("%d ", i);
		}	
	}
	printf("\n");
	printf("count=%d\n", count);

	return 0;
}

(4)"x"型图案 

int main()
{
	int n = 0;
	while ((scanf("%d", &n) != EOF))
	{
		int i = 0;    //控制行
		for (i = 0; i < n; i++)
		{
			int j = 0;//控制列
			for (j = 0; j < n; j++)
			{
				if (i == j)
				{
					printf("*");
				}
				else if (i + j == n - 1)
				{
					printf("*");
				}
				else
				{
					printf(" ");
				}
			}
			printf("\n");
		}
	}
	return 0;
}

逐步调试: 

C语言必刷题上(保姆式详解)_第8张图片

(5)正方形图案

int main()
{
    int n = 0;
    while ((scanf("%d", &n) != EOF))
    {
        int i = 0;//控制行
        for (i = 0; i < n; i++)
        {
            int j = 0;
            for (j = 0; j < n; j++)
            {
                if (i == 0 || i == n - 1)
                {
                    printf("* ");
                }
                else if (j == 0 || j == n - 1)
                {
                    printf("* ");
                }
                else
                {
                    printf("  ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}

逐步调试及总结 

C语言必刷题上(保姆式详解)_第9张图片

7.while循环 

(1)注意点

关于while(条件表达式) 循环体, (假设循环体里面没有break,continue,return,goto等等语句)    

条件表达式执行次数总是比循环体的执行次数多一次 

 while循环中,当条件表达式成立时,才会执行循环体中语句,每次执行期间,都会对循环因子进行修改(否则就成为死循环),修改完成后如果while条件表达式成立,继续循环,如果不成立,循环结束

(2)求两个数的最大公约数

int main()
{
	int a = 0, b = 0, c = 0;
	scanf("%d %d", &a, &b);

	while (c = a % b)//表达式直到为0停止
	{
		a = b;       //b-->a
		b = c;       //c-->b
	}
	printf("这两个数的最大公约数为%d\n", b);
	return 0;
}

C语言必刷题上(保姆式详解)_第10张图片

8.switch..case语句

(1)switch..case中的break

C语言必刷题上(保姆式详解)_第11张图片

(2) 注意点

  switch语句中表达式的类型只能是:整形(int)和枚举类型

9.数组 

数组的下标由小到大地址由低到高

10.函数

(1)

C语言必刷题上(保姆式详解)_第12张图片

(2) 9*9乘法口诀表

*输入n就输出到n*n的乘法口诀

int print(int n)
{
	int i = 0;
	for (i = 1; i <= n; i++)
	{
		int j = 0;
		for (j = 1; j <= i; j++) //j<=i方便控制台输出更有条理性
		{
			printf("%d*%d=%d ", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	print(n);
	return 0;
}

C语言必刷题上(保姆式详解)_第13张图片

C语言必刷题上(保姆式详解)_第14张图片

重点题型

1.关于strlen和sizeof计算的题目

(1)strlen作用与数组

C语言必刷题上(保姆式详解)_第15张图片

(2)转义字符和strlen 

C语言必刷题上(保姆式详解)_第16张图片

(3)关于sizeof题目 

sizeof的计算

C语言必刷题上(保姆式详解)_第17张图片

(4)strlen和sizeof的计算 

4.1

C语言必刷题上(保姆式详解)_第18张图片

4.2 

C语言必刷题上(保姆式详解)_第19张图片

2.前置++和后置++ 

C语言必刷题上(保姆式详解)_第20张图片

3.数组&函数 

要求:

(1)实现print()  打印数组的每个元素

(2)实现reverse()  函数完成数组元素的逆置

(3)实现函数init() 初始化数组为全0

void init(int arr[], int sz, int set)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		arr[i] = set;
	}
}

void print(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}

void reverse(int arr[], int sz)
{
	int left = 0;
	int right = sz - 1;

	while (left <= right)
	{
		int temp = arr[left];
		arr[left] = arr[right];
		arr[right] = temp;
		left++;
		right--;
	}


}

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr, sz);     //打印数组
	reverse(arr, sz);   
	print(arr, sz);     //数组逆序
	init(arr, sz, 0);   //函数set置为0
	print(arr, sz);     //数组置0

	return 0;
}

编程题

1.将三个数从大到小排序

定义临时变量temp,

从大到小,先用临时变量=最小

图解:

C语言必刷题上(保姆式详解)_第21张图片

int main()
{
	int a = 0, b = 0, c = 0;
	scanf("%d %d %d", &a, &b, &c);
	int temp = 0;
	//从大到小
	if (a < b)
	{
		temp = a;
		a = b;
		b = temp;
	}
	if (a < c)
	{
		temp = a;
		a = c;
		c = temp;
	}
	if (b < c)
	{
		temp = b;
		b = c;
		c = temp;
	}
	printf("%d %d %d\n", a, b, c);
	return 0;
}

 

2.在数组中寻求最大值

int main()
{
	int arr[10] = { 0 };
	int i = 0;
	int max = arr[0];         //先令max取数组的第一个元素
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]); //在控制台输入10个数

		if (arr[i] > max)     //如果数组中某个元素>max
		{
			max = arr[i];     //令max取数组的某个元素
		}
	}

	printf("max=%d\n", max);  
//最后输出单独放出来,不能放在循环中,否则就会输出10个不同的最大值
	
	return 0;
}

 

计算最小值则相反  

3.计算分组求和

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

方法一

int main()
{
	int i = 0;
	double zheng = 0.0;     
	double fu = 0.0;          //分组求和肯定是小数,要用double类型
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
		{
			zheng += 1.0 / i; //如果是分母是奇数,就用+
            //double类型所含的表达式要加小数点和0,如:1.0
		}
		else
		{
			fu -= 1.0 / i;    //如果是分母是偶数,就用-
		}
	}
	printf("result=%lf\n", zheng+fu);//0.688172
	return 0;
}

方法二 

int  main()
{
	int i = 0;
	double sum = 0.0;
	int flag = 1;           //定义一个flag
	for(i=1; i<=100; i++)
	{
		sum += flag*1.0/i;  //首先分母是奇数,用+
		flag = -flag;       //然后接着下一步分母是负数,就用-
	}
	printf("%lf\n", sum);
	return 0;
}

4.数数字

数一下 1到 100 的所有整数中出现多少个数字9 

int main()
{
	int count = 0;
	int i = 0;
	for (i = 1; i <= 100; i++)
	{
		if(i%10==9)
		{
			count++;
		}
		if (i / 10 == 9)
		{
			count++;
		}
	}
	printf("count=%d\n", count);//20
	return 0;
}

*值得注意的是: 

i%10==9:余数为9,i的个位数为9,如9,19,29,39...

i% 9 ==0:余数为0,是9的倍数,     如9,18,27,36...

5.数组的并序并升序

两个数组分别升序组合成一个数组,并排为升序

值得注意的是,输入的两个数组都要分别为升序!!!

int main()
{
	int m = 0, n = 0;//数组a,b元素个数
	int i = 0, j = 0;//for循环会使用到
	scanf("%d %d", &m, &n);
	//定义数组
	int a[100] = { 0 };
	int b[100] = { 0 };

	//输入数组a,b元素个数
	for (i = 0; i < m; i++)
	{
		scanf("%d", &a[i]);
	}

	for (j = 0; j < n; j++)
	{
		scanf("%d", &b[j]);
	}

	//重新初始化为0
	i = 0;
	j = 0;

	while (i < m && j < n)
	{
		if (a[i] < b[j])
		{
			printf("%d ", a[i]);
			i++;
		}
		else
		{
			printf("%d ", b[j]);
			j++;
		}
	}

	if (i == m)
	{
		for (; j < n; j++)
		{
			printf("%d ", b[j]);
		}
	}

	if (j == n)
	{
		for (; i < m; i++)
		{
			printf("%d ", a[i]);
		}
	}
}

C语言必刷题上(保姆式详解)_第22张图片

感谢浏览和阅读,希望以上对你有帮助!

创作不易,阅读完后记得留个赞和关注吧!!! 

你可能感兴趣的:(C语言题目,c语言,开发语言)