今天学了一些c语言的输入输出操作,运算符和表达式和一部分控制结构。在这之前我也学习了Ubuntu的操作和vim的三种模式。下面是今天的思维导图
第一天的2个作业:
1.输入2个整数,求这两个正整数的最大公约数和最小公倍数。
我用的方法是用while循环求最小公倍数,for循环求最大公约数,之后才知道可以只求一个数就能推出另一个数,最小公倍数= (num1 * num2)/ 最大公约数,下面是代码:
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num1,num2,num3,max,min;
printf("请输入2个整数\n");
scanf("%d %d",&num1,&num2);
getchar();
if(num1 > num2){
num3 = num2;
int w = num1;
int n = 2;
while(1)
{
if(w % num2 == 0){
min = w;
break;
}else{
w = num1*n;
n++;
}
}
}else{
num3 = num1;
int w2 = num2;
int n2 = 2;
while(1)
{
if(w2 % num1 == 0){
min = w2;
break;
}else{
w2 = num2*n2;
n2++;
}
}
}
for(int i = 2; i < num3+1; i ++){
if(i > num3 / 2 && i < num3){
i = num3 - 1;
continue;
}
if(num1 % i == 0 && num2 % i == 0){
max = i;
}
}
printf("最大公约数为%d,最小公倍数为%d\n",max,min);
return 0;
}
2.给定一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);
2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者3 7或者5 7,中间用空格分隔);
3、只能被其中一个数整除(输出这个除数);
4、不能被任何数整除,输出小写字符‘n’,不包括单引号。
【输入】输入一行,包括一个整数。
【输出】输出一行,按照描述要求给出整数被3,5,7整除的情况。
【输入样例】
105
【输出样例】
3 5 7
本题我是运用了if,else的嵌套条件判断来写的,但是这样太麻烦了,老师最后指出只需要if就可以了,在if(条件判断)之后就能输出这个数字,如果不满足条件就不会输出,代码量减少了很多,但是这样会不灵活,输出有些别扭,下面的代码是我原本的代码。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num;
printf("请输入一个数\n");
scanf("%d",&num);
if(num % 3 == 0)
{
if(num % 5 == 0){
if(num % 7 == 0){
printf("3 5 7\n");
}else{
printf("3 5\n");
}
}else{
if(num % 7 == 0){
printf("3 7\n");
}else{
printf("3\n");
}
}
}else{
if(num % 5 == 0){
if(num % 7 == 0){
printf("5 7\n");
}else{
printf("5\n");
}
}else{
if(num % 7 == 0){
printf("7\n");
}else{
printf("n\n");
}
}
}
return 0;
}