实验1
实验任务1
1.
//打印一个字符小人 #include<stdio.h> int main() { printf(" o \n"); printf("<H>\n"); printf("I I\n"); printf(" o \n"); printf("<H>\n"); printf("I I\n"); return 0; }
2.
//打印一个字符小人 #include<stdio.h> int main() { printf(" o o \n"); printf("<H> <H>\n"); printf("I I I I\n"); return 0; }
实验任务2
1.
//1+2+3+..+n(设n的取值在100以内) //用数学归纳法(求和公式计算) #include<stdio.h> int main() { int n,sum; //从键盘上输入一个十进制整数给n scanf("%d" , &n) ; sum=n*(n+1)/2; //打印输出求和结果 printf("sum=%d\n", sum) ; return 0; }
2.
//1+2+3+..+n(设n的取值在100以内) //用数学归纳法(求和公式计算) #include<stdio.h> int main() { int n,sum; //从键盘上输入一个十进制整数给n scanf("%d" , &n) ; sum=(n+1)*n/2; //打印输出求和结果 printf("sum=%d\n", sum) ; return 0; }
3.
//1+2+3+..+n(设n的取值在100以内) //用数学归纳法(求和公式计算) #include<stdio.h> int main() { int n,sum; //从键盘上输入一个十进制整数给n scanf("%d" , &n) ; //待补足代码 sum=n/2*(n+1); //打印输出求和结果 printf("sum=%d\n", sum) ; return 0;
4.
//1+2+3+..+n(设n的取值在100以内) //用数学归纳法(求和公式计算) #include<stdio.h> int main() { int n,sum; //从键盘上输入一个十进制整数给n scanf("%d" , &n) ; //待补足代码 sum=(n+1)/2*n; //打印输出求和结果 printf("sum=%d\n", sum) ; return 0; }
回答:写法1和写法2可以实现题目要求,写法3于51的计算上出现问题,写法4于50的计算上出现问题。这些主要是由于于算法3和算法4中对应的51/2和(50+1)/2在二进制中的结果是小数,由于取int,而不是double导致存在误差,又由于乘以了数字相对较大的50与51,导致小数部分误差增大,造成了结果不精确。
实验任务3
#include<stdio.h> int main() { int a,b,t; a=3; b=4; printf("a=%d,b=%d\n",a,b); t=a; a=b; b=t; printf("a=%d,b=%d\n",a,b); return 0; }
回答:互换数值,将b原本的值赋给a,将a原本的值赋给b。
实验任务4
#include<stdio.h> int main() { int x,t,m; x=123; printf("x=%d\n",x); t=0; m=x%10; t=t*10+m; x=x/10; m=x%10; t=t*10+m; x=x/10; m=x%10; t=t*10+m; x=x/10; printf("t=%d\n",t); return 0; }
//从键盘上输入三个数据作为三角形边长,判断其能否构成三角形。 //构造三角形的条件:任意两边之和大于第三边 #include<stdio.h> int main() { float a,b,c; //输入三边边长 scanf("%f%f%f",&a,&b,&c) ; //判断能否构成三角形 //补足括号里的表达逻辑式 if(a+b>c&&a+c>b&&b+c>a) printf("能构成三角形\n"); else printf("不能构成三角形\n"); return 0; }
实验任务6
//计算10忆秒约等于多少年,并打印输出 #include<stdio.h> int main() { int year; //补足代码 double second; second=1000000000; year=(second/60/60/24/365)+0.5; printf("10亿秒约等于%d年\n",year) ; return 0; }
实验任务7
//生成一个[60,100)区间之间的随机数,并打印输出 #include<stdio.h> #include <stdlib.h> #include<time.h> int main() { int n; //补足代码 srand((unsigned)time(NULL)); n=(rand()%40+1)+40; printf("n=%d\n",n); return 0; }
回答:每次运行结果不同。
实验任务8
#include<stdio.h> int main() { char ans1,ans2,y,Y; printf("每次课前认真预习,课后及时复习了没?(输入y或Y表示有,输入n或N表示没有):"); ans1=getchar() ;//从键盘输入一个字符,赋值给ans1 getchar() ; printf("\n动手敲代码实践了没?(输入y或Y表示敲了,输入n或N表示木有敲):"); ans2=getchar() ; if((ans1 == 'y'||ans1 == 'Y')&&(ans2 == 'y'||ans2 == 'Y')) printf("\n罗马不是一天建成的,继续保持哦:)\n"); else printf("\n罗马不是一天毁灭的,我们来建设吧\n"); return 0; }
实验总结
产生一定范围随机数的通用表示公式
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1。