0.0935

五煦查题

快速找到你需要的那道考题与答案

moocC语言程序设计_46答案(mooc完整答案)

64 min read

moocC语言程序设计_46答案(mooc完整答案)

第1章 绪论

绪论

1、语言程以下说法正确的序设是( )
A、C语言程序总是计答从第一个的函数开始执行
B、在C语言程序中,案m案要调用函数必须在main()函数中定义
C、整答C语言程序总是语言程从main()函数开始执行
D、C语言程序中的序设main()函数必须放在程序的开始部分

2、一个C程序可以包含任意多个不同名的计答函数,但有且仅有一个( ).一个C程序总是案m案从此开始执行。
A、整答过程
B、语言程主函数
C、序设函数
D、计答include

3、案m案C语言规定,整答在一个源程序中,main函数的位置( )
A、必须在最开始
B、必须在系统调用的库函数的后面
C、可以任意
D、必须在最后

4、在C语言中,每个语句和数据定义是用( )结束。
A、句号
B、逗号
C、分号
D、括号

5、下列叙述中错误的是( )
A、C语言是一种结构化程序设计语言
B、结构化程序由顺序、分支、循环3种基本结构组成
C、使用3种基本结构构成的程序只能解决简单问题
D、结构化程序设计提倡模块化的设计方法

6、关于C程序的叙述正确的是( )
A、从//开始的程序都是注释
B、/* */只能写在一行,其中的内容为注释
C、一条语句可以写成多行,多条语句也可以写在一行
D、一行只能写一条语句

7、( )是C程序的基本构成单位。
A、函数
B、函数和过程
C、文本
D、语句

8、在C语言中,一个语句( )为结束标志。
A、句号
B、逗号
C、分号
D、括号

第2章 数据类型

2.1? 变量与常量随堂测验

1、下列标识符中,不合法的用户标识符为( )
A、month
B、_5xy
C、int
D、your_name

2.3? 赋值运算符与表达式随堂测验

1、若a, b均为int类型变量,则执行以下程序段后的输出是:___________ x=15; y=5; printf("%d\n",x%=(y%2));

2.4?逻辑运算符与表达式随堂测验

1、设i, j, k是int类型变量,且i=3, j=4, k=5,则表达式 i && j运算结果是_______, !((i<j)&&!k||1) 运算结果是________

数据类型1

1、下列选项中,合法的一组C语言数值常量是( )
A、028 5e- 3.0xf
B、12.0xa23 4.5e0
C、177 4el.5 0abc
D、0x8A 10,000 3.e

2、在C语言中,下列类型属于基本类型的是( )
A、整型、实型、字符型
B、空类型、枚举型
C、结构体类型、实型
D、数组类型、实型

3、下列字符串不属于标识符的是( )
A、_above
B、# dfg
C、_cnd
D、all

4、10+'a'+ 1.5-567.345/'b’的结果是( )型数据。
A、long
B、double
C、int
D、unsigned float

5、C语言中,运算对象必须是整型数的运算符是( )
A、%
B、\
C、%和\
D、* *

6、若num、a、b、c都是int变量,则执行表达式 num=(a=4,b=16,c=32)后num的值是( )
A、4
B、16
C、32
D、0

7、判断char型变量c1是否为大写字母的正确表达式是( )。
A、'A'<=c1<='Z'
B、(c1>='A')&(c1<='Z')
C、(c1>='A')&&(c1<='Z')
D、('A'<=c1)AND('Z'>=c1)

8、若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( )。
A、num%2==1
B、!(num%2==0)
C、!(num%2)
D、num%2

9、(  )是C语言提供的合法的数据类型关键字。
A、Boolean
B、signed
C、integer
D、Char

10、不正确的字符串常量是(  )。
A、'abc'
B、"12'12"
C、"\0"
D、" "

11、在C语言中,程序运行期间,其值不能被改变的量叫__ ____

12、在C语言中,用来标识变量名、符号变量名,函数名,数组名,类型名,文件名的有效字符序列称为__ ____

13、若有说明语句:char ch1='\065',则ch1中包含字符个数_______

14、在C语言中,char型数据在内存中的存储形式是_________

15、逻辑运算符的运算对象的数据类型__________

第3章 数据的输入输出

3.3? 字符数据输入输出随堂测验

1、程序如下,下叙述中正确的是______。 #include<stdio.h> int main() { char a1='M', a2='m'; printf("%c\n",(a1, a2)); }

2、以下程序运行后输出的结果是________。 #include<stdio.h> int main() { int a,b,d=25; a=d/10%9; b=a+-1; printf("%d,%d\n",a,b); }

数据的输入输出

1、下列程序打印输出C Language Programming #include<stdio.h> int main() { printf("C Language Programming\n"); return 0; } 程序的运行结果是:
A、程序编译出错
B、"C Language Programming\n"
C、C, Language, Programming
D、C Language Programming

2、要输出结果4*4=16,下列语句不正确的是( )
A、printf("4*4=16\n");
B、printf("4*4=%d",16);
C、printf("4*4=%d",4*4);
D、printf("4*4=%d,16");

3、已知在ASCH 字符集中、数字0的字号为48,下面程序的输出结果为( )。 #include <stdio.h> int main( ) { char x, y; x='0'; y='9'; printf("%d,%d\n",x,y); }
A、因输出格式不合法,输出错误信息
B、48,57
C、0,9
D、48.58

4、以下程序的运行结果是( ) #include <stdio.h> int main( ) { int c,x,y; x= l; y= 1; c= 0; c=x++||y++; printf("\n%d%d%d\n",x,y,c); }
A、110
B、211
C、011
D、001

5、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错,出错的原因是( )。 #include <stdio.h> int main() { int r; float s; scanf("%d",&r); s= *p*r*r; printf("s=%f\n",s); }
A、注释语句书写位置错误
B、存放圆半径的变量r不应该定义为整型
C、s=*p*r*r;语句中使用了非法的表达式
D、输出语句中格式描述符非法

第4章 选择结构

4.3? 双分支if语句随堂测验

1、以下程序的输出结果是:________ #include <stdio.h> int main() { float x=2.0,y; if(x<0.0)y=0.0; else if (x<10.0)y=1.0/x; else y= 1.0; printf("%f\n", y); }

4.4?if语句的嵌套随堂测验

1、若从键盘输入58,则以下程序输出的结果是__________ #include<stdio.h> int main() { int a; scanf("%d",&a); if(a>50)printf("%d",a); if(a>40)printf("%d",a); if(a>30)printf("%d",a); }

2、以下程序输出:_____ #include<stdio.h> int main() { int x1=3, x2=0, x3=0; if( x1 = x2+x3) printf("*****"); else printf("#####"); }

4.6?switch语句随堂测验

1、假定等级和分数有以下对应关系: 等级:A 分数:85~100  等级:B 分数:60~84  等级:C 分数:60 以下 对于等级grade输出相应的分数区间,能够完成该功能的程序段是_____.
A、switch (grade) { case 'A':printf("85--100\n"); case 'B':printf("60--84\n"); case 'C':printf("60以下\n"); default:printf("等级错误!\n"); }
B、switch (grade) { case 'A':printf("85--100\n");break; case 'B':printf("60--84\n"); case 'C':printf("60以下\n"); default:printf(" 等级错误!\n"); }
C、switch (grade) { case 'A':printf("85--100\n");break; case 'B':printf("60--84\n");break; case 'C':printf("60以下\n"); default:printf("等级错误!\n"); }
D、switch (grade) { case 'A':printf("85--100\n");break; case 'B':printf("60--84\n");break; case 'C':printf("60以下 \n");break; default:printf("等级错误!\n"); }

