尔雅C语言程序设计_4期末答案(学习通2023完整答案)

U校园习题2024-05-19 06:31:2975097抢沙发
尔雅C语言程序设计_4期末答案(学习通2023完整答案)摘要: 第一部分 编程准备变量和常量随堂测验1、下列选项中不正确的常数的选项是 )A、0x12FB、-1.23E-2C、12.0D、03882、下面正确的字符常量是 )A、"a"B、'\\'C、"\n"D、" ...

尔雅C语言程序设计_4期末答案(学习通2023完整答案)

第一部分 编程准备

变量和常量随堂测验

1、尔雅下列选项中不正确的语言程常数的选项是( )
A、0x12F
B、序设习通-1.23E-2
C、计期12.0
D、末答0388

2、案学下面正确的完整字符常量是( )
A、"a"
B、答案'\\'
C、尔雅"\n"
D、语言程"\376"

3、序设习通C语言中,计期int型数据在内存中的末答存储形式是( )
A、ASCII码
B、案学原码
C、完整反码
D、补码

4、有以下程序   void main()   { int x=011;    printf("%d\n",++x);   }   程序运行后的输出结果是( )
A、12
B、11
C、10
D、9

5、请选出可用作C语言用户标识符的是( )
A、void,define,WORD
B、a3_b3,_123,IF
C、FOR,--abc,Case
D、2a,Do,Sizeof

赋值语句与运算符随堂测验

1、若有定义语句: int x=12, y=8, z; ,在其后执行语句z=0.9+x/y;,则z的值为( )
A、1.9
B、1
C、2
D、2.4

2、若有定义语句: int k1=10, k2=20;,执行表达式(k1=k1>k2) && (k2=k2>k1)后,k1和k2的值分别为( )
A、0和1
B、0和20
C、10和1
D、10和20

3、有如下类型说明: float n; int m; 则以下能实现将n中的数值保留小数点后两位,第三位四舍五入的表达式是( )
A、n=(n*100+0.5)/100.0
B、m=n*100+0.5,n=m/100.0
C、n=n*100+0.5/100.0
D、n=(n/100+0.5)*100.0

4、设k=7,x=12;则下列表达式值为3的是( )
A、x%=(k%=5)
B、x%=(k-k%5)
C、x%=k-k%5
D、(x%=k)-(k%=5)

5、设变量已正确定义并赋值,以下正确的表达式是( )
A、x=y*5=x+z
B、int(15.8%5)
C、x=y+z+5,++y
D、x=25%5.0

数据输入输出随堂测验

1、若有定义: int a,b;,通过语scanf("%d;%d",&a,&b);,能把整数3赋给变量a, 5赋给变量b的输入数据是( )
A、3 5
B、3,5
C、3;5
D、35

2、设有以下语句 char ch1,ch2;scanf("%c%c",&ch1,&ch2); 若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是( )
A、A和B之间用逗号间隔
B、A和B之间不能有任何间隔符
C、A和B之间可以用回车间隔
D、A和B之间用空格间隔

3、以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)( )
A、printf("%c\n",'a'-32);
B、printf("%d\n",'A')
C、printf("%c\n",65);
D、printf("%c\n",'B'-1);

4、有以下程序段 char ch; int k; ch=’a’; k=12; printf("%c,%d,",ch,ch,k); printf("k=%d \n",k); 已知字符a的ASCII码值为97,则执行上述程序段后输出结果是( )
A、因变量类型与格式描述符的类型不匹配输出无定值
B、输出项与格式描述符个数不符,输出为零值或不定值
C、a,97,12k=12
D、a,97,k=12

5、若要求从键盘读入含有空格字符的字符串,应使用函数( )
A、getc()
B、gets()
C、getchar()
D、scanf()

编程准备单元测验

1、以下选项中不合法的标识符是(  )
A、&a
B、FOR
C、print
D、_00

2、关于C语言的变量名,以下叙述正确的是( )
A、变量名不可以与关键字同名
B、变量名不可以与预定义标识符同名
C、变量名必须以字母开头
D、变量名是没有长度限制的

3、以下选项中不能作为C语言合法常量的是( )
A、0.1e+6
B、'cd'
C、"\a"
D、'\011'

4、C源程序中不能表示的数制是(  )
A、十六进制
B、八进制
C、十进制
D、二进制

5、下面选项中合法的字符常量是( )
A、"X"
B、'X'
C、'abc'
D、'\'

6、以下选项中合法的C语言赋值语句是( )
A、++i;
B、a=3,b=9
C、k=int( a+b );
D、a=b=34

7、以下程序段中的变量已定义为int类型 sum = pad = 5; pad = sum++, pad++, ++pad; printf( "%d\n", pad ); 程序段的输出结果是( )
A、6
B、4
C、5
D、7

8、若有定义语句:int a=12;,则执行语句:a+= a-= a*a;后,a的值是( )
A、-264
B、552
C、144
D、264

9、设有定义: double x=5.16894;,则语句 printf("%lf\n ",(int)(x*1000+0.5)/1000);的输出结果是( )
A、5.16900 
B、5.16800
C、0.00000
D、输出格式说明符与输出项不匹配,产生错误信息

10、以下与数学表达式 "0<x<5且x≠2" 不等价的C语言逻辑表达式是( )
A、(0<x<5) && (x!=2)
B、0<x && x<5 && x!=2
C、x>0 && x<5 && x!=2
D、(x>0 && x<2) || (x>2 && x<5)

编程准备单元作业

1、图形输出:编写程序,实现一个多行图形的输出。 输出样例: * *** ***** 慕课答案大全

*

2、两个数的交换:编写一个程序,从键盘输入任意两个整数,交换两个数后并输出。 输入样例:3,5 输出样例:5,3

3、圆周长面积:编写一个程序,从键盘输入圆的半径,求得圆的周长和面积。 输入样例:3 输出样例:圆的周长:18.84 圆的面积:28.26

4、圆柱体积: 编写一个程序,从键盘任意输入圆柱底面半径r和圆柱高 h,输出圆柱的体积。(圆柱体积公式) 输入样例:请输入圆柱底面半径:3 请输入圆柱高:4 输出样例:圆柱体积为:113.04

第二部分 编程基础

顺序结构和分支结构随堂测验

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

2、2、有以下程序 #include <stdio.h> void main( ) { int a=1, b=0; if (--a) b++; else if(a==0) b+=2; else b+=3; printf("%d\n",b); } 程序运行后的输出结果是( )
A、0
B、1
C、2
D、3

3、3、下列条件语句中,输出结果与其他语句不同的是( )
A、if(a) printf("%d\n", x); else printf("%d\n",y);
B、if(a==0) printf("%d\n", y); else printf("%d\n",x);
C、if(a!=0) printf("%d\n", x); else printf("%d\n",y);
D、if(a==0) printf("%d\n", x); else printf("%d\n",y);

4、4、有以下程序 void main() { int s; scanf("%d",&s); while(s>0) { switch(s) { case 1:printf("%d",s+5); case 2:printf("%d",s+4); break; case 3:printf("%d",s+3); default:printf("%d",s+1);break; } scanf("%d",&s); } } 运行时,若输入1 2 3 4 5 0<回车>,则输出结果是( )
A、6566456
B、66656
C、66666
D、6666656

5、5、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是( )
A、必须是逻辑值
B、必须是整数值
C、必须是正数
D、可以是任意合法的数值

单循环结构随堂测验

1、1、有以下程序 #include <stdio.h> void main( ) { int a=7; while (a--); printf("%d\n",a); } 程序运行后的输出结果是( )
A、-1
B、0
C、1
D、7

2、2、有以下程序段   int i,n;   for(i=0;i<8;i++)   { n=rand()%5;    switch (n)    { case 1:    case 3:printf("%d\n",n); break;    case 2:    case 4:printf("%d\n",n); continue;    case 0:exit(0);    }    printf("%d\n",n);   }   以下关于程序段执行情况的叙述,正确的是( )
A、for循环语句固定执行8次
B、当产生的随机数n为4时结束循环操作
C、当产生的随机数n为1和2时不做任何操作
D、当产生的随机数n为0时结束程序运行

3、3、若i和k都是int类型变量,有以下for语句   for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是( )
A、循环体执行两次
B、循环体执行两次
C、循环体一次也不执行
D、构成无限循环

4、4、有以下程序段  #include<stdio.h>  void main()  { char b,c; int i;   b='a'; c='A';   for(i=0;i<6;i++)   { if(i%2) putchar(i+b);   else putchar(i+c);   } printf("\n");  }   程序运行后的输出结果是( )
A、ABCDEF
B、AbCdEf
C、aBcDeF
D、abcdef

5、5、已知 int t=0; while (t=1) { ...} 则以下叙述正确的是( )
A、循环控制表达式的值为0
B、循环控制表达式的值为1
C、循环控制表达式不合法
D、循环控制表达式不合法

循环嵌套随堂测验

1、1、有以下程序 #include <stdio.h> void main() { int i,j,m=55; for(i=1;i<=3;i++) for(j=3;j<=i;j++)m=m%j; printf("%d\n",m); } 程序的运行结果是( )
A、0
B、1
C、2
D、3

2、2、有以下程序 main() { int i,n=0; for( i=2;i<5;i++) { do { if(i%3) continue; n++; }while(!i); n++; } printf("n=%d\n",n); } 程序执行后输出结果是( )
A、n=5
B、n=2
C、n=3
D、n=4

3、3、下面程序的功能是输出以下形式的金字塔图案: * ***     ***** 慕课答案大全

* void main() { int i,j; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++)printf(" "); for(j=1;j<=______;j++)printf("*"); printf("\n"); } } 在下划线处应填入的是( )
A、i
B、2*i-1
C、2*i+1
D、i+2

4、4、以下程序的输出结果是 void main() { int i,j,x=0; for (i=0;i<2;i++) { x++; for(j=0;j<3;j++) { if (j%2) continue; x++; } x++; } printf("x=%d\n",x); }
A、x=4
B、x=6
C、x=8
D、x=12

5、5、以下程序段的输出是( ) int i,j,m=0; for (i=1;i<=15;i+=4) for (j=3;j<=19;j+=4) m++; printf("%d\n",m);
A、12
B、15
C、20
D、25

编程基础单元测试

1、分析以下程序, 下列说法正确的是( )。 int main() { int x=5,a=0,b=3; if(x=a+b) printf("* * * *\n"); else printf("# # # #\n"); return 0; }
A、输出* * * *
B、有语法错,不能通过编译
C、通过编译,但不能连接
D、输出# # # #

2、有如下程序: int main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d\n",a,b); return 0; } 该程序的输出结果是( )
A、a=1,b=1
B、a=2,b=1
C、a=1,b=0
D、a=2,b=2

3、程序段如下:则以下说法中正确的是( )。 int k=5; do{ k--; }while(k<=0);
A、循环执行5次
B、循环是无限循环
C、循环体语句执行一次
D、循环体语句一次也不执行

4、下述for循环语句( )。 int i,k; for(i=0,k=-1;k=1;i++,k++) printf("* * * *");
A、判断循环结束的条件非法
B、只循环一次
C、一次也不循环
D、是无限循环

5、下列程序段执行后k值为( )。 int k=0,i,j; for(i=0;i<5;i++) for(j=0;j<3;j++) k=k+1 ;
A、15
B、3
C、5
D、8

6、以下程序的输出结果是 int main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<3;j++) { if(j%2)continue; x++; } x++; } printf("x=%d\n",x); return 0; }
A、x=4
B、x=8
C、x=6
D、x=12

7、阅读下列程序,程序的输出结果是 #include "stdio.h" int main() { int m,n; float k; for(m=6;m>2;m--) { k=0; for(n=m;n>1;n--) k=k+m*n; } printf("%f\n",k); return 0; }
A、5.000000
B、25.000000
C、15.000000
D、35.000000

8、在下述程序中,判断i>j共执行的次数是 int main() { int i=0, j=10, k=2, s=0; for (;;) { i+=k; if(i>j) { printf("%d",s); break; } s+=i; } return 0; }
A、4
B、5
C、6
D、7

9、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。 #include <stdio.h> int main() { int i=0,j,k; do{ i++;k=316-13*i;}while(______); j=k/11; printf("316=13*%d+11*%d",i,j); return 0; }
A、k%11==0
B、k/11
C、k%11
D、k/11==0

10、下面程序的运行结果是 #include <stdio.h> int main() { int y=10; do{ y--;}while(--y); printf("%d\n",y--); return 0; }
A、-1
B、1
C、8
D、0

编程基础作业

1、计算1+3+5+…+101之和

2、分段函数 e-x x>0 (e的-x次方) y= 1 x=0 ex x<0(e的x次方)

3、编制程序,输出1000之内的所有完数。“完数”是指一个数恰好等于它的因子之和,如6的因子为1、2、3,而6=1+2+3,因而6是完数。

4、求1~100以内所有的素数

第三部分 编程提高

函数定义和调用随堂测验

1、1、有以下程序 #include<stdio.h> int f(int x); main() { int a,b=0; for(a=0;a<3;a++) { b=b+f(a); putchar('A'+b); } } int f(int x) { return x*x+1;} 程序运行后的输出结果是( )
A、ABE
B、BDI
C、BCF
D、BCD

2、2、有以下程序 #include <stdio.h> int f(int x,int y) { return ((y-x)*x);} void main() { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%d\n",d); } 程序运行后的输出结果是( )
A、10
B、9
C、8
D、7

3、3、有以下程序 #include <stdio.h> int f(int m) { static int n=0; n+=m; return n; } void main( ) { int n=0; printf("%d,", f(++n)); printf("%d\n", f(n++)); } 程序运行后的输出结果是( )
A、1,2
B、1,1
C、2,3
D、3,3

4、4、有以下程序 #include<stdio.h> int a=1,b=2; void fun1(int a,int b) { printf("%d%d",a,b); } void fun2() { a=3;b=4; } void main() { fun1(5,6);fun2(); printf("%d%d\n",a,b); } 程序运行后的输出结果是( )
A、1256
B、5634
C、5612
D、3456

5、有以下程序 #include <stdio.h> main() { int findmax(int,int,int),m; ┋ m=findmax(a,b,c); ┋ } int findmax(int x,int y,int z) { … } 则以下叙述正确的是
A、在main函数中声明了findmax函数
B、在main函数中定义了findmax函数
C、在main函数中两次调用了findmax函数
D、在main函数内、外重复定义了findmax函数

递归函数随堂测验

1、1、有以下程序 #include<stdio.h> void fun(char c) { if(c>'x') fun(c-1); printf("%c%",c); } void main() { fun('z'); } 程序运行后的输出结果是
A、xyz
B、wxyz
C、zyxw
D、zyx

2、2、设有如下函数定义 int fun(int k) { if (k<1) return 0; else if(k==1) return 1; else return fun(k-1)+1; } 若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( )
A、2
B、3
C、4
D、5

3、3、有以下程序 #include <stdio.h> int f(int x) { int y; if(x==0||x==1) return(3); y=x*x-f(x-2); return y; } void main() { int z; z=f(3); printf("%d\n",z); } 程序的运行结果是( )
A、0
B、9
C、6
D、8

4、4、有以下程序 int fun(int n) { if(n==1)return 1; else return(n+fun(n-1)); } void main() { int x; scanf("%d",&x); x=fun(x); printf("%d\n",x); } 执行程序时,给变量x输入10,程序的输出结果是( )
A、55
B、54
C、65
D、45

