期末要考试了,你是不是还没复习!!!
怎么办?
我不想挂科啊!!!
来找我啊。嘿嘿嘿。
想要不挂科,就只有一个路可以走,那就是。。。刷题。。。来吧!!!开整!!!
#1.取数位I
题目描述
给定一个两位数的整数,分别输出它的十位数和个位数。
输入
一个整数 a(10≤a≤99)
输出
第一行为 a 的十位数 第二行为 a 的个位数
#include <stdio.h>
int main() {
int a; //定义一个整数变量
scanf("%d", &a); //从标准输入读取一个整数
printf("%d\n", a / 10); //输出十位数,即整数除以10的商
printf("%d\n", a % 10); //输出个位数,即整数除以10的余数
return 0;
}
#2.取数位II
题目描述
给定一个三位数的整数,分别输出它的百位数、十位数和个位数。
输入
一个整数 a(100≤a≤999)
输出
第一行为 a 的百位数 第二行为 a 的十位数 第三行为 a 的个位数
#include <stdio.h>
int main() {
int a; //定义一个整数变量
scanf("%d", &a); //从标准输入读取一个整数
printf("%d\n", a / 100); //输出百位数,即整数除以100的商
printf("%d\n", (a / 10) % 10); //输出十位数,即整数除以10的商再除以10的余数
printf("%d\n", a % 10); //输出个位数,即整数除以10的余数
return 0;
}
1.printf("%d\n", (a / 10) % 10)?
这一行的意思是输出整数 a 的十位数。具体的步骤如下:
首先,a / 10 表示将 a 除以 10,得到一个新的整数,比如 456 / 10 = 45。{不要有疑惑!C语言除不进就会到前一位}
然后,(a / 10) % 10 表示将上一步得到的整数再除以 10,并取余数,比如 45 % 10 = 5。
最后,printf(“%d\n”, (a / 10) % 10) 表示将上一步得到的余数作为参数,用 %d 格式符输出,并换行,比如 printf(“%d\n”, 5) 输出 5 并换行。
这样就得到了 a 的十位数。你明白了吗?
#3.交换两位数
题目描述
读入一个两位的个位不为零的正整数,将它的十位数和个位数调换后输出。
输入
一个整数 n(11≤n≤99)
输出
一个整数表示调换后的数。
#include <stdio.h>
int main() {
int n; //定义一个整数变量
scanf("%d", &n); //从标准输入读取一个整数
int ten = n / 10; //得到十位数,即整数除以10的商
int one = n % 10; //得到个位数,即整数除以10的余数
int result = one * 10 + ten; //将个位数和十位数调换后得到新的整数,即个位数乘以10加上十位数
printf("%d\n", result); //输出新的整数
return 0;
}
#4.计算各位和
题目描述
输入一个不超过 10000 的整数 n,计算它每一位上的数字总和。
输入
一个整数 n。(1≤n<10000)
输出
输出这个整数每一位的数字和。
#include <stdio.h>
int main() {
int n; //定义一个整数变量
scanf("%d", &n); //从标准输入读取一个整数
int sum = 0; //定义一个变量存储数字和,初始为0
while (n > 0) { //循环条件为n大于0
int digit = n % 10; //得到n的最后一位数字,即n除以10的余数
sum += digit; //将数字加到sum上
n /= 10; //将n除以10,去掉最后一位数字
}
printf("%d\n", sum); //输出数字和
return 0;
}
2.n /= 10; //将n除以10,去掉最后一位数字?
这一行的意思是将 n 的值更新为 n 除以 10 的商,这样就可以去掉 n 的最后一位数字。具体的步骤如下:
首先,n / 10 表示将 n 除以 10,得到一个新的整数,比如 1234 / 10 = 123。
然后,n /= 10 表示将上一步得到的整数赋值给 n,相当于 n = n / 10,比如 n = 123。
这样就完成了将 n 的最后一位数字去掉的操作,因为 n 的值变成了 123,没有了个位数。
你明白了吗?
#5.数字之中有9么
题目描述
输入一个三位数,判断组成它的各个位上是否存在数字9。
输入
输入一个整数 a (100≤a≤999)
输出
a 中包含 9 输出 YES 否则输出 NO
#include <stdio.h>
int main() {
int a; //定义一个整数变量
scanf("%d", &a); //从标准输入读取一个整数
int hundred = a / 100; //得到百位数,即整数除以100的商
int ten = (a / 10) % 10; //得到十位数,即整数除以10的商再除以10的余数
int one = a % 10; //得到个位数,即整数除以10的余数
if (hundred == 9 || ten == 9 || one == 9) { //判断三个位数中是否有9
printf("YES\n"); //如果有9,输出YES
} else {
printf("NO\n"); //如果没有9,输出NO
}
return 0;
}
#6.四位数中有偶数位么
题目描述
输入一个四位的正整数,判断它的各个位上是否存在偶数。
输入
输入一个四位正整数 n (1000≤n≤9999)
输出
如果 n 的千位、百位、十位、个位中的任何一个数为偶数则输出 YES 否则输出 NO
#include <stdio.h>
int main() {
int n; //定义一个整数变量
scanf("%d", &n); //从标准输入读取一个整数
int thousand = n / 1000; //得到千位数,即整数除以1000的商
int hundred = (n / 100) % 10; //得到百位数,即整数除以100的商再除以10的余数
int ten = (n / 10) % 10; //得到十位数,即整数除以10的商再除以10的余数
int one = n % 10; //得到个位数,即整数除以10的余数
if (thousand % 2 == 0 || hundred % 2 == 0 || ten % 2 == 0 || one % 2 == 0) { //判断四个位数中是否有偶数,即能被2整除的数
printf("YES\n"); //如果有偶数,输出YES
} else {
printf("NO\n"); //如果没有偶数,输出NO
}
return 0;
}
#7.乘车费用
题目描述
小明要乘出租车去奶奶家。出租车计价方案为:3 公里内(含)的起步价是 13 元,超过 3 公里之后按 2.3 元 / 公里,另外在整个乘车途中另加 1 元燃油附加费。已知小明到奶奶家的路程为 N 公里,请计算出租车费用是多少元。
输入
输入一个整数 N (1≤N≤30)
输出
输出乘车费用,若在起步价内,输出起步价,否则保留一位小数输出。
#include <stdio.h>
int main() {
int N; //定义一个整数变量
scanf("%d", &N); //从标准输入读取一个整数
double fee; //定义一个浮点数变量,存储费用
if (N <= 3) { //如果路程小于等于3公里,按起步价计算
fee = 13 + 1; //起步价加燃油附加费
} else { //如果路程大于3公里,按超出部分计算
fee = 13 + 1 + (N - 3) * 2.3; //起步价加燃油附加费加超出部分的费用
}
printf("%.1f\n", fee); //输出费用,保留一位小数
return 0;
}
微改一下,我们使它更符合常理化!!!
#include <stdio.h>
int main() {
int N; //定义一个整数变量
scanf("%d", &N); //从标准输入读取一个整数
double fee; //定义一个浮点数变量,存储费用
if (N <= 3) { //如果路程小于等于3公里,按起步价计算
fee = 13 + 1; //起步价加燃油附加费
} else { //如果路程大于3公里,按超出部分计算
fee = 13 + 1 + (N - 3) * 2.3; //起步价加燃油附加费加超出部分的费用
}
if (fee == (int)fee) { //如果费用是整数,不保留小数
printf("%d\n", (int)fee); //输出费用,转换为整数
} else { //如果费用不是整数,保留一位小数
printf("%.1f\n", fee); //输出费用,保留一位小数
}
return 0;
}
3.printf("%.1f\n", fee); //输出费用,保留一位小数?
这一行的意思是用 %f 格式符输出浮点数 fee,并保留一位小数。具体的步骤如下:
首先,printf 是一个函数,用于向标准输出打印格式化的字符串,比如 printf(“Hello, world!\n”) 输出 Hello, world! 并换行。
然后,printf 的第一个参数是一个字符串,其中可以包含格式符,用于指定输出的数据类型和格式,比如 %d 表示输出整数,%f 表示输出浮点数。
接着,在格式符前面可以加上一个点号和一个数字,表示输出的精度,即小数点后的位数,比如 %.1f 表示输出浮点数,并保留一位小数,%.2f 表示保留两位小数。
最后,printf 的第二个参数是一个变量或表达式,用于提供要输出的数据,比如 printf(“%.1f\n”, fee) 表示输出变量 fee 的值,并保留一位小数,并换行。
这样就实现了保留一位小数的功能。你明白了吗?
4.if (fee == (int)fee) { //如果费用是整数,不保留小数?
这一行的意思是判断费用是否是整数,如果是整数就不保留小数。具体的步骤如下:
首先,fee 是一个浮点数变量,它的值可能是整数,也可能是小数,比如 14.0 或 14.5。
然后,(int)fee 表示将 fee 的值转换为整数类型,这样就会去掉小数部分,比如 (int)14.0 = 14,(int)14.5 = 14。
接着,fee == (int)fee 表示比较 fee 的值和 (int)fee 的值是否相等,如果相等,说明 fee 的值本身就是整数,没有小数部分,比如 14.0 == (int)14.0 = 14。如果不相等,说明 fee 的值不是整数,有小数部分,比如 14.5 != (int)14.5 = 14。
最后,if (fee == (int)fee) 表示如果上一步的比较结果为真,即费用是整数,就执行后面的语句块,不保留小数。否则,执行 else 后面的语句块,保留一位小数。
这样就实现了判断费用是否是整数的功能。你明白了吗?
#8.按要求输出
题目描述
按照要求输出即可。
输入
输入一个字符 x(必是 a,b,c 之一)。
输出
输入 a 则输出 It is good
输入 b 则输出 OMG
输入 c 则输出 Yes!
#include <stdio.h>
int main() {
char x; //定义一个字符变量
scanf("%c", &x); //从标准输入读取一个字符
switch (x) { //根据字符的值选择不同的输出
case 'a': //如果字符是a,输出It is good
printf("It is good\n");
break;
case 'b': //如果字符是b,输出OMG
printf("OMG\n");
break;
case 'c': //如果字符是c,输出Yes!
printf("Yes!\n");
break;
default: //如果字符不是a,b,c之一,输出Invalid input
printf("Invalid input\n");
}
return 0;
}
5.scanf("%c", &x); //从标准输入读取一个字符?
这一行的意思是从标准输入读取一个字符,并赋值给变量 x。具体的步骤如下:
首先,scanf 是一个函数,用于从标准输入读取格式化的数据,比如 scanf(“%d”, &n) 读取一个整数并赋值给变量 n。
然后,scanf 的第一个参数是一个字符串,其中可以包含格式符,用于指定输入的数据类型和格式,比如 %d 表示输入整数,%f 表示输入浮点数。
接着,%c 表示输入字符,即一个单个的字母或符号,比如 a, b, c, !, ? 等。
最后,scanf 的第二个参数是一个变量的地址,用于存储输入的数据,比如 &x 表示变量 x 的地址。这样就可以将输入的字符赋值给变量 x。
这样就实现了从标准输入读取一个字符的功能。你明白了吗?
#9.一个月有多少天
题目描述
给出一个年份 y 和月份 m,求 y 年 m 月有多少天。
输入
输入两个整数 y,m 表示年份和月份 (1000≤y≤3000,1≤m≤12)
输出
输出 y 年 m 月的天数。
#include <stdio.h>
//定义一个函数,判断一个年份是否是闰年,如果是返回1,否则返回0
int isLeapYear(int y) {
if (y % 4 == 0 && y % 100 != 0) { //如果年份能被4整除但不能被100整除,是闰年
return 1;
}
if (y % 400 == 0) { //如果年份能被400整除,也是闰年
return 1;
}
return 0; //其他情况都不是闰年
}
int main() {
int y, m; //定义两个整数变量,表示年份和月份
scanf("%d%d", &y, &m); //从标准输入读取两个整数
int days; //定义一个整数变量,表示天数
switch (m) { //根据月份的不同选择不同的天数
case 1: //一月有31天
case 3: //三月有31天
case 5: //五月有31天
case 7: //七月有31天
case 8: //八月有31天
case 10: //十月有31天
case 12: //十二月有31天
days = 31;
break;
case 4: //四月有30天
case 6: //六月有30天
case 9: //九月有30天
case 11: //十一月有30天
days = 30;
break;
case 2: //二月的天数要根据是否是闰年判断
if (isLeapYear(y)) { //如果是闰年,二月有29天
days = 29;
} else { //如果不是闰年,二月有28天
days = 28;
}
break;
default: //其他情况都是无效的输入,输出错误信息
printf("Invalid input\n");
return -1;
}
printf("%d\n", days); //输出天数
return 0;
}
6.return 1; return 0;return -1;在这个程序中有啥用?
return 1; return 0; return -1; 在这个程序中的作用是返回一个整数值,表示函数的执行结果或程序的退出状态。具体的含义如下:
return 1; 表示在 isLeapYear 函数中,如果判断年份是闰年,就返回 1,表示真。
return 0; 表示在 isLeapYear 函数中,如果判断年份不是闰年,就返回 0,表示假。也表示在 main 函数中,如果程序正常执行完毕,就返回 0,表示成功。
return -1; 表示在 main 函数中,如果输入无效,就返回 -1,表示失败。
这样就可以根据返回的值判断函数或程序的执行情况。你明白了吗?
好的,我给你举一个例子,假设输入的年份是 2020,月份是 2,那么程序的执行过程如下:
首先,scanf(“%d%d”, &y, &m) 读取两个整数,分别赋值给变量 y 和 m,即 y = 2020,m = 2。
然后,switch (m) 根据月份的值选择不同的分支,因为 m = 2,所以执行 case 2: 后面的语句块。
接着,if (isLeapYear(y)) 调用 isLeapYear 函数,判断年份是否是闰年,传入参数 y = 2020。
然后,在 isLeapYear 函数中,首先判断 y % 4 == 0 && y % 100 != 0 是否为真,即 2020 是否能被 4 整除但不能被 100 整除。因为这个条件为真,所以执行 return 1; 返回 1 给调用者。
接着,在 main 函数中,if (isLeapYear(y)) 得到返回值 1,表示真,所以执行后面的语句块,即 days = 29; 将天数赋值为 29。
然后,跳出 switch 结构,执行 printf(“%d\n”, days); 输出天数,即输出 29 并换行。
最后,执行 return 0; 返回 0 表示程序正常退出。
这就是一个例子。你明白了吗?
#10.他的名字
题目描述
输入一个字母 x,输出字母对应的名字。
输入
输入一个小写字母 x [Math Processing Error]
输出
输出字母对应的名字:
h 对应 He;
l 对应 Li;
c 对应 Cao;
d 对应 Duan;
w 对应 Wang。
不属于上述列表中的字母则输出 Not Here。
#include <stdio.h>
int main() {
char x; //定义一个字符变量
scanf("%c", &x); //从标准输入读取一个字符
switch (x) { //根据字符的值选择不同的输出
case 'h': //如果字符是h,输出He
printf("He\n");
break;
case 'l': //如果字符是l,输出Li
printf("Li\n");
break;
case 'c': //如果字符是c,输出Cao
printf("Cao\n");
break;
case 'd': //如果字符是d,输出Duan
printf("Duan\n");
break;
case 'w': //如果字符是w,输出Wang
printf("Wang\n");
break;
default: //如果字符不属于上述列表中的字母,输出Not Here
printf("Not Here\n");
}
return 0;
}
【好了,今天的题目就讲到这里吧!!!】【题目应该会增加难度的,所以做好准备哦!!!】