2、在执行下述程序时,若从键盘输入字母H,则输出结果是( )。 #include <stdio.h> int main() { char ch; ch=getchar(); switch(ch) { case 'H':printf("Hello! \n"); case 'G':printf("Good morning! \n"); } }

选择结构

1、以下程序的输出结果是:( ) #include <stdio.h> int main() { float x=2.0,y; if(x<0.0) y=0.0; else if (x<10.0) y=1.0/x; else y= 1.0; printf("%f\n", y); }
A、0.500000
B、1.000000
C、0.000000
D、0.250000

2、下列程序的输出结果是( )。 #include<stdio.h> int main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf("%d\n",d); else if(c-1>=d) printf("%d\n",d+1); else printf("%d\n",d+2); }
A、2
B、3
C、4
D、编译时有错且无结果

3、以下程序运行时,若从键盘输入9,则输出结果是( )。 #include<stdio.h> int main() { int a=1; scanf("%d",&a); if(a++<9) printf("%d\n",a); else printf("%d\n",a); }
A、10
B、11
C、9
D、8

4、请阅读以下程序: #include<stdio.h> int main() { int a=5,b=0,c=1; if(a=b+c)printf("***\n"); else printf("$$$\n"); }  以上程序( )
A、有语法错不能通过编译
B、可以通过编译但不能通过连接
C、输出***
D、输出$$$

5、若int k=8;则执行下列程序后,变量k的正确结果是____   #include<stdio.h> int main() { int k=8; switch(k) { case 9:k+=1; case 10:k+=1; case 11:k+=1;break; default:k+=1; } printf("%d\n",k); }
A、12
B、11
C、10
D、9

6、现有如下程序段,此程序段编译有错误,则程序段的错误出在( ) #include<stdio.h> int main() { int a=30,b=40,c=50,d; d=a>30 ? b:c; switch(d) { case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c); default:printf("#");} }
A、default:printf("#");这个语句
B、d=a>30?b:c;这个语句
C、case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);这三个语句
D、switch(d)这个语句

7、设变量x和y均已正确定义并赋值,则以下if语句中,在编译时将产生错误信息的是( )。
A、if(x++);
B、if(x>y&&y!=0) ;
C、if(x>0) x-- else y++;
D、if(y<0){ ; } else x++;

8、设 int x=1, y=1; 表达式( !x || y--) 的值是 ( )
A、0
B、1
C、2
D、-1

9、在C程序中,判逻辑值时,用“非0”表示逻辑值“真”, 又用“0”表示逻辑值“假”。 在求逻辑值时,用_____表示逻辑表达式值为“真”,又用_____表示逻辑表达式值为“假”。 

10、执行以下程序段后,输出结果是______。 #include<stdio.h> int main() { int a=3,b=5,c=7; if(a>b) a=b;c=a; if(c!=a) c=b; printf("%d, %d, %d\n",a,b,c); }

11、若执行下述程序时,若从键盘输入6和8时,结果为_______  #include<stdio.h> int main() { int a,b,s; scanf("%d%d",&a,&b); s=a; if (a = b) s*=s; printf("%d",s); }

选择结构作业

1、检测输入数据中奇数和偶数的个数 题目内容: 从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。编写程序判断输入数据中奇数和偶数的个数。如果用户输入的第一个数据就是-1,则程序输出"over!"。否则。用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数的个数。 程序运行结果示例1: Please enter the number: 5↙ 5:odd 8↙ 8:even 12↙ 12:even -1↙ The total number of odd is 1 The total number of even is 2

第5章 循环结构

5.1? for循环随堂测验

1、执行语句 for(i=0; i<10; i++) ; 结束后,i的值是__________

2、阅读以下程序,其运行结果是______。 #include <stdio.h> int main() { int i; for(i='a';i<'f';i++,i++) printf("%c",i-'a'+'A'); printf("\n"); return 0; }

5.2? while循环随堂测验

1、阅读以下程序,输出结果是______。 #include<stdio.h> int main() { int n=9; while(n>6) { n--; printf("%d",n); } }

5.3? do-while循环随堂测验

1、以下程序段的运行结果是______。 #include<stdio.h> int main() { int i=0; do printf("%d,",i); while(i++); printf("%d\n",i); }

5.4? 循环的嵌套随堂测验

1、读以下程序,printf会被执行几次?__________ #include<stdio.h> int main() { int i,j; for(i=1;i<4;i++) { for(j=i;j<4;j++) printf("%d*%d=%d ",i,j,i*j); } }

5.5? 循环的辅助控制语句随堂测验

1、以下程序运行后的输出结果是_______。 #include<stdio.h> int main() { int i,j,x=0; for(i=0;i<2;i++) { for(j=0;j<2;j++) { if(j%2) continue; x++; } x++; } printf("x=%d\n",x); }

循环结构

1、以下程序运行后的输出结果是( )。 #include<stdio.h> int main() { int y=10; while(y--) ; printf("y=%d\n",y); }
A、y=0
B、y=-1
C、y=1
D、while构成无限循环

2、语句for(表达式1;;表达式3)等价于( )
A、for(表达式1;0;表达式3)
B、for(表达式1;1;表达式3)
C、for(表达式1;表达式1;表达式3)
D、for(表达式1;表达式3;表达式3)

3、下列程序段中是死循环的是( )
A、int n=1; while(!n) n++;
B、int n=1; do{ n--;} while(n);
C、int n=1; do{ n+1; } while(n)
D、for(n=5;n<1;) ;

4、下面能正确计算1*2*3*???*10的程序段是( )
A、do{ k=1;n=1;n=n*k;k++; }while(k<=10);
B、do{ k=1;n=0;n=n*k;k++; }while(k<=10);
C、k=1;n=1; do{ n=n*k;k++; }while(k<=10);
D、k=1;n=0; do{ n=n*k;k++; }while(k<=10);

5、以下程序段描述正确的是( ) for(m=1;m<=100;m++) { scanf("%d",&y); if(y<0) continue; printf("%3d",m); }
A、当y<0时整个循环结束
B、y>=0时什么也不输出
C、printf函数永远也不执行
D、最多允许输出100个非负整数

6、以下不会构成无限循环的语句或语句组是( )。
A、n=0; do{ ++n;}while(n<=0);
B、n=0; while(1){ n++;}
C、n=10; while(n) ; { n--; }
D、for(n=0,i=1; ;i++) n+=i;

7、若y是整型变量,语句while(!y) 语句1; 若要执行语句1,则表达式 !y 成立等价于( )
A、y==0
B、y!=1
C、y!=0
D、y==1

8、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是( )。
A、while((ch=getchar())!='N')printf("%c",ch);
B、while(ch=getchar()!='N ')printf("%c",ch);
C、while(ch=getchar()=='N ')printf("%c",ch);
D、while((ch=getchar())=='N ')printf("%c",ch);

9、若k为整型变量,则以下for循环的执行次数是若k为整型变量,则以下for循环的 printf 执行次数是_______ for(k=2;k==0;) printf("%d",k--);

10、若变量m已定义,以下程序段中的do-while循环次数是________ m=-1; do{ m=m*m;}while(!m);

11、下面程序的运行结果是___________ #include<stdio.h> int main() { int m=0; while(m<=2) { m++; printf("%d",m); } }

12、若有程序段:int x=10; while(x=0) x=x-1; 则循环体的执行次数是___________

