1. 程式人生 > 其它 >執行緒通訊的一些問題

執行緒通訊的一些問題

技術標籤:筆記c語言

C實驗題目彙總

實驗一

  1. 編寫程式,程式中使用兩種方法,將兩個變數的值互換後輸出。
#include<stdio.h>
int main(){
    int a, b , temp;
    printf("請輸入兩個用空格相間隔的數字");
    scanf("%d %d", &a, &b);
    temp = a;
    a = b;
    b = temp;
    printf("互換後:%d %d\n", a, b);
    return 0;
}
#include
<stdio.h>
int main(){ int a, b, sum; printf("請輸入兩個用空格相間隔的數字"); scanf("%d %d",&a, &b); sum = a + b; a = sum - a; b = sum - b; printf("互換後:%d %d\n", a,b); return 0; }

2.從鍵盤輸入一個四位正整數,首先分離出該整數中的每一位數字,並按升序顯示輸出各位數字;然後用分離出的最大數做為十位數,最小數做為個位數組成一個新的數字,並顯示輸出結果。例如,若輸入的四位正整數為 9215,按升序顯示輸出分離出的各位數字為 1 2 5 9;組成數字為 91。

具體要求: ①四位正整數由鍵盤輸入,程式應該對輸入的數字是否為四位正整數進行簡單的判斷; ②對輸出結果要有具體說明。

#include<stdio.h>
void swap(int *i, int *n){
    int temp;
    temp = *i;
    *i = *n;
    *n = temp;
}
int main(){
    int number, a, b, c, d,e;
    printf("輸入數字:");
    scanf("%d", &number);
    if(number <
10000 && number >= 1000){ d = number % 10; c = (number % 100 - d) / 10; b = (number % 1000 - number % 100)/100; a = (number - b*100 - c*10 - d) / 1000; int str[4] = {a, b, c, d}; for(int f = 0; f < 4; f++){ for(int m = 0; m < 3-f; m++){ if (str[m] > str[m+1]){ swap(&str[m], &str[m+1]); } } } printf("排序後升序顯示:"); int i; for(i = 0; i < 4; i++){ if(i != 0)printf(","); printf("%d", str[i]); if(i == 3)printf("\n"); } printf("新組成的數字:%d%d\n", str[3], str[0]); }else{ printf("輸入的數字不符合要求!\n"); } return 0; }

3.編寫程式,計算並輸出下面分段函式的值:
x*x x<10
y= 2x+5 10≤x≤20
3x-7 其它

#include<stdio.h>
int main(){
    double x;
    printf("請輸入數字x的值");
    scanf("%lf", &x);
    printf("分段函式計算結果為:");
    if(x < 10){
        printf("%lf\n", x * x);
    }else if(x <= 20 && x >= 10){
        printf("%lf\n", 2*x + 5);
    }else if(1){
        printf("%lf\n", 3*x +-7);
    }
    return 0;
}

4.將長整型數 s 中每一個數字位上為偶數的數依次取出,構成一個新數放在 t 中,數的高低位置不變。例如:s 中的數字數為:87653142 時,t 中的數為 8642。

#include<stdio.h>
long int fanzhuan(long int r){
    int a;
    long int sum;
    sum = 0;
    while(r != 0){
        a = r % 10;
        sum = sum*10 + a;
        r = r / 10;
    }
    return sum;
}
int main(){
    long int a;
    int b ;
    long int sum = 0;
    long int mus;
    printf("請輸入長整型數字s:");
    scanf("%ld", &a);
    for(int i = 0; i < 99; i++){
        b = a % 10;
        if(b % 2 == 0 ){
            sum = sum*10 + b;
        }
        a = a / 10;
        if(a == 0)break;
    }
    mus = fanzhuan(sum);
    printf("依次取出偶數結果為:%ld\n", mus);
    return 0;
}

6.計算:
在這裡插入圖片描述
具體要求:
①最後一項若小於等於 0.001 時停止計算; ②輸出形式為:n=具體值,s=和的具體值;
③按照上述要求,則程式的計算結果:n=500,S=2.985678。

#include<stdio.h>
int main(){
    double n = 1;
    double S = 0;
    int a;
    while ((2*n - 1)/(4*n*n) > 0.001){
        S = S + (2*n - 1)/(4*n*n);
        n = n + 1;
    }
    a = (double)n;
    printf("n = %d, S = %lf\n", a, S);
    return 0;
}