端午假期作业

思维导图

一、百鸡百钱是我国古代数学家张丘建在《算经》一书中提出的数学问题:“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int i,j,k;
    for(i=0;i<=20;++i)
        for(j=0;j<=33;++j)
            for(k=0;k<=100;++k)
            {
                if(i+j+3*k==100 && 5*i+3*j+k==100)
                    printf("公鸡%d只,母鸡%d只,小鸡%d只。\n",i,j,3*k);
            }
    return 0;
}

         运行结果:


二、输入年月日,判断这是这一年的第几天?

//输入年月日,判断这是这一年的第几天?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int y,m,d;
    int day=0;
    int arr[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    printf("请输入年、月、日:");
    scanf("%d %d %d",&y,&m,&d);
    for(int i=0;i<m;++i)
    {
        day+=arr[i];
    }
    if(((y%4==0 && y%100!=0) || (y%400==0)) && m>=3)
    {
        day+=d;
        day+=1;
    }
    else
        day+=d;
    printf("%d\n",day);
    return 0;
}                                                      

        运行结果:


三、输入一个数,判断是否是回文数?

        12321 正序和逆序结果一致

//输入一个数,判断是否是回文数?
//12321  正序和逆序结果一致
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int n;
    printf("请输入一个数:");
    scanf("%d",&n);
    int n2=n;
    int n1;
    int m=0;
    while(n!=0)
    {   
        n1=n%10;
        m=m*10+n1;
        n=n/10;
    }
    if(n2==m)
        printf("%d是回文数。\n",n2);
    else
        printf("%d不是回文数。\n",n2);        
    return 0;
}

         运行结果:


四、

1.

         选择 C

 

2.

        选择

3.

 sizeof(array)/sizeof(array[0])

4. 

大端:高地址存数据低字节,低地址存数据高字节。

小端:高地址存数据高字节,低地址存数据低字节。

5. 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。数组中同一个元素在答案里不能重复出现。
示例:输入 nums = [2,7,11,15], target = 9 输出: [0,1]

//给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中
//找出和为目标值 target 的那两个整数,并返回它们的数组下标。
//数组中同一个元素在答案里不能重复出现。
//示例:输入 nums = [2,7,11,15], target = 9 输出: [0,1]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int nums[]={2,7,11,15};
    int target=9;
    int len=sizeof(nums)/sizeof(nums[0]);
    int i,j;
    for(i=0;i<len;++i)
    {
        for(j=i+1;j<len;++j)
        {   
            if(nums[i]+nums[j]==target)
            {   
                printf("[%d,%d]\n",i,j);
            }
        }
    }
    return 0;
}

         运行结果:

6. 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。示例:输入 x = 123,输出 321;输入 x = -123,输出 -321。

//给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
//示例:输入 x = 123,输出 321;输入 x = -123,输出 -321。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int x;
    int m,t;
    scanf("%d",&x);
    int x1;
    if(x<0)
        x1=-x;
    else
        x1=x;
    while(x1!=0)
    {
        t=x1%10;
        m=m*10+t;
        x1/=10;
    }
    if(x<0)
        printf("-%d\n",m);
    else
        printf("%d\n",m);

    return 0;
}

        运行结果:

7. 存储一个 32 位的数 0x12345678 到 2000H - 2003H 四个字节单元中,若以大端模式存储,
则 2000H 存储单元的内容为:   0x12   

8.写一个 “标准” 宏 MIN,这个宏输入两个参数并返回较小的一个:#define MIN(x,y) ((x)>(y)?(y):(x))

9.

        选择 A


C语言笔试题目

1.以下哪个是预处理的功能?        D

        A. 宏扩展
        B. 文件包含
        C. 条件编译
        D. 都对

2.强制类型转换的运算符是以下哪一个?        A
        A. ()
        B. cast ()
        C. //
        D. ""

3.

void main (void) {
int i ;
i = 0x10 + 010 + 10;
printf ("x = % x", i);
}

程序的输出是什么?        A   
        A. x = 34
        B. x = 22
        C. x = 28
        D. 都不是

00010000

00001000

00001010

00100010=34

4.

#define SQUARE(X) X*X
void main (void) 
{
    printf("Square=%d", SQUARE(10+2) )
}

程序的输出是什么?        B
        A. 144
        B. 32
        C. 122
        D. 12

10+2*10+2=10+20+2=32

5. sizeof (int) 的结果是多少?        A
        A. 4
        B. 8
        C. 16
        D. 取决于平台

