1、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
(1)写出上述编程思路。
(2)根据(1)思路编程序。
答:
(1)首先,定义整型变量i,j,k;接着,利用三层for循环遍历由数字1、2、3、4组成的三位数,再用 if 语句判断出互不相同且无重复数字的三位数,并打印输出。
(2)代码如下:
#include <stdio.h>
int main() {
int i, j, k;
for (i = 1; i < 5; i++) { // 以下为三重循环
for (j = 1; j < 5; j++) {
for (k = 1; k < 5; k++) { // 确保i、j、k三位互不相同
if (i != k && i != j && j != k) {
printf("%d,%d,%d\n", i, j, k);
}
}
}
}
return 0;
}
2、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
(1)写出上述编程思路。
(2)根据(1)思路编程序。
答:
(1)假设该数为x,n和m分别是和的算术平方根,则,,计算等式:,设:m+n=i,m-n=j,i*j=168,i和j至少一个是偶数,绝对不可能全是奇数,因为奇数*奇数=奇数,偶数*偶数=偶数,偶数*奇数=偶数,而168是偶数。可得:(i+j)=2m,(i-j)=2n,所以(i+j)和(i-j)全为偶数,因为奇+奇=偶,奇-奇=偶,偶+偶=偶,偶-偶=偶,所以 i 和 j 要么都是偶数,要么都是奇数。又因为 i 和 j 至少一个是偶数,所以 i 和 j 都是偶数,又因为i*j=168,所以 i 和 j 均大于等于2。
(2)代码如下:
#include <stdio.h>
int main() {
int i, j, m, n, x;
for (i = 1; i < 168 / 2 + 1; i++) {
if (168 % i == 0) {
j = 168 / i;
if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0) {
m = (i + j) / 2;
n = (i - j) / 2;
x = n * n - 100;
printf("%d + 100 = %d * %d\n", x, n, n);
printf("%d + 268 = %d * %d\n", x, m, m);
}
}
}
return 0;
}
3、输入三个整数x,y,z,请把这三个数由小到大输出。
答:
代码如下:
#include <stdio.h>
int main() {
int x, y, z, t;
printf("请输入三个数字:\n");
fflush(stdout);
scanf("%d%d%d", &x, &y, &z);
if (x > y) { /*交换x,y的值*/
t = x;
x = y;
y = t;
}
if (x > z) { /*交换x,z的值*/
t = z;
z = x;
x = t;
}
if (y > z) { /*交换z,y的值*/
t = y;
y = z;
z = t;
}
printf("从小到大排序:%d %d %d\n ", x, y, z);
return 0;
}
4、输出9*9口诀。
答:
代码如下:
#include <stdio.h>
int main() {
int i, j, result;
for (i = 1; i < 10; i++) {
for (j = 1; j <= i; j++) {
result = i * j;
printf("%d*%d=%-3d", i, j, result); /*-3d表示左对齐,占3位*/
}
printf("\n"); /*每一行后换行*/
}
return 0;
}
5、古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
答:
代码如下:
#include <stdio.h>
int main() {
int f1 = 1, f2 = 1, i;
for (i = 1; i <= 20; i++) {
printf("%12d%12d", f1, f2);
if (i % 2 == 0) printf("\n");
f1 = f1 + f2;
f2 = f1 + f2;
}
return 0;
}
运行结果:
6、利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
答:
代码如下:
#include <stdio.h>
int main() {
int score;
char grade;
printf("请输入分数:");
fflush(stdout);
scanf("%d", &score);
grade = (score >= 90) ? 'A' : ((score >= 60) ? 'B' : 'C');
printf("%c\n", grade);
return 0;
}
7、将小写字母转换成大写字母。
代码如下:
#include <stdio.h>
int main( )
{
char c1;
scanf("%c",&c1);
if (c1>='a'&&c1 <='z')
printf("%c", c1-32);
else printf("%c", c1);
return 0;
}