第二章

作業(yè)比賽編號 : 100000567 - 《算法筆記》2.3小節(jié)——C/C++快速入門->選擇結(jié)構(gòu)

C例題4-3 比較交換3個實(shí)數(shù)值插龄,并按序輸出
#include<stdio.h>

//最基礎(chǔ)的指針運(yùn)用于比較大小 
void swap(double *a,double *b){
    double temp;
    temp=*a;
    *a=*b;
    *b=temp;
}
int main(){
    double a,b,c;
    scanf("%lf%lf%lf",&a,&b,&c);
    double *p1=&a;
    double *p2=&b;
    double *p3=&c;
    if(a>b) swap(p1,p2);
    if(b>c) swap(p2,p3);
    if(a>b) swap(p1,p2);
    printf("%.2f %.2f %.2f\n",a,b,c);
    return 0;
    }
D習(xí)題4-4 三個整數(shù)求最大值
#include<stdio.h>
int max(int a,int b){
    int result;
    if(a>b) {
        return a;
    }else{
        return b;
    }
    //如果想return一個值饲齐,則返回類型不能用void 
}

int main(){
    int a,b,c,m1,m2;
    scanf("%d%d%d",&a,&b,&c);
    m1=max(a,b);
    m2=max(m1,c);
    printf("%d\n",m2);
    return 0;
    
}
E習(xí)題4-10-1 獎金計(jì)算
#include<stdio.h>
int main(){
    double I,bonus;
    scanf("%lf",&I);
    if(I<=100000){
        bonus=I*0.1;
    }else if(100000<I&&I<=200000){
        bonus=100000*0.1+(I-100000)*0.075;
    }else if(200000<I&&I<=400000){
        bonus=100000*0.1+100000*0.075+(I-200000)*0.05;
    }else if(400000<I&&I<=600000){
        bonus=100000*0.1+100000*0.075+200000*0.05+(I-400000)*0.03;
    }else if(600000<I&&I<=1000000){
        bonus=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(I-600000)*0.015;
    }else{
        bonus=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(I-1000000)*0.01;
    }
    printf("%.2f\n",bonus);
    return 0;
} 

作業(yè)比賽編號 : 100000568 - 《算法筆記》2.4小節(jié)——C/C++快速入門->循環(huán)結(jié)構(gòu)

A例題5-1-1 連續(xù)自然數(shù)求和
#include<stdio.h>
int main(){
    int i=1,sum=0;
    while(i<=100){
        sum=sum+i;
        i++;
    }
    printf("%d",sum);
    return 0;
}
B例題5-1-2 連續(xù)自然數(shù)求和
#include<stdio.h>
int main(){
    int i=1,sum=0;
    do{
        sum=sum+i;
        i++;
    }while(i<=100);
    printf("%d",sum);
    return 0;
}
C例題5-1-3 連續(xù)自然數(shù)求和
#include<stdio.h>
int main(){
    int i,sum=0;
    for(i=1;i<=100;i++){
        sum=sum+i;
    }
    printf("%d",sum);
    return 0;
}
D例題5-1-4 連續(xù)自然數(shù)求和
#include<stdio.h>
int main(){ 
    //題目要求用break童漩,感覺是多此一舉 
    int i,n,sum=0;
    scanf("%d",&n);
    for(i=1;i<2*n;i++){
        sum=sum+i;
        if(i>=n) break;
    }
    printf("%d\n",sum);
    return 0;   
}
E例題5-1-5 連續(xù)自然數(shù)求和
#include<stdio.h>
int main() {
    // 求1+2+3+...和的程序涩哟,要求得到使和數(shù)大于1000的最小正整數(shù)N。
    int i, sum = 0;
    for (i = 1; sum <= 1000; i++, sum += i);
    printf("%d\n", i);-
    return 0; 
}
F例題5-6 矩陣輸出
#include<stdio.h>
int main(){
    for(int i=1;i<=4;i++){
        for(int j=1;j<=5;j++){
            printf("%3d",i*j);
            if (j==5){
                printf("\n");
            }
        }
    }
    return 0;
}
G例題5-7 求圓周率pi的近似值(repeat)

需要注意的問題:
1.10的次方的表示方法:


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

/* 用如下公式 pi/4 = 1-1/3+1/5-1/7....求圓周率PI的近似值锤躁,直到發(fā)現(xiàn)某一項(xiàng)的絕對值
 小于10-6為止(該項(xiàng)不累加)穆桂。
 如果需要計(jì)算絕對值,可以使用C語言數(shù)學(xué)庫提供的函數(shù)fabs绰疤,如求x的絕對值,則為fabs(x).
 輸出 PI=圓周率的近似值 輸出的結(jié)果總寬度占10位舞终,其中小數(shù)部分為8位轻庆。末尾輸出換行。 */
 
