任务一顺序结构程序设计
1.编写已知半径r为15求圆面积的程序
文字:
1.定义一个变量r=15;
2.让3.14与r*r相乘得的积为s;
3.输出s的值;
流程图:

代码:
#include <stdio.h>
int main()
{
double r, s, pi = 3.1415926;
printf("请输入圆的半径为:");
scanf_s("%lf", &r);
s = pi * r * r;
printf("面积为:%f", s);
return 0;
}
执行结果:

2.输入一个三位数的正整数,输出其反序数(如123反序数为321)
文字:
① 定义x,a,b,c;
② 输入一个三位数整数;
③ a=x/100;b=x/10%10;c=x%10;
④ 输出反序数c,b,a
流程图:

代码:
#include<stdio.h>
int main()
{
int x, a, b, c;
printf("请输入一个三位整数:");
scanf_s("%d", &x);
a = x / 100;
b = x / 10 % 10;
c = x % 10;
printf("该数的反序数=%d%d%d", c, b, a);
return 0;
}
执行结果:

3.把大写字母转换为小写字母,小写字母转换为大写字母
文字:
- 定义char c1,c2;
- C1=‘A’;c2=‘b’;
- 计算c1=A+32;c2=b-32;
- 以字符形式输出c1,c2;以十进制整数数据输出c1,c2;
流程图:

代码:
#include<stdio.h>
int main()
{
char c1, c2;
c1 = 'A';
c2 = 'b';
c1 = c1 + 32;
c2 = c2 -32;
printf("%c,%c\n", c1, c2);
printf("%d,%d\n", c1, c2);
return 0;
}
执行结果:

4.从键盘上输入三个变量的值,其中a=5,b=6,c=7将三个变量的值进行交换使得a=6,b=7,c=5
文字:
- 定义变量a,b,c,t;
- 赋值a=5,b=6,c=7;
- 将a赋值给t;
- 将b赋值给a;
- 将c赋值给b;
- 将t赋值给c;
- 输出变量a,b,c;
流程图:

代码:
#include<stdio.h>
int main()
{
int a, b,c, t ;
a = 5; b = 6;c=7;
t = a;
a = b;
b = c;
c = t;
printf("a:%db:%dc:%d", a, b, c);
return 0;
}
执行结果:

5.给定三角形的底a和高h,求三角形面积
文字:
- 定义变量底为a,高为h,面积为s;
- 请输入三角形的底和高;
- 计算s=0.5*a*h;
- 输出三角形的面积为s;
流程图:

代码:
#include <stdio.h>
int main() {
float a, h, s;
printf("请输入三角形的 底 高\n");
scanf_s("%f %f", &a, &h);
s = 0.5 * a * h;
printf("三角形的面积为: %f\n", s);
return 0;
}
执行结果:

6.给定梯形的上底a下底b和高h,求梯形的面积
文字:
① 定义变量a,b,h,s;
② 输入变量梯形的上底a,下底b和高h;
③ 计算s=((a+b)*h)/2
④ 输出梯形面积s
流程图:

代码:
#include <stdio.h>
int main()
{
float a;
float c;
float h;
float s;
printf("请你输入梯形的上底a,下底b和高度h:\n");
scanf_s("%f %f %f", &a, &c, &h);
s = ((a + c) * h) / 2;
printf("梯形的面积为:%0.03f\n", s);
return 0;
}
执行结果:

7.由键盘输入一个大写字母,将其转换成小写字母并输出
文字:
- 定义c1;
- 输入一个大写字母赋给c1;
- 计算c1=c1+32;
- 输出转换出的小写字母;
流程图:

代码:
#include<stdio.h>
int main()
{
char c1;
scanf_s("%c", &c1);
c1 = c1 + 32;
printf("%c", c1);
return 0;
}
执行结果:

8.若有变量定义语句float a=1.23856;输出a的值,要求保留小数点后两位,第三位进行四舍五入
文字:
- 定义变量f;
- 输入变量f的值;
- 将f的值保留两位小数超出的部分四舍五入并输出宽度为1;
- 输出f;
流程图:

代码:
#include<stdio.h>
int main()
{
float f;
scanf_s("%f", &f);
printf("f=%1.2f", f);
return 0;
}
执行结果:

任务二 .分支结构程序设计
1.输入三角形的三条边,判断是否能构成三角形,若能则计算并输出三角形的面积,否则给出出错提示
文字:
- 定义三个整型变量a,b,c;
- 定义一个单精度实型变量area;
- 定义一个双精度实型变量s;
- 输入三角形的三条边a,b,c;
- 判断能否构成三角形;
- 若不能,则输出不能构成三角形的提示;
- 若能,则计算三角形的面积;
- 输出三角形的面积;
流程图:

代码:
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, c;
float area;
double s;
printf("请输入三角形的三条边长 :");
scanf_s("%d,%d,%d", &a, &b, &c);
s = (a + b + c) / 2.0;
if (a + b <= c || b + c <= a || a + c <= b)
printf("不构成三角形\n");
else
{
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("三角形的面积是: % f\n", area);
}
return 0;
}
执行结果:

2.输入三个实数要求从小到大的顺序输出
文字:
- 定义三个变量a,b,c;
- 判断a>b,使a小于b;
- 判断a>c,使a小于c;
- 判断b>c,使b小于c;
- 将a,b,c从小到大输出;
流程图:

代码:
#include<stdio.h>
int main()
{
float a, b, c, t;
scanf_s("%f,%f,%f", &a, &b, &c);
if (a > b)
{
t = a; a = b; b = t;
}
if (a > c)
{
t = a; a = c; c = t;
}
if (b > c)
{
t = b; b = c; c = t;
}
printf("%5.2f,%5.2f,%5.2f\n", a, b, c);
return 0;
}
执行结果:

3.输入一个正整数输出其实偶数还是奇数
文字:
- 定义int a;
- 输入一个整数a;
- 判断整数a是否为偶数;
- 是则输出为偶数;
- 否则输出为奇数;
流程图:

代码:
#include<stdio.h>
int main()
{
int a;
printf("输入一个整数:");
scanf_s("%d", &a);
if (a % 2 == 0)
{
printf("为偶数");
}
else
{
printf("为奇数");
}
return 0;
}
执行结果:

4.将考试成绩百分制改为等级制,规则为:90~100分改为A:75~89分改为B;60~74改为C,60分以下改为D
文字:
- 定义变量a;
- 输入学生成绩a;
- 判断a是否大于零小于一百,是则转第④步,否则输出输入成绩错误!;
- 判断a是否大于90,是则输出该同学的等级为A,否则转第⑤步;
- 判断a是否大于75小于89,是则输出该同学的等级为B,否则转第⑥步;
- 判断a是否大于60小于74,是则输出该同学的等级为C,否则转第⑦步;
- 输出该同学的等级为D;
流程图:

代码:
#include<stdio.h>
int main()
{
int a;
printf("输入学生的成绩:\n");
scanf_s("%d", &a);
if (a < 0 || a>100) {
printf("输入的成绩错误!\n");
}
else {
if (a > 90) {
printf("该同学的等级为:A");
}
if (a >= 75 && a <= 89) {
printf("该同学的等级为:B");
}
if (a >= 60 && a <= 74) {
printf("该同学的等级为:C");
}
if (a >= 0 && a <= 59) {
printf("该同学的等级为:D");
}
}
return 0;
}
执行结果:
5.随机生成一个3位正整数,判断该数是否为水仙花数。所谓水仙花数,是指该数各位数字的立方之和等于其本身。
文字:
- 定义变量i,j,k,x;
- 输入一个三位整数x;
- 计算i=x/100;
- 计算j=x/10%10;
- 计算k=x%10;
- 判断x是否小于零,是则输出Input error,否则转第⑦步;
- 判断x是否等于i * i * i + j * j * j + k * k * k,是则输出yes,否则输出No;
流程图:

代码:
#include<stdio.h>
void main()
{
int i, j, k, x;
scanf_s("%d", &x);
i = x / 100;
j = x / 10 % 10;
k = x % 10;
if (x < 0)
{
printf("Input error");
}
else if (x == i * i * i + j * j * j + k * k * k)
printf("Yes");
else
printf("No");
}
执行结果:

6.输入3个整数,输出其中的最大值。要求只能用条件表达式
文字:
- 定义变量a,b,c,t;
- 判断a大于b大于c,是则t=a,否则转第③步;
- 判断b大于a大于c,是则t=b,否则转第④步;
- t=c;
- 输出t;
流程图:

代码:
#include<stdio.h>
int main()
{
int a, b, c, t;
scanf_s("%d%d%d", &a, &b, &c);
if (a > b && a > c)
t = a;
else if (b > a && b > c)
t = b;
else t = c;
printf("%d", t);
}
执行结果

7.由键盘输入字符,判断该字符的类别(分别是控制字符,数字,小写字母,大写字母,还是其他字母?)
文字:
- 定义变量字符c;
- 输入一个字符赋给c;
- 判断字符c是否为控制符,是则输出该字符为控制符,否则转第④步;
- 判断字符c是否为数字字符,是则输出该字符为数字字符,否则转第⑤步;
- 判断字符c是否为大写字母,是则输出该字符为大写字母,否则转第⑥步;
- 判断字符c是否为小写字母,是则输出该字符为小写字母,否则输出该字符为其他字符;
流程图:

代码:
#include <stdio.h>
int main()
{
char c;
printf("请输入一个字符\n");
c = getchar();
if(c < 32)
printf("该字符为控制符\n");
else if (c >= 48 && c <= 57)
printf("该字符为数字字符\n");
else if (c >= 65 && c <= 90)
printf("该字符为大写字母");
else if(c >= 97 && c <= 122)
printf("该字符为小写字母");
else
printf("为其他字符\n");
return 0;
}
执行结果:

8.由键盘输入某个同学的考试成绩将其转换成(成绩低于60分时输出Fail,成绩在60~69分时输出Pass,成绩在70~89分时输出Good,成绩在90~100分时输出Excellent)
文字:
- 定义变量a;
- 输入学生成绩a;
- 判断a是否大于零小于一百,是则转第④步,否则输出输入成绩错误!;
- 判断a是否大于90,是则输出Excellent,否则转第⑤步;
- 判断a是否大于70小于89,是则输出Good,否则转第⑥步;
- 判断a是否大于60小于69,是则输出Pass,否则转第⑦步;
- 输出Fail;
流程图:

代码:
#include<stdio.h>
int main()
{
int a;
printf("输入学生的成绩:\n");
scanf_s("%d", &a);
if (a < 0 || a>100) {
printf("输入的成绩错误!\n");
}
else {
if (a > 90) {
printf("Excellent");
}
if (a >= 70 && a <= 89) {
printf("Good");
}
if (a >= 60 && a <= 69) {
printf("Pass");
}
if (a >= 0 && a <= 59) {
printf("Fail");
}
}
return 0;
}
执行结果:

9.编写一个程序,根据键盘输入的年,月输出该年,该月的天数
文字:
- 定义变量year,month,days;
- 输入年year,月month;
- 定1,3,5,7,8,10,12为31;
- 定4,6,9,11为30;
- 判断是否为闰年,是则输出29,否则输出28;
- 输出某年某月的天数是某天;
流程图:

代码:
#include<stdio.h>
int main()
{
int year, month, days;
printf("输入年,月:");
scanf_s("%d,%d", &year, &month);
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
days = 29;
else
days = 28;
break;
}
printf("%d年%d月的天数是%d天\n", year, month, days);
return 0;
}
执行结果:

10.由键盘上输入任意三个整数,按降序将其输出
文字:
- 定义变量x,y,z;
- 定义一个临时变量t;
- 任意输入三个整数;
- 判断x是否小于y,若小于则t=x,x=y,y=t,否则转第⑤步;
- 判断x是否小于z,若小于则t=x,x=z,z=t,否则转第⑥步;
- 判断y是否小于z,若小于则t=y,y=z;z=t,否则转第⑦步;
- 输出三个整数的降序;
流程图:

代码:
#include <stdio.h>
int main()
{
int x, y, z;
int t;
printf("请任意输入3个数:");
scanf_s("%1d,%1d,%1d", &x, &y, &z);
if (x < y)
{
t = x;
x = y;
y = t;
}
if (x < z)
{
t = x;
x = z;
z = t;
}
if (y < z)
{
t = y;
y = z;
z = t;
}
printf("降序输出为:%d,%d,%d\n", x, y, z);
return 0;
}
执行结果:

11.由键盘上输入一个字符,若该字符为小写字母,则将其转换为大写字母若该字符为大写字母,则将其转换为小写字母否则将其转换为ASCII码表中该字符的下一个字符
文字:
- 定义一个变量a;
- 获取一个字符赋给a;
- 判断a是否为大写字母,是则转为小写字母输出,否则转第④步;
- 判断a是否为小写字母,是则转为大写字母输出,否则转换为ASCII码表中该字符的下一个字符;
流程图:

代码:
#include<stdio.h>
int main()
{
char a;
a = getchar();;
if (a >= 65 && a <= 90) {
a = a + 32;
printf("%c\n", a);
}
else if (a >= 97 && a <= 122) {
a = a - 32;
printf("%c\n", a);
}
else {
a = a + 1;
printf("%c\n", a);
}
return 0;
}
执行结果:

12.从键盘输入3个整数a,b,c要求按从小到大输出
文字:
- 定义三个变量a,b,c;
- 判断a>b,使a小于b;
- 判断a>c,使a小于c;
- 判断b>c,使b小于c;
- 将a,b,c从小到大输出;
流程图:

代码:
#include<stdio.h>
int main()
{
float a, b, c, t;
scanf_s("%f,%f,%f", &a, &b, &c);
if (a > b)
{
t = a; a = b; b = t;
}
if (a > c)
{
t = a; a = c; c = t;
}
if (b > c)
{
t = b; b = c; c = t;
}
printf("%5.2f,%5.2f,%5.2f\n", a, b, c);
return 0;
}
执行结果:

任务三·循环结构程序设计
1.由键盘上输入一行以回车结束的字符,分别统计出其中英文字母、空格、数字和其他字符的个数
文字:
- 定义变量upper,lower,digit,i,other;
- 定义变量ch;
- 设置存放统计结果为零;
- 输入十个字符;
- 判定是否执行了十次,是则转第⑩步,否则转第⑥步;
- 判定ch是否为小写英文字母,是则lower+1,否则转第⑦步;
- 判定ch是否为大写英文字母,是则upper+1,否则转第⑧步;
- 判定ch是否为数字字符,是则digit+1,否则other+1;
- 转第⑤步;
- 输出英文字母、空格、数字和其他字符的个数;
流程图:

代码:
#include<stdio.h>
int main()
{
int upper, lower, digit, i, other;
char ch;
upper = lower = digit = other = 0;
printf("输入10个字符 :");
for (i = 1; i <= 10; i++)
{
ch = getchar();
if (ch >= 'a' && ch <= 'z')
lower++;
else if (ch >= 'A' && ch <= 'Z')
upper++;
else if (ch >= '0' && ch <= '9')
digit++;
else
other++;
}
printf("小写字母%d个,大写字母%d个,数字%d个,其他字符%d个\n", lower, upper, digit, other);
return 0;
}
执行结果:

2.从键盘上输入一批学生的成绩(以负数作为结束标志),计算平均分,并统计不及格成绩的个数
文字:
- 定义变量num,n;
- 给score,total赋初值为0;
- 定义num,n初始值为0;
- 请输入分数(0~100),输入的成绩个数n+1;
- 判定分数是否小于零,若小于零直接跳出循环,否则转第⑥步;
- 判定分数是否小于60,小于则num+1,否则转第⑦步;
- 累加总分;
- 成绩个数+1,转第⑤步;
- 输出平均分数;
- 输出不及格的人数;
流程图:

代码:
#include<stdio.h>
int main()
{
int num, n;
float score,total = 0;
num = 0; n = 0;
while (1)
{
printf("请输入分数#%d(0~100):", n + 1);
scanf_s("%f", &score);
if (score < 0)
break;
if (score < 60)
num++;
total = total + score;
n++;
}
printf("平均分数是:%.2f.\n",total / n);
printf("不及格的有:%d.\n", num);
return 0;
}
执行结果:

3.从键盘输入一个整数,计算并输出它是几位数。若输入的是负数时,要求重新输入。
文字:
- 定义变量num,i赋初值为0;
- 输入一个整数;
- 判断整数是否为负数,如果为负数则输出输入整数为负数,请重新输入,并结束这次循环进入下次循环,否则转第④步;
- 判断num是否不为零,是则num/10,i+1,然后转第③步,否则转第⑤步;
- 输出位数i;
流程图:

代码:
#include<stdio.h>
int main() {
int num, i = 0;
printf("请输入一个整数:");
while (1) {
scanf_s("%d", &num);
if (num < 0) {
printf("输入整数为负数,请重新输入:");
continue;
}
while (num > 0) {
num /= 10;
i++;
}
break;
}
printf("位数是:%d", i);
}
执行结果:

4.输出100以内能被3整除且个位数为6的所有整数
文字:
- 定义变量i,j;
- 给i赋初值为零;
- 判断i是否小于等于10,若大于等于10则转第⑦步,否则转第④步;
- j=i*10+6;
- 判断j除以3是否不等于零,若不等于零则转第⑥步,若等于零则转第⑦步;
- 结束这次循环进入下次循环转第③步;
- 输出j转第③步;
- 结束循环
流程图:

代码:
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i <= 10; i++)
{
j = i * 10 + 6;
if (j % 3 != 0)
{
continue;
}
printf("%d ", j);
}
return 0;
}
执行结果:

5.输出四位整数中满足:该数的9倍恰好是其反序数的数(如1234的反序数是4321)
文字:
- 定义变量a,b,c,d,x,n;
- 给n赋初值9999;
- n-1,判断n是否大于等于1000或小于等于9999,是则转第④步,否则转第⑥步;
- 计算 a = n / 1000%10;
b = n/100%10;
c = n / 10 % 10;
x = n % 10;
- 计算 y = x * 1000 + c * 100 + b * 10 + a
- 判断y==n*9,是则输出n,否则转第③步;
流程图:

代码:
#include<stdio.h>
int main()
{
int a, b, c, d, x, n;
for (n = 9999; n >= 1000 && n <= 9999; n--) {
a = n / 1000 % 10;
b = n / 100 % 10;
c = n / 10 % 10;
d = n % 10;
x = d* 1000 + c * 100 + b * 10 + a;
if (x == n * 9) {
printf("%d", n);
}
}
return 0;
}
执行结果:














