1. 使用switch-case实现学生成绩管理
从外部输入一个学习成绩,范围为0 – 100:
成绩大于等于90分,则输出A,
成绩大于等于80,则输出B,
成绩大于等于60,则输出C,
小于60,则输出D
提示:取成绩的十位,判断与9 10 8 7 6 是否相等。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int score;
char degree;
printf("请输出学生的成绩\n");
scanf("%d", &score);
if(score < 0 || score > 100)
printf("输出成绩不合法\n");
else{
switch(score/10){
case 10:
case 9:
printf("grade = A\n");
break;
case 8:
printf("grade = B\n");
break;
case 7:
case 6:
printf("grade = C\n");
break;
default:
printf("grade = D\n");
break;
}
}
}
2. 猴子吃桃
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
2.1 while循环实现
#include <stdio.h>
int main(int argc, const char *argv[]){
int i = 1;
int peach_number = 1;
while(i < 10){
peach_number =(peach_number + 1) * 2;
// printf("i = %d, peach_number = %d\n", i, peach_number);
i++;
}
printf("猴子一共摘了%d个桃子\n", peach_number);
return 0;
}
2.2 for循环实现
#include <stdio.h>
int main(int argc, const char *argv[]){
int i = 1;
int peach_number = 1;
for(int i = 1; i < 10; i++){
peach_number =(peach_number + 1) * 2;
}
printf("猴子一共摘了%d个桃子\n", peach_number);
return 0;
}
3.水仙花数
打印100-1000以内的所有的水仙花数
水仙花数:是指一个三位数的每一位的立方和还等于这个数,则这个数称之为水仙花数
例如:
num = 个位数的立方 + 十位数的立方 + 百位数的立方
if(153== 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3)
{
153就是水仙花数
}
3.1 while循环实现
使用gcc编译的时候,需要加-lm
#include <stdio.h>
#include <math.h>
int main(int argc, const char *argv[])
{
int i = 100;
int gw, sw, bw;
while(i < 1000){
bw = i / 100;
sw = i / 10 % 10;
gw = i % 10;
if(i == pow(bw, 3) + pow(gw, 3) + pow(sw, 3))
printf("%d ", i);
i++;
}
return 0;
}
3.2 使用for循环实现
#include <stdio.h>
#include <math.h>
int main(int argc, const char *argv[])
{
int i = 100;
int gw, sw, bw;
for(int i = 100; i < 1000; i++){
bw = i / 100;
sw = i / 10 % 10;
gw = i % 10;
if(i == pow(bw, 3) + pow(gw, 3) + pow(sw, 3))
printf("%d ", i);
}
return 0;
}
4.打印平行四边形
for循环打印以下形状,_是一个空格
********
_********
__********
___********
____********
_____********
4.1 使用for循环实现
#include <stdio.h>
int main(int argc, const char *argv[])
{
for(int i = 0; i < 6; i++){
for(int j = 0; j < 8 + i; j++){
if(i <= j)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
4.2使用while循环实现
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i = 0;
while(i < 6){
int j = 0;
while(j < 8 + i){
if(i <= j)
printf("*");
else
printf(" ");
j++;
}
printf("\n");
i++;
}
return 0;
}
5. 99 乘法表
5.1 通过while循环
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i = 1;
while(i <= 9){
int j = 1;
while(j <= i){
printf("%d * %d = %-2d", i, j, i * j);
j++;
}
printf("\n");
i++;
}
return 0;
}
5.2 通过for循环实现
#include <stdio.h>
int main(int argc, const char *argv[])
{
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++ ){
printf("%d * %d = %-2d", i, j, i * j);
}
printf("\n");
}
return 0;
}
6.打印图案
使用嵌套循环产生下列图案,要求用for嵌套循环
F
_FE
__FED
___FEDC
____FEDCB
_____FEDCBA
6.1 使用for循环实现
#include <stdio.h>
int main(int argc, const char *argv[])
{
int index = 70;
int times = 1;
for(int i = 0; i < 6; i++){
for(int j = 0; j < times + i; j++){
if(i <= j)
printf("%c", index--);
else
printf("_");
}
times++;
index = 70;
printf("\n");
}
return 0;
}