中国程序员联盟群特种兵选拔考试题目--C

来源:互联网 发布:如何用ppt制作销售网络 编辑:程序博客网 时间:2024/04/25 19:53

请各位答卷完毕后,将带有答案的Word文档以邮件方式按群公告中的提示发送到各评委邮箱。预祝各位取得好成绩,加入本群特战队。

 

Word文档命名格式   C-QQQQ昵称

 

中国程序员联盟全群大考试C考卷

满分:100

命题人:九命猫

 

一:选择题(1020分,每题2)

 

请从每个题目后续选项中找出一项或多项符合题意的内容

 

1:请指出下列程序错在何处

 

int main()

{

         int i;

         scanf(“%d”,i)

         printf(“%d”,i)

         return 0;

}

 

Ascanf的使用有误

Bprintf的使用有误

Cint main写法有误

D:无错误

 

2:请选择下列两段程序运行结果

(1)          

int x=1;

int *px=&x

printf(“%d”,*px++);

 

(2)

int y=1;

int *py=&y;

printf(“%d”,*(py++))

 

A:1,1

B:2,1

C:1,2

D:2,2

3:C语言中,int类型的大小是:

A:1字节

B:3字节

C:4字节

D:需要看机器和编译器

 

4:在32位机器的32位编译器上

int x=1

int *px=&x

sizeofpx=

 

A1

B:3

C4

D:不确定

 

5:下边这程序会输出啥

char b[]=”EFG”;

char *a=”AB”;

         strcpy(a,b);

         printf(“%c”,*a);

 

A:这还用说,显然是字符A

B:显然A错误,应该是字符E

C:少来这套,程序有错

D:就是没错,输出是b那个字符串

E:以上说法皆不完善

6:说下int *f() int (*f)()的区别

A:完全一样,没区别

B:前者返回的是整型指针,后者返回函数指针,那个函数返回整型值

C:前者返回的是函数整型变量,后者返回的是整型指针,那个指针指向数组

D:第一个返回的是整型指针,后边的写法错误

 

7:下面是一段WindowsSDK的程序,请指出程序中存在的问题并改正

 

/*这里是一系列正确的h文件包含语句*/

 

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

                    PSTR szCmdLine, int iCmdShow)

{

     static TCHAR szAppName[]=TEXT("myCtl");

     HWND         hwnd;

     MSG          msg;

     WNDCLASS     wndclass;

    

     wndclass.style         =CS_HREDRAW|CS_VREDRAW;

     wndclass.lpfnWndProc   =WndProc;

     wndclass.cbClsExtra    =0;

     wndclass.cbWndExtra    =0;

     wndclass.hInstance     =hInstance;

     wndclass.hIcon         =LoadIcon(NULL,IDI_APPLICATION);

     wndclass.hCursor       =LoadCursor(NULL,IDC_ARROW);

     wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);

     wndclass.lpszMenuName  =NULL;

     wndclass.lpszClassName =szAppName;

    

     if (!RegisterClass (wndclass))

     {

          MessageBox (NULL, TEXT ("This program requires Windows NT!"),

                      szAppName, MB_ICONERROR) ;

          return 0 ;

     }

    

     hwnd = CreateWindow (szAppName,TEXT ("sdkCtl"),

                          WS_OVERLAPPEDWINDOW,

                          CW_USEDEFAULT, CW_USEDEFAULT,

                          CW_USEDEFAULT, CW_USEDEFAULT,

                          NULL,NULL,hInstance,NULL);

          

          ShowWindow(hwnd,iCmdShow);

     UpdateWindow(hwnd);

    

     while (GetMessage(&msg,hwnd,0,0))

     {

          TranslateMessage (&msg) ;

          DispatchMessage (&msg) ;

     }

     return msg.wParam ;

}

 

//下边是正确的回调函数代码

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)

{

         //这里是一段不存在错误的回调函数执行语句//

}

 

A:程序没错,可以正常运行

B:点窗口右上的“关闭”按钮,窗口不消失,需要改一个hwndNULL

C:点窗口右上的“关闭”按钮,窗口不消失,需要改一个NULLhwnd

D:点窗口右上的“关闭”按钮,窗口消失但进程不消失,需要改一个hwndNULL

E:点窗口右上的“关闭”按钮,窗口消失但进程不消失,需要改一个NULLhwnd

F:上头看着真乱,其实是注册窗口类函数有错误

G:啥乱七八糟的,程序错的地方多了去了,至少要改四五处

 

8 有如下的宏定义

#define DOUBLE(x) x+x

程序中有如下语句: i = 5*DOUBLE(10);

i的值是多少

 

A:100

B:55

C:60

D:语法错误

 

964位操作系统的CPU寻址范围是多少?

A:232次方

B:263次方

C:264次方

D:64的平方

 

10:有如下程序

#include<stdio.h>

int a;

int main()

{

       int b;

       printf(“%d/n”,a);

       printf(“%d/n”,b);

       return 0;

}

则程序输出结果为

A:0  0

B:程序会出错 

C:0  随机值

D:两个随机值

 

二:解答题(共980分,1-8每题9分,98分)

1:用VC6或更高版本做个基于Windows消息模式的程序,要求该程序无法用Alt+F4关闭。

 

2:做个方程求解函数,算出方程x*x*x+2x*x-5x+1=0的近似解,要求最后两次的近似值差值小于等于0.001

 

3:现有某二维数组,int a[3][4]={{1,3,4,6,},{11,7,9,0},{10,8,5,2}},请编写程序,用单层循环将其内容排序后全部输出。

 

4:用C语言求解洛书问题,就是将1-99个数字加到九宫格中,使横竖斜行三种方式的和均为15,并用#包围的字符方式输出,例如下图

#######

#1#2#3#

#4#5#6#

#7#8#9#

#######

 

5:请解释如下程序的结果

struct mybitfields

{

unsigned short a:4;

unsigned short b:5;

unsigned short c:7;

}test;

int intBitf()

{

    int i;

    test.a=2;

    test.b=3;

    test.c=0;

   

    i=*((short *)&test);

   

    printf("%d/n",i);

    return 0;

}

 

6:用C做个函数,可以将字符串整体反转

7:用C实现一个人机对战的石头剪子布,界面采用何种形式自行决定(字符驱动的也可以)

8:用C实现个函数,采用尽量少的变量,去掉参数字符串两端的空格

9:用C做个字符串匹配函数,char *strstr(char const *s1,char const *s2)

如上,查找s2s1中最后一次出现的位置

 

原创粉丝点击