c语言中博弈论的程序设计题,C语言程序设计-中国大学mooc-题库零氪

10、素数判定。判断n是否是素数,若n是素数,输出“yes”,否则输出“no”。

第六章 数组

第六章单元测试

1、阅读如下程序,若输入: 1 2 3 4 5,则程序输出()。 #include #define N 10 int main() { int n = 5, i, a[N]; int sum = 0; for(i=0; i     A、15

B、5

C、10

D、20

2、阅读如下程序,若输入: 5 1 2 5 3 4,则程序输出()。 #include #define N 1000 int main() { int i, n, index; int a[N]; scanf("%d", &n); for(i=0; i a[index]) index = i; } printf("%d %d\n", a[index], index); return 0; }

A、5 2

B、2 5

C、5 3

D、3 5

3、阅读如下程序,写出程序输出()。 #include int main() { int x[3][3] = {0,1,2, 0,1,2, 0,1,2}; int i, j, t=1; for(i=0; i<3; i++) for(j=0; j<=i; j++) printf("%d\n" , t = t +x[i][j]); }

A、3

B、1

C、9

D、8

4、以下对二维数组a 的正确说明的语句是( )

A、int a [3,4 ];

B、float a (3,4);

C、double a[3][4];

D、float a (3)(4);

5、当调用函数时,实参是一个数组名,则向函数传送的是( )

A、数组的长度

B、数组的首地址

C、数组每一个元素的地址

D、数组每个元素中的值

6、设有数组定义语句“int a[50];”,下列数组元素引用中下标不越界的是( )

A、a[0]

B、a[-1]

C、a[50]

D、a[51]

7、下列数组定义,不正确的是( )。

A、unsigned int a[5]={0};

B、char ch[]={’A’,’B’,’C’};

C、int b[2][]={{1,2},{4,5}};

D、int d[][2]={1,2,4,5};

8、设有函数原型、一维数组和变量定义如下: 函数原型 int fun(int x[],int n); 数组定义 int a[4]={1,2,3,4}; float b[4]={1.0,2.0,3.0,4.0}; 变量定义 int m=4, value; 下列函数调用,正确的是( )。

A、value = fun(b, 4);

B、value=fun(a[1], m);

C、value=fun(a, 4);

D、value=fun(b, m);

9、读程序,写结果:() #include int main() { int a[6] = {12,4,17,24,27,16}, b[6] = {27,13,4,25,23,16}; for(int i=0; i<6; i++) { for (int j=0; j<6; j++) if (a[i] == b[j]) break; if(j < 6)printf("%d\n", a[i]); } return 0; }

A、4

B、4 27

C、4 27 16

D、4 27

10、读程序,写结果() #include int main() { int a[10]= {1,2,3,4,5,6,7,8,9,10}, i, s = 0; for (i=2; i<8; i++) if (a[i]%2 != 0) s = s + a[i]; printf("%d\n", s); }

A、27

B、33

C、15

D、18

11、读程序,写结果()。 int main() { int a[4][4]= {{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}}; int i, j, s = 0; for (i=0; i<4; i++) { for (j=0; j<4; j++) { if (a[i][j] < 0) continue; if (a[i][j] == 0) break; s += a[i][j]; } } printf("%d\n",s); }

A、58

B、3

C、72

D、-69

12、设有条件表达式:(EXP) ? i++; j--,则以下表达式中(EXP)完全等价的是

A、(EXP == 0)

B、(EXP != 0)

C、(EXP == 1)

D、(EXP != 1)

13、若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个(a[0][0]为第一个)元素是()。

A、a[1][3]

B、a[0][3]

C、a[1][4]

D、a[0][4]

14、#include int main() { int p[8] = {11,12,13,14,15,16,17,18}, i=0,s=0; while(i<7) { if(p[i]%2) s += p[i]; i++; } printf("%d\n", s); }

A、42

B、45

C、56

D、60

15、以下正确的二维数组定义是( )。

A、int a[2][] = {1,2,3,4,5,6};

B、int a[][3] = {1,2,3,4,5,6};

C、int a[2,3] = {1,2,3,4,5,6};

D、int a[][] = {1,2,3,4,5,6};

16、若有定义:int a[3][4]={1}; 以下叙述中正确的是( )。

A、数组a中每个元素均可得到初值1

B、只有元素a[0][0]可得到初值1,其余元素的值为0

C、只有元素a[0][0]可得到初值1,其余元素的值不确定

D、此说明语句不正确

17、下面程序段执行后的输出结果是( )。 int k,a[3][3] = {1,2,3,4,5,6,7,8,9}; for (k=0; k<3; k++) printf("%d",a[k][2-k]);

A、1 5 9

B、3 5 7

C、3 6 9

D、1 4 7

18、#include #define N 20 void fun(int a[], int n, int m) { int i; for(i=m; i>=n; i--) a[i+1] = a[i]; } int main() { int i; int a[N] = {1,2,3,4,5,6,7,8,9,10}; fun(a, 2, 9); for(i=0; i<5; i++) printf(“%d", a[i]); return 0; }

A、12234

B、11234

C、12334

D、12344