int main(){
    double pi=0.0;
    //term表示每一項(xiàng)权埠,如1榨了、-1/3、1/5等
    for(double term = 1, i = 1, j = 3;fabs(term)>=1e-6;j+=2){
        pi+=term;
        i=-i;
        term=i/j;
    }   
    printf("PI=%10.8f\n",pi*4);
    return 0;
}
H例題5-8 Fibonacci數(shù)列

參考:用數(shù)組和隊(duì)列的方法實(shí)現(xiàn)斐波那契數(shù)列

#include<stdio.h>
//方法一:遞歸 

/*
輸入 一個不超過50的正整數(shù)
輸出 Fibonacci數(shù)列的第n個數(shù)攘蔽,末尾輸出換行 
*/
int fibo(int n) {
    if (n == 1 || n == 2) return 1;
    else return fibo(n-2) + fibo(n-1);
}

int main(){
    int N;
    scanf("%d",&N);
    printf("%d\n",fibo(N));
    return 0;
} 
/*
int整形的取值范圍是-2147483648~21474836479(-2^31~(2^31-1)) 
第46項(xiàng)之后,即從第47項(xiàng)開始呐粘,大小超出int的范圍
因此47項(xiàng)及以后按照此方法輸出的數(shù)都為負(fù)數(shù) 
*/ 
I習(xí)題5-10 分?jǐn)?shù)序列求和

注意一點(diǎn):類型一致的問題

#include<stdio.h>
/*
有分?jǐn)?shù)序列:2/1满俗,3/2转捕,5/3,8/5唆垃,13/8五芝,21/13,...
求前20項(xiàng)的和
輸出 小數(shù)點(diǎn)后保留6 位小數(shù)辕万,末尾輸出換行 
*/
double top(int n) {
    if(n==1) return 2;
    else if(n==2) return 3;
    else return top(n-2)+top(n-1);
}
double bottom(int n) {
    if(n==1) return 1;
    else if(n==2) return 2;
    else return bottom(n-2)+bottom(n-1); 
}
int main(){
    double sum=0.0;
    for(int i=1;i<=20;i++){
        sum+=top(i)/bottom(i); 
        /*如果在定義函數(shù)top和bottom時
        用整型的話最后計(jì)算結(jié)果即使進(jìn)行強(qiáng)制類型轉(zhuǎn)化算出來的也是整數(shù)并且結(jié)果偏差較大 
        因此在定義函數(shù)時就應(yīng)該用double枢步,那么在main函數(shù)中也不必再進(jìn)行強(qiáng)制類型轉(zhuǎn)換了 
        */ 
    }
    printf("%.6f\n",sum);
    return 0;
    
} 

作業(yè)比賽編號 : 100000569 - 《算法筆記》2.5小節(jié)——C/C++快速入門->數(shù)組

A | 習(xí)題6-4 有序插入(repeat)

注意:做這個題之前先搞懂插入排序

#include<stdio.h>
/*
輸入 第一行輸入以空格分隔的9個整數(shù),要求按照從小到大的順序輸入 
     第二行輸入一個整數(shù)渐尿,將此整數(shù)插入到前有序的9個數(shù)中醉途,
     使得最終的10個數(shù)依然是從小到大有序的 
輸出 從小到大輸出這10個數(shù),每個數(shù)一行
提示 定義數(shù)組時砖茸,把數(shù)組長度定義為10 
*/ 
int main(){
    int a[10],temp;
    int j=10;
    //一次性向數(shù)組中輸入幾個數(shù)字中間用空格需要利用循環(huán)
    for(int i=1;i<=9;i++){
        scanf("%d",&a[i]);
    } 
    scanf("%d",&temp);
    /*
    類似插入排序
    但由于前面9個數(shù)是已經(jīng)按照大小順序排好了
    所以只需要比較一趟 
    具體比較辦法是從后往前枚舉已有序部分來確定插入的位置 
    */ 
    while(j>1 && temp<a[j-1]){
        a[j]=a[j-1];
        j--;
    } 
    a[j]=temp;
    for(int i=1;i<=10;i++){
        printf("%d\n",a[i]);
    }
    
    return 0;
} 
B | 習(xí)題6-5 數(shù)組元素逆置
#include<stdio.h>
/*
將一個長度為10的整數(shù)數(shù)組中的值按逆序重新存放
輸入 以空格分隔的10個整數(shù)
輸出 按相反的順序輸出這10個數(shù)隘擎,每個數(shù)占一行 
*/
int main(){
    int str[10],temp;
    for(int i=0;i<=9;i++){
        scanf("%d",&str[i]); 
    }
    for(int i=0;i<=4;i++){
        temp=str[i];    //temp暫存str[i]的值 
        str[i]=str[9-i];
        str[9-i]=temp;
    }
    for(int i=0;i<=9;i++){
        printf("%d\n",str[i]);
    }
    return 0;
}
C | 習(xí)題6-6 楊輝三角(repeat)
#include<stdio.h>
/*
輸入 正整數(shù)n,表示將要輸出的楊輝三角的層數(shù)
輸出 輸出n層楊輝三角凉夯,每一層的整數(shù)之間用一個空格隔開货葬,最多輸出10層 
*/