13、以下程序输出结果是_______。 #include<stdio.h> int main() { int i; for(i=0;i<3;i++) switch(i) { case 0:printf("%d",i); case 2:printf("%d",i); default:printf("%d",i); } }

循环结构作业

1、用计数控制的循环实现正数累加求和 题目内容: 输入一些整数,编程计算并输出其中所有正数的和,输入负数时不累加,继续输入下一个数。输入零时,表示输入数据结束。要求最后统计出累加的项数。 输入格式: "%d" 输出格式: 输入提示信息: "Input a number:\n" 输出格式: "sum=%d,count=%d\n" 程序运行结果示例: Input a number: 1↙ Input a number: 3↙ Input a number: 4↙ Input a number: 2↙ Input a number: -8↙ Input a number: -9↙ Input a number: 0↙ sum=10,count=4

第6章 数组

6.1?数组的引入随堂测验

1、假定int类型变量占用四个字节,其有定义:int x[10]={ 0,2,4};,则数组x在内存中所占字节数是( )
A、4
B、12
C、20
D、40

6.2? 二维数组的定义与引用随堂测验

1、以下二维数组c的定义形式是( )
A、int c[3][]
B、float c[3,4]
C、double c[3][4]
D、float c(3)(4)

2、有如下定义语句:int aa[][3]={ 12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为( )
A、3,2
B、3,1
C、2,2
D、2,1

6.4? 常用字符串处理函数随堂测验

1、有以下程序  #include<stdio.h> int main() { char a[]={ 'a', 'b', 'c','d','e','f','g','h','\0'}; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\n",i,j); return 0; } 程序运行后的输出结果是( )
A、9,9
B、8,9
C、1,8
D、9,8

2、设有两字符串“Good”、“Morning”分别存放在字符数组 str1[20]、str2[20]中,下面语句中能把“Morning”连接到“Good”之后的是( )。
A、strcpy(str1,str2);
B、strcpy(str1, "Morning");
C、strcat(str1, "Morning");
D、strcat("Good" ,str2);

数组

1、阅读如下程序段,则程序在先后输入love和china后,输出结果是( ) #include<stdio.h> #include<string.h> int main() { char a[30],b[30]; int k; gets(a); gets(b); k=strcmp(a,b); if(k>0) puts(a); else if(k<0) puts(b); }
A、love
B、china
C、lovechina
D、没有输出结果

2、已知:char a[20]= "abc",b[20]= "defghi";则执行下列语句后的输出结果为( ) printf("%d",strlen(strcpy(a,b)));
A、11
B、6
C、5
D、以上答案都不正确

3、阅读下列程序,则在执行后,程序的运行结果为( )  #include <string.h> #include<stdio.h> int main() { char a[30]="nice to meet you!"; strcpy(a+strlen(a)/2,"you"); printf("%s\n",a); }
A、nice to meet you you
B、nice to
C、meet you you
D、nice to you

4、若有定义: int a[5]={ 1,2,3,4,5}; char b='c',c; 则下面表达式中数值为 2 的是( )。
A、a[2]
B、a[c-b]
C、a[b]
D、a[b-'b']

5、以下对C语言字符数组描述错误的是( )。
A、字符数组可以存放字符串
B、字符数组中的字符串可以整体输入或输出
C、可以在赋值语句中通过赋值运算符”=”对字符数组整体赋值
D、不可以用关系运算符对字符数组中的字符串进行比较

6、以下合法的数组定义是( )
A、int a[]="language";
B、int a[5]={ 0,1,2,3,4,5};
C、char a="string";
D、char a[]={ "0,1,2,3,4,5"};

7、以下各组选项中,均能正确定义二维实型数组a的选项是( )。
A、float a[3][4]; float a[][4]; float a[3][]={ { 1},};
B、float a(3,4); float a[3][4]; float a[][]={ { 0};};
C、float a[3][4]; static float a[][4]={ { 0},};
D、float a[3][4]; float a[3][];

8、关于int a[2][4]={ 1,2,3,4,5,6}; 说法不正确的是( )
A、它的等价形式之一是int a[][4]={ { 1,2,3,4},{ 5,6}}
B、它的等价形式之一是int a[][4]={ 1,2,3,4,5,6,0,0}
C、它的等价形式之一是int a[2][]={ { 1,2,3,4},{ 5,6,0,0}}
D、它的等价形式之一是int a[][4]={ { 1,2,3,4},{ 5,6,0}}

9、下列关于char str[3][100]说法不正确的是( )
A、可以看作是3个字符串,而且每一个字符串的长度都不超过100
B、该数组最多可以容纳300个字符
C、可以分别用gets(str[1])和 puts(str[1])来输入和输出该字符数组中下标为1的字符串
D、可以通过puts(str)一次性输入数组的全部内容

10、假设 array 是一个已定义好的,有 10 个元素的整型数组, 则下列写法中正确的是( )。
A、array[0]=10;
B、array=0;
C、array[10]=0;
D、array[-1]=0;

11、对以下说明语句的正确理解是 ( ) int a[10]={ 6,7,8,9,10};
A、将5个初值依次赋给a[1]至a[5]
B、将5个初值依次赋给a[0]至a[4]
C、将5个初值依次赋给a[6]至a[10]
D、因为数组长度与初值的个数不相同,所以此语句不正确

12、访问二维数组中的特定元素,需要同时指明______ 下标和_______下标。 填空题多个答案按空格隔开

13、设有数组int a[4][5],则该数组的第一个元素和最后一个元素分别为______、_____。

14、下面程序的运行结果是_________。 #include<stdio.h> #include <string.h> int main() { char s[12]= "a book!"; printf("%d",strlen(s)); }

15、读以下程序得到运行结果是______ #include<stdio.h> int main() { int k[30]={ 12,324,45,6}; int count=0,i=0; while(k[i]) { if(k[i]%2==0 || k[i]%5==0) count++; i++; } printf("%d,%d\n",count,i); }

数组作业

1、题目内容: 从键盘获取一串字符串str1,回车换行符为结束符,编写代码实现将此字符串按其倒序重新放入字符串str1中,不能借助其它字符串存储str1。 输入格式: 字符串 输出格式: 字符串 输入样例1: hello 输出样例1: olleh 输入样例2: how are you! 输出样例2: !uoy era woh

2、补充完整程序,其实现功能是:在一个一维数组int a[10]的元素中,查找给定的数,若找到则输出该数,若没找到,输出No。 输入格式: 第一行:10个整数,空格隔开 第二行:要查找的数 输出格式: 找到的数orNo 输入样例1: 11 22 43 56 78 90 76 4 2 10[回车] 43[回车] 输出样例1: 43[回车] 输入样例2: 1 8 3 4 5 6 2 1 7 9[回车] 10[回车] 输出样例2: No[回车]

第7章 函数

7.1? 函数的声明、定义与调用随堂测验

1、设有如下的函数 fun (float x)  { printf("\n%d",x*x);   }  则函数的类型( )
A、与参数x的类型相同
B、void
C、int
D、无法确定

2、以下正确的函数头定义形式是( )
A、double fun(int x,int y)
B、double fun(int x;int y)
C、double fun(int x,int y);
D、double fun(int x,y);

7.2? 函数的参数传递随堂测验

1、数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是( )
A、实参将其地址传递给形参,并释放原先占用的存储单元
B、实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
C、实参将其值传递给形参,调用结束时形参再将其值回传给实参
D、实参将其值传递给形参,调用结束时形参并不将其值回传给实参

2、以下关于函数叙述中,错误的是( )
A、函数未被调用时,系统将不为形参分配内存单元
B、实参与形参的个数应相等,且实参与形参的类型必须对应一致
C、当形参是变量时,实参可以是常量、变量或表达式
D、形参可以是常量、变量或表达式

7.3? 变量的作用域随堂测验

1、以下正确的说法是( )。如果在一个函数中的复合语句中定义了一个变量,则该变量
A、只在该复合语句中有效
B、在该函数中有效
C、在本程序范围内有效
D、为非法变量

2、阅读以下程序代码,其运行结果是_____________ #include <stdio.h> void swap(int a,int b) { int t; t=a;a=b;b=t; printf("%d%d",a,b); } int main() { int a=3,b=4; swap(a,b); printf("%d%d\n",a,b); }

7.4? 变量的存储属性随堂测验

1、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )。
A、自动(auto)
B、静态( static )
C、外部(extern)
D、寄存器(register)

