周末作业2

1.char型数据在微机中储存值为0xc0,则printf以%d打印值为   -64

    0xc0 = 1100 0000 ==  -2^6 = -64 -> -64

2.char a=203;int b =a;int c = a&0xff ;b= -53   ;c= 203

3.linux下32位系统,char str = “hello”; int n = 10;

sizeof(str)=  5    ;sizeof (n)=  4 ;

4.int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n=2

5.有以下程序段,执行后,mul的值为( C   )

int a[ ] = {1,3,5,7,9};

int mul, *data , x;

mul = 1;

data = &a[1];

for(x=0; x<3; x++){

    mul *= *(data+x);

}

printf(“%d\n”, mul);

A.945          B.315           C.105         D.15

6.以下语句不能正确赋值的是(    A   )

A.char *s=" China" ;

B.char s3[20]=" China" ;

C.char s2[]={'C', 'h', 'i', 'n', 'a'};

D.char s1[10];  s1=" China" ;

7.有以下程序段x=7执行后的值为(  B )

int fun(int x) {

int p; if(x= =0 || x==1)

return(3);

p=x -fun(x- 2);

return p;

}

A.0     B. 2        C.5      D.6

8.假语句while(!E)中的表达式E等价于(D)

A.E ==1       B. E != 0     C. E !=1   D. E==0

9.有以下程序端,int k=0; while(k=1) k++; 则while循环执行的次数是(A  )

A.一次也不执行

B.执行1次

C.有语法错,不能执行

D.无数次

10.以下程序运行后,输出结果是(B   )

main(  )

{

  char ch[2][5] = {“693”, “825”}; *p[2];

  int i, j, s = 0;

  for(i=0; i<2; i++) p[i] = ch[i]

  for(i=0; i<2; i++)

  for(j=0; p[i][j]>=’0’ && p[i][j] <=’9’; j+=2)

  s=10*s+p[i][j]-‘0’;

  printf(“%d\n”, s);

}

A.6385   B.33   C.693825    D.22

11.以下程序while循环的循环次数是( C  )

main(){

int i=0;

while(i<10)

{

if(i<1)

continue,

if(i-=5) break;

i+ +:

}

}

A.死循环,不能确定次数

B.6

C.10

D.1

12.以下程序运行后,输出结果是( )  int x=3, do{ print(%3d"; x =-2; } whlie(!(--x));  D

A.死循环

B.12

C.30

D.1

13. 假定有以下变量定义;int k=7, x=12;则能使值为3的表达式为(C  )

A. (x%=k)-(k%=5)

B. x%=k-k%5

C. x%=(k-k%5)

D. x%=(k%=5)

14.想要对一个文件文件的尾部追加写入,应当在fopen语句中使用的文件操作方式指示符号为(   C)

A. r       B. wb      C. a         D.w

15.为了比较两个字符串s1和s2 是否相等,应当使用(D   )

A. if(s1 == s2)

B. if(s1 = s2)

C. if(strcmp(&s1, &s2) == 0)

D. if(strcmp(s1, s2) == 0)

16. 有以下程序,程序运行后的输出结果是(  B  )

#include

#include

main()

{

char* p = “abcde\0fghijk\0”;

printf(“%d\n”, strlen(p));

}

A.15     B. 6       C. 5      D.12

17. 如下程序中用于输出 “welcome home”。请指出其中的错误

void Test(void)

{

char pcArray[12];

strcpy(pcArray, “welcome home”);

printf(“%s!”, pcArray);

return;

}

char pcArray[12]  -> char pcArray[13]

18.

编程题

1.宏定义,比较返回大的

#include <stdio.h>

#define MAX(a, b) ((a) > (b) ? (a) : (b))

int main() {
    int num1 = 10;
    int num2 = 20;
    int max = MAX(num1, num2);

    printf("The larger number is: %d\n", max);

    return 0;
}

2.<stdio.h>与”stdio.h”的区别

<stdio.h> 从标准库目录寻找

"stdio.h"到指定目录寻找

3.数组里数,从小到大输出

#include <stdio.h>

void sortArray(int arr[], int size) {
    int i, j, temp;

    for (i = 0; i < size - 1; i++) {
        for (j = 0; j < size - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

void printArray(int arr[], int size) {
    int i;
    for (i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int arr[] = {5, 2, 9, 1, 3};
    int size = sizeof(arr) / sizeof(arr[0]);

    sortArray(arr, size);
    printArray(arr, size);

    return 0;
}

4.仿写strcpy

#include <stdio.h>

char* strcpy_custom(char* dest, const char* src) {
    char* originalDest = dest;  // 保存目的地字符串的初始地址

    while (*src != '\0') {
        *dest = *src;
        dest++;
        src++;
    }

    *dest = '\0';  // 在目的地字符串的末尾添加空字符

    return originalDest;  // 返回目的地字符串的起始地址
}

int main() {
    char src[] = "Hello, world!";
    char dest[100];

    strcpy_custom(dest, src);

    printf("Copied string: %s\n", dest);

    return 0;
}

简答题:

有层楼共100层,有两个完全一样的弹珠,都有相同的坚韧度,如何确定弹珠在哪一层会承受不住而崩碎

  1. 将所有的层数分成若干个相等的区间(如每 10 层分为一个区间)。
  2. 用第一个弹珠在第一个区间的顶层扔一次,如果碎了,它的破坏点一定在第一个区间内,否则它的破坏点在第二个区间或更高的区间。
  3. 现在问题被缩小到了一个单独的区间内,这个区间的尺寸为 10 层或更少。我们用另一个弹珠在这个区间的顶层开始扔球,一次一个。如果第二个弹珠碎了,破坏点就在当前区间的下半部分(即上一次的区间),否则破坏点就在当前区间的上半部分(即当前的区间)。
  4. 重复步骤 3,逐步将问题范围缩小,直到找到破坏点。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值