19、设函数fun的函数原型为:void fun(char ch[], float x) { …… },则以下对函数fun的调用语句中,正确的是( )。

A、fun("abc", 3.0);

B、fun('65', 2.8);

C、fun(32, 32);

D、t=fun('D', 16.5);

20、若定义了int b[][3] = {1,2,3,4,5,6,7};则b数组第一维的长度是( )。

A、无确定值

B、4

C、2

D、3

第六章单元作业

1、读程序,写结果。 int main() { int i, f[10]; f[0]= 0; f[1] = 1; for(i=2; i<10; i++) f[i] = f[i-2] + f[i-1]; for(i=0; i<10; i++) printf("%4d", f[i]); }

2、下列程序的功能是输出如下下三角矩阵, 每个整数占4列。请将以下程序补充完整,提交正确、完整的程序。    1    2  4    3  6  9    4  8  12  16 #include int main() { int i, j ; ______________________ { for ( j = 1; j <= i; j++) ___________________ _____________________ } }

3、以下程序,输出数组a中最小的元素及其位置。请将以下程序补充完整,提交正确、完整的程序。 #include int main() { int a [5 ] = {3, 8, 7, 6,5}] int min, pos ; int i; ______________________________ pos = 0 ; ______________________________ if ( a [ i ]

4、读程序,写结果 #include int main() { int a[4][3]={{1,2,3},{-2,0,2},{1,0,1},{-1,2,-3} }; int b[3][2]={{-1,3},{-2,2},{2,1}}; int c[4][2],i,j,k,s; for(i=0;i<4;i++) { for(k=0;k<2;k++) { s=0; for (j=0;j<3;j++) s+=a[i][j]*b[j][k]; c[i][k]=s; printf("%4d",s); } printf("\n"); } return 0; }

5、以下程序,数组a中存放一个递增序列,输入一个整数x 并将它插入到数组a中,使之仍为一个递增序列,请在划线处填空。整数,已经按照从小到大顺序排列好,现在另外给一个整数x,以下insert函数的功能是将x插入到数组a中,并使数组a仍然有序。 请将3个空白位置的答案分3行写出来,并提交。 #include int main() { Int a[10]={1,3,5,7,9,11,13,15,17,19}; Int x, n, i, p; n=10; scanf(“%d”, &x); p = ; for(i=0;i<10;i++) //确定新元素位置p { if(x < a[i]) { p = i; } } for(i=n-1;i>=p; i--) a[i+1] = a[i]; //依次后移 // 插入新元素 for(i=0;i<=n;i++) printf("%5d" , a[i]); printf("\n");

6、输入n(n < 10),再输入n个整数,求最大值和对应下标。

7、输入n(n < 10),再输入n个整数,将这n个整数排序后输出。

8、消除重复。输入n和n个0~100的整数,每读入一个整数,若它不与以前输入的整数重复,则将其打印出来。