/*
思路:開兩個數(shù)組,a[10] 和temp[10]
temp用于臨時存放由a推導(dǎo)出的下一層
然后某一層推導(dǎo)并打印過后再將temp中的數(shù)據(jù)存入a中 
*/
int main(){
    int n, a[10] = {1, 1};
    scanf("%d",&n);
    for (int i=1; i<=n; i++){
        if (i == 1) printf("%d\n", a[0]);
        else if (i == 2) printf("%d %d\n", a[0], a[1]);
        else {  /*打印第一劲够、二層以外的其他層*/
            int temp[10];
            temp[0] = 1;
            temp[i-1] = 1;
            int j;
            for (int j=1; j<=i-2; j++){
                temp[j] = a[j-1] + a[j];
            }
            /*打印這一層*/
            for (int k=0; k<=i-1; k++){
                printf("%d ",temp[k]);
            } 
            printf("\n");
            /*更新a[10]即是將temp存入數(shù)組a中震桶,以供下一次循環(huán)使用*/
            for (int m=0; m<=i-1; m++){
                a[m] = temp[m];
            } 
        }
    }
    return 0;
} 
D | 習(xí)題6-12 解密
#include<stdio.h>
#include<string.h>
/*
輸入 一行密文
輸出 解密后的原文,單獨(dú)占一行
加密原則:第一個字母變成第26個字母征绎,
          第i個字母變成第(26-i+1)個字母 
          非字符字符不變 
*/

int main() {
    char a[100];
    gets(a);
    for (int i=0; i<=strlen(a); i++) {
        /*利用ASCII*/
        if (a[i] >= 65 && a[i] <= 90) {
            a[i] = 155 - a[i];  //A~Z:65~90
        } else if (a[i] >=97 && a[i] <= 122) {
            a[i] = 219 - a[i]; //a~z:97~122
        }
    }
    puts(a);
    return 0;
} 
E | 習(xí)題6-13 字符串比較
#include<stdio.h>
#include<string.h>
/* 比較兩個字符串s1和s2的大小蹲姐,如果s1>s2,則輸出一個正數(shù); 
若s1=s2炒瘸,則輸出0淤堵;若s1<s2,則輸出一個負(fù)數(shù)顷扩。
要求:不用strcpy函數(shù)拐邪;兩個字符串用gets函數(shù)讀入。
輸入 輸入2行字符串
輸出 一個整數(shù)隘截,表示這兩個字符串 比較的差值扎阶,單獨(dú)占一行。*/
int main() {
    char str1[100],str2[100]; 
    gets(str1);
    gets(str2);
    int result;
    int L = strlen(str1) < strlen(str2) ? strlen(str1) : strlen(str2);
    for (int i = 0; i < L; i++) {
        result = str1[i] - str2[i];
        if (result != 0) break;
    }
    printf("%d\n", result);
    return 0;
    
}
F | 例題6-1 逆序輸出數(shù)組元素
#include<stdio.h>
/*
輸入 10個整數(shù)(存儲在一個長度為10的整形數(shù)組中)婶芭,以空格分隔
輸出 將輸入的10個整數(shù)逆序輸出东臀,每個數(shù)占一行 
*/
int main() {
    int a[10],temp;
    for (int i = 0; i <= 9; i++) {
        scanf("%d", &a[i]);
    }
    for (int i=0; i <=4; i++) {
        temp = a[i];
        a[i] = a[9-i];
        a[9-i] = temp; 
    }
    for (int i = 0; i <= 9; i++) {
        printf("%d\n", a[i]);
    }
    return 0;
}
G | 例題6-2 數(shù)組求解Fibonacci數(shù)列問題
#include<stdio.h>
/*
要求用數(shù)組求解 Fibonacci數(shù)列
輸出 Fibonacci數(shù)列的前20個數(shù),每個數(shù)占一行 
*/
int main() {
    int a[100];
    a[0] = 1;
    a[1] = 1;
    for (int i = 2; i <=19; i++) {
        a[i] = a[i-2] + a[i-1];
    }
    for(int i = 0; i <=19; i++) {
        printf("%d\n", a[i]);
    }
} 
H | 例題6-3 冒泡排序
#include<stdio.h>
/*
冒泡排序 
輸入 以空格分隔的10個整數(shù)
輸出 依次輸出排好序的10個整數(shù)犀农,每個數(shù)占一行  
*/  
int main() {
    int a[10];
    for (int i=0; i<=9; i++) {
        scanf("%d",&a[i]);
    }
    for (int i=1; i<=9; i++) { //10個數(shù)比較9躺
        //每一趟從a[0]到a[10-j-1]都要與后面一個數(shù)比較
        //例如:第一趟時惰赋,從a[0]到a[8]都需要和后面一個數(shù)進(jìn)行比較,8=10-1-1 
        for (int j=0; j<=10-i-1; j++) {
            if (a[j] > a[j+1]) {
                int temp = a[j+1];
                a[j+1] = a[j];
                a[j] = temp;
             }
         } 
        
    }
    for (int i=0; i<=9; i++) {
        printf("%d\n",a[i]);
    }
    return 0;
}

