C言語実験05_ループステートメント2

C言語実験05_ループステートメント2

実験05(01)スクリーニング法を使用して1000以内の素数を見つける

输出时每行显示 10 个数据。输入描述
无
输出描述
一行输出 10 个数,中间空格隔开
输出样例
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349
353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463
467 479 487 491 499 503 509 521 523 541
547 557 563 569 571 577 587 593 599 601
607 613 617 619 631 641 643 647 653 659
661 673 677 683 691 701 709 719 727 733
739 743 751 757 761 769 773 787 797 809
811 821 823 827 829 839 853 857 859 863
877 881 883 887 907 911 919 929 937 941
947 953 967 971 977 983 991 997
#include <stdio.h>
int main()
{
    
    
    int i, n, t, x;
    t = 0;
    x = 0;
    for (n = 2; n < 1000; n++)
    {
    
    
        for (i = 2; i < n; i++)
        {
    
    
            if (n % i == 0)
            {
    
    
                t = 1;
            }
        }
        if (t == 0)
        {
    
    
            if (x % 10 == 0)
                printf("\n");
            printf("%d", n);
            x++;
            if (x % 10 != 0)
                printf(" ");
        }
        t = 0;
    }
    printf("\n");
    return 0;
}

実験05(02)サンプル検査

题目描述
有 1000 台产品(编号从 1~1000),要从中抽出 15 台进行抽样检测。请设计一个抽样模拟程
序,输出抽样结果,输出时要求每行输出五个数据。
【提示】产生 15 个 1~1000 间的随机数,请查阅 srand()和 rand()函数。
抽样的结果需要保存到数组中,且样品编号不能重复。
输入描述
无输入
输出描述
输出抽样的 15 个数,每行 5 个,以%-6d 方式输出。
输入样例
无
输出样例
本题由于为随机产生的数,因此没有设置测试用例,所以无需在意分数,只要得到类似上面
样例输出的 3 行 5 列的 1~1000 之间的 15 个数即可
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 3
#define N 5
int main()
{
    
    
    int i, j, x;
    time_t t;
    x = 0;
    srand((unsigned)time(&t)); //<stdlib.h>中的库函数
    for (i = 0; i < M; i++)
    {
    
    
        for (j = 0; j < N; j++)
        {
    
    
            if (x % 5 == 0)
                printf("\n");
            printf("%-6d", rand() % 1000);
            x++;
        }
    }
    printf("\n");
    return 0;
}

実験05(03)スコアの計算

实验 5.5 从键盘输入一个班(全班最多不超过 30 人)学生某课的成绩,当输入成绩为负值
或超出规定人数时,输入结束,分别实现下列功能: (1)输出各分数段的学生人数及所占
的百分比,并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,
并打印这些学生名单;题目描述
【提示】(1)用 score[i]存放第 i+1 个学生的成绩。将成绩分为 6 个分数段,60 分以下为第 0
段,60~69 分为第 1 段,70~79 分为第 2 段,80~89 分为第 3 段,90~99 分为第 4 段,100 分
为第 5 段,因此成绩与分数段的对应关系为分数段或为 0(当成绩<60 时)或者为(成绩-50)
/10(当成绩>=60 时)
各分数段的学生人数保存在数组 stu 中,用 stu[i]存放第 i 段的学生人数。对于每个学生的
成绩,先计算该成绩所对应的分数段,然后将相应分数段的人数加 1,即 stu[i]++。输出各
个阶段的学生人数及比例,当 score[i]<0 时,打印 i+1(即学生序号)和 score[i]。
(2)先计算全班平均分 aver,当第 i 个学生的成绩 score[i]>= aver 时,打印 i+1(即学生序号)
和 score[i]。
输入描述
依次输入各个学生的分数,当输入负数或超过 30 人时结束
输出描述
输出不及格学生名单
输出高于平均分学生名单
输出高于平均分的学生人数
输出各个分数段的学生人数及所占比例
注意:所有实数保留小数点后两位数,即以%.2f 格式输出
输入样例
10
20
30
40
50
60
70
80
90
100
100
99
98
76
79.6
54.3
67.9
12.4
56.0
65.9
78.1
-1
输出样例
不及格名单为
student1,10.00
student2,20.00
student3,30.00
student4,40.00
student5,50.00
student16,54.30
student18,12.40
student19,56.00
高于平均分名单为
student7,70.00
student8,80.00
student9,90.00
student10,100.00
student11,100.00
student12,99.00
student13,98.00
student14,76.00
student15,79.60
student17,67.90
student20,65.90
student21,78.10
高于平均分的人数为 12
<60 人数=8,所占有比例为 38.10
60-69 人数=3,所占有比例为 14.29
70-79 人数=4,所占有比例为 19.05
80-89 人数=1,所占有比例为 4.76
90-99 人数=3,所占有比例为 14.29
100 人数=2,所占有比例为 9.52
#include <stdio.h>
double score[30];
double avg, sum;
int i, t, t1, t2, t3, t4, t4, t5, t6, s;
void bujige();
void scan();
void panduan();
void pingjun();
void bili();
int main()
{
    
    
    scan();
    bujige();
    pingjun();
    panduan();
    bili();
    return 0;
}
void bujige()
{
    
    
    printf("不及格名单为\n");
    for (i = 0; i < t; i++)
        if (score[i] < 60)
            printf("student%d,%.2lf\n", i + 1, score[i]);
}
void scan()
{
    
    
    for (i = 0; i < 30; i++)
    {
    
    
        scanf("%lf", &score[i]);
        if (score[i] < 0)
            break;
        t++;
        sum = sum + score[i];
    }
}
void panduan()
{
    
    
    for (i = 0; i < t; i++)
    {
    
    
        if (score[i] < 60)
            t1++;
        else if (score[i] < 70)
            t2++;
        else if (score[i] < 80)
            t3++;
        else if (score[i] < 90)
            t4++;
        else if (score[i] < 100)
            t5++;
        else if (score[i] == 100)
            t6++;
    }
}
void pingjun()
{
    
    
    avg = sum / t;
    printf("高于平均分名单为\n");
    for (i = 0; i < t; i++)
    {
    
    
        if (score[i] > avg)
        {
    
    
            printf("student%d,%.2lf\n", i + 1, score[i]);
            s++;
        }
    }
    printf("高于平均分的人数为%d\n", s);
}
void bili()
{
    
    
    printf("<60 人数=%d,所占有比例为%.2lf\n", t1, (double)t1 / t * 100);
    printf("60-69 人数=%d,所占有比例为%.2lf\n", t2, (double)t2 / t * 100);
    printf("70-79 人数=%d,所占有比例为%.2lf\n", t3, (double)t3 / t * 100);
    printf("80-89 人数=%d,所占有比例为%.2lf\n", t4, (double)t4 / t * 100);
    printf("90-99 人数=%d,所占有比例为%.2lf\n", t5, (double)t5 / t * 100);
    printf("100 人数=%d,所占有比例为%.2lf\n", t6, (double)t6 / t * 100);
}

