顺序程序设计

ifeng / 2023-07-16 / 原文

顺序程序设计


1. 条件表达式

条件表达式结合方式自右向左

2. Switch语句

#include <stdio.h>

void main(){
    int a;
    printf("input integer number: ");
    scanf("%d", &a);
    switch (a) {
        case 1: printf("Monday\n"); 
            break ;
        case 2: printf("Tuesday\n");
            break;
        case 3: printf("Wednesday\n");
            break;
        case 4: printf("Thursday\n");
            break;
        case 5: printf("Friday\n");
            break;
        case 6: printf("Saturday\n");
            break;
        case 7: printf("Sunday\n");
            break;
        // 这个可以没有.顺序也没有要求     
        default: printf("error\n");  
    }
}

3. while语句

// 统计从键盘输入一行字符的个数
#include <stdio.h>
void main(){
    int n = 0;
    printf("input a stirng:\n");
    // 获取输入字符.
    while (getchar() != '\n'){
        n++;
    }
    printf("%d", n);
}

// 求一到一百的和
#inculde <stdio.h>
void main(){
    int i, sum = 0;
    i = 1;
    while (i <= 100){
        // 累加
        sum = sum + i;
        i++;
    }
    printf("%d\n", sum);
}

4. goto语句

// 求一到一百的和
#include <stdio.h>

void mian(){
    int i, sum = 0;
    i = 1;
    // goto语句和loop构成循环
    loop: if (i <= 100){
        sum = sum + i;
        i++;
        goto loop;
    }
    printf("%d\n", sum);
}

5. for循环

// 引入字符串的方式
char *s = "Hello world!";
char v1[] = "Hello world!";
char *p1 = v1;  // 第一个字符的内存地址

// 统计从键盘输入一行字符的个数
#include <stdio.h>

void main(){
    int n = 0;
    printf("input a stirng:\n");
    // 获取输入字符.
    char *s = "Hello world";  // 可以表示一个字符串
    while (getchar() != '\n'){  // 当输入回车时结束循环
        n++;
    }
    printf("%d", n);
}

for循环基本格式:

for循环注意事项:


for循环例题:

  1. 输出图形

    **
    ***......

// 输出图形
// * 
// **
// ......
# include <stido.h>

void main(){
    int i, j;
    for (i=1; i<7; i++){  // 循环的嵌套
        for (j=1; j<=i; j++){
             putchar("*");
        }
    }
    printf("\n");
}
  1. 题目: 有1.2.3.4个数字, 能组成多少个互不相同且无重复的三位数?都是多少?

    程序分析: 可填在百位. 十位. 个位的数字都是1. 2. 3. 4. 组成的所有排序去掉不满足条件的排序.

    #include <stdio.h>
    void main(){
        int i, j, k;
        printf("\n");
        for (i=1; j<5; j++){
            for (j=1; j<5; j++){
                for (k=1; k<5; k++){
                    if (i!=k && i!=j && j!=k)  // 判断是否相等
                        printf("%d, %d, %d\n", i, j, k);
                }
            }
        }
    }
    

6. break & continue

break和continue只能在循环中. 起到跳出循环的作用

题目1: 键盘中输入Esc退出循环. 输入Enter则不做任何处理. 继续输入下一个字符.

#include <conio.h>  // 后边getch和putch需要
void main(){
 char ch;
 for ( ; ; ){  // while(1)
     ch = getch();
     if (ch == 27);  // Esc ASCII码为27
     	break;  // 退出循环
     if (ch == 13);  // Enter ASCII码为13
     	continue;  // 跳出当前字符输出语句
     putch(ch);  // 输出字符
 }
 getch();  // 让程序停一下.敲任意键继续
}

题目2: 把100~200之间不能被3整除的数输出

void main(){
 int n;
 for (n=100; n<=200; n++){
     if (n%3 == 0){
         continue;  // 跳出当前循环
     printf("%d\n", n);
     }
 }
}

题目3: 求pi = 4(1 - 1/3 + 1/5 - 1/7 + 1/9 -......)

#include <stdio.h>
#include <dtdio.h>

void main(){
 int s; float n, t, pi;
 t = 1; 
 pi = 0;
 n = 1.0;
 s = 1;
 while (fabs(t) > 1e-6){  // fabs()判断精度
     pi = pi + t;
     n = n + 2;
     s = -s;
     t = s/n;
 }
 pi = pi * 4;
printf("pi=%10.6\n", pi);  // 宽度10 精度6
}

题目4: 求Fibonacci数列

#include <stdio.h>

void main(){
 long int f1, f2;
 f1 = 1; f2 = 1;
 for (i=1; i<=20; i++){
     printf("%12ld %12ld", f1, f2);
     if (i%2 == 0){
         printf("\n");  // 此步骤只是为了多余
     }
     f1 = f1 + f2;
     f2 = f2 + f1;
 }
}

题目5: 判断输入的是否为素数

#include <stdio.h>
#include <math.h>

void main(){
 int m, i, k;
 scanf("%d", &m);
 k = sqrt(m);  // 当m=26 -> k=5
 printf("%d", k);
 for (i = 2; i < k; i++){
     if (m%i == 0){
    		break;
 	}
 }
 if (i > k){
     printf("%d is a prime number\n", m);
 }else{
     printf("%d is not a prime number\n", m);
 }
}

题目6: 求100~200之间的素数

#include <stdio.h>
#include <math.h>

void main() {
 int m, k, i;
 // 从100~200中单数循环
 for (m = 101; m <= 200; m = m + 2) {
     k = sqrt(m);
     for (i = 2; i <= k; i++) {
         if (m % i == 0)
             break;
     }
     // 判断是否为素数
     if (i >= k + 1) {
         printf("%d\n", m);
     }
 }
 printf("\n");
}