作为一个毫无经验自学的小白,开始正式学习C语言,希望能够每天都坚持下去。
今日练习:数字交换函数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//传值调用
//void swap(int* x, int* y)//错误写法,x,y并没有建立任何联系,将x,y的值交换并不会使a,b数值交换。当实参传给形参的时候,形参其实是实参的一份的临时拷贝,对形参的修改不会影响实参
//{
// int tmp=0;
// tmp = *x;
// *x = *y;
// *y = tmp;
//}
//传址调用
void swap(int* x, int* y)//通过指针交换存储的内存地址来实现a,b数值的交换
{
int tmp=0;
tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);//scanf 需要取地址,所以a,b,前要加&取地址符
printf("a=%d b=%d\n",a,b);
swap(&a, &b);
printf("a=%d b=%d", a, b);
return 0;
}
练习2:设计统计素数函数
#include <stdio.h>
#include <string.h>
#include <math.h>
int is_prime(int a)
{
int b = 0;
for (b = 2; b <= sqrt(a); b++)
{
if (a % b == 0)
{
break;
}
}
if (b > sqrt(a))
{
return 1;
}
}
int main()
{
//打印素数
int i = 0;
int j = 0;
int count = 0;
printf("始数为:");
scanf_s("%d", &i);
printf("\n尾数为:");
scanf_s("%d", &j);
if(i==1)//始数为1的情况
{
i++;
}
if (i> j)//始数大于尾数的情况
{
printf("起始数输入错误");
return 0;
}
for (i; i <= j; i++)
{
if (is_prime(i) == 1)
{
printf("%d ", i );
count++;
}
}
printf("\n共有%d个素数\n", count);
return 0;
}
练习3:找闰年函数
#include <stdio.h>
int is_leap_year(int y)
{
if (y % 4 == 0 && y % 100 !=0)
{
return 1;
}
if(y%400==0)
{
return 1;
}
return 0;
}
int main()
{
int year1 = 0;
int year2 = 0;
int count = 0;
printf ("起始年份:");
scanf_s ("%d", &year1);
printf("结束年份:");
scanf_s("%d", &year2);
if (year1 > year2)
{
printf("起始年份输入错误\n");
return 0;
}
for(year1;year1<=year2;year1++)
{
if(is_leap_year(year1)==1)
{
printf(" %d ", year1);
count++;
}
}
printf("\n共有%d个闰年",count);
return 0;
}
本文含有隐藏内容,请 开通VIP 后查看