• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

zyyjl

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

实验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;
}

回答:作用是逐步将最后一位的数字移到最高一位。(目前此程序只能移动三位数整数)
 
 
实验任务5
//从键盘上输入三个数据作为三角形边长,判断其能否构成三角形。
//构造三角形的条件:任意两边之和大于第三边

#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。

 

 

posted on 2023-03-04 22:18  邹雨憬  阅读(22)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3