2、阅读以下程序,其运行结果是_____________ #include <stdio.h> func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } int main() { int k=4,m=1,p1,p2; p1=func(k,m); p2=func(k,m); printf("%d,%d\n",p1,p2); }

函数测验

1、C语言中auto型变量是( )
A、存储在动态存储区中
B、存储在静态存储区中
C、存储在外存储器中
D、存储在计算机CPU的寄存器中

2、一个函数的形式参数的作用域是( )
A、main()主函数
B、这个函数体
C、从定义处到文件尾
D、整个程序

3、在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则( )
A、称为函数的直接递归调用
B、C语言中不允许这样的递归调用
C、称为函数的循环调用
D、称为函数的间接递归调用

4、若程序中定义函数 float myadd(float a, float b) { return a+b; } 并将其放在调用语句之后,则在调用之前应对该函数进行声明, 以下声明中错误的是( )
A、float myadd( float a,b);
B、float myadd(float b, float a);
C、float myadd(float, float);
D、float myadd(float a, float b);

5、以下函数fun形参的类型是( )。 fun( float x) { float y; y=3*x-4; return y; }
A、int
B、void
C、float
D、不确定

6、有参函数的返回值,是通过函数中的( )语句来获得的。
A、return
B、printf
C、scanf
D、函数说明

7、以下关于函数的叙述中不正确的是( )
A、C程序是函数的集合,包括标准库函数和用户自定义函数
B、在C语言程序中,被调用的函数必须在main函数中定义
C、在C语言程序中,函数的定义不能嵌套
D、在C语言程序中,函数的调用可以嵌套

8、以下关于函数叙述中,错误的是( )
A、函数未被调用时,系统将不为形参分配内存单元
B、实参与形参的个数应相等,且实参与形参的类型必须对应一致
C、当形参是变量时,实参可以是常量、变量或表达式
D、形参可以是常量、变量或表达式

9、以下叙述中正确的是( )
A、局部变量说明为static,其生存期将得到延长
B、全局变量说明为static,其作用域将被扩大
C、任何存储类的变量在未赋初值时,其值都是不确定的
D、形参可以使用的存储类说明符与局部变量完全相同

10、以下程序的运行结果为________。 #include <stdio.h> int x=2; int fun(int p) { static int x=3; x+=p; printf("%d ",x); return (x); } int main() { int y=3; printf("%d \n",fun(fun(x))); }

11、以下程序的运行结果是______________ #include <stdio.h> void f(int a, int b) { int t; t=a; a=b; b=t; } int main() { int x=1, y=3, z=2; if(x>y) f(x,y); else if(y>z) f(x,z); else f(x,z); printf("%d,%d,%d\n",x,y,z); }

12、以下程序的功能是求任意两个整数a和b的最大公约数,并予以显示,程序的划线处应填入________。 #include <stdio.h> long cod(long n1,long n2) { long t; while(n2) { ________; n1=n2;n2=t; } return n1; } int main( ) { long a,b,x; printf("Please input two numbers:"); scanf("%ld%ld",&a,&b); x=cod(a,b); printf("%ld,%ld,%ld\n",a,b,x); }

13、函数fun的功能是:根据以下公式计算并返回S,n通过形参传入,n的值大于等于0。划线处应填________。 S=1-1/3+1/5-1/7+…1/(2*n-1) float fun(int n) { float s=0.0,w,t,f=-1.0; int i; for(i=0;i<n;i++) { f=-f; w=f/(2*i+1); s+=w; } ____________; }

14、下面函数调用语句含有实参的个数为______________ func((exp1,exp2),(exp3,exp4,exp5)); 

15、以下程序的运行结果是什么? #include<stdio.h> void hello_world(void) { printf("hello,world!\n"); } void three_hellos(void) { int counter; for(counter=1;counter<=3;counter++) hello_world(); } int main() { three_hellos(); }

函数作业

1、寻找最大数 题目内容: 主函数定义一个长度为5的整型一维数组,编写一个函数实现求此一维数组的最大值。函数 原型:int max(int a[], int n); 功能是返回长度为n的数组a中最大的一个数。 输入格式: 5个整数 输出格式: "The result is %d\n" 输入样例1: 12 6 18 9 4↙ 输出样例1: The_result_is_18 输入样例2: 9 7 -2 3 4↙ 输出样例2: The_result_is_9

第8章 指针

8.1? 指针的定义、初始化和引用随堂测验

1、下列关于指针变量赋空值的说法错误的是( )
A、当赋空值的时候,变量指向地址为0的存储单元
B、赋值语句可以表达为: 变量名=′\0′;
C、赋值语句可以表达为变量名=0;
D、一个指针变量可以被赋空值

2、int a= 10,*p=&a;语句中,p的值是_______
A、10
B、变量p的地址值
C、变量a的地址值
D、无意义

3、阅读以下程序,其执行结果是_________ #include <stdio.h>  int main() { int a,*p,*q; p=&a; q=&a; *p=5%6; *q=5; printf("%d\n",a); }

8.2? 指针与函数随堂测验

1、下列程序段的输出结果是_______。 #include <stdio.h> void fun(int *px, int *py) { printf("%d %d\n", *px, *py); *px=3;*py=4; } int main() { int x=1,y=2; fun(&x,&y); printf("%d %d\n",x, y); }

2、#include <stdio.h>   int *fun(int *a,int *b) { int c; c=*a%*b; return &c; } int main() { int a=5,b=19,*c; c=fun(&a,&b); printf("%d\n",++*c); }

8.3? 指针与数组随堂测验

1、对语句“int a[10],*p=a;”,下列表述中正确的是( )
A、*p被赋初值为a数组的首地址
B、*p被赋初值为数组元素a[0]的地址
C、p被赋初值为数组元素a[1]的地址
D、p被赋初值为数组元素a[0]的地址

2、若有说明语句 int a[5], *p=a; 对数组元素的正确引用是( )
A、a[p]
B、p[a]
C、*(p+2)
D、p+2

8.4? 指向字符串的指针随堂测验

1、阅读下面程序,则执行后的结果为_____ #include <stdio.h>    int main()   { char *str="abcdefghijklmnopq";   while(*str++!=′e′);   printf("%c\n",*str);  }

2、下面函数的功能是____ char *fun(char *str1,char*str2)   { while((*str1)&&(*str2++=*str1++)); return str2; }

指针单元测验

1、下列正确的定义语句是( )
A、int x=3,*p=1;
B、int x=3,*p=0;
C、int x=3,*p=x;
D、int *p=&x=3;

