初学的c语言一些简单的练习题(自我练习)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Cell_KEY/article/details/51001228
1.打印99乘法表
<pre name="code" class="cpp">#include<stdio.h>
int main(){
	int i, j;
	for (i = 1; i <= 9; i++){
		for (j = 1; j <= i; j++){
					printf("%d*%d=%d\t", j, i, i*j);
				if (i == j){
					printf("\n");
				}
				
				}
		}
	system("pause");
	return 0;


}


 
 

以上是实现99乘法表的打印,用了2个for语句循环很容易实现。

2.打印100-200之间的素数

#include<stdio.h>
#include<math.h>
int main()
{
	int i, j;
	int m;
	for (i = 101; i <= 200; i = i + 2){

		m = 0;

		for (j = 2; j < sqrt(i); j++)
		{
			if (i%j == 0)
			{
				m = 1;
				break;
			}

		}
		if (m == 0)
			printf("%d是素数\n", i);
	}

	system("pause");
	return 0;}

在素数的求取过程中用到了sqrt()这个库函数,在使用sqrt()这个函数之前必须加上#include<math.h>这个头文件才能使用,在c语言中有很多的库函数需要我们积累,这会在我们在实现某些功能时提供方便。

另外在程序编写时要注意程序的优化,我们不仅仅要把程序的功能实现,还需要使这个程序最简单,最效率。

3.1000-2000闰年打印

#include<stdio.h>
int main(){
	int i;
	for (i = 1000; i <= 2000; i++)
	{
		if (i % 4 == 0 && i % 100 != 0||i%400==0)
		{
			printf("%-5d",i);
		}
	}
	system("pause");
	return 0;
	
	


}
闰年的求取过程中最重要的就是掌握满足闰年的条件。
3.2个数的交换
#include<stdio.h>
int main()
{ int i = 10;
  int j = 20;
  int m = 0;
  printf("i=%d\tj=%d\n",i, j);
  m = i;
  i = j;
  j = m;
  printf("i=%d\tj=%d\n",i, j);
  system("pause");
  return 0;
}
在2个数的交换过程中用了一个用来保护的中间变量。
这个问题还可以不用中间变量 具体如下
#include<stdio.h>
int main()
{
	int i = 10;
	int j = 20;
	printf("i=%d\tj=%d\n", i, j);
	i = i^j;
	j = i^j;
	i = i^j;
	printf("i=%d\tj=%d\n", i, j);
	system("pause");
	return 0;

    }
其中用了一个异或,2个数异或之后产生的值就好比密码一样,可以在把原值找回来,从而达到交换的目的。
4.写 一个函数返回参数二进制中 1 的个数:
#include <stdio.h>
int  count_one_bits(unsigned int x);
int main()
{
	int a,b;
	scanf_s("%d", &a);
	b=count_one_bits(a);
	printf("%d",b);
	system("pause");
	return 0;
}
int  count_one_bits(unsigned int x)
{
	int count=0;
	while (x)
	{
		count += x % 2;
		x = x / 2;
	}
	return count;
	
}
其中用了一个while循环使x的值又移即x/2,从而使x的值一直驱于0,从而跳出循环,在又移的过程对x进行取余,从而求出用二进制表示形式。
在此过程中需要注意的是数的左移右移,在数的左移时不管逻辑左移还是算术左移后边补得都是0,但是在右移过程中就不同了,在逻辑右移中左边都加0,但在算术右移时左边添加的东西和符号位有关,添加的就是符号位,而取逻辑还是算术和编译器有关,所以在上题中就要注意有符号和和无符号的右移。
5.10个数中找最大值
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int i;
	int a[10] = {0};
	
	printf("请输入10个数");
	for (i = 0; i < 10; i++)
	{
		scanf("%d",&a[i]);
	}
	int max = a[0];
	for (i = 1; i <=9; i++)
	{
		if (max < a[i])
		{
			max = a[i];
		}
	}
	printf("max=%d", max);
	system("pause");
	return 0;
}
其中用了一个一维数组,注意一维数组的赋初值与一维数组的输入。




猜你喜欢

转载自blog.csdn.net/Cell_KEY/article/details/51001228
今日推荐