6. 32 位平台上 struct {unsigned char a; int b; short c;} s, 请问 s 的长度是多少?        A
        A. 7 字节
        B. 9 字节
        C. 10 字节
        D. 12 字节

7. 定义
    int value [] = {11,33,51,70,99};
    int *p = value;
    结果为 70 的表达式是哪一个?        A

        A. *(p+3)
        B. *(p+4)
        C. *p + 3
        D. *p + 4

8. 以下程序运行后的打印结果是:        D

#include <stdio.h>
int main(void)
{
    int x=10, y=20, t=0;
    if (x==y) t=x; x=y; y=t;
    printf ("%d,%d\n",x,y);
    return 0;
}

        A. 10,20
        B. 20,10
        C. 10,10
        D. 20,0

9.

int b_val;
while (!b_val) {
// 此处代码省略
}

等价于        C
        A. while ( b_val ==1)
        B. while ( b_val != 1)
        C. while ( b_val == 0)
        D. while ( b_val != 0)

10. unsigned short 类型的范围是        D
        A. -128~127
        B. -32768~32767
        C. 0~65535
        D. 0~255

11. 下列表达式值与其它不同的是        D
        A. 1<<3
        B. 0x0F & 0x08
        C. 2^3
        D. 3^2

A.    1<<3 --->  00001000

B.   00001111

   &00001000

--->00001000

C.   00001000

D.   00001001

12. int a []={1,2,3,4,5}, int *p = a, 下列表达式与 ++*p 相同的是
        A. *++p
        B. a [0]
        C. ++a [0]
        D. *p++

13. 以下输出正确的是:

void fun (int x, int y, int *a, int *b) {
a = x + y;
b = x - y;
}
int main (void) {
int x = 20, y = 10, a = 0, b = 0;
fun (x, y, &a, &b);
printf ("% d, % d", a, b)
}

        A. 0, 0
        B. 30,10
        C. 10,30
        D. 不确定

14. 以下选项中不属于 C 语言的类型的是        D
        A. signed short int
        B. unsigned long int
        C. unsigned int
        D. long short

15. 有以下结构体说明和变量的定义,且指针 p 指向变量 a,指针 q 指向变量 b,则不能把结点 b 连接到结点 a 之后的语句是:

struct node
{
char data;
struct node *next;
} a,b,*p=&a,*q=&b;

        A. a.next=q;
        B. p.next=&b;
        C. p->next=&b;
        D. (*p).next=q;

16. 若执行程序段
    int x=3,y=6,z; z=x^y<<2;
    则 z 的二进制值是:        A

        A. 00011011
        B. 00010100
        C. 00011000
        D. 00000110

y=6=00000110<<2=00011000

                             ^  00000011

                                00011011

17. 向一个有 127 个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素数是
        A. 8
        B. 63.5
        C. 64
        D. 7

18. 假设某地每天有流星雨的概率是相等的,一个人每天晚上都去观察,发现一年能够看到流星的概率是 91%. 请问六个月中能够看到流星的概率是多少?        B
        A. 87%
        B. 70%
        C. 66.7%
        D. 97%

设每天看见流星雨的概率为x

(x)^365=0.91

看不见的概率为(1-x)^365=1-0.91=0.09

0.09^0.5=0.3

1-0.3=0.7

19. 序列 {2,1,4,9,8,10,6,20} 是某排序算法第二轮排序的结果,则该算法只能是        A
        A. 快速排序
        B. 冒泡排序
        C. 选择排序
        D. 插入排序

20. 编程题(二选一):
        A. 编写一个斐波那契 Fibonacci 函数,在该函数中使用循环代替递归,完成斐波纳契数列的计算。
提示:
a. 斐波那契数列(Fibonacci Numbers)的递推公式:Fn = Fn-1 + Fn-2
b. 使用递归的斐波那契函数如下
int Fib (int n)
{
if (n==1 || n==2)
return 1;
else
return Fib (n-1)+Fib (n-2);
}

#include <stdio.h>
int Fib(int n)
{
if (n==1 || n==2)
return 1;
else
return Fib (n-1)+Fib (n-2);
}
void main() 
{
    for(int i=8;i>=1;--i)
        printf("%d ",Fib(i));
}                             

         运行结果:


        B. 写一个程序,接受一个字符串,然后输出该字符串反转后的字符串。
例如:输入 abcd 输出 dcba

专项练习-C语言-1

专项练习-C语言-2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值