2、若有以下定义,且0<=i<5, 则对数组元素地址的正确表示是 ( ) int a[ ]={ 1,2,3,4,5},*p=a, i;
A、&(a+i)
B、a++
C、&p
D、&p[i]

3、下列语句定义p为指向float类型变量d的指针,其中正确的是( )
A、float d=0,*p=d;
B、float d=0,*p=&d;
C、float *p=&d,d=0;
D、float d=0,p=d;

4、若已定义: int a[]={ 0,1,2,3,4,5,6,7,8,9},*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是( )
A、a[p-a]
B、*(&a[i])
C、p[i]
D、a[10]

5、现有如下定义语句 int*p,s[20],i;   p=s; 表示数组元素s[i]的表达式不正确的是( )
A、*(s+i)
B、*(p+i)
C、*(s=s+i)
D、*(p=p+i)

6、有说明语句char *name="newspaper"; 则 可获取串中字符's'是( )
A、name[0]+3
B、*name+3
C、*(name+3)
D、name[4]

7、若有以下定义,则 *(p+5) 的值为 ( ) char s[ ]="Hello”, *p=s;
A、'0'
B、'\0'
C、'0'的地址
D、不确定的值

8、对于2个类型相同的指针变量,不能进行的运算是( )
A、+
B、- ==
C、==
D、=

9、已有定义int k= 2,*ptr1,*ptr2;且ptrl 和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。
A、k= *ptr1+ *ptr2
B、ptr2 =k
C、ptr1=ptr2
D、k= *ptrl * (*ptr2)

10、以下程序输出的结果是( ) #include <stdio.h> int main() { char w[][5]={ "ABCD","EFGH","IJKL","MNOP"}; int k; for (k=1; k<3; k++) printf("%s\n", w[k]+k); }
A、ABCD FGH
B、JKL OP
C、EFG JK
D、FGH KL

11、设有语句:int k=1, *p1=&k, *p2=&k;,以下不能正确执行的赋值语句是( )
A、p1=k;
B、p1=p2;
C、*p1=*p2;
D、k=*p1+*p2;

12、有以下程序 #include<stdio.h> int main()   { char *p="abcde\0fghjik\0 ";  printf("%d\n ",strlen(p));   }程序运行后的输出结果是______

13、阅读下面程序,在程序执行后的结果为______ #include <stdio.h> int main() { int c[][4]={ 1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56}; printf("%x,%x\n",c[2][2],c[1][1]); }

14、下面程序段中,输出*的个数是__________ #include <stdio.h> int main( ) { char *s="\ta\018bc";   for(;*s!=′\0′;s++)printf("*"); }

15、以下程序输出的结果是:___________ #include <stdio.h> int main() { char a[11]="0123456789",*p; p=&a[4]; puts(p) ; }

16、设int a[10]={ 1,2,3}; 则*(a+3)的值是_______

17、阅读以下程序,输出结果为_________ #include<stdio.h> #include <string.h> void fun( char s[]); int main() { char a[]="abcde"; int k; fun(a); puts(a); return 0; } void fun( char s[]) { int x,y; char c; x=0; y=(strlen(s)-1)/2; for( ; x<y; x++,y--) { c=s[y]; s[y]=s[x]; s[x]=c; } }

18、下面程序的运行结果是_____________ #include <stdio.h> int main( ) { int b[10]={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *q=b; printf("%d\n", *(q+2) ); return 0; }

指针作业

1、找最值 题目内容: 从键盘任意输入6个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。函数原型如下所示: int FindMax(int num[], int n, int *pMaxPos);//函数返回最大值,pMaxPos返回最大值所在的下标 int FindMin(int num[], int n, int *pMinPos);//函数返回最小值,pMaxPos返回最小值所在的下标 程序运行结果示例: Input 10 numbers: -1 2 3 45 92 8 9 ↙ Max=92,Position=4,Min=-1,Position=0 输入格式: "%d" 输出格式: 提示信息:"Input 6 numbers:\n" 输出结果:"Max=%d,Position=%d,Min=%d,Position=%d\n"

第9章 结构体与共用体

9.1? 结构的概念随堂测验

1、设有以下说明语句   typedef struct { int n; char ch[8]; }PER; 则下面叙述中正确的是( )
A、PER 是结构体变量名
B、PER是结构体类型名
C、typedef struct 是结构体类型
D、struct 是结构体类型名

2、阅读以下程序代码,其运行结果是________ #include<stdio.h> struct cmplx { int x; int y; }cnum[2]={ 1, 3, 2, 7}; int main( ) { printf("%d\n", cnum[0].y *cnum[1].x ); return 0; }

9.2? 结构与数组随堂测验

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

9.4? 结构与指针随堂测验

1、以下程序代码输出结果是_____________ struct contry { int num; char name[20]; }x[4]={ 1,"China", 2, "USA", 3, "France", 4, "Spanish"}; int main() { struct contry *p; p=x+2; int i; for( ; p<x+4;p++) printf("%d%s ",p->num,p->name); }

结构体测验

1、C语言结构体类型变量在其有效作用域内,且在程序运行期间( )
A、VC环境在内存中仅仅开辟一个存放结构体变量地址的单元
B、所有的成员一直驻留在内存中
C、只有最开始的成员驻留在内存中
D、部分成员驻留在内存中

2、有如下定义 struct person { char name[9]; int age; }; struct person lass[10]={ "John",17,"paul",19,"Mary",18,"Adam",16,};  根据上述定义,能输出Mary中的字母M的语句是( )
A、printf("%c\n",lass[3].name);
B、printf("%c\n",lass[3].name[1]);
C、printf("%c\n",lass[2].name[1]);
D、printf("%c\n",lass[2].name[0]);

3、设有如下定义: struck sk { int a; float b; }data; int *p; 若要使P指向data中的a域,正确的赋值语句是( )
A、p=&a
B、p=&a
C、p=data.a
D、p=&data.a

4、已知有如下定义: struct a { char x; double y;}data,*t; 若有t=&data,则对data中的成员的正确引用是( )
A、(*t).data.x
B、(*t).x
C、t->data.x
D、t.data.x

5、已知学生记录描述为: struct student { int no; char name[20], sex; struct{ int year, month, day;}birth; };struct student s; 设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是( )
A、year=1984;month=11;day=12;
B、s.year=1984;s.month=11;s.day=12;
C、birth.year=1984;birth.month=11;birth.day=12;
D、s.birth.year=1984; s.birth.month=11; s.birth. day =12;

6、下列各数据类型不属于构造类型的是( )
A、枚举型
B、共用型
C、结构型
D、数组型

7、若在32位机,VC编译器下,有下面的说明和定义,则sizeof(struct aa)的值是______ struct aa { int r1; double r2; float r3; union uu{ char u1[5];long u2[2];}ua; }mya;

8、在32位机,VC编译器下,以下程序的运行结果是________________ #include <stdio.h> int main() { struct date { int year,month,day;}today; printf("%d\n",sizeof(struct date)); }

9、有以下程序 #include <stdio.h> struct STU { char num[10]; float score[3]; }; int main() { struct STU s[3]={ { "20021",90,95,85}, { "20022",95,80,75},{ "20023",100,95,90},},*p=s; int i; float sum=0; for(i=0;i<3;i++) sum=sum+p->score[i]; printf("%6.2f\n",sum); }  程序运行后的输出结果是_______

10、struct st { int x; int *y; }*p; int dt[4]={ 10,20,30,40}; struct st aa[4]={ 50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]}; int main() { p=aa; printf("%d\n",++p->x); printf("%d\n",(++p)->x); }

