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;
}