实验目的
1、在上机实践中,逐渐熟悉掌握选择结构、循环结构的设计方法,学会用数组处理批量数据和用函数实现模块化程序设计。
2、回顾巩固C语言程序设计的操作方法与规则,提高应用和实践能力。
3、了解程序设计中的常见错误,提高纠错能力。
实验内容
程序一
功能
求两个正整数的最大公约数和最小公倍数。
             
                流程图                                N-S图
 
源代码
#include <stdio.h>
int main()
{
    int p,r,n,m,temp;
    printf("请输入两个正整数n,m:");
    scanf("%d,%d",&n,&m);
    if(n<m)
    {
        temp=n;
        n=m;
        m=temp;
    }
    p=n*m;
    while(m!=0)
    {
        r=n%m;
        n=m;
        m=r;
    }
    printf("它们的最大公约数是:%d\n",n);
    printf("它们的最小公倍数是:%d\n",p/n);
    return 0;
}
运行结果
程序二
功能
用二分法求在(-10,10)之间的根
流程图                            N-S图
源代码
#include <stdio.h>
#include <math.h>
int main()
c编程步骤{
    float x0,x1,x2,fx0,fx1,fx2;
    do
    {
        printf("enter x1 & x2:");
        scanf("%f,%f",&x1,&x2);
        fx1=x1*((2*x1-4)*x1+3)-6;
        fx2=x2*((2*x2-4)*x2+3)-6;
    }
    while(fx1*fx2>0);
    do
    {
        x0=(x1+x2)/2;
        fx0=x0*((2*x0-4)*x0+3)-6;
        if((fx0*fx1)<0)
        {
            x2=x0;
            fx2=fx0;
        }
        else
        {
            x1=x0;
            fx1=fx0;
        }
    }
    while(fabs(fx0)>=1e-5);
    printf("x=%6.2f\n",x0);
    return 0;
}
运行结果
程序三
功能
    输出二十以内的奇数魔方阵。
                    流程图                                                  N-S 图
源代码
#include<stdio.h>
int main()
{
    int n=0,i,j,k=1,p,q,a[20][20]={0};
    while(!(n%2))
    {
        printf("请输入一个小于20的奇数:");
        scanf("%d",&n);
    }
    i=0;
    j=n/2;
    for(p=0;p<n;p++)
    {
        for(q=0;q<n;q++)
        {
            if(q>0)
            {
                i=(i+n-1)%n;
                j=(j+1)%n;
            }
            a[i][j]=k++;
        }
        i=(i+1)%n;
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf("%4d",a[i][j]);
        printf("\n");
    }
    return 0;
}
运行结果
程序四
功能
    一篇文章共有三行文字,每行有八十个字符。分别统计出其中英文大写字母、小写字母、数字、空格及其他字符的个数
流程图                                                  N-S图
源代码
#include <stdio.h>
int main()
{
    int i,j,upp,low,dig,spa,oth;
    char text[3][80];
    upp=low=dig=spa=oth=0;
    for(i=0;i<3;i++)
    {
        printf("please input line %d:\n",i+1);
        gets(text[i]);
        for(j=0;j<80&&text[i][j]!='\0';j++)
        {
            if (text[i][j]>='A'&&text[i][j]<='Z')
                upp++;