- 判断某一年某一个月的天数是多少
- 判断一个数是否为奇数
- 输出1-100之间的奇数
- 利用循环语句打印数组元素
- 字符的输入与输出
- 计算n的阶乘
- 计算1!+2!+...+10!的阶乘
- 在一个有序数组中查找具体的某个数字
- 编写代码,演示多个字符从两端移动,向中间汇聚
- 编写代码实现,模拟用户登录情景,并且只能登录三次
1、判断某一年某一个月的天数是多少
1.1 使用switch-case语句
bool isLeap(int year) //判断是否是闰年的函数
{
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
void main()
{
int year, month;
int days = 0;
printf("请输入年份和月份:\n");
scanf("%d %d", &year, &month);
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if (isLeap(year))
days = 29;
else
days = 28;
break;
default:
printf("月份输入错误!\n");
break;
}
printf("%d年%d月有%d天。\n", year, month, days);
return 0;
}
1.2 使用if-else语句
bool isLeap(int year) //判断是否是闰年的函数
{
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
void main()
{
int year, month;
int days[13] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 };
printf("请输入年份和月份:\n");
scanf("%d %d", &year, &month);
printf("%d年%d月", year, month);
if (isLeap(year) && month == 2)
{
month = 0;
}
printf("有%d天。\n", days[month]);
return 0;
}
2、判断一个数是否为奇数
/*判断一个数是否为奇数*/
void main()
{
int num;
printf("请输入一个数:\n");
scanf("%d", &num);
if (num % 2) //奇数取余2为1,偶数取余2为0
{
printf("%d是一个奇数。\n", num);
}
else
{
printf("%d是一个偶数。\n", num);
}
return 0;
}
3、输出1-100之间的奇数
/*输出1-100之间的奇数*/
void main()
{
for (int i = 1; i <= 100; i++)
{
if (i % 2)
printf("%d\n", i);
}
return 0;
}
4、利用循环语句打印数组元素
/*循环语句*/
void main()
{
int arr[] = { 1,2,3,4,5,6,7 };
int n = sizeof(arr) / sizeof(arr[0]); //数组元素个数=数组总空间/单个元素空间
//for循环打印数组元素
for (int i = 0; i < n; i++)
{
printf("%d\n", arr[i]);
}
printf("------------------\n");
//while循环打印数组元素
int i = 0;
while (i < n)
{
printf("%d\n", arr[i]);
i++;
}
printf("------------------\n");
//do-while循环打印数组元素
int i1 = 0;
do
{
printf("%d\n", arr[i1]);
i1++;
} while (i1 < n);
return 0;
}
5、字符的输入与输出
void main()
{
int ch = 0;
while ((ch = getchar()) != EOF) //EOF=end of file 文件结束 CTRL+Z退出
putchar(ch);
return 0;
}
6、计算n的阶乘
/*计算n的阶乘*/
void main()
{
int n;
int result = 1;
printf("请输入要计算阶乘的整数:\n");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
result *= (i+1);
}
printf("%d! = %d\n", n, result);
return 0;
}
7、计算1!+2!+...+10!的阶乘
代码1:
/*计算1!+2!+...+10!的阶乘*/
void main()
{
int sum = 0;
int res = 1;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < (i + 1); j++)
{
res *= (j + 1);
}
sum += res;
res = 1;
}
printf("1!+2!+...+10! = %d\n", sum);
return 0;
}
代码2:
/*计算1!+2!+...+10!的阶乘*/
int result(int n)
{
int res = 1;
for (int i = 0; i < n; i++)
{
res *= (i + 1);
}
return res;
}
void main()
{
int sum = 0;
for (int i = 0; i < 10; i++)
{
sum += result(i + 1);
}
printf("1!+2!+...+10! = %d\n", sum);
return 0;
}
8、在一个有序数组中查找具体的某个数字
/*在一个有序数组中查找具体的某个数字x*/
int binsearch(int x, int v[], int n)
{
int max = n - 1;
int min = 0;
int i;
while (min <= max)
{
i = (max + min) / 2;
if (x > v[i])
{
min = i + 1;
}
else if (x < v[i])
{
max = i - 1;
}
else
{
return i;
}
}
return -1;
}
void main()
{
int v[] = { 1,2,3,4,5,6 };
int n = sizeof(v) / sizeof(v[0]);
int x;
printf("请输入要查找的数字:\n");
scanf("%d", &x);
int i;
i = binsearch(x, v, n);
if (i == -1)
{
printf("数组中没有此数\n");
}
else
{
printf("此数在数组中%d个位置\n", i + 1);
}
return 0;
}
9、编写代码,演示多个字符从两端移动,向中间汇聚
/*编写代码,演示多个字符从两端移动,向中间汇聚*/
void main()
{
char str[] = { 'a','b','c','d',' ',' ',' ',' ',' ',' ',' ',' ',' ','e','f','g','h' };
int n = sizeof(str) / sizeof(str[0]);
int mid = n / 2;
for (int j = 0; j < mid; j++)
{
for (int i = mid - 1; i > -1; i--)
{
str[i + 1] = str[i];
}
for (int i = mid + 2; i < n; i++)
{
str[i - 1] = str[i];
}
str[0] = ' ';
str[n - 1] = ' ';
for (int i = 0; i < n; i++)
{
printf("%c ", str[i]);
}
printf("\n");
}
return 0;
}
10、编写代码实现,模拟用户登录情景,并且只能登录三次
/*编写代码实现,模拟用户登录情景,并且只能登录三次*/
bool isTrue(char pw[], int pn, char inp[], int inn)
{
if (pn != inn)
{
return 0;
}
else
{
for (int i = 0; i < pn; i++)
{
if (pw[i] == inp[i])
{
continue;
}
else
{
return 0;
}
}
return 1;
}
}
void main()
{
char pw[] = { '1','2', '3', '.', 'w', 'w', 'w' };
int pn = sizeof(pw) / sizeof(pw[0]);
for (int i = 0; i < 3; i++)
{
char inp[10];
printf("请输入密码,您总共有三次机会(密码不超过10位),这是第%d次机会:\n", i + 1);
int j = 0;
for (j = 0; j < 10; j++)
{
scanf("%c", &inp[j]);
if (inp[j] == '\n')
break;
}
int inn = j;
/*do
{
scanf("%c", &inp[j]);
j++;
} while (inp[j - 1] != '\n');
int inn = j - 1;*/
if (isTrue(pw, pn, inp, inn))
{
printf("登陆成功!\n");
break;
}
else
{
printf("密码错误!!请重新尝试。\n");
}
}
return 0;
}