多组输入判断输入的是不是字母
解题思路
- 需要多组输入
- 判断是否是字母
- 使用getchar()函数清空内存中的空格
- 根据ASCII码表来判断
代码如下
#include<stdio.h> int main() { char n = 0; //多组输入 while (scanf("%c",&n)!=EOF) { //使用getchar()函数清空内存中的空格 getchar(); //判断是否是字母 //根据ASCII码表 if ((n>='a' && n <= 'z')||(n>='A'&&n<='Z')) { printf("%c is an alphabet.\n", n); } else { printf("%c is not an alphabet.\n", n); } } return 0; }
运行结果
网购
解题思路
- 判断日期是双11还是双12
- 双11打7折
- 双12打8折
- 一行输入4个数 衣服价格 月份 日期 优惠卷
- 一张优惠卷减50
- 花钱不可能为负数
- 保留两位小数
代码如下
#include<stdio.h> int main() { double price = 0; int moth = 0; int day = 0; int tack = 0; double sum = 0; scanf("%lf %d %d %d", &price, &moth, &day, &tack); //判断日期,并且根据日期计算价格 if (moth==11&&day==11) { sum = price * 0.7 - tack * 50; } else if(moth==12&&day==12) { sum = price * 0.8 - tack * 50; } else { sum = price; } //如果sum为负数那么就等于0 if (sum<0) { sum = 0; } printf("%.2lf", sum); return 0; }
运行结果
注意事项
- 金额不能为负数,为负数这直接为0;
- 输出金额注意是保留两位小数。
乘法口诀表
解题思路
- 手动控制
- 使用一个循环打印列数
- 嵌套一个循环打印行上的内容
- 使用一个函数
代码如下
#include<stdio.h> void print(int n) { int i = 0; //打印列数 for (i = 1; i <= n; i++) { int j = 0; //打印行中的内容 for (j = 1; j <= i; j++) { printf("%d*%d=%d\t", i, j, i * j); } //打印完一行内容换行 printf("\n"); } } int main() { int n = 0; scanf("%d", &n); print(n); return 0; }
运行结果
交换两个整数
写一个函数实现交换两个整数
解题思路
- 输入两个整数
- 写一个函数交换两个数
- 使用指针来交换
代码如下
#include<stdio.h> void Sawp(int* x, int *y) { int temp = *x; *x = *y; *y = temp; } int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); printf("交换前:\na=%d,b=%d\n",a,b); Sawp(&a, &b); printf("交换后:\na=%d,b=%d\n", a, b); return 0; }
运行结果
注意事项
不能通过传值调用函数,要使用传址调用,这样才能改变内存中的数。
函数判断闰年
写一个函数判断是否是闰年
解题思路
- 闰年的规则能被4整除不能被100整数,并且可以被400整除。
- 使用函数判断是闰年返回1,不是闰年返回0。
代码如下
#include<stdio.h> int is_year(int year) { if ((year%4==0&&year%100!=0)||year%400==0) { return 1; } else { return 0; } } int main() { int year = 0; scanf("%d", &year); is_year(year); if (year) { printf("%d年是闰年\n", year); } else { printf("%d年不是闰年\n", year); } return 0; }
运行结果