11、下列程序的输出结果是 ________ struct abc { int a, b, c, s; }; int main() { struct abc s[2]={ { 1,2,3},{ 4,5,6}}; int t; t=s[0].a+s[1].b; printf("%d\n",t); }

结构体作业

1、题目内容 定义结构体Birthday,包含成员年份int year、月份int month、日int day。编写一个函数bool judgement(Birthday b1, Birthday b2),其功能是判断两个人是否同年同月同日生,如果是返回ture,否则返回false。 输入样例1: 1989 09 08 1987 10 11 输出样例1: 不是同月同日生 输入样例2: 1989 09 08 1989 09 08 输出样例1: 是同月同日生

第10章 文件

文件测验

1、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。
A、0
B、1
C、-1
D、非0值

2、fread(buf , 64,2,fp)的功能是:( )
A、从fp所指向的文件中,读出整数64,并存放在buf中;
B、从fp所指向的文件中,读出整数64和2,并存放在buf中;
C、从fp所指向的文件中,读出64个字节的字符,读两次,并存放在buf地址中;
D、从fp所指向的文件中,读出64个字节的字符,并存放在buf中

3、以下程序的功能是(  ) #include <stdio.h> int main() { FILE * fp; char str[]=”Beijing 2008”; fp = fopen(“file2”,”w”); fputs(str,fp); fclose(fp); }
A、在屏幕上显示“Beiing 2008”;
B、把"Beijing 2008"存入file2文件中;
C、在打印机上打印出“Beiing 2008”;
D、以上都不对;

4、若有以下定义和说明: #iinclude <stdio.h> struct std { char num[6]; char name[8]; float mark[4]; }a[30]; FILE * fp; 设文件中以二进制形式存有许多学生的数据,且已经正确打开,文件指针定位在文件开头,若要从文件中读出30个学生的数据放入a数组中,以下正确的语句是(    )。 A)fread (a , sizeof(struct std),30 , fp) ; B)fread (&a[i] , sizeof(struct std),1 , fp) ; C)fread (a +i, sizeof(struct std),1 , fp) ; D)fread (a , struct std,30 , fp) ;
A、fread (a , sizeof(struct std),30 , fp) ;
B、fread (&a[i] , sizeof(struct std),1 , fp) ;
C、fread (a +i, sizeof(struct std),1 , fp) ;
D、fread (a , struct std,30 , fp) ;

5、为了避免同一个头文件在同一个文件中被直接或者间接重复包含,可以使用_________

6、文件B如果想使用头文件A中声明的函数,则需要在B文件中适当位置添加_________

7、根据数据的组织形式,C中将文件分为______________和______________两种类型

8、现要求将一个已打开的文件指针为fp所指向的文件关闭掉,写出语句:_____________________。

9、现要求以读写方式,打开一个文本文件 stu1 ,写出语句:_________________。

期末测试

期末测试题

1、假设变量已正确定义,在下列选项中,不正确的赋值语句是______。
A、++t;
B、n1=(n2=(n3=0));
C、k=i=j;
D、a=b+c=1;

2、下面合法的C语言字符常量是________。
A、'\t'
B、"A"
C、‘65’
D、A

3、表达式: 10!=9的值是__________。
A、true
B、非零值
C、0
D、1

4、运行下面程序时,若从键盘输入3,5,则程序的输出结果是______. #include <stdio.h> int main( ) { int x,y; scanf("%d,%d",&x,&y); if (x==y) printf("x==y"); else if (x>y) printf("x>y"); else printf("x<y"); }
A、x==y
B、x<y
C、5>3
D、3<5

5、#include <stdio.h> int func(int a,int b) { return(a+b); } int main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%d\n",r); } 该程序的输出结果是________.
A、12
B、13
C、14
D、15

6、假定等级和分数有以下对应关系: 等级:A 分数:85~100  等级:B 分数:60~84  等级:C 分数:60 以下 对于等级grade输出相应的分数区间,能够完成该功能的程序段是__________.
A、switch (grade) { case 'A':printf("85--100\n"); case 'B':printf("60--84\n"); case 'C':printf("60以下\n"); default:printf("等级错误!\n"); }
B、switch (grade) { case 'A':printf("85--100\n");break; case 'B':printf("60--84\n"); case 'C':printf("60以下\n"); default:printf(" 等级错误!\n"); }
C、switch (grade) { case 'A':printf("85--100\n");break; case 'B':printf("60--84\n");break; case 'C':printf("60以下\n"); default:printf("等级错误!\n"); }
D、switch (grade) { case 'A':printf("85--100\n");break; case 'B':printf("60--84\n");break; case 'C':printf("60以下 \n");break; default:printf("等级错误!\n"); }

7、设有如下函数定义: int f(char s[ ]) { int i=0; while(s[i++]!='\0'); return (i-1); } 如果在主程序中用下面的语句调用上述函数,则输出结果为________。 printf("%d\n",f("goodbey!"));
A、3
B、6
C、8
D、9

8、以下关于数组的描述正确的是________.
A、数组的大小是固定的,但可以有不同类型的数组元素。
B、数组的大小是可变的,但所有数组元素的类型必须相同。
C、数组的大小是固定的,所有数组元素的类型必须相同。
D、数组的大小是可变的,可以有不同类型的数组元素。

9、C语言规定,除主函数外,程序中各函数之间__________.
A、既允许直接递归调用也允许间接递归调用
B、不允许直接递归调用也不允许间接递归调用
C、允许直接递归调用不允许间接递归调用
D、不允许直接递归调用允许间接递归调用

10、阅读程序,若从键盘输入4 8 5三个数,程序的输出结果是_________ #include <stdio.h> void swap (int *p1,int *p2) { int p; p=* p1; * p1=* p2; * p2=p; } int main() { int n1,n2,n3,*p1,*p2,*p3; scanf("%d%d%d",&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(n1>n2)swap(p1,p2); if(n1>n3)swap(p1,p3); if(n2>n3)swap(p2,p3); printf("%d%d%d\n",*p1,*p2,*p3); }
A、458
B、485
C、854
D、548

11、请在程序中2个划线处填入适当的语句,使得下面程序实现功能: 计算并输出下列级数的前n项之和Sn,直到Sn大于q为止,q的值通过形参传入。 Sn = 2/1 + 3/2 + 4/3 + …… + (n+1)/n 例如,若q的值为50.0,则函数值为50.416695。 #include <stdio.h> float fun( float q ) { int n; float s; n = 2; s = 2.0; while (s______q) { s=s+(float)(n+1)/n; ______; } return s; } int main() { printf("%f\n", fun(50)); }
A、<= n++
B、> n++
C、< n++
D、>= n++

12、下面程序段的输出结果是______. #include <stdio.h> int main( ) { int x=3,y; do { y=x--; if (!y) { printf("*");continue; } printf("#"); } while(x==2);
A、##
B、##*
C、死循环
D、输出错误信息

13、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是_______.
A、实参将其地址传递给形参,并释放原先占用的存储单元
B、实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
C、实参将其值传递给形参,调用结束时形参再将其值回传给实参
D、实参将其值传递给形参,调用结束时形参并不将其值回传给实参

14、以下叙述中,不正确的是_______.
A、在同一C程序文件中,不同函数中可以使用同名变量
B、在main函数体内定义的变量是全局变量
C、函数形参是局部变量,函数调用完成即失去意义
D、若同一文件中全局变量和局部变量同名,则全局变量在局部变量作用范围内不起作用

15、下面函数的功能是_______。 int sss(s, t) { char s[ ], t[ ]; int i=0; while((s[i])&&(t[i])&&(t[i]== s[i])) i++; return (s[i]-t[i]); }
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串s复制到字符串t中
D、将字符串s接续到字符串t中

16、以下定义语句中,错误的是_______.
A、int a[]={ 1,2};
B、char a={ "test"};
C、char s[10]={ "test"};
D、int a[]={ 'a','b','c'};

17、以下程序的输出结果是______. #include <stdio.h> int main() { int a[4][4]={ { 1,3,5,},{ 2,4,6},{ 3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); }
A、0650
B、1470
C、5430
D、程序错误

18、若有说明char c[7]={ 's','t','r','i','n','g'};则对元素的非法引用是______.
A、c[0]
B、c[9-6]
C、c[4*2]
D、c[2*3]

19、以下叙述正确的是_______。
A、continue语句的作用是结束整个循环的执行
B、只能在循环体内和switch语句体内使用break语句
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用goto语句

20、若有以下结构体定义: struct example { int x; int y; } v2; 则( )是正确的引用或定义
A、example.x=10;
B、struct v2; v2.x=10;
C、example v2; v2.x=10;
D、struct example v2; v2.x={ 10,3};

21、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为_________。
A、-1
B、1
C、0
D、非0值

22、请阅读以下程序: #include <stdio.h> f(int b[ ], int n) { int i, r=1; for(i=0; i<=n; i++) r=r*b[i]; return r; } int main() { int x, a[]={ 2,3,4,5,6,7,8,9}; x=f(a, 3); printf("%d\n",x); return 0; } 上面程序的输出结果是_______.
A、720
B、120
C、24
D、6

23、下面判断正确的是_________。
A、char c[4]="abc",d[4]="abc";等价于 char c[4]=d[4]="abc";
B、char str[10]={ "china"};等价于char str[10];str[]={ "china"};
C、char *a="china";等价于 char *a;*a="china";
D、char *s="china";等价于 char *s;s="china";

24、要打开一个已存在的用于修改的非空二进制文件“hello.txt”,正确语句是______
A、fp=fopen( "hello.txt ","r" ) ;
B、fp=fopen( "hello.txt ","ab+" );
C、fp=fopen( "hello.txt ","w" ) ;
D、fp=fopen( "hello.txt ","r+" )

25、阅读以下程序,写出输出结果 ______ #include <stdio.h> int f(int x); int main() { int n=1,m; m=f(f(n)); printf("%d\n",m); return 0; } int f(int x) { return x*2;}
A、2
B、4
C、8
D、无返回值

26、若有函数:void fun(double a[],int *n) { ……},以下叙述中正确的是______。
A、调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
B、形参a和n都是指针变量
C、形参a是一个数组名,n是指针变量
D、调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组

27、已知对学生记录的描述为: struct student { int num; char name[20],sex; struct{ int year,month,day; }birthday; } struct student stu; 设变量stu中的“生日”是“1995年11月12日”,对“birthday”正确赋值的程序是______。
A、year=1995; month=11; day=12;
B、stu.year=1995; stu.month=11; stu.day=12;
C、birthday.year=1995; birthday.month=11; birthday.day=12;
D、stu.birthday.year=1995; stu.birthday.month=11; stu.birthday.day=12;

28、设有如下程序段: int k=10; while(k==0) k--; 则下述说明中正确的是_________。
A、循环体一次也不执行
B、循环体执行一次
C、死循环
D、循环体执行10次

29、从循环体内某一层跳出,继续执行循环外的语句是________。
A、continue语句
B、空语句
C、break语句
D、return语句

30、下列运算符优先级最低的是__________。 A、= B、+ C、! D、&&
A、=
B、+
C、!
D、&&

31、阅读下面的程序 #include<stdio.h> void main() { int i,j,m,n; i=8;j=10; m=++i; n=j++; printf("%d,%d,%d,%d",i,j,m,n); } 程序的运行结果是________。
A、8,10,8,10
B、9,11,8,10
C、9,11,9,10
D、9,10,9,11

32、以下程序的输出结果是:( ) #include <stdio.h> int main() { float x=2.0,y; if(x<0.0) y=0.0; else if (x<10.0) y=1.0/x; else y= 1.0; printf("%f\n", y); }
A、0.500000
B、1.000000
C、0.000000
D、0.250000

33、请阅读以下程序: #include<stdio.h> int main() { int a=5,b=0,c=1; if( a = b+c ) printf("***\n"); else printf("$$$\n"); }  以上程序( )
A、有语法错不能通过编译
B、可以通过编译但不能通过连接
C、输出***
D、输出$$$

34、若有定义: int a[5]={ 1,2,3,4,5}; char b='c',c; 则下面表达式中数值为 2 的是( )。
A、a[2]
B、a[c-b]
C、a[b]
D、a[b-'b']

35、以下各组选项中,均能正确定义二维实型数组a的选项是( )。
A、float a[3][4]; float a[][4]; float a[3][]={ { 1},};
B、float a(3,4); float a[3][4]; float a[][]={ { 0};};
C、float a[3][4]; static float a[][4]={ { 0},};
D、float a[3][4]; float a[3][];

36、阅读下面的程序,写出程序的运行结果_______ #include<stdio.h> int main() { int i,j; i=010; j=9; printf("%d,%d",i-j,i+j); }

37、设有以下语句: int x=10;x+=3+x%(3),则x的值是:_______

38、以下程序的输出结果是________. #include <stdio.h> void fun() { static int a=0; a+=2; printf("%d",a); } int main() { int cc; for(cc=1;cc<4;cc++) fun( ); printf("\n"); }

39、请在画线的地方填入适当的语句使程序能够正确运行。 以下给定程序的功能是: 统计整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返回主函数。 例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。 #include <stdio.h> int c1,c2,c3; void fun(long n) { c1 = c2 = c3 = 0; while (n) { switch( _________ ){ case 1: c1++; break; case 2: c2++;break; case 3: c3++; } n /= 10; } } int main() { int n=123114350; fun(n); printf("\nn=%d c1=%d c2=%d c3=%d\n",n,c1,c2,c3); }

40、阅读程序,若从键盘输入16,程序的输出结果是_________________ #include <stdio.h> int main() { int x,y,i,a[8],j,u; scanf("%d",&x); y=x;i=0; do { u=y/2 ; a[i]=y%2; i++; y=u; }while(y>=1); for(j=i-1;j>=0;j--) printf("%d",a[j]); }

41、阅读以下程序,写出程序的输出结果________ #include <stdio.h> struct VALUE { int x; char c; }; void func(struct VALUE b) { b.x -= 100; b.c+= 4; } int main() { struct VALUE a ={ 100,'A'}; func(a); printf("%d %c\n",a.x,a.c); return 0; }

42、以下程序的执行结果是:_________________________ #include int main( ) { int a=5,b=60,c; if (a) { c=a*b; printf("%d*%d=%d\n",b,a,c); } else { c=b/a; printf("%d/%d=%d\n",b,a,c); } }

43、若执行下述程序时,若从键盘输入6和8时,结果为_______  #include<stdio.h> int main() { int a,b,s; scanf("%d%d",&a,&b); s=a; if(a=b) s*=s; printf("%d",s); }

44、下面程序的运行结果是_________。 #include<stdio.h> #include <string.h> int main() { char s[12]= "a book!"; printf("%d",strlen(s)); }

45、下面程序的运行结果是_____________ #include <stdio.h> int main( ) { int b[10]={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *q=b; printf("%d\n", *(q+2) ); return 0; }

学习通C语言程序设计_46

在学习通C语言程序设计_46中,我们将深入探讨如何在C语言中使用结构体。

结构体的概念

结构体是一种自定义的复合数据类型,它可以将多个不同数据类型的变量组合成一个整体,方便我们进行管理和使用。

结构体的定义形式为:

struct 结构体名 {     类型1 变量名1;    类型2 变量名2;    类型3 变量名3;    ...};

其中,结构体名为自定义的标识符,用于在程序中引用该结构体类型,变量名可以自定义,用于表示结构体中的成员变量。

例如:

struct student {     char name[20];    int age;    float score;};

表示定义一个名为student的结构体,包含三个成员变量:一个char类型的数组name,一个int类型的变量age,一个float类型的变量score。

结构体变量的定义和使用

定义结构体变量和定义基本数据类型变量的方式相同,只需要在类型前加上结构体名即可。

例如:

struct student s1;

表示定义一个名为s1的结构体变量,类型为student。

访问结构体成员变量的方式是使用“.”运算符。

例如:

s1.age = 18;s1.score = 90.5;strcpy(s1.name, \张三\

表示给s1结构体变量的age成员赋值为18,score成员赋值为90.5,name成员赋值为\张三\。

结构体指针

与基本数据类型一样,结构体变量也有对应的指针类型。

定义结构体指针的方式为:

struct 结构体名 *指针变量名;

例如:

struct student *ps;

表示定义一个名为ps的结构体指针变量,类型为student。

访问结构体指针中的成员变量的方式是使用“->”运算符。

例如:

ps->age = 18;ps->score = 90.5;strcpy(ps->name, \张三\

表示给ps所指向的结构体变量的age成员赋值为18,score成员赋值为90.5,name成员赋值为\张三\。

结构体数组

与基本数据类型一样,结构体也可以定义成数组。

定义结构体数组的方式为:

struct 结构体名 数组名[数组长度];

例如:

struct student s[3];

表示定义一个名为s的结构体数组,长度为3。

访问结构体数组中的成员变量的方式是使用“[]”运算符和“.”运算符结合。

例如:

s[0].age = 18;s[0].score = 90.5;strcpy(s[0].name, \张三\

表示给s数组中第一个元素所表示的结构体变量的age成员赋值为18,score成员赋值为90.5,name成员赋值为\张三\。

结构体作为函数参数

结构体可以作为函数的参数传递。

例如:

void print_student(struct student s) {     printf(\姓名:%s,年龄:%d,成绩:%f\\ s.name, s.age, s.score);}

表示定义一个名为print_student的函数,参数为一个student类型的结构体s,函数将打印该结构体的name、age和score成员变量的值。

调用该函数的方式为:

struct student s1 = { \张三\ 18, 90.5};print_student(s1);

表示定义一个名为s1的student类型的结构体变量,成员变量分别为\张三\、18和90.5,然后调用print_student函数,将s1作为参数传递进去。

总结

学习通C语言程序设计_46中,我们深入学习了结构体的概念、结构体变量的定义和使用、结构体指针、结构体数组以及结构体作为函数参数的使用方法。

结构体是C语言中非常重要的数据类型,掌握好它的使用方式,将有助于我们编写更加复杂、高效的程序。


遇到组合体轴测投影的绘图,需要()。

A.企业销售商品时,为鼓励客户多买,在价格上给予的折扣叫做( )。
B.下面氨基酸的测定方法中,属于荧光检测方法的是( )。
C.以下不属于自我更新企业管理行为风格的要素有:
D.下面哪一个属于双人徒手搬运伤者的方法


他很后悔,不该和自己同过患难、共过生死的好朋友分道扬镳。

A.自由度和计算自由度的关系是( )。
B.圆管层流断面流速分布规律符合 ( )
C.在PHP中,标识符不区分大小写。
D.医德依靠(    ) 等非强制力量维系


重塑运动是美国 总统牵头进行的

A.多层平壁定态热传导时,各层的温度降与各相应层的热阻。
B.科学研究表明,左脑主要掌握经验、惯性和逻辑表达。( )
C.请问促进印象主义艺术产生的原因有哪些
D.xGFjufotBkGAAAAAElFTkSuQmCC


人日の節句”又称为——————。

A.下面对卡比多巴的论述,正确的是
B.“鸡不吃了”有歧义,产生歧义的原因是( )
C.工件欠定位在加工时是:()
D.指出下列词组翻译正确的是:( )


进行多选题的频数分析前需要先定义多项题集。

A.自发扩展秩序生成和成长的社会基础是
B.下图中药饮片归为哪一类中药
C.撰写简历时填写的必要信息包括:
D.软胶囊壳中可加入羟苯甲酯或羟苯丙酯,起()作用


女性为了追求时尚、紧跟潮流发生的购买行为属于( )。

A.临床上弹法每分钟操作( )
B.企业进行财产清查的主要目的是保证(  )。
C.美洲斑潜蝇是一种( )害虫。
D.“茀厥丰草,种之黄茂”。茀:除、治理。


一轮系有3对齿轮参加传动,经传动后,则输入轴与输出轴的旋转方向()

A.常用轨枕有两种材质,()枕和混凝土枕_
B.角色扮演这样的练习属于机械性口语练习。
C.旗人和民人的区别在于()。
D.固定类插花工具有————。


下列哪些属于门脉高压症的临床表现

A.对于多元智力理论的提出,主要是针对哪一部分在进行相应的运用及改进
B.从施工过程组织的复杂程度上说,混凝土柱的浇筑、振捣应属于( )。
C.跟你相处时间越多的接触更多
D.意识作为一种反应形式,其形成经历了三个发展阶段:


简述GIS空间数据的特征及其在计算机中表示的基本方法。

A.化脓行关节炎功能恢复的程度,主要取决于( )
B.宫内节育器的副作用不包括
C.当系统扰动量产生的偏差可以预先进行补偿或影响不大时,采用开环控制是有利的。
D.QIWI Wallet是俄罗斯本地的一种支付方式


纸色谱用的滤纸在使用前需要阴干。\n\n(

A.为提高萃取收率,预处理后的料液要添加乳化剂。
B.从制动的全过程看,制动时间包括( )
C.关于视锥细胞的描述,下列哪项是错误的
D.以下关于面向对象方法与传统开发方法的叙述中,错误的是 ( )


下列各项中,可以作为我国法律关系主体的有( )。

A.()是全球贸易中附加型关税的主要征收形式。
B.李安曾经到()留学学习电影。
C.土方调配时,从挖方体积重心到填方体积重心的距离称为( )。
D.下列哪些是造成比利时马斯河谷烟雾事件的污染物质()


the board was thinking at an

A.以下属于企业内部客户的是()。
B.数字交换机可从256线平滑扩容到多少线
C.什么情况下,人们更少按自己的个性行事
D.在工程设计中,混凝土的干缩率反映了混凝土的相对干缩性,即( )。


以下表示猜谜动作的词有:( )

A.80年代,关于二人台艺术改革掀起了一次热烈的讨论。
B.“有所不为而后可以有为”可以怎么理解
C.可以设定行政许可的事项包括
D.下列对百合生态习性说法错误的是


下列说法中,正确的是( )。

A.工作中作为领导应该怎么样倾听下属诉求
B.根据倒U形假说的观点,拳击运动员在高唤醒条件下更容易取得好成绩。
C.商业模式画布的九大模块是客户细分渠道通路客户关系核心资源
D.不属于巴西主要农作物的是( )。