5、5、有以下程序 int f(int n) { if(n==1)return 1; else return f(n-1)+1; } void main() { int i,j=0; for(i=1;i<3;i++) j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是( )
A、1
B、2
C、3
D、4

一维数组随堂测验

1、1、以下不正确的定义语句是( )
A、double x[5]={ 2.0,4.0,6.0,8.0,10.0};
B、int y[5]={ 0,1,3,5,7,9};
C、char c1[]={ ‘1’,’2’,’3’,’4’,’5’};
D、char c2[]={ ‘x10’, ‘xa’, ‘x8’};

2、2、有以下程序   #include<stdio.h>   void main()   { char s[]="012xy\08s34f4w2";    int i,n=0;    for(i=0;s[i]!=0;i++)    if(s[i]>='0'&&s[i]<='9') n++;    printf("%d\n",n);   }   程序运行后的输出结果是( )
A、0
B、3
C、7
D、8

3、3、 以下程序运行后的输出结果是( ) void main() { int i,n[5]=; for(i=1;i<=4;i++) { n[i]==n[i-1]*2+1; printf("%d",n[i]); } printf("\n"); }
A、1357
B、01357
C、1257
D、01257

4、4、现有如下程序段 #include <stdio.h> void main() { int k[30]={ 12,324,45,6,768,98,21,34,453,456}; 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); } 则程序段的输出结果为( )
A、7,8
B、8,8
C、7,10
D、8,10

5、5、下面的程序中( )错误(每行程序前面的数字是行号)。 1 #include<stdio.h> 2 main() 3 { 4 float a[3]={ 0.0}; 5 int i; 6 for(i=0;i<3;i++) scanf("%d",a[i]); 7 for(i=1;i<3;i++)a[0]=a[0]+a[i]; 8 printf("%f\n",a[0]); 9 }
A、没
B、第4行
C、第6行
D、第8行

二维数组随堂测验

1、1、以下定义数组的语句中错误的是( )
A、int num[]={ 1,2,3,4,5,6};
B、int num[][3]={ { 1,2},3,4,5,6};
C、int num[2][4]={ { 1,2},{ 3,4},{ 5,6}};
D、int num[][4]={ 1,2,3,4,5,6};

2、2、设有定义:intx[2][3];,则以下关于二维数组x的叙述错误的是 ( )
A、x[0]可看作是由3个整型元素组成的一维数组
B、x[0]和x[1]是数组名,分别代表不同的地址常量
C、数组x包含6个元素
D、可以用语句x[0]=0;为数组所有元素赋初值

3、3、下面的程序段运行后,输出结果是( ) int i,j,x=0; static int a[8][8]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=2*i+j; for(i=0;i<8;i++) x+=a[i][j]; printf("%d",x);
A、9
B、不确定
C、0
D、18

4、4、下面程序输出的结果是 void main() { int i; int a[3][3]={ 1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d ",a[2-i][i]); }
A、1 5 9
B、7 5 3
C、3 5 7
D、5 9 1

5、5、有如下程序 void main() { int a[3][3] = { { 1,2},{ 3,4},{ 5,6}}, i,j,s = 0; for(i = 1; i < 3; i++) for(j = 0; j <= i; j++) s += a[i][j]]; printf("%d\n",s); } 该程序的输出结果是( )
A、18
B、19
C、20
D、21

查找和排序算法随堂测验

1、若有以下程序 #include <stdio.h> void fun(int a[ ], int n) { int t,i,j; for (i=1; i<n; i+=2) for (j=i+2; j<n; j+=2) if (a[i] > a[j]) { t=a[i]; a[i]=a[j];a[j]=t;} } int main() { int c[10]={ 10,9,8,7,6,5,4,3,2,1},i; fun(c, 10); for (i=0;i<10; i++) printf("%d,", c[i]); printf("\n"); }
A、1,10,3,8,5,6,7,4,9,2,
B、10,9,8,7,6,5,4,3,2,1,
C、2,9,4,7,6,5,8,3,10,1,
D、10,1,8,3,6,5,4,7,2,9,

2、有以下程序 #include <stdio.h> void fun( int a[ ], int n, int flag ) { int i=0,j, t; for ( i=0; i<n-1; i++ ) for ( j=i+1; j<n; j++ ) if ( flag ) { if ( a[i] < a[j] ) { t = a[i]; a[i] = a[j]; a[j] = t; } } else { if ( a[i] > a[j] ) { t = a[i]; a[i] = a[j]; a[j] = t; } } } int main( ) { int c[10]={ 7,9,10,8,3,5,1,6,2,4 },i; fun( c, 4, 1 ); fun( c+4, 6, 0 ); for ( i=0;i<10; i++ ) printf( "%d,", c[i] ); printf("\n"); } 程序运行后的输出结果是()
A、7,8,9,10,6,5,4,3,2,1
B、10,9,8,7,6,5,4,3,2,1
C、10,9,8,7,1,2,3,4,5,6,
D、1,2,3,4,5,6,7,8,9,10,

3、有以下程序 #include <stdio.h> void fun(int *a, int n) /* fun函数的功能是将a所指数组元素从大到小排序 */ { int t, i, j; for (i=0; i<n-1;i++) for (j=i+1; j<n; j++) if (a[i]<a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } int main() { int c[10]={ 1,2,3,4,5,6,7,8,9,0},i; fun(c+4, 6); for (i=0;i<10; i++) printf("%d,", c[i]); printf("\n"); } 程序的运行结果是
A、1,2,3,4,9,8,7,6,5,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,5,6,7,8,9,0,

4、以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。 void sort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;} } int main() { int aa[10]={ 1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5); for(i=0;i<10;i++) printf("%d,",aa[i]); printf("\n"); } 程序运行后的输出结果是______。
A、1,2,3,4,5,6,7,8,9,10,
B、1,2,3,8,7,6,5,4,9,10,
C、10,9,8,7,6,5,4,3,2,1,
D、1,2,10,9,8,7,6,5,4,3,

