| 
 | 
 
 
发表于 2019-3-6 17:37:33
|
显示全部楼层
 
 
 
测试题: 
 
0. 请问下边代码将打印多少个 'A'? 
    #include <stdio.h> 
 
    int main() 
    { 
            int i, j; 
 
            for (i = 0; i != 10, j != 10; i++) 
            { 
                    for (j = 0; j < 10; j++) 
                    { 
                            putchar('A'); 
                    } 
            } 
 
            putchar('\n'); 
 
            return 0; 
    } 
答:100个A 
 
 
1. 请问下边代码会打印多少个 'B'? 
    #include <stdio.h> 
 
    int main() 
    { 
            int i = 0; 
 
            while (i++) 
            { 
                    if (i > 10) 
                    { 
                            goto Label; 
                    } 
                    putchar('B'); 
            } 
 
    Label:  putchar('\n'); 
 
            return 0; 
    } 
答:10个B。 
 
 
2. 请写出表达式 a = b = c = 5 中的"l-value"? 
答:a, b, c 
 
 
4. 请使用条件运算符求出变量 x 的绝对值,并存放到变量 z 中。 
答:z = x >= 0 ? x : -x; 
 
 
5. C 语言其实在大部分情况下不使用 goto 语句也能做得很好,请尝试将下列代码段写成不带 goto 语句的版本。 
A.  
    if (size > 12) 
    { 
            goto a; 
    } 
    goto b; 
    a:      cost = cost * 1.05; 
            flag = 2; 
    b:      bill = cost * flag; 
 
if (size > 12) 
{ 
        cost = cost * 1.05; 
        flag = 2; 
} 
bill = cost * flag; 
 
B.  
    if (ibex > 14) 
    { 
            goto a; 
    } 
    sheds = 2; 
    goto b; 
    a:      sheds = 3; 
    b:      help = 2 * sheds; 
 
if (ibex > 14) 
{ 
        sheds = 3; 
} 
else 
{ 
        sheds = 2; 
} 
belp = 2 * sheds; 
 
C. 
    readin: scanf("%d", &score); 
    if (score < 0) 
    { 
            goto stage2; 
    } 
    count++; 
    goto    readin; 
    stage2: printf("count = %d\n", count); 
 
 
while (1) 
{ 
        scanf("%d", &score); 
        if (score < 0) 
        { 
                printf("count = %d\n", count); 
                break; 
        } 
         
        count++; 
} 
 
 
动动手: 
0. 假设小甲鱼和黑夜手上均有 10000 元,小甲鱼以 10% 的单利息投资,黑夜则以每年 5% 的复合利息投资。请编写一个程序,计算需要多少年黑夜手头的 Money 才会超过小甲鱼? 
提示:单利息即每年的利息均为投资额 * 利率;复合利息则是每年的本息所得作为第二年的投资额。 
 
#include <stdio.h> 
#include <math.h> 
 
int main(void) 
{ 
    float fishc = 10000, black = 10000; 
    int i = 0; 
 
    while(fishc >= black) 
    {    
        i++; 
        fishc = 10000 + (10000 * 0.1 * i);  
        black = 10000 * pow(1.05, i);  
    }    
 
    printf("%d年后,黑夜的投资额超过小甲鱼!\n", i);  
    printf("小甲鱼的投资额是:%.2f\n", fishc); 
    printf("黑夜的投资额是:%.2f\n", black); 
 
    return 0; 
} 
 
 
 
1. 都说天降横财不是什么好事儿,这不,小甲鱼中了双色球一等奖,扣除税收后还剩下 400 万人民币。假设小甲鱼把这些钱做固定投资,每年可以获得 8% 的红利,但在每年的第一天,小甲鱼都会取出 50 万作为本年度的开销…… 
请编写一个程序,计算需要多久小甲鱼才会败光所有家产,再次回到一贫如洗?(本故事纯属虚构,小甲鱼还是需要大家的支持才能养活自己滴,点击购买 VIP 支持小甲鱼 -> 传送门) 
 
#include <stdio.h> 
 
int main(void) 
{ 
    float fishc = 400; 
    int i = 0; 
 
    while (fishc > 0) 
    {    
        i++; 
 
        fishc -= 50;  
        fishc *= 1.08; 
 
    }    
 
    printf("%d年之后,小甲鱼败光了所有的家产,再次回到一贫如洗......\n", i);  
 
    return 0; 
} 
 
 
 
2. 根据以下已知公式求 Pi 的近似值,要求正确计算出小数点后前 7 位(即3.1415926)。 
提示1:分子永远都是1;版权属于: 
提示2:后一项的分母是前一项的分母加2; 
提示3:可以通过i = -i实现符号取反的效果; 
提示4:要正确计算出小数点后前 7 位数,最后一项的绝对值需要小于 10^(-8) 才行(该项不累加); 
提示5:求某数的绝对值可以使用 fabs 函数(函数快查:fabs – 求绝对值) 
 
#include <stdio.h> 
#include <math.h> 
 
 
int main(void) 
{ 
    double currentitem = 1; 
    double pi4 = 0; 
    int i = 1; 
    double min = pow(10, -8); 
     
    while (currentitem > min) 
    {    
        currentitem = 1 / (double)i; 
        pi4 = ((i + 1) / 2) % 2 ? pi4 + currentitem : pi4 - currentitem; 
        i += 2; 
    }    
     
    printf("PI = %.7f\n", pi4 * 4);  
 
    return 0; 
} 
 
 
3. 这是一个有趣的古典数学问题:如果说兔子在出生两个月后,就有繁殖能力,在拥有繁殖能力之后,这对兔子每个月能生出一对小兔子来。假设所有兔子都不会死去,能够一直干下去,那么两年之后可以繁殖多少对兔子呢? 
 
#include <stdio.h> 
 
int main(void) 
{ 
    int i; 
    int m0 = 1, m1 = 0, m2 = 0; 
 
    for (i = 0; i < 24; i++) 
    {    
        int tmp = m2;  
        m2 = m2 + m1;  
        m1 = m0;  
        m0 = tmp; 
    }    
 
    printf("2年后,会有%d对兔子。\n", m0 + m1 + m2); 
 
    return 0; 
} 
 
2年后,会有5896对兔子。 
 
 
 |   
 
 
 
 |