実験05(04)別の文字列で最初に出現する文字列を見つける

查找一个字符串在另一个字符串中首次出现的位置,要求字符串从键盘输入。题目
描述
【提示】数组 str1 存放母串,str2 存放子串,子串与母串中的字符逐个比较,相同则比较下
一个字符;不同,则子串重新从第一个字符、母串从下一个字符开始比较。
当子串遍历完,即到串尾,则意味着在母串找到了子串;否则,则未找到子串。
输入描述
分别输入母串和子串(注意:长度不能超过 100)
输出描述
若查找成功输出“母串中发现子串”,否则输出“母串中未发现子串”
输入样例
are you ok?
ok?
输出样例
母串中发现子串
#include <stdio.h>
int main()
{
    
    
    int i, j, n = 0;
    char str1[100], str2[100];
    gets(str1);
    gets(str2);
    for (i = 0, j = 0; str1[i] != '\0' && str2[j] != '\0';) //初始化是\0 空字符
    {
    
    
        if (str1[i] == str2[j])
        {
    
    
            i++;
            n++;
            j++;
        }
        else
        {
    
    
            j = 0;
            n = 0;
            i++;
        }
    }
    if (n == j && str2[j] == '\0')
        printf("母串中发现子串\n");
    else
        printf("母串中未发现子串\n");
    return 0;
}

実験05(05)ルービックキューブの検証

题目描述
在下面的 5X5 魔方矩阵中,每一样、每一列及对角线上的元素之和都是相等的,试编写程序
将这些魔方矩阵中的元素读到一个二维数组中,然后验证其是否为魔方矩阵,并将其按如下
格式显示在屏幕上(见题目描述)
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
[提示] 定义一个含有 12 个元素的数组,存放各行、各列及对角线的元素之和。
输入描述
无输入(矩阵中的元素直接由二维数组初始化获得)
输出描述
输出该魔方矩阵(元素以%-6d 格式输出)
并打印“这个矩阵是魔方矩阵”。
输入样例
无
输出样例
这个矩阵是魔方矩阵
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
#include <stdio.h>
#define M 5
int main()
{
    
    
    int a[M][M] = {
    
    17, 24, 1, 8, 15, 23, 5, 7, 14, 16, 4, 6, 13, 20, 22, 10, 12, 19, 21, 3, 11, 18, 25, 2, 9};
    int i, j, t;
    t = 0;
    printf("这个矩阵是魔方矩阵\n");
    for (i = 0; i < M; i++)
    {
    
    
        for (j = 0; j < M; j++)
        {
    
    
            if (t % 5 == 0 && t != 0)
                printf("\n");
            printf("%-6d", a[i][j]);
            t++;
            if (j != M - 1)
                printf(" ");
        }
    }
    return 0;
}

おすすめ

転載: blog.csdn.net/weixin_44179485/article/details/112715530