5、以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。 void reverse(int a[],int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } int main() { int b[10]={ 1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8); for(i=6;i<10;i++) s+=b[i]; printf("%d\n",s); } 程序运行后的输出结果是______。
A、22
B、10
C、34
D、30

单元测验

1、函数调用语句:fun( ( exp1, exp2 ), ( exp1, exp2, exp3) ); 含有的实参个数是( )。
A、1
B、4
C、5
D、2

2、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。
A、函数的形参和实参分别占用不同的存储单元
B、形参只是形式上的存在,不占用具体存储单元
C、同名的实参和形参占同一存储单元
D、函数的实参和其对应的形参共占同一存储单元

3、有以下程序 #include <stdio.h> int fun(int n) { if(n==1) return 1; else return(n+fun(n-1)); } int main() { int x; scanf("%d",&x); x=fun(x); printf("%d\n",x); } 执行程序时,给变量x输入10,程序的输出结果是( )。
A、55
B、54
C、65
D、45

4、若有以下程序 #include <stdio.h> void f(int x) { if (x >= 10) { printf("%d-", x%10); f(x/10); } else printf("%d", x); } main() { int z = 123456; f(z); } 则程序的输出结果是( )。
A、6-5-4-3-2-1-
B、6-5-4-3-2-1
C、1-2-3-4-5-6
D、1-2-3-4-5-6-

5、有以下程序 #include <stdio.h> int main() { int s[12]={ 1,2,3,4,4,3,2,1,1,1,2,3},c[5]=,i; for(i=0; i<12; i++) c[s[i]]++; for(i=1; i<5; i++) printf("%d ",c[i]); printf("\n"); } 程序的运行结果是( )
A、2 3 4 4
B、4 3 3 2
C、1 2 3 4
D、1 1 2 3

6、#include <stdio.h> void fun(int a[ ], int n) { int i=0; for (i=0; i<n; i++) { if (i % 2 == 0) a[i] += n; else a[i] -= n; } } int main( ) { int c[5] = { 5,4,3,2,1}, i; fun(c, 5); for (i=0;i<5; i++) printf("%d,", c[i]); printf("\n"); } 程序运行后的输出结果是( ) 。
A、10,-1,8,-3,6,
B、5,4,3,2,1,
C、10,2,8,4,6,
D、5,-1,3,-3,1,

7、有以下程序 #include <stdio.h> #define N 3 void fun( int a[][N], int b[] ) { int i, j; for( i=0; i<N; i++ ) { b[i] = a[i][0]; for( j=1; j<N; j++ ) if ( b[i] < a[i][j] ) b[i] = a[i][j]; } } int main() { int x[N][N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9}, y[N] ,i; fun( x, y ); for ( i=0; i<N; i++ ) printf( "%d,", y[i] ); printf( "\n" ); } 程序运行后的输出结果是( )。
A、3,5,7,
B、1,3,5,
C、2,4,8,
D、3,6,9,

8、若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是( )。
A、a[2][!1]
B、a[2][3]
C、a[0][3]
D、a[1>2][!1]

9、有以下程序 #include<stdio.h> int main() { int a[4][4]={ { 1,4,3,2},{ 8,6,5,7},{ 3,7,2,5},{ 4,8,6,1}},i,j,k,t; for(i=0;i<4;i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]) { t=a[j][i]; a[j][i]=a[k][i]; a[k][i]=t;}/*按列排序*/ for(i=0;i<4;i++) printf("%d,",a[i][i]); } 程序运行后的输出结果是( )。
A、1,6,5,7,
B、8,7,3,1,
C、4,7,5,2,
D、1,6,2,1,

10、有以下程序 void f(int a[],int i,int j) { int t; if(i<j) { t=a[i]; a[i]=a[j];a[j]=t; f(a,i+1,j-1); } } int main( ) { int i,aa[5]={ 1,2,3,4,5}; f(aa,0,4); for(i=0;i<5;i++) printf("%d,",aa[i]); printf("\n"); } 执行后输出结果是( )。
A、5,2,3,4,1,
B、1,2,3,4,5,
C、5,4,3,2,1,
D、1,2,3,4,5,

编程作业

1、用函数实现求100到999之间的所有的水仙花数。“水仙花数”指该数等于其每一位数字的立方和。如:153=13+53+33

2、编写求两个正整数的最大公约数的函数和求两数最小公倍数的函数。

3、编写函数,计算一个4行4列的矩阵对角线元素的和和周边元素之和。

4、用冒泡法实现一维数组的排序