I | 例題6-4 矩陣轉(zhuǎn)置

J | 例題6-9 字符串求最大值(repeat)
#include<stdio.h>
#include<string.h> 
/*
輸入 3行字符串,每行均為一個字符串 
輸出 一行赁濒,輸出三個字符串中的最大者 
*/ 

int main() {
    //使用strcmp()和strcpy() 
    char str1[50], str2[50], str3[50],max[50];
    gets(str1);
    gets(str2);
    gets(str3);
    if (strcmp(str1, str2) > 0) {
        strcpy(max, str1);
    }else {
        strcpy(max, str2);
    }
    if (strcmp(max, str3) < 0) {
        strcpy(max, str3);
    }
    puts(max);
    return 0;
}

作業(yè)比賽編號 : 100000570 - 《算法筆記》2.6小節(jié)——C/C++快速入門->函數(shù)

A | 習(xí)題7-5 字符串逆序存放
B | 習(xí)題7-7 復(fù)制字符串中的元音字母

作業(yè)比賽編號 : 100000571 - 《算法筆記》2.7小節(jié)——C/C++快速入門->指針

A | C語言10.1
B | C語言10.2
C | C語言10.10
D | C語言10.15
E | C語言10.16

作業(yè)比賽編號 : 100000572 - 《算法筆記》2.8小節(jié)——C/C++快速入門->結(jié)構(gòu)體(struct)的使用

A | C語言11.1
B | C語言11.2
C | C語言11.4
D | C語言11.7
E | C語言11.8

作業(yè)比賽編號 : 100000574 - 《算法筆記》2.10小節(jié)——C/C++快速入門->黑盒測試

A | A+B 輸入輸出練習(xí)I
B | A+B 輸入輸出練習(xí)II
C | A+B 輸入輸出練習(xí)III
D | A+B 輸入輸出練習(xí)IV
E | A+B 輸入輸出練習(xí)V
F | A+B 輸入輸出練習(xí)VI
G | A+B 輸入輸出練習(xí)VII
H | A+B 輸入輸出練習(xí)VIII

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末轨奄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拒炎,更是在濱河造成了極大的恐慌挪拟,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件击你,死亡現(xiàn)場離奇詭異玉组,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丁侄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門惯雳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绒障,你說我怎么就攤上這事吨凑。” “怎么了户辱?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵鸵钝,是天一觀的道長。 經(jīng)常有香客問我庐镐,道長恩商,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任必逆,我火速辦了婚禮怠堪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘名眉。我一直安慰自己粟矿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布损拢。 她就那樣靜靜地躺著陌粹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪福压。 梳的紋絲不亂的頭發(fā)上掏秩,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音荆姆,去河邊找鬼蒙幻。 笑死,一個胖子當(dāng)著我的面吹牛胆筒,可吹牛的內(nèi)容都是我干的邮破。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼决乎!你這毒婦竟也來了队询?” 一聲冷哼從身側(cè)響起派桩,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤构诚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后铆惑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體范嘱,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年员魏,在試婚紗的時候發(fā)現(xiàn)自己被綠了丑蛤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡撕阎,死狀恐怖受裹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情虏束,我是刑警寧澤棉饶,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站镇匀,受9級特大地震影響照藻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汗侵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一幸缕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晰韵,春花似錦发乔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浪蹂,卻和暖如春抵栈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坤次。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工古劲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缰猴。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓产艾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子闷堡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容