实验二

一、实验结论

Part1: 格式化输出函数printf()和格式化输入函数scanf()

%d:以十进制整数输出(对应int)  %f:按浮点数输出(对应float)   %e:按指数形式输出(对应double)  

%c:按字符输出(对应char)    %s:按字符串输出

%5d:若数据大于5,按实际输出;否则在左边补空格,使宽度为5

%lf:双精度浮点型(对应double)      %6.2f:float型数据按6位输出,小数位数为2位

%.3f:float型数据按保留小数点后三位(四舍五入)输出

double类型的数据在scanf()中引用要用%lf,在printf()中用%lf和%f都可以。

Part4: switch语句体验练习

有break的时候:

 

/*part4*/
#include <stdio.h>
int main(){
    int level;
    printf("请输入现在的等级(1-5):\n");
    scanf("%d",&level);
    switch(level){
        case 1:printf("high翻了:)\n");break;
        case 2:printf("low爆了:(\n");break;
        default:    printf("一言难尽,无法概况。。\n");
    }
    return 0;
    } 

 

运行结果为:

无break的时候:

没有break程序就会一直执行所有的case语句。

Part5: 简单编程小练习

/*part5*/
#include <stdio.h>
int main(){
    char ch;
    printf("请输入答案(A,B,C,D):\n");
    scanf("%c",&ch);
    if(ch=='A')
    printf("binggo,you're right~\n");
    else
    printf("trt,again~\n");
     
    return 0;
}

运行结果:

Part6: 拓展练习(教材106页第六题)

输入一个正整数,求它的所有素数因子。

/*素数因子*/
#include <stdio.h>
int main(){
    int x;
    int y=2;
    printf("请输入一个正整数:\n");
    scanf("%d",&x);
    do{
        if(x%y==0){
            printf("%d,",y);   
            x=x/y;
        }
        else
        y=y+1;    
        
    }while(x>1); 
    return 0;
    } 

运行结果:

程序存在一个问题,就是会重复出现同一个素数,这是因为算法中用到这个素数好多次。目前还不知道怎么解决这个问题。

二、实验总结与体会

格式符与他们所对应的数据类型的对应关系掌握得不是太好;

if语句中“{}”,“else”,“;”的使用不熟悉,老是出错误,尤其是加入循环语句后,需要多多练习。为了保证if语言的清晰,在if()后面无论是一个语句还是多个语句都最好加上{};

拓展练习中,不知道将算法如何改进,结果才不会重复输出同一个素数。

互评:

https://www.cnblogs.com/zzn123321/

 

https://www.cnblogs.com/yy-Siri/

https://home.cnblogs.com/u/shauifan/

 

posted @ 2019-03-31 11:10  xu97  阅读(293)  评论(1编辑  收藏  举报