第四部分 编程进阶

指针随堂测验

1、1、设有定义:int x=0,*p;,立刻执行以下语句,正确的语句是( )
A、p=x;
B、*p=x;
C、p=NULL;
D、p=NULL;

2、2、设变量p是指针变量,语句p=NULL;是给指针变量赋NULL值,它等价于( )
A、p="";
B、p='0';
C、p=0;
D、p='';

3、3、若有定义语句: double a,*p=&a; 以下叙述中错误的是( )
A、定义语句中的 * 号是一个间址运算符
B、定义语句中的 * 号只是一个说明符
C、定义语句中的p只能存放double类型变量的地址
D、定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p

4、4、若有定义语句: int year=2009, *p=&year;,以下不能使变量year中的值增至2010的语句是( )
A、*p+=1;
B、(*p)++;
C、++(*p);
D、*p++;

5、5、请选出正确的程序段( )
A、int *p; scanf("%d",p); …
B、int *s, k; *s=100; …
C、int *s, k; char *p, c; s=&k; p=&c; *p=‘a’; …
D、int *s, k; char *p, e; s=&k; p=&e; s=p; *s=1; …

字符串随堂测验

1、1、以下选项中,合法的是( )
A、char str3[]={ 'd','e','b','u','g',''};
B、char str4;str4="helloworld";
C、char name[10];name="china";
D、char str1[5]="pass",str2[6];str2=str1;

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

3、3、下面程序段中,输出*的个数是( ) char *s="\ta\018bc"; for(;*s!='\0';s++)printf("*");
A、9
B、9
C、6
D、7

4、4、下面程序的输出结果是( ) #include<stdio.h> #include<string.h> void main() { char *p1="abc",str[50]= "xyz"; strcpy(str+2,p1); printf("%s\n",str); }
A、xyzabc
B、zabc
C、xyabc
D、yzabc

5、5、有下面程序段 #include <stdio.h> #include <string.h> main() { char a[3][20]={ { "china"},{ "isa"},{ "bigcountry!"}}; char k[100]=,*p=k; int i; for(i=0;i<3;i++) p=strcat(p,a[i]); i=strlen(p); printf("%d\n",i); } 则程序段的输出结果是( )
A、18
B、19
C、20
D、21

指针和数组关系(难点)随堂测验

1、1、若有以下说明和语句,请选出哪个是对c数组元素的正确引用( ) int c[4][5],(*cp)[5]; cp=c;
A、cp+1
B、*(cp+3)
C、*(cp+1)+3
D、*(*cp+2)

2、2、有以下语句,则对a数组元素的引用不正确的是( ) int a[10]={ 0,1,2,3,4,5,6,7,8,9},*p=a;
A、a[p-a]
B、*(&a[i])
C、p[i]
D、*(*(a+i))

3、3、现有如下程序段 #include<stdio.h> void main() { int a[5][6]={ 23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1}; int i=0,j=5; printf("%d\n",*(&a[0][0]+2*i+j-2)); } 则程序的输出结果为 ( )
A、21
B、78
C、23
D、28

4、4、有以下程序 #include <stdio.h> #include <stdlib.h> void fun(int **s, int x[2][3]) { **s=*(x[1]+1); } void main() { int a[2][3] = { 1,2,3,4,5,6}, *p; p = (int*)malloc(sizeof(int)); fun(&p,a); printf("%d\n",*p); } 程序的运行结果是( )
A、6
B、2
C、5
D、3

5、5、以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址 #include <stdio.h> #include <string.h> char *scmp(char *s1, char *s2) { if(strcmp(s1,s2)<0) return(s1); else return(s2); } void main() { int i; char string[20], str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为( )
A、abcd
B、abba
C、abc
D、abca

结构体定义和引用随堂测验

1、1、设有以下说明语句 struct ex { int x; float y;char z; } example; 则下面的叙述中不正确的是( )。
A、struct是结构体类型的关键字
B、example是结构体类型名
C、x,y,z都是结构体成员名
D、struct ex是结构体类型

2、2、设有如下说明 typedef struct { int n; char c; double x;}STD; 则以下选项中 ,能正确定义结构体数组并赋初值的语句是( )。
A、STD tt[2]={ { 1,'A',62},{ 2,'B',75}};
B、STD tt[2]={ 1,"A",62,2,"",75};
C、struct tt[2]={ { 1,'A'},{ 2,'B'}};
D、struct tt[2]={ { 1,"A",62.5},{ 2,"B",75.0}};

3、3、有以下说明和定义语句 struct student { int age; char num[8];}; struct student stu[3]={ { 20,"200401"},{ 21,"200402"},{ 109,"200403"}}; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是( )
A、(p++)->num
B、p->num
C、(*p).num
D、stu[3].age

4、4、有以下程序 struct ord { int x,y;}dt[2]={ 1,2,3,4}; void main() { struct ord *p=dt; printf("%d,",++(p->x)); printf("%d\n",++(p->y)); } 程序运行后的输出结果是( )
A、1,2
B、4,1
C、3,4
D、2,3

