c语言程序设计——实验报告六
- 实验项目名称:
- 实验项目类型:验证性
- 实验日期:
一、实验目的
- 熟练掌握三种循环语句并能正确运用;
- 能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;
- 进一步学习程序调试;
- 了解中国算法,百钱买百鸡。
二、实验硬、软件环境
Windows计算机、Dev c 6.0
三、实验内容及步骤
实验内容:
编写程序:
(1)编写程序,计算1-3+5-7+9……-99+101的值。
(2)编写程序,用*输出一个等腰三角型。
(3)编写程序,打印1000-9999范围内所有的玫瑰花数。玫瑰花数是指一个四位数,它的各位数字的4次方之和等于该数本身。
(4)某黑夜一司机碰伤行人后逃逸,经警方调查,有三个目击证人。甲说:车牌号的前两位相同;乙说:车牌号的后两位加起来等6;丙说:车牌号是一个四位数并且能被2整除。根据上述线索,编程列出可能的车牌号。
(5)思考题:百钱买百鸡。
我国古代数学家张丘键在《算经》中出了一道题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?请编程并输出答案。
实验步骤:
项目一:编写程序,计算1-3+5-7+9……-99+101的值。
解题思路
核心代码
//计算 1-3+5-7+.....-99+101
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int sum = 0;
int flag = 1;
for(int i = 1;i <= 101; i+=2){
sum = sum + i*flag;
flag = -flag;
}
printf("计算 1-3+5-7+.....-99+101 = ");
printf("%d\n\n",sum);
puts("=============================================");
puts("王永成 23080905040502");
puts("=============================================");
return 0;
}
实验截图
项目二:(2)编写程序,用*输出一个等腰三角型。
解题思路
核心代码
//*号打印 等腰三角形
#include <stdio.h>
#include <stdlib.h>
#define d 11
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int xing_num = 1;
int kong_num = 1;
for (int i = 0; i < d; i ++ ){
for(int j = d; j > kong_num;j--) printf(" ");
kong_num += 1;
for(int z = 1; z <= xing_num; z++) printf("*");
xing_num += 2;
puts(" ");
}
puts("=============================================");
puts("王永成 23080905040502");
puts("=============================================");
return 0;
}
实验截图
项目三:(3)编写程序,打印1000-9999范围内所有的玫瑰花数。玫瑰花数是指一个四位数,它的各位数字的4次方之和等于该数本身。
解题思路
核心代码
//玫瑰花数 四位数的每个数的四次方之和都是它本身
#include <stdio.h>
#include <stdlib.h>
#define MAX 9999
#define MIN 1000
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int Bit,Ten_Bits,Hundred,kilobit;
printf("1000 - 9999 之间的玫瑰花数有:");
for(int i = MIN;i <= MAX;i++){
int num = i;
Bit = num % 10;
num /= 10;
//printf("%d\n",Bit);
Ten_Bits = num % 10;
num /= 10;
//printf("%d\n",Ten_Bits);
Hundred = num % 10;
num /= 10;
//printf("%d\n",Hundred);
kilobit = num % 10;
num /= 10;
//printf("%d\n",kilobit);
if( i == (Bit*Bit*Bit*Bit + Ten_Bits*Ten_Bits*Ten_Bits*Ten_Bits + Hundred*Hundred*Hundred*Hundred + kilobit*kilobit*kilobit*kilobit)) {
printf("%d ",i);
}
}
puts("");
puts("=============================================");
puts("王永成 23080905040502");
puts("=============================================");
return 0;
}
实验截图
项目四:某黑夜一司机碰伤行人后逃逸,经警方调查,有三个目击证人。甲说:车牌号的前两位相同;乙说:车牌号的后两位加起来等6;丙说:车牌号是一个四位数并且能被2整除。根据上述线索,编程列出可能的车牌号。
解题思路
核心代码
//车牌号
#include <stdio.h>
#include <stdlib.h>
#define MAX 9999
#define MIN 1000
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int Bit,Ten_Bits,Hundred,kilobit;
int col = 1;
printf("可能的车牌号:\n");
for(int i = MIN;i < MAX;i++){
int num = i;
Bit = num % 10;
num /= 10;
//printf("%d\n",Bit);
Ten_Bits = num % 10;
num /= 10;
//printf("%d\n",Ten_Bits);
Hundred = num % 10;
num /= 10;
//printf("%d\n",Hundred);
kilobit = num % 10;
num /= 10;
//printf("%d\n",kilobit);
if(kilobit == Hundred && Bit + Ten_Bits == 6 && i % 2 == 0){
col % 4 == 0 ? puts(""):printf("%d ",i);
col++;
}
}
puts("");
puts("=============================================");
puts("王永成 23080905040502");
puts("=============================================");
return 0;
}
实验截图
项目五:思考题:百钱买百鸡。
核心代码
实验截图