学C语言时做的学习笔记

C语言笔记

double和int在除法中的问题

#include<stdio.h>
#include<stdlib.h>

int main()
{
	double d;
	d = 5 / 2;//因为常数5和2是整型常量,所以当他们做‘  /  ’运算时,得到的是整型2,当赋予d时转换位double型
	printf("%f", d);//打印出来的是2.000000
	//若是5.0/2.0则打印出来的是2.500000
	system("pause");
	return 0;
}

判断素数的方法

      #include<stdio.h> 
      #include<stdlib.h> 
     //判断100-200的素数
    int main()
    {
	int n, i, k;
	for (n = 100; n <= 200;n++)
	{
		k = sqrt(n);
	    for (i = 2; i <= k; i++)
		{
			if (n%i == 0)
				break;
//当数n不是素数时跳出此层循环,此时的i值肯定是小于或等于k的,此时不符合if(i>k)故不执行printf语句
	} 
        
	if (i>k) //当不是由于break而跳出上面那个循环的时候 i必然是大于k的
		{
			printf("%d is a prime\n", n);
		}
	


	}
	         system("pause");
	         return 0;
            }

输入一个大于3的整数n,判断是否为素数

做法1

    int main()
    {
	int num, i;
	scanf_s("%d", &num);  //vs里用scanf会安全警告
	for (i = 2; i < num; i++)
	{
		if (num % i == 0)
		{
			break;
		}
	}	if (i < num)
	{
		printf("%d is not a prime number\n", num);
	}
	else
		printf("%d is a prime number\n", num);

	system("pause");
	return 0;

    }

输入一个大于3的整数n,判断是否为素数

做法2

int main()
    {
	int n, i, k;
	scanf_s("%d", &n);
	k = sqrt(n);


	for (i = 2; i <= k; i++)
	{
		if (n%i == 0)
		break;
	}	
	if(i<k)
	printf("%d is not a prime\n",n);
	else
	printf("%d is a prime\n",n);
    
    system("pause");
 return 0;
}

做法3

int main()
    {
    int n, i, k;    
    scanf_s("%d", &n); 
    k = sqrt(n);

	for ( i = 2; i < n; i++)
	{
		if (n%i==0)
		{
			printf("%d is not a prime\n", n);
			break;
		}
	}	
	if (i == n)
	printf("%d is a prime\n", n);
    
	system("pause");
	return 0;
}

位数的表示方法

int main()
{
    int num, place, indiv, ten, hundred;
    int thousand, ten_thousand;
    printf("请输入一个不多于5为的正整数:\n");
    scanf_s("%d", &num);
	//万
    ten_thousand = num / 10000;
	//千
    thousand = (int)(num - ten_thousand * 10000) / 1000;
   //百
    hundred = (int)(num - ten_thousand * 10000 - thousand * 1000) / 100;
   //十
    ten = (int)(num - ten_thousand * 10000 - thousand * 1000 - hundred * 100) / 10;
    //个
	indiv = (int)(num - ten_thousand * 10000 - thousand * 1000 - hundred * 100 - ten * 10);
}

在 C 语言中,函数的参数传递方式有两种:值传递与地址传递


打印三角形系列

解析:

     *
    ***
   *****
  *******
 **********
************
假设一共6行
sum     sum-i   		i*2-1
第一行  5个空格  1*   1*2-1=1
第二行  4个空格  3*   2*2-1=3
第三行  3个空格  5*   3*2-1=5
第四行  2个空格  7*   4*2-1=7
第五行  1个空格  9*   5*2-1=9
第六行  0个空格  11*   6*2-1=11

打印指定行数的三角形

int main()
{
	int i,j,sum;
	scanf("%d",&sum);
	for (i = 0; i <= sum; i++)
	{
		for (j = 0; j <= (sum - i); j++)
		{
			printf(" ");
		}
		for (j = 1; j <=i * 2 - 1; j++)
		{
			printf("*");
		}
			printf("\n");
		}

	return 0;

}

【例5.4】在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数以及平均每人捐款的数目。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	double amount,sum=0,avrage;
	int i;
	for(i=1;i<1000;i++)
	{
		printf("pleas into the amount:\n");
		scanf_s("%f",&amount);
		sum+=amount;

要实现达到100000时结束循环,则不能只是将break放在if(sum>=100000)下方
以下是错误的写法:

	if(sum>=100000)
		 break;

应该加花括号
正确做法:

	if(sum>=100000)
	{
		break;
	}
}

也可以这样写:

if(sum>=100000) break;

求平均值和捐款人数:

	avrage=sum/i;
	printf("i=%d,avrage=%f\n",i,avrage);
	system("pause");
	return 0;
}

完整程序代码

#include<stdio.h>
#include<stdlib.h>
int main()
{
	float amount, sum, avrage;

	int i;
	sum = 0;

	for (i = 1; i <= 1000; i++)
	{
	  printf("pleas into the amount:\n");
	  scanf_s("%f", &amount);
	  sum = sum + amount;
	  if (sum >= 100000)
	  {
	    break;
	  }
	}
	avrage = sum / i;
	printf("i=%d,avrage=%.2f\n", i, avrage);

	system("pause");
	return 0;
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值