5、5、有以下程序 #include <stdio.h> #include <string.h> typedef struct{ char name[9]; char sex; float score[2]; }STU; void f(STU a) { STU b={ "Zhao",'m',85.0,90.0}; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; } void main() { STU c={ "Qian",'f',95.0,92.0}; f(c); printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]); } 程序的运行结果是( )
A、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,f,95,92
D、Zhao,m,85,90

单向链表随堂测验

1、1、有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中的三个连续结点。 struct node { int data; struct node *next; }*p,*q,*r; data next data next data next ┌─┬─┐ ┌─┬─┐ ┌─┬─┐ ─→│ │ ┼→│ │ ┼→│ │ ┼→ └─┴─┘ └─┴─┘ └─┴─┘ ↑p ↑q ↑r 现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是( )。
A、q->next=r->next;p->next=r;r->next=q;
B、p->next=r;q->next=r->next;r->next=p;
C、r->next=q;q->next=r->next;p->next=r;
D、q->next=r->next;r->next=q;p->next=r;

2、2、假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是( )
A、free(q); p->next=q->next;
B、(*p).next=(*q).next; free(q);
C、q=(*q).next; (*p).next=q; free(q);
D、q=q->next; p->next=q; p=p->next;free(p);

文件操作随堂测验

1、1、在文件使用方式中,字符串″rb″表示( )
A、打开一个已存在的二进制文件,只能读取数据
B、打开一个文本文件,只能写入数据
C、打开一个文本文件,只能写入数据
D、打开一个二进制文件,只能写入数据

2、2、设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是( )
A、写操作结束后可以从头开始读
B、只能写不能读
C、可以在原有内容后追加写
D、可以随意读和写

3、3、已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是( )
A、一个整型变量,代表要读入的数据项总数
B、一个文件指针,指向要读的文件
C、一个指针,指向要读入数据的存放地址
D、一个存储区,存放要读的数据项

4、4、有以下程序 #include <stdio.h> void main( ) { FILE *fp; int k,n,i,a[6]={ 1,2,3,4,5,6}; fp = fopen("d2.dat","w"); for (i=0; i<6; i++) fprintf(fp, "%d\n",a[i]); fclose(fp); fp = fopen("d2.dat","r"); for (i=0; i<3; i++) fscanf(fp, "%d%d", &k, &n); fclose(fp); printf("%d,%d\n", k, n); } 程序运行后的输出结果是( )
A、5,6
B、1,2
C、3,4
D、123,456

5、5、有以下程序 #include<stdio.h> void main() { FILE *fp; int i,a[6]={ 1,2,3,4,5,6}; fp=fopen("d3.dat","w+b"); fwrite(a,sizeof(int),6,fp); fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/ fread(a,sizeof(int),3,fp); fclose(fp); for(i=0;i<6;i++)printf("%d,",a[i]); } 程序运行后的输出结果是( )
A、1,2,3,4,5,6,
B、4,5,6,4,5,6,
C、4,5,6,1,2,3,
D、6,5,4,3,2,1,

学习通C语言程序设计_4

学习通C语言程序设计_4是一门关于C语言的进阶课程,主要探讨C语言中的指针、结构体、文件操作等高级知识点。学习本课程需要具备一定的C语言基础知识,如果您还没有基础,建议先学习C语言程序设计_1至C语言程序设计_3。

指针

指针是C语言中一个非常重要的概念,它是一种特殊的变量类型,存储的是内存地址。在C语言中,我们通过指针来访问和操作内存中的数据。

定义一个指针变量时需要使用星号(*)符号,如:

int *p;    

以上代码定义了一个名为p的指针变量,它的类型是int型。我们可以通过&符号来获取一个变量在内存中的地址,并将该地址赋值给指针变量:

int a = 10;int *p;p = &a;    

通过以上代码,我们将变量a的地址赋值给了指针变量p,现在p指向了变量a所在的内存地址。

我们可以通过指针来访问变量所在的内存地址中的数据,如:

int a = 10;int *p;p = &a;*p = 20;printf(\d\ a); //输出20    

以上代码将变量a的值由10修改为20,并输出20。

除了基本类型的指针外,我们还可以定义结构体指针、数组指针等不同类型的指针。

结构体

结构体是C语言中的一种复合数据类型,它可以同时存储不同类型的数据,如:

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

以上代码定义了一个名为student的结构体类型,它包含了三个成员变量:id、name和age。我们可以通过以下方式定义一个结构体变量:

struct student s;s.id = 1001;strcpy(s.name, \Tom\s.age = 18;    

以上代码定义了一个名为s的结构体变量,并给其成员变量赋值。我们也可以通过指针来访问结构体变量中的成员变量,如:

struct student s;struct student *p;p = &s;p->id = 1001;strcpy(p->name, \Tom\p->age = 18;    

以上代码定义了一个名为s的结构体变量和一个指向该变量的指针p,通过指针p来访问结构体变量中的成员变量,并为其赋值。

文件操作

C语言中提供了一系列的文件操作函数,可以实现文件的读取、写入、删除等操作。在文件操作前,我们需要打开文件,并将文件指针定位到需要操作的位置。

以下是文件读取的示例代码:

FILE *fp;char buff[255];fp = fopen(\file.txt\ \r\fscanf(fp, \s\ buff);printf(\读取内容:%s\\ buff);fclose(fp);    

以上代码打开了名为file.txt的文件,并读取了其中的第一个字符串,并输出到控制台上。

以下是文件写入的示例代码:

FILE *fp;fp = fopen(\file.txt\ \w\fprintf(fp, \Hello, world!\\n\fclose(fp);    

以上代码打开了名为file.txt的文件,并将字符串\Hello, world!\写入文件中,并关闭了文件。

总结

学习通C语言程序设计_4主要探讨了C语言中的指针、结构体、文件操作等高级知识点。掌握这些知识对于C语言的进阶和实际应用非常重要,需要我们在实践中不断提升自己的相关技能。


在搜索结果列表中,含有“广告”或者“推广”字样的结果为付费竞价的结果。

A.群体发展过程中工作重心是
B.旅游团长途旅游时,为了预防交通事故,导游员正确做法( )。
C.( )是系统分析阶段需要完成的任务。
D.音乐教育是通过培养对音响的内在表现力的反应来进行人的感觉教育,请判断。


在本节中以下哪个选项不属于大学生的创业风险

A.磷酸戊糖途径进行部位是胞质( )。
B.维生素E的分子结构中具有烯二醇结构。
C.资本主义生产方式产生需要的前提是( )。
D.关于word文本框,说法不正确的是().


如果一个资产风险高而收益低,一定会有大量的资金涌入,瓜分掉收益。( )

A.人与人的指接触点或距离在0-50cm之间时,是界域礼仪中的哪种距离( )。
B.8287668cd6b8493793a8ace6c5958c70.png
C.下列关于会计凭证保管的说法中,正确的有( )。
D.input标签的required属性规定输入字段的值是必需的


拜访位置寄存器的英文缩写及其功能是

A.a9003db6df0047739269977980a030b8.png
B.仿射对应有可能保持对应点的连线平行
C.腊八节什么时期才固定为农历十二月初八( )。
D.上图雕塑的作者是________,是巴洛克艺术风格的代表。


具体的东西在生活中更容易找到,因为细致有利于清晰地勾勒出该东西。

A.旅游目的地所对应的概念中,不包括( )
B.应用层从早期的以( )为主要特征:文件传输、电子邮件等。
C.金融风险是目前制约我国经济健康持续发展的一个因素。
D.根据普遍化逸度因子图,当Tr>2.4时φ与pr的关系( )。


视距远时,空气感浓,画中的物体不应画得过于清晰,下列哪些作品属于此类

A.生命物质的分子结构中心元素是
B.下列各句句意明确的一项是( )。
C.个人理想与社会理想的关系不是
D.地热资源丰富的地区往往也是


A BC=( )。

A.产生动生电动势的非静电力是洛伦兹力。
B.】认知行为技术是上个世纪80年代()的心理学家提出来并且发展的
C.菜品创新主要指原材料创新。
D.你认为什么样的领导是好领导 这个小组面试题目属于()。


设是来自的样本,则【 】是总体均值的无偏估计(2.0分)

A.怎样正确使用压力气瓶()。
B.下面谜格中,格名借取唐代诗人岑参《白雪歌送武判官归京》诗句的谜格是:( )
C.属于内在稳定器的项目是( )
D.is not the necessary travel document


下列关于《王风· 黍离》的说法,正确的有()

A.a3bc0072ddb545da922ccf8d2b7947e7.png
B.长期过量摄入可导致中毒的维生素是
C.低碳钢零件为了增加表面的硬度及耐磨性,常采用的化学热处理工艺是( )。
D.个人价值目标的确定要(),基于自身的实际条件而定,切记好高骛远。


组织工程的三要素主要有()

A.下列表达式中,能够保留变量x整数部分并进行四舍五入的是______。
B.直线供给边缘附近一口生产井(点汇)可由镜像反映转化为等产量一源一汇来求解()。
C.使用压渗壶制作咖啡时,对粉的研磨程度要求是细粉。
D.在Photoshop里,显示、隐藏标尺的快捷键是(  )。


灾害预检分诊时对于轻度损伤的贴黄色标识。

A.下列关于C++函数的叙述中,正确的是
B.当考虑横向水平地震作用时,横向水平剪力主要由( )墙承担。
C.数控机床如果不能正常动作,原因是( )。
D.下面关于压力描述不正确的是:


commons-upload组件只能实现上传不能实现下载。( )

A.跨中受集中荷载P作用的圆截面简支梁, 它的θA=
B.2. 在无意识状态下,个体已有的经验对当前任务能自动产生影响作用的记忆称为
C.*Make your every hello a real good-buy.
D.电感被直接接到电池两端,会发生什么现象


不可逆过程一定是自发过程。

A.关于生死观理解对的是( )
B.a=(b=4)+(c=6) 是一个合法的赋值表达式.
C.自主学习是一种自觉自愿的学习。
D.请选择下图无人机型号名称。


没有特殊人物在场时,碰杯应按()。

A.人员推销的基本策略主要有________。
B.雨果用()手法设置了一个个离奇的故事情节。
C.参与淋巴细胞再循环的细胞主要是:
D.外文检索时,截词符运用的目的是什么

文章版权及转载声明

本文地址:http://www.zzxhsh.org/61f799823.html发布于 2024-05-19 06:31:29
文章转载或复制请以超链接形式并注明出处五煦查题

评论列表 (暂无评论,44人围观)参与讨论