9、输入一个正整数n (1

第八章 指针

第八章单元测试

1、定义如下两个变量: int c, *pc = &c;如下选项中哪个表达式代表一个地址值?

A、*&*pc

B、*pc

C、*c

D、&*&c

2、已知定义有如下变量char a, *pa = &a; int c, *pc = &c; 并且已知整数变量占用四个字节空间,如果pa和pc的地址分别为: 0060FF07 0060FF00 那么(pa+1)和(pc+1)的地址分别为?

A、0060FF08 0060FF04

B、0060FF08 0060FF01

C、0060FF0B 0060FF01

D、0060FF0B 0060FF04

3、已知定义了如下变量char a, *pa = &a; int c, *pc = &c; 并且已知整数变量占用四个字节空间,如果pa和pc的地址分别为: 0060FF07 0060FF00 printf("%p %p", pa++, pc++);该语句的输出结果为?

A、0060FF07 0060FF00

B、0060FF08 0060FF01

C、0060FF08 0060FF04

D、0060FF0B 0060FF04

4、与该程序的执行结果一致的是 int a[4] = {1,2,3,4}; int *pa1 = &a[0], *pa2 = &a[3]; printf("%d %d", (int)pa1-(int)pa2, pa1-pa2);

A、-12 -3

B、12 3

C、-3 -3

D、-12 -12

5、已知 int a[5] = {1,2,3,4,5}; int *pa = a; 下列选项不能正确表示数组a中第二个元素值的表达式是?

A、(pa++, *pa)

B、1[a]

C、(a++, *a)

D、*(pa+1);

6、#include void fun(int *a,int n) /*fun函数的功能是将a所指数组元素从大到小排序*/ { int t, i, j; for(i=0; i     A、1,2,3,4,5,6,7,8,9,0,

B、0,9,8,7,6,5,1,2,3,4,

C、0,9,8,7,6,5,4,3,2,1,

D、1,2,3,4,9,8,7,6,5,0,

7、设有定义:char p[]={’1’,’2’,’3’},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是()。

A、sizeof(p)

B、sizeof(char)

C、sizeof(*q)

D、sizeof(p[0])

8、有以下函数 int aaa(char *s) { char *t=s; while(*t++); t--; return(t-s); } 以下关于aaa函数的功能叙述正确的是()。

A、求字符串s的长度

B、比较两个串的大小

C、将串s复制到串t

D、求字符串s所占字节数

9、#include void fun(char **p) { ++p; printf("%s\n",*p); } int main() { char *a[]= {"Morning","Afternoon","Evening","Night"}; fun(a); } 程序的运行结果是()。

A、Afternoon

B、fternoon

C、Morning

D、orning

10、若有定义语句:int a[2][3], *p[3]; ,则以下语句中正确的是()。

A、p=a;

B、p[0]=a;

C、p[0]=&a[1][0]

D、p[1]=&a;

11、写出该程序段的执行结果: #include int main() { char a, *pa; int c, *pc; pa = &a; pc = &c; *pa = sizeof(pa); *pc = sizeof(pc); printf("%d %d %d %d", a, c, sizeof(a), sizeof(c)); return 0; }

12、写出该程序的执行结果#include int main() { int a[5] = {1,2,3,4,5}; int *pa = a; printf("%d %d", sizeof(a), sizeof(pa)); return 0; }

13、写出该程序的执行结果 #include int main() { int a[2][3] = {1,2,3,4,5}; printf("%d", *(*(a+1)+1)); return 0; }

14、写出该程序的执行结果#include int main() { int a[2][3] = {1,2,3,4,5}; int *pa = *a; printf("%d", *(pa+3)); return 0; }

15、写出该程序段的执行结果 char *a = "abcdef"; char b[10] = "abcdef"; printf("%d %d", sizeof(a), sizeof(b));

第八章指针单元作业

1、将输入的三个整数按由大到小的顺序输出。 已定义如下swap函数,可实现形参pa和pb所指内存单元的内容交换。请务必使用本函数实现两个变量内容的互换。 void swap( int *pa, int *pb) { int t; t=*pa; *pa=*pb; *pb=t; }

2、求n个整数中的最大的两个元素。要求定义一个函数LargestTow(),求数组a的最大的两个元素,分别存入形参指针pfirst和psecond所指存储单元,函数原型如下: void LargestTow(int a[],int n,int *pfirst,int *psecond) { /*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单元,将数组中第二大的值存入形参指针psecond所指内存单元。 */ } 输入 输入有两行,输入第一行是一个整数n,1 <=1000;第二行是n个整数,由空格隔开。 输出 输出两个整数,表示数组中最大的两个值。输出占一行。

3、题目描述 读入一个实数,输出该实数的小数部分,小数部分若多余的末尾0,请去掉。如输入111111.12345678912345678900 则输出0.123456789123456789。若去掉末尾0之后小数部分为0,则输出“No decimal part”。注意该实数的位数不超过100位。 请定义并使用如下函数。 char *decimal(char *p) { 将字符串p表示的实数的自小数点开始的小数部分存入一个字符串,并由函数返回,若p为“123.456”,则返回的字符串为“.456”。若小数部分为0,返回空指针NULL。 } 样例输入 111111.12345678900012345678900 样例输出

4、输入一个m行n列的二维矩阵,求其四周边元素和。1<=m、n<=100000,可能是1行100000列,也可能是10000行50列,但保证矩阵元素不多于500000。你可能不能预定义数组的大小了,你要学会使用动态内存分配哦。你可以动态申请m*n个内存单元,然后用一维数组来存储二维数组,二维数组元素a[i][j]对应一维数组a[i*n+j],i、j均从0开始。 输入 输入第一行是m和n,然后是一个m行n列的矩阵。 输出 输出一个整数,表示矩阵所有边界元素的和。

5、请写出一下程序的运行结果。 #include #include int main(void) { char a[]="programming", b[]="language"; char *p1, *p2; for(p1 = a, p2 = b; *p1 != '\0' && *p2 != '\0'; p1++, p2++) if(*p1 == *p2) printf("%c ", *p1); return 0; }

6、请在根据程序功能把程序补充完整。请在编译器中调试之后提交完整程序。 /*功能:用函数调用方式,实现字符串的复制。*/   /*-----------------------------------------------------*/ void string_copy(char *str_to, char *str_from) { int i=0;     for(; (*(_______)=*(str_from+i))!=‘\0’; i++) ; } int main() { char array_str1[20]="I am a teacher."; char array_str2[20]; ________(array_str2, array_str1); _________("array_str2=%s\n", array_str2);    }

7、程序改错: /*功能:读入一行英文文本,将其中每个单词的最后一个字母改成 大写,然后输出此文本行 (这里的“单词”是指由空格 隔开的字符串)。   例如:若输入“I am a student to take the examination.”,   则应输出“I aM A studenT tO takE thE examination.”。   ------------------------------------------------------*/ #include "conio.h" #include "stdio.h" #include "ctype.h" #include "string.h" up1st ( char *p ) {   /**********FOUND**********/   int k = 0;   for ( ; *p; p++ )    if ( k )    {    if ( *p = ‘ ’) /****FOUND***/    {    k = 0;     *(p -1 ) = toupper( *( p - 1 ); /****FOUND****/ }    }    else if ( *p != ) k = 1; *( p-1 ) = toupper( *(p-1) ); } int main( ) {   char chrstr[81];   clrscr();   printf( "\nPlease enter a string: " ); gets ( chrstr );   printf( "\n\nBefore changing:\n %s", chrstr ); up1st( chrstr );   printf( "\nAfter changing:\n %s", chrstr ); }   答案:   1). 2). 3).

8、程序改错。 /*功能:将八进制转数的字符串换为十进制数。如输入“127”,结果为87   ------------------------------------------------------*/ #include "stdio.h" int main(void) {    char p,s[6]; /****FOUND****/   int n;   p=s;   gets(p);    n==0; /*****FOUND*****/    while(*p==’\0’) /*****FOUND*****/   {    n=n*8+*p-0;    p++;    }    printf("%d",n);    getch();  }   答案: 1). 2).   3).

第九章 结构

第九章 单元测试1

1、定义以下结构体数组 struct point { int x; int y; }s[2] = {{1,3}, {2,7}}; 语句printf("%d", s[0].x * s[1].x);的输出结果为

A、14

B、6

C、2

D、21

2、运行下列程序段,输出结果是 struct country { int num; char name[10]; }x[5] = {{1,"China"},{2,"USA"},{3,"France"},{4,"England"},{5,"Spanish"}}; struct country *p; p = x + 2; printf("%d,%c", p->num, (*p).name[2]);

A、3,a

B、4,g

C、2,U

D、5,S

3、如果有下面的定义和赋值,则使用( )不能正确输出n中data的值 struct SNode { unsigned id; int data; }n, *p; p = &n;

A、p.data

B、n.data

C、p->data

D、(*p).data

4、根据下面的定义,能输出Mary的语句是 struct person { char name[9]; int age; }; struct person class[5] = {"John", 17, "Paul", 19, "Mary", 18, "Adam", 16};

A、printf("%s\n",class[1].name)

B、printf("%s\n",class[2].name)

C、printf("%s\n",class[3].name)

D、printf("%s\n",class[0].name)

5、定义以下结构体数组 struct date { int year; int month; int day; }; struct s { struct date birthday; char name[20]; } x[4] = {{2008, 10, 1, "guangzhou"}, {2009, 12, 25, "Tianjin"}}; 语句 printf("%s,%d,%d,%d", x[0].name, x[1].birthday.year);的输出结果为

A、guangzhou,2009

B、guangzhou,2008

C、Tianjin,2008

D、Tianjin,2009

6、运行下列程序段,输出结果是 struct country { int num; char name[20]; }x[5] = {1, "China", 2, "USA", 3, "France", 4, "England", 5, "Spanish"}; struct country *p; p = x+2; printf("%d,%s", p->num, x[0].name);

A、2,France

B、3,France

C、4,England

D、3, China

7、定义以下结构体数组 struct { int num; char name[10]; }x[3] = {1,"china",2,"USA",3,"England"}; 语句printf("\n%d,%s", x[1].num, x[2].name);的输出结果为

A、2,USA

B、3,England

C、1,china

D、2,England

8、定义以下结构体数组 struct date { int year; int month; }; struct s { struct date birth; char name[20]; }x[4] = {{2008, 8, "hangzhou"}, {2009, 3, "Tianjin"}}; 语句printf("%c,%d", x[1].name[1], x[1].birth.year);的输出结果为

A、a,2008

B、hangzhou,2008

C、i,2009

D、Tianjin,2009

9、运行下列程序,输出结果是 struct contry { int num; char name[20]; }x[5] = {1,"China", 2, "USA", 3, "France", 4, "Englan", 5, "Spanish"}; int main() { int i; for(i=3; i<5; i++) printf("%d%c", x[i].num, x[i].name[0]); return 0; }

A、3F4E5S

B、4E5S

C、F4E

D、c2U3F4E

10、有以下定义和语句: struct student { int age; int num; }; struct student stu[3] = {{1001,20},{1002,19},{1003,21}}; int main(void) { struct student *p; p = stu; …… } 则以下不正确的引用是

A、(p++)->num

B、p++

C、(*p).num

D、p=&stu.age

11、#include #include struct contry { int num; char name[20]; } x[5] = {1,"China", 2, "USA", 3, "France", 4, "Englan", 5, "Spanish"}; int main() { int i; for(i=0; i<5; i++) if(strcmp(x[i].name, "T") > 0) printf("%d\n", x[i].num); return 0; }

A、2

B、3

C、1 2 3 4 5

D、1

第九章 单元测试2

1、有以下结构体定义: struct example { int x; int y; }v1; 则正确的引用或定义是

A、example.x = 1;

B、example v2; v2.x = 10;

C、struct v2; v2.x = 10;

D、struct example v2 = {10, 20};

2、对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是 struct date { int year,month,day; }; struct worklist { char name[20]; char sex; struct date birth; }person;

A、year = 1976;

B、birth.year = 1976;

C、person.birth.year = 1976

D、person.year = 1976;

3、根据下述定义,可以输出字符'A'的语句是 struct person { char name[11]; struct { char name[11]; int age; }other[10]; }; struct person man[10] = {{"Jone",{"Paul",20}},{"Paul",{"Mary",18}}, {"Mary",{"Adam",23}},{"Adam",{"Jone",22}} };

A、printf("%c", man[2].other[0].name[0]);

B、printf("%c", other[0].name[0]);

C、printf("%c", man[2].(* other[0]));

D、printf("%c", man[3].name);

4、对于以下定义,不正确的叙述是 union data { int i; char c; float f; }a,b;

A、变量a中的3个数据成员共享同一段内存空间

B、变量a的地址和它的各成员地址都是相同的

C、变量a和b可以进行相互赋值

D、可以对a和b进行比较操作

5、下述程序运行结果为 #include struct st { int n; int *m; }*p; int main() { int d[5] = {10,20,30,40,50}; struct st arr[5] = {100,d,200,d+1,300,d+2,400,d+3,500,d+4}; p = arr; printf("%d\t", ++p->n); printf("%d\t", (++p)->n); printf("%d\n", ++(*p->m)); return 0; }

A、101 200 21

B、101 20 30

C、200 101 21

D、101 101 10

6、执行下述语句后的结果是 enum weekday {sun, mon=3, tue, wed, thu}; enum weekday day; day = wed; printf("%d\n",day);

A、5

B、3

C、4

D、编译时出错

7、若有以下语句,则下面表达式的值为1002的是 struct student { int num ; int age ; }; struct student stu[3] = {{1001,20}, {1002,19}, {1003,21}} ; struct student *p ; p = stu ;

A、(p++) -> num

B、(*++p) . num

C、(*p) . num

D、(*p++) . num

8、以下程序的运行结构是 #include union { double a; int b; char c; }m; int main( ) { printf("%d\n",sizeof(m)); return 0; }

A、8

B、4

C、13

D、1

9、以下对 C 语言中共用体类型数据的叙述正确的是 以下对 C 语言中共用体类型数据的叙述正确的是 以下对C语言中共用体类型数据的叙述正确的是

A、可以对共用体变量直接赋值

B、一个共用体变量中可以同时存放其所有成员

C、一个共用体变量中不能同时存放其所有成员

D、共用体类型定义中不能出现结构体类型的成员

10、根据下面的定义,能输出字母M的语句为 struct person{ char name[9]; int age; }; struct person class[10]={{“John”,17},{“Paul”,19},{“Mary”,18}};

A、printf(“%c\n”,class[3].name);

B、printf(“%c\n”,class[3].name[1]);

C、printf(“%c\n”,class[2].name[1]);

D、printf("%c\n",class[2].name[0]);

11、变量a所占内存字节数是 union U { char st[4]; int i; int j; }; struct A { double f ; union U u; }a;

A、4

B、8

C、12

D、20

第九单元 结构 单元作业

1、如下程序的工程是,读入一个国家的编号,能输出该国家的名称,请将如下代码复制到编译器中,补充完整后提交完整程序。 #include #include struct contry { int num; char name[20]; } x[5] = {1,"China", 2, "USA", 3, "France", 4, "Englan", 5, "Spanish"}; int main() { int i, k; printf("请输入编号(1-5):"); scanf("%d", &k); //查找编号为k的国家名称,请将程序补充完整。 ———————————— ———————————— ———————————— return 0; }

2、如下程序将调用函数prn()输出日期,请将程序补充完整,请提交待填空部分的答案 #include struct date { int year; int month; int day; }; int main(void) { struct date d = {1979, 4, 28}; prn(d); return 0; } void prn( struct date p ) //以YYYY-MM-DD的格式输出日期p { —————————————— }

3、如下程序将调用函数prn()输出日期,请将程序补充完整,请提交待填空部分的答案 #include struct date { int year; int month; int day; }; int main(void) { struct date d = {1979, 4, 28}; prn(&d); return 0; } void prn( struct date *p ) //以YYYY-MM-DD的格式输出日期 { —————————————— }

4、如下程序的功能是:输入n并输入n(n<=10)个学生的信息(学号、姓名、成绩),按照从高分到低分的顺序输出他们的信息。请在编译器中将各个函数的定义补充完整,上传完整代码 #include struct student { int num; char name[20]; int score; }; void Input(struct student stud[], int n); void Output(struct student stud[], int n); void Sort(struct student stud[], int n); int main(void) { int n; struct student stud[10]; /* 定义结构数组 */ scanf("%d", &n); Input(stud, n); Sort(stud, n); Output(stud, n); return 0; } void Input(struct student stud[], int n) { //该函数的功能是从键盘读入n个学生的信息(包括学号(不超过9位)、姓名(不超过9个汉字或19个字符)和成绩(整数)),请将该函数功能补充完整 } void Output(struct student stud[], int n) { //该函数的功能是输出数组stud中前n个学生的信息(包括学号、姓名、成绩)。请将该函数功能补充完整 } void Sort(struct student stud[], int n) { //该函数的功能是对数组stud中前n个学生按成绩由高到低排序。请将该函数功能补充完整 }

5、需定义一个结构体数组,存储若干个员工的如下信息,请定义适合的结构类型和结构数组。

14520.html

6、从键盘输入n和n个学生的信息,每个学生信息包括学号、姓名和成绩,输出成绩最高的学生的信息。

7、平面上有n个点,坐标均为整数。请按与坐标原点(0,0)距离的远近将所有点排序输出。可以自己写排序函数,也可以用qsort库函数排序。 输入 输入有两行,第一行是整数n(1<=n<=10),接下来有n行,每行一对整数(每对整数对应一个点)。 输出 输出排序后的所有点,格式为(u,v),每个点后有一个空格。测试数据保证每个点到原点的距离都不同。 样例输入 4 1 3 2 5 1 4 4 2 样例输出 (1,3) (1,4) (4,2) (2,5)

第十章指针进阶

第十章指针进阶单元测试

1、有如下程序 int main() { char ch[2][5] = {"6937","8254"}, *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'; j += 2) s = 10 * s + p[i][j] - '0'; printf("%d\n", s); } 该程序的输出结果是()。

A、69825

B、63825

C、6385

D、693825

2、下面程序的输出结果是() int main() { int a[ ] = {1,2,3,4,5,6,7,8,9,0}, *p; p = a; printf("%d\n", *p + 9); }

A、0

B、1

C、10

D、9

3、下列程序的输出结果是 ()。 #include "stdio.h" int main() { char a[10] = {9,8,7,6,5,4,3,2,1,0},*p = a+5; printf("%d", *--p); }

A、非法

B、a[4]的地址

C、5

D、3

4、下列程序的输出结果是 #include "stdio.h" int main() { char a[10] = {9,8,7,6,5,4,3,2,1,0},*p = a+5; printf("%d",*p--); }

A、非法

B、a[4]的地址

C、4

D、3

5、假定下列程序的可执行文件名为prg.exe: int main(int argc, char *argv[]) { int i; for(i = 1; i < argc; i++) printf("%s", argv[i]); } 则在该程序所在的子目录下输入命令行: prg hello good 后,程序的输出结果是

A、hello good

B、hg

C、hel

D、hellogood

6、假定下列程序的可执行文件名为prg.exe: int main(int argc, char *argv[]) { int i; for(i=1;i 后,程序的输出结果是

A、hello good

B、hg

C、hel

D、hellogood

7、假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: PROG ABCDEFGH IJKL ,则输出结果为 ()。 int main( int argc, char *argv[]) { while(--argc > 0) printf("%s", argv[argc]); printf("\n"); }

A、ABCDEFG

B、IJHL

C、ABCDEFGHIJKL

D、IJKLABCDEFGH

8、int a[10] = {1,2,3,4,5,6,7,8,9,10}, *p = a; 则数值为9的表达式是()

A、p+9

B、*(p+8)

C、*p+9

D、p+8

第十章指针进阶单元作业

1、若要使指针p指向一个double类型的动态存储单元,请使用函数malloc()实现。

2、编写一个排序函数,实现对字符串按照字典顺序排序,在主函数中输入5个字符串(每个字符串的长度不大于20),调用此函数,实现字符串的排序,然后输出排序后的字符串。要求用指针数组处理这些字符串。 void fun(char *pa[], int n) { /*对pa 所指的n 个字符串按照字典顺序排序*/ }

第十一章 编译预处理

第11章编译预处理单元测试

1、下列程序执行后的输出结果是 () #define MA(x) (x) *(x-1) int main() { int a = 1, b = 2; printf("%d \n", MA(1 + a + b)); }

A、6

B、8

C、10

D、12

2、下列程序执行后的输出结果是 () #define MA(x) x * (x-1) int main() { int a = 1, b = 2; printf("%d \n", MA(1 + a + b)); }

A、6

B、8

C、10

D、12

3、#define MA(x) x * x int main() { int a = 1, b = 2; printf("%d \n", MA(1 + a + b)); }

A、16

B、7

C、8

D、9

4、#define N 2 #define M N+1 #define NUM 2*M+1 int main() { int i; for(i = 1; i <= NUM; i++) printf("%d\n",i); } 该程序中的for循环执行的次数是()。

A、5

B、6

C、7

D、8

5、以下程序的输出结果是()。 #define MAX(x,y) (x) > (y)? (x) : (y) int main() { int a=5,b=2,c=3,d=3,t; t = MAX(a+b,c+d) * 10; printf("%d\n",t); }

A、6

B、7

C、60

D、70

6、以下正确的描述是()。

A、C语言的预处理功能是指完成宏替换和包含文件的调用还有条件编译

B、预处理指令只能位于C源程序文件的首部

C、凡是C源程序中行首以"#"标识的控制行都是预处理指令

D、C语言的编译预处理就是对源程序进行初步的语法检查

7、C 语言的编译系统对宏命令的处理( )。

A、在程序运行时进行的

B、在程序链接时进行的

C、和C程序中的其它语句同时进行的

D、在对源程序中其它语句正式编译之前进行的

8、以下叙述中正确的是()。

A、用#include包含的头文件的后缀不可以是“.a”

B、若一些源程序中包含某个头文件,当该头文件有错时,只需对该头文件进行修改,包含此头文件的所有源程序不必重新进行编译

C、宏命令可以看做一行C语句

D、C编译中的预处理是在编译之前进行的

第11章编译预处理单元作业

1、定义一个带参数的宏,判断两个数值中的最小值。编写程序,输入两个整数作为使用宏时的实参,输出最小值

2、建立一个prm.h文件,包含函数原型声明,建立同名的prm.c文件,包含函数prime(int n),判断整数n是否为素数。建立一个main.c文件,调用prime()函数,输出m到n之间的素数。

第十二章 文件

第12章文件单元测试

1、若要打开当前目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是()。

A、fopen("abc.txt",","r")

B、fopen("abc.txt","r+")

C、fopen("abc.txt","rb")

D、fopen("abc.txt","w")

2、下列关于C语言数据文件的叙述中正确的是()。

A、文件由ASCII码字符序列组成,C语言只能读写文本文件

B、文件由二进制数据序列组成,C语言只能读写二进制文件

C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

3、若fp是指向某文件的指针,文件操作结束之后,关闭文件指针应使用下列( )语句。

A、fp=fclose();

B、fp=fclose;

C、fclose;

D、fclose(fp);

4、当顺利执行了文件关闭操作时,fclose函数的返回值是()。

A、-1

B、0

C、1

D、TRUE

5、关于文件理解不正确的为()

A、C语言把文件看作是字节的序列,即由一个个字节的数据顺序组成;

B、所谓文件一般指存储在外部介质上数据的集合;

C、系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区;

D、每个打开文件都和文件结构体变量相关联,程序通过该变量访问该文件;

6、若执行fopen函数时发生错误,则函数的返回值是()。

A、0

B、1

C、EOF

D、一个内存地址

7、fscanf函数的正确调用形式是()

A、fscanf(fp, 格式字符串, 地址表列)

B、fscanf(格式字符串,地址表列, fp);

C、fscanf(格式字符串,文件指针, 地址表列);

D、fscanf(文件指针,格式字符串, 地址表列);

8、系统的标准输入操作的数据流向为()

A、从键盘到内存

B、从键盘到显示器

C、从硬盘到内存

D、从内存到显示器

9、系统的标准输出操作的数据流向为()

A、从键盘到内存

B、从键盘到显示器

C、从硬盘到内存

D、从内存到显示器

10、在C语言中,函数fgets(str, n, fp)的功能是( )

A、将长度为n的字符串str中的内容写入fp所指文件中

B、从fp所指文件中读取长度为n的字符串,存入str指向的内存空间

C、从fp所指文件中读取n个字符串,存入str指向的内存空间

D、从fp所指文件中读取长度不超过n-1的字符串,存入str指向的内存空间

第七章 字符数组与字符串

字符串自测题

1、下面是对字符数组s进行初始化,其中不正确的是( )。

A、char s[5]={'a','b','c'};

B、char s[5]="abcde";

C、char s[5]={"abc"};

D、char s[5]="";

2、字符数组s不能作为字符串使用的是( )。

A、char s[]={"happy"};

B、char s[6]={'h','a','p','p','y','\0'};

C、char s[5]={'h','a','p','p','y'};

D、char s[]="happy";

3、下面有关字符数组的描述中错误的是( )。

A、字符数组可以存放字符串

B、字符串可以整体输入、输出

C、不可以用关系运算符对字符数组中的字符串进行比较

D、可以在赋值语句中通过赋值运算对字符数组整体赋值

4、下面程序段执行后的输出结果是( )。 char c[5]={'a','b','\0','c','\0'}; printf("%s",c);

A、ab

B、ab c

C、abc

D、'a''b'

5、有两个字符数组a、b,则以下( )是正确的输入语句。

A、gets(a,b);

B、gets("a"); gets("b");

C、scanf("%s%s",a, b);

D、scanf("%s%s",&a,&b);

6、下面程序段执行后的输出结果是( )。 char c[]="\t\b\\\0will\n"; printf("%d",strlen(c));

A、6

B、14

C、9

D、3

7、判断字符串a是否大于b,应当使用( )。

A、if (strcmp(b, a) > 0)

B、if (strcmp(a, b) > 0)

C、if (a > b)

D、if (strcmp(a, b))

8、表达式strcmp("3.14","3.278")的值是( )。

A、浮点数

B、字符

C、非零整数

D、0

9、有以下程序: #include #include int main() { char p[]= {'a','b','c'}, q[10]= {'a','b','c'}; printf("%d %d", strlen(p), strlen(q)); return 0; } 以下叙述中正确的是( )。

A、由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

B、由于p和q数组中都没有字符串结束符,故长度都不能确定

C、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

D、由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

10、下面程序运行时从键盘上输入:123 456 789↙,其输出结果是( )。 #include int main() { char s[100]; int c, i; scanf("%c", &c); scanf("%d", &i); scanf("%s", s); printf("%c,%d,%s", c, i, s); return 0; }

A、1,23,456,789

B、1,23,456

C、1,456,789

D、123,456,789

11、下面程序运行时从键盘上输入:ABC↙,其输出结果是( )。 #include #include int main() { char ss[10]="12345"; gets(ss); strcat(ss, "6789"); printf("%s",ss); return 0; }

A、12345ABC6

B、ABC456789

C、ABC67

D、ABC6789

12、下面程序执行后的输出结果是( )。 #include #include int main() { char arr[2][4]; strcpy(arr[0],"you"); strcpy(arr[1],"me"); arr[0][3]='&'; printf("%s", arr[0]); return 0; }

A、you&me

B、you

C、me

D、错误

13、下面程序执行后的输出结果是( )。 #include int main() { char str[] = " SSWLIA", c; int k; for (k=2; (c=str[k]) != '\0'; k++) { switch (c) { case 'I': ++k; break ; case 'L': continue; default : putchar(c); continue ; } putchar('*'); } return 0; }

A、SW*A

B、SSW

C、SW*

D、SW

14、下面程序执行后的输出结果是( )。 #include int main() { char w[][10] = {"ABCD", "EFGH", "IJKL", "MNOP"} , k; for(k=1; k<3; k++) printf("%s", w[k]); return 0; }

A、ABCDFGHKL

B、ABCDEFGIJM

C、EFGHIJKL

D、EFGJKO

15、下面程序运行时从键盘上输入:AabD↙,写出程序的运行结果。 #include int main() { char s[80]; int i = 0; gets(s); while (s[i] != '\0') { if (s[i]<='z' && s[i]>='a') s[i] = 'z' + 'a' - s[i] ; i++; } puts(s); return 0; }

A、zy

B、yz

C、ab

D、ba

16、写出下面程序执行后的运行结果。 #include #include int main() { char ch[]="abc", x[3][4]; int i; for(i=0; i<3; i++) strcpy(x[i], ch); for(i=0; i<3; i++) printf("%s", &x[i][i]); return 0; }

A、abcbcc

B、abcabcabc

C、abc

D、aaabbc

17、写出下面程序执行后的运行结果。 #include #include void f(char p[][10],int N); int main() { char p[][10] = {"abc", "aabdfg", "abbd", "dcdbe", "cd"}; f(p, 5); printf("%d", strlen(p[0])); return 0; } void f(char p[][10], int N) { char t[20]; int i, j; for(i=0; i     A、3

B、4

C、5

D、6

18、输入hello↙,写出下面程序的运行结果。 #include #include int main() { char s[80], t[200]; int i, slen ; gets(s); slen = strlen(s); for(i=0 ; i     A、ollehhello

B、helloolleh

C、hellohello

D、olleholleh

19、运行下面程序输入abcbcbded↙和bc↙,写出程序的输出结果。 #include int main() { char substr[80], str[80]; int i, j, k, num = 0; gets(str); gets(substr); for(i = 0; str[i]; i++) for(j=i,k=0; substr[k]==str[j]; k++,j++) if (substr[k+1] == '\0') { num++; break; } printf("%d", num); return 0; }

A、1

B、2

C、3

D、4

20、运行程序输入hello↙和world↙,写出输出结果。 #include int main() { char a[100], b[100]; int i=0,j=0 ; gets(a); gets(b); while (a[i] != '\0') i++ ; while (b[j] != '\0') { a[i] = b[j] ; i++ ; j++ ; } a[i] = '\0'; printf("%s", a); return 0; }

A、hellohello

B、helloworld

C、worldhello

D、worldworld

21、运行程序输入adebdwe↙和d↙,写出输出结果。 #include #include int main() { char c, t[50]; int len, j, k; scanf("%s %c", t, &c); len = strlen(t); for (k=0; k     A、-1

B、0

C、1

D、2

字符串单元作业

1、输入一个字符串,统计其中数字字符出现的次数。字符串长度不超过1000.

2、从键盘输入一行字符,长度小于1000。统计其中单词的个数,各单词以空格分隔,且空格数可以是多个。

3、输入n和n个字符串,输出其中最短的字符串。若长度相同则输出出现较早的那一个。 输入:第一行是一个整数n,后面跟着n行,每行包括一个由字母和数字和空格组成的字符串,长度不超过1000。 输出:长度最短的字符串,若长度相同则输出出现较早的那一个。

4、输入一个字符串(长度小于100),输出该字符串的长度,即实现库函数strlen的功能,不允许调用strlen。

5、输入两个字符串s1和s2(长度均小于100),比较二者的大小: 若s1大于s2,输出1; 若二者相等,输出0 若s1小于s2,输出-1 即实现库函数strcmp的功能,不允许调用strcmp。

6、请在根据程序功能把程序补充完整, 请提交补充后的完整程序。(5分)  /*功能:输入字符串,再输入一个字符,将字符串中与输入字符相同的字符删除。*/ #include "stdio.h" void fun(char a[], char c) { int i, j;    for(i = j = 0; ________; i++)    if(a[i] != c) a[j++] = a[i];   _______________; //在字符串末尾添加字符串结束符 } int main(void) { char a[20], cc;    gets(a);    ________; //读入待删除字符    ________; //调用函数fun    puts(a);  }

7、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空(只需要提交待填写的内容即可)。 #include #include main() { char s[80], d[80]; int i, j; gets(s); for(i=j=0; s[i]!=‘\0’; i++) if( ________ ) { d[j] = s[i]; j++; } d[j] = ‘\0’; puts(d); }

8、编程。输入n(不大于10)和n个字符串(字符串长度均小于100),将字符串按字典序升序排序输出。 回车> 回车>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值