0.1048

五煦查题

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

中国大学c程序设计基础_2章节答案(慕课2023课后作业答案)

63 min read

中国大学c程序设计基础_2章节答案(慕课2023课后作业答案)

第一周 C语言简介

选择题

1、中国下面的大学叙述正确的是()。
A、程础章一个C的序设源程序必须包含1个以上的main函数
B、在C的计基节答源程序中,main函数不是案慕案必须的
C、一个C的课课源程序可以由一个或多个函数组成
D、printf函数是后作程序执行的起始位置

2、C程序是业答从()开始执行的。
A、中国return语句
B、大学主函数
C、程础章文件开始的序设注释部分
D、放在最前面的计基节答函数

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

4、以下正确的printf语句是()。
A、?printf ("This is a C program.")
B、?printf ("This is a C program.);
C、?printf ("This is a C program.\n");
D、?printf "This is a C program.";

5、/* 程序功能:打印输出hello world #include <stdio.h> int main() { printf("Hello, world\n"); return 0; } 上面程序的运行结果是( )
A、程序出错,不能运行
B、Hello, world
C、程序功能:打印输出hello world
D、"Hello, world\n"

6、设有程序“1.cpp”,编译后运行该程序,执行的是( )文件。
A、1.cpp
B、1.obj
C、1.exe
D、1.c

7、下面程序的错误是() #include <stdio.h> int mian() { printf("hello world") return 0; }
A、printf("hello world") 后面少分号
B、主函数名写错
C、多了return 0;
D、main()后面少分号

8、输出结果为500+200=700的语句是()。
A、printf("500+200=%d,500+200");
B、printf("500+200=%d",500+200);
C、printf("500+200=700");
D、print 500+200=700;

9、输出结果为25*64=1600的语句是()。
A、printf("25*64=%d",25*64);
B、printf("25*64=1600");
C、printf("25*64=%d, 25*64");
D、print 25*64=1600;

10、下面是关于C程序注释的叙述,其中正确的是( )。
A、/*……*/可以注释多行,也可以注释一行
B、从//开始的程序都是注释内容
C、/* */与//注释的范围没有区别
D、//是行注释,从//开始至行尾为注释内容

第二周 C语言基础语法

语法知识选择题

1、下列浮点数的表示中不正确的是( )。
A、22.3
B、.719e22
C、e23
D、12. e2

2、合法的C语言标识符是( )
A、2a
B、sum
C、int
D、a*b

3、不合法的C语言标识符是 ( )。
A、_8_
B、j2_KEY
C、4d
D、Double

4、下列定义变量的语句中错误的是( )。
A、int x1;
B、float y1;
C、double z1;
D、Double a1;

5、在C语言中,要求运算数必须是整型的运算符是( )。
A、%
B、/
C、+
D、-

6、下面( )语句正确地描述了计算公式
A、y = ax*x*x/x – b;
B、y = ax*x*x/(x – b);
C、y = (a*x*x*x)/(x – b);
D、y = a*x*x*x/x – b;

7、下面( )是合法的赋值语句 .
A、i=1;
B、?i+1=5;
C、5=i;
D、i *3=i+1;

8、下面程序的输出是( ) 。 #include <stdio.h> int main() { int x=10,y=3; printf("%d",y=x/y); return 0; }
A、0
B、1
C、3
D、不确定的值

9、下面程序的输出是( ) 。 #include <stdio.h> int main() { int a= 5; printf("a=%d\n",++a+2); return 0; }
A、a=6
B、8
C、a=5
D、a=8

10、78%10的结果是( )。
A、78
B、8
C、7
D、10

11、下面程序的输出是( ) 。 #include <stdio.h> int main() { int a=8; printf("%d\n",(a++)*2); return 0; }
A、8
B、9
C、16
D、18

12、下面程序的输出是( ) 。 #include <stdio.h> int main() { int a=3; printf("%d\n",(a--)*7); return 0; }
A、21
B、2
C、3
D、14

13、下面程序的输出是( ) 。 #include <stdio.h> int main() { int b=3,a= 3; printf("%d,%d\n",b,a--); return 0; }
A、3,2
B、2,3
C、3
D、3,3

14、i=1; 执行( )语句后,变量i的值不会发生变化。
A、i+5;
B、--i;
C、i=2*i;
D、i=6;

15、int x; scanf("%d",&x); 下面( )可以获得x的个位数。
A、x%10;
B、x/10;
C、x/100-x/10;
D、x-x/10;

16、语句float x=3.0 ,y=4.0;下列表达式中y的值为9.0的是( )。
A、y/=x*27/4
B、y+=x+2.0
C、y-=x+0.8
D、y*=x-3.0

17、有关运算符的正确描述是( )
A、单目运算符优先级高于双目运算符
B、赋值运算符是左结合的
C、所有运算符都是左结合的
D、赋值号的运算优先级是最低的

18、下面( )语句正确地描述了方程
A、?y = a * x * x * x + c;
B、y = a * x * x * (x + c);
C、y = (a * x * x * x) + c;
D、y = (a * x) * x * (x + c);

19、下面( )能完成变量a,b的值的交换。
A、t=a; a=b; b=t;
B、a=b; b=a;
C、a=b;
D、a=a+b; b=a-b; a=a-b;

20、( )可以使整型变量i的值加1 。
A、i++;
B、++i;
C、i=i+1;
D、i+=1;

21、int y,a; scanf("%d",&y); 输入任意整数,下面( )中,a是y的百位数。
A、a=y/100%10;
B、a=y%1000/100;
C、a=y%100;
D、a=y/100;
E、a=y/10000%10;
F、a=y/1000%10;

第七~八周 循环进阶

循环进阶选择、填空题 第八周

1、运行下面的程序,得到的输出是() #include<stdio.h> int main() { int i, j; for(i=1;i<=2;i++) for(j=1;j<=2;j++) printf("i=%d, j=%d\n",i,j); }
A、i=1, j=1 i=1 , j=2 i=2 , j=1 i=2 , j=2
B、i=1, j=1 i=2 , j=1 i=1 , j=2 i=2 , j=2
C、i=1, j=1 i=2 , j=2 i=1 , j=1 i=2 , j=2
D、i=1, j=1 i=1 , j=1 i=2 , j=2 i=2 , j=2

2、? 运行下面的程序,输出的星号个数一共是() #include<stdio.h> int main() { int i,j; for(i=1;i<=4;i++) { for(j=1;j<=i;j++) putchar(' '); putchar('*'); putchar('\n'); } }
A、4
B、10
C、12
D、16

3、运行下面的程序,输出的星号个数一共是() #include<stdio.h> int main() { int i,j; for(i=1;i<=4;i++) for(j=1;j<=i;j++) putchar(' '); putchar('*'); putchar('\n'); }
A、4
B、1
C、10
D、0

4、执行下面的程序片段,k的值是() int k=0,i,j; for(i=0;i<5;i++) for(j=0;j<3;j++) k=k+1 ;
A、3
B、5
C、15
D、8

5、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是
A、for( i=1; i<=5; i++ ) { p=1; p*=i; } ?
B、i=1; p=1; do { p*=i; i++; } while ( i<=5 );
C、i=1; p=1; while ( i<=5 ) { p*=i; i++; }
D、for(i=1,p=1;i<=5;i++) p*=i;?

6、下面程序的功能是输出以下形式的图案,则在下划线处应填入的是 * *** ***** 中国大学mooc网课答案

* #include <stdio.h> int main() { int i, j; for( i=1; i<=4; i++) { for( j =1; j<= ; j++) putchar('*'); putchar('\n'); } return 0; }
A、i?
B、2*i-1?
C、?2*i+1
D、i+2?

7、下面程序的功能是输出以下形式的图案,则在下划线处应填入的是( ) 中国大学mooc网课答案

* ***** *** * #include <stdio.h> int main() { int i, j; for( i=1; i<=4; i++) { for( j =1; j<= ; j++) putchar('*'); putchar('\n'); } return 0; }
A、2*i-1
B、2*i+1
C、2*(5-i)-1
D、?2*(5-i)+1

8、鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include <stdio.h> int main() { int x, y; for (x=1; x<98; x++) { _____(1)____ if ( __? (2) ___ ) { printf("x = %d, y = %d", x, y); } } return 0; }
A、(1) y = 98 - x; (2) 2*x+4*y == 386; ?
B、(1) y = 98 - x; (2) 2*x+4*y <= 386;
C、(1) x = 98 - y; (2) 2*x+4*y == 386;
D、(1) x = 98 - y; (2) 2*x+4*y <= 386;

9、打印所有的“水仙花数”。 所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include <stdio.h> int main() { int i, j, k, n; printf("result is:"); for (n=100; ___(1)____ ; n++) { i = n / 100; //得到百位 j = ____(2)______ ; k = n % 10; //得到个位 if ( ______(3)______?) { printf("%d\t ",n); //输出结果 } } printf("\n"); return 0; }
A、?(1) n<=1000 (2) n / 10 (3) i*100+j*10+k = i*i*i+j*j*j+k*k*k
B、?(1) n<=1000 (2) (n - i * 100) / 10 (3) i*100+j*10+k == i*i*i+j*j*j+k*k*k
C、?(1) n<1000 (2) n / 10 (3) i*100+j*10+k == i*i*i+j*j*j+k*k*k
D、?(1) n<1000 (2) (n - i * 100) / 10 (3) i*100+j*10+k == i*i*i+j*j*j+k*k*k

10、下面程序的功能是() #include<stdio.h> int main() { int x,s,i; scanf("%d",&x); s=x; for(i=1; i<=6; i++) { scanf("%d",&x); if(s<x) s=x; } printf("s=%d\n", s); return 0; } 提示:可参考课件“附加例题解析”中文档“求最值及其位置”,帮助理解。
A、输入6个整数,输出这些数的和
B、输入7个整数,输出其中的最小数
C、输入7个整数,输出其中的最大数
D、输入6个整数,输出第1个数

11、阅读下面的程序,该程序完成的功能有( ) #include <stdio.h> int main() { int number,min; int i,n=1; printf("请输入第1个数"); scanf("%d",&number); min=number; //只有1个数时,最小数就是这个数,设min初值为第1个数 for(i=2;i<=8;i++) { printf("请输入第%d个数",i); scanf("%d",&number); if(min>number) //min与新输入的数比,如果更大,则 { min=number; // min更新为较小的数 n=i; // n更新为较小数的位置 } } printf("第%d个数最小,为%d\n",n,min); //输出最小数的位置与最小数 return 0; } 提示:可参考课件“附加例题解析”中文档“求最值及其位置”,帮助理解。
A、输出8个数中的最小数
B、输出最小数的位置
C、求7个数最小数
D、将输入的8个数由大至小排序

12、程序功能:输入n的值(n<11),计算1!+2!+3!+......+n!,并输出计算结果。 请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h> int main() { int i, n; long sum=0,fac=1; //fac存储每个加项(阶乘)的值 printf("请输入n的值:"); scanf("%d",&n); for( i=1; i<=n; i++) { //后一加项与前一加项的关系 sum=sum+fac; } printf("和为%ld\n",sum); return 0; } 提示:可以参考“累加和”中讲解的最后一个例题

循环进阶选择、填空题 第七周

1、输出1~100之间所有各位数之积大于各位数之和的数,例如23,因为2*3>2+3。 #include <stdio.h> int main() { int i; int a,b; //定义a,b分别存放十位数、个位数 for(i=1;i<100;i++) { (1) //求得十位数 (2) //求得个位数 if ( (3) ) //判断两数之积大于两数之和 printf("%d\t",i); } return 0; }
A、(1) a = i%10; (2) b = i/10; (3) a*b > a+b
B、(1) a = i/10; (2) b = i%10; (3) a*b > a+b
C、(1) a = i/10; (2) b = i%10; (3) a+b > a*b
D、(1) a = i%10; (2) b = i/10; (3) a+b > a*b

2、一个正整数如果恰好等于它的因子(不包括自己)之和,这个数就称为“完数”。 例如,6的因子为1、2、3,且6=1+2+3,因此6是完数。 输入一个正整数,判断该数是否为完数。 #include <stdio.h> int main() { int n; int i, sum = 0; scanf("%d",&n); for(i=1; (1) ;i++) { if ( (2) ) sum += i; } if(n==sum) printf("%d是完数\n", n); else printf("%d不是完数\n", n); return 0; }
A、(1) i<=n-1 (2) n%i
B、(1) i<=n (2) n%i == 0
C、(1) i<=n-1 (2) n%i == 0
D、(1) i<=n (2) n%i

3、求所有满足要求的二位整数AB(其中A和B分别为十位数和个位数),使得AB-BA=45成立。 #include<stdio.h> int main() { int n; int a, b; for(n=10; n<=99;n++) { a = n / 10; //a为十位数 b = n % 10; //b为个位数 if ( ) printf("%d\t",n); } return 0; }
A、n-(b*10+a) = 45
B、n-(b*10+a) == 45
C、(b*10+a)-n == 45
D、(b*10+a)-n = 45

4、求所有满足要求的二位整数AB(其中A和B分别为十位数和个位数),使得 |AB-BA| =45成立。 求所有满足要求两位整数,交换十位和个位之后得到的另一个数,两个数的差值为45。 输出结果: #include<stdio.h> #include<math.h> int main() { int n; int a, b; for(n=10; n<=99;n++) { a = n / 10; //a为十位数 b = n % 10; //b为个位数 if ( ) printf("%d\t",n); } return 0; }
A、(a*10+b)-(b*10+a) == 45 || (b*10+a)-(a*10+b) == 45
B、abs((a*10+b)-(b*10+a)) == 45
C、n-(b*10+a) == 45 || (b*10+a) - n == 45
D、abs(n- (b*10+a))==45

5、按要求,补充程序空白处,完成题目要求。 (注意表达式中不要加空格,以免误判。) 计算a + aa + aaa +... + aa...a(n个a)的值,n和a的值由键盘输入。 假定输入n和a的值均为0~9之间的整数,无需做判断。 输入: 6,2 输出: 2+22+222+2222+22222+222222=246912 #include<stdio.h> int main() { int n,a, num=0, sum = 0; //定义num为加数,sum为累加和 int i; scanf("%d,%d",&n,&a); for(i=1;i<=n;i++) { num = ; // 求得当前的加数 sum = sum + num; // 累加求和 if (i==n) // 输出 printf("%d",num); else printf("%d+",num); } printf("=%d\n",sum); return 0; }

6、按要求,补充程序空白处,完成题目要求。 (注意表达式中不要加空格,以免误判。) 输入一个分数,将其约分为最简分式。例如,输入:6/12,输出:1/2。 提示:为了把分数约分为最简分式,首先计算分子和分母的最大公因子,然后分子和分母都除以最大公因子。 #include<stdio.h> int main() { int a,b; int i; printf("Input a/b:"); scanf("%d/%d",&a,&b); //输入分子、分母 for(i=a;i>1;i--) //循环递减找最大公因子 { if ( ) // 判断条件:i是a、b的最大公因子 { a=a/i; // 约分 b=b/i; break; // 跳出循环 } } printf("最简分式:%d/%d\n",a,b); return 0; }

7、按要求,补充程序空白处,完成题目要求。 (注意表达式中不要加空格,以免误判。) 输出Fibonacci数列的前几项,直到该项的值大于10000为止,每行输出5项。Fobinacci数列为1,1,2,3,5,8,13,21,34,…,即第一项和第二项为1,从第三项起,每一项的数值为前两项之和。 输出结果: #include <stdio.h> int main() { int i; long f1 = 1, f2 = 1, f3=f1+f2; //前两项值1,1 int count = 0; printf("Fibonacci数列(大于10000为止):\n"); printf("%ld\t%ld\t",f1,f2); count = 2; while(f3 < 10000) { f3 = ; //根据前两项计算第三项 f1 = f2; //递推赋值 f2 = f3; printf("%ld\t",f3); //每行5个 count++; if (count % 5 == 0) printf("\n"); } printf("\n"); return 0; }

第十三周 二维数组及构造数据类型、预处理

选择题

1、若已经定义 struct stu { int a; int b; } student; ,则下列输入语句中正确的是 。
A、scanf("%d",&a);
B、scanf("%d",&student);
C、scanf("%d",&stu.a);
D、scanf("%d",&student.a);

2、设已经定义union u{ char a; int b;} vu; 在VC中存储char 型数据需要1个字节,存储int型数据需要4个字节,则存储变量vu需要 个字节。
A、1
B、4
C、5
D、8

3、设有定义 enum date { year,month,day} d ;则正确的表达式是 。
A、year=1
B、d=year
C、d="year"
D、date="year"

4、若已经定义typedef struct stu { int a, b; } student ; ,则下列叙述中正确的是 。
A、stu 是结构体变量
B、student 是结构体变量
C、student 是结构体类型
D、a和b是结构体变量

5、设有定义 enum date { year,month,day} d ;则下列叙述中正确的是 。
A、date是类型、d是变量、year是常量
B、date是类型、d和year是变量
C、date和d是类型、year是常量
D、date和d是变量、year是常量

6、下列叙述中错误的是 。
A、预处理命令必须以#号开头
B、预处理命令可以写成多行
C、预处理命令必须置于源文件的开始处
D、预处理命令以回车结束

7、C语言编译系统对宏替换的处理是在 进行的。
A、源程序编译前
B、源程序编译时
C、程序连接时
D、程序运行时

8、在宏定义“#define PI 3.14159”中,3.14159是 。
A、单精度数
B、双精度数
C、字符串
D、由PI位置决定其类型

9、设有宏定义 “#define A B abcd” ,则宏替换时, 。
A、宏名A用 B abcd 替换
B、宏名A B用abcd 替换
C、宏名A 和宏名B都用abcd 替换
D、语法错误,无法替换

10、下列有关宏的叙述中错误的是 。
A、宏名必须使用大写英文字母
B、宏替换不占用程序的运行时间
C、宏参数没有数据类型
D、宏名没有数据类型

11、下列宏定义,最不会引起二义性的是 。
A、#define ADD(a,b) a+b
B、#define ADD(a,b) (a)+(b)
C、#define ADD(a,b) (a+b)
D、#define ADD(a,b) ((a)+(b))

12、设有宏定义“#define M 3+2”,则表达式 2 * M * 3 的值为 。
A、30
B、12
C、10
D、13

13、设有宏定义“ #define Y(n) (4*n) ”, 则表达式 3+Y(5+1)的值为 。
A、21
B、24
C、27
D、30

14、设有宏定义: #define N 3 #define M N+2 则表达式 2*M/N的值为 。
A、6
B、3
C、3.333
D、错误

15、在#include命令中,#include后面的文件名用双引号定界,则系统寻找被包含文件的方式是 。
A、在系统的include文件夹查找
B、在源程序所在文件夹查找
C、先在系统的include文件夹查找,查找失败后再到源程序所在文件夹查找
D、先在源程序所在文件夹查找,查找失败后再到系统的include文件夹查找

16、定义行星枚举类型,枚举常量从1开始编号,请填写下面的空格(不要添加多余的空格) enum Planet{ Mercury= , Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune}

17、定义一个新的字符类型别名CHAR,请填写空白处(注意不要添加多余的空格 ) typedef CHAR;

第十四周 指针

选择题

1、设已定义 int a, *p; 下列赋值表达式中正确的是 。
A、*p=a
B、p=*a
C、p=&a
D、*p=&a

2、设已定义 int x, *p=&x ; 则下列表达式中错误的是 。
A、*&x
B、&*x
C、*&p
D、&*p

3、若已定义 int a=1,*b=&a; , 则printf("%d\n",*b);的输出结果为 。
A、a的值
B、a的地址
C、b的值
D、b的地址

4、设已定义 int x, *p ,*p1=&x , *p2=&x ; 则下列表达式中错误的是 。
A、x=*p1+*p2
B、p=p1
C、x =p1+p2
D、p1=0

5、设有函数定义 void p(int *x){ printf("%dn",*x);} 和变量定义int a=3;则正确的函数调用是 。
A、p(a)
B、p(*a)
C、p(&a)
D、p(int *a)

6、运行以下程序,输出结果为 。 #include <stdio.h> int fun(int a,int *b) { a++; (*b)++; return a+*b; } int main() { int x=1,y=2; printf("%d ",fun(x,&y)); printf("%d ",fun(x,&y)); }
A、5 5
B、5 6
C、6 5
D、6 6

7、若已定义 int a[]={ 1,2,3,4},*p=a; 则下面表达式中值不等于2的是 。
A、*(a+1)
B、*(p+1)
C、*(++a)
D、*(++p)

8、若已定义 int a[]={ 1,2,3,4},*p; p=a+1; 则p[2]的值是 。
A、2
B、3
C、4
D、无意义

9、下面程序的运行结果是 。 #include <stdio.h> void fun(int w,int *p) { w=1; *p=5*w; } int main() { int a=8,b=2; fun(a,&b); printf("%d\n%d\n",a,b); return 0; }
A、8 5
B、8 2
C、1 5
D、1 2

10、下面程序的运行结果是 。 #include <stdio.h> void fun(int a,int *b) { a=4; *b=2*a; } int main() { int a=5,b=2; fun(a,&b); printf("%d\n%d\n",a,b); return 0; }
A、5 2
B、5 8
C、4 2
D、4 8

11、定义:int x;float y;int *p; 下面对指针变量p赋值正确的是( )。
A、p=1000;
B、p=&y;
C、p=&x;
D、p=x;

12、int x=1,y=2; int *p1,*p2; p1=&x;p2=&y; 下面与x=y;不等价的语句是( )
A、*p1=*p2;
B、*p1=y;
C、x=*p2;
D、p1=p2;

13、int n; int *p1; p1=&n; 下面与n=3;等价的语句是( )
A、*p1=3;
B、p1=3;
C、&p1=3;
D、3=n;

14、int a[10]; int *p; p=a; 下面( )不正确。
A、*(a+1)=0;
B、*(p+1)=1;
C、a[1]=1;
D、&a=1;

15、swap函数定义如下: void swap(int * p1 , int * p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } 下面程序中,( )能正确地调用swap函数,使数组前2个元素的值互换。
A、#include int main() { int a[5]={ 1,2,3,4,5}; swap(&a[0],&a[1]); printf("调用函数后:a[0]=%d\ta[1]=%d\n",a[0],a[1]); return 0; }
B、#include int main() { int a[5]={ 1,2,3,4,5},*p; p=a; swap(p,p+1); printf("调用函数后:a[0]=%d\ta[1]=%d\n",a[0],a[1]); return 0; }
C、#include int main() { int a[5]={ 1,2,3,4,5},*p; swap(a,a+1); printf("调用函数后:a[0]=%d\ta[1]=%d\n",a[0],a[1]); return 0; }
D、#include int main() { int a[5]={ 1,2,3,4,5},*p; swap(a[0],a[1]); printf("调用函数后:a[0]=%d\ta[1]=%d\n",a[0],a[1]); return 0; }

第三周 格式化输入输出及选择结构1

选择题

1、? 能正确表示逻辑关系x<=y<=z的C语言表达式为( )
A、(x<=y)&&(y<=z)
B、? (x<=y)AND(y<=z)
C、? (x<=y<=z)
D、?(x<=y)&(y<=z)

2、能正确表示逻辑关系“a大于等于10或a小于等于0”的C语言表达式是 ( )
A、?a>=10 or a<=0
B、?a>=0|a<=10
C、a>=10&& a<=0 ?
D、a>=10‖a<=0

3、能正确表示逻辑关系“79<X<90”的C语言表达式是( )
A、? ( X>79 ) && ( X<90 )
B、?( X>79 )!=( X<90 )
C、?79<X<90
D、(X>79 )||( X<90)

4、设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是( )
A、?10<a<15
B、?a==11||a==12||a==13||a==14
C、? a>10&&a<15
D、?!(a<=10)&&!(a>=15)

5、设x,t均为int型变量,则执行语句“x=10; t=x&&x>10;”后,t的值为( )
A、?值不确定
B、?10
C、?1
D、?0

6、下面程序,运行后的输出结果是( ) #include<stdio.h> int main() { int a=1, b = 3, c = 4; if(a<b) a=b; if(a<c) a=c; printf("%d, %d, %d\n", a, b, c); }
A、4,4,3
B、4,3,4
C、?3,4,3
D、?1,3,4

7、语法不正确的语句是( )
A、if (x>y);
B、?if (x=y) { x++;y++;}
C、?if (x==y) && (x!=0) x++;
D、if (x!=y) scanf ("%d", &x);

8、如果整型变量a,b,c的值分别为5,4,3,则语句if(a>b>c) c++; 执行后c的值是( )
A、5
B、4
C、3
D、2

9、如果整型变量a,b,c的值分别为3,4,5,则语句 if(a<b<c) c++;执行后c的值是( )
A、?3
B、?4
C、5
D、6

10、运行以下程序,如果从键盘上输入5,则输出结果是( ) #include<stdio.h> int main() { int x; scanf("%d", &x); if (x--< 5) printf("%d", x); }
A、?3
B、?4
C、?5
D、无输出?

11、C语言语句中,可以用来决定分支流程的表达式是( )
A、?任意表达式
B、只能用逻辑表达式或关系表达式
C、只能用逻辑表达式
D、?只能用关系表达式

12、int x=102,y=12; printf("%2d,%3d\n",x,y); 执行后输出结果是( )
A、10,012
B、02, 12
C、102, 12
D、102,120

13、设i是 int 型变量 ,j是 float 型变量 , 用下面的语句给这两个变量输入值: scanf("i=%d, j=%f",&i,&j); 为了把 10 和 2.5分别赋给 i 和 j, 则正确的输入为( )
A、10 2.5< 回车 >
B、i=10,j=2.5< 回车 >
C、10 < 回车 > 2.5< 回车 >
D、x=10 < 回车 > ,y=2.5< 回车 >

14、执行下面语句, int a =1,b=2,c=3; if(a>c) b =c; a=c; c=b; a,b,c的值分别为( )(用逗号分隔)
A、3,2,2
B、1,2,3
C、3,3,2
D、3,3,3

15、请选出正确的输入语句( )。
A、double f; scanf("%lf",&f);
B、float x,y; scanf("%f%f",x,y);
C、float x; scanf("%f\n",x);
D、double x; scanf("%f",&x);

16、在printf函数中,浮点型数据输出的格式控制符有( )。
A、%e
B、%d
C、%f
D、%g

17、下面程序中,( )可以输出变量a,b,c的最大值。
A、if(a>=b && a>=c ) printf( "最大值为%d\n",a); if(b>=a && b>=c) printf( "最大值为%d\n",b); if(c>=a && c>=b) printf( "最大值为%d\n",c);
B、max=a; if(b>max) max=b; if(c>max) max=c; printf( "最大值为%d\n",max);
C、if(a>b>c ) printf( "最大值为%d\n",a); if(b>a>c) printf( "最大值为%d\n",b); if(c>a>b) printf( "最大值为%d\n",c);
D、if(a>b) max=a; if(c>max) max=c; printf( "最大值为%d\n",max);

18、设a=1, b=2, c=3,关系表达式a+b>=c 的值是( )。

19、设a=1, b=2, c=3,逻辑表达式a && b && c的值是( )。

20、设a=1, b=2, c=3,逻辑表达式a || !b || !c的值是( )。

21、程序功能:输入一个整数,当它是偶数时,输出“该数是偶数”,否则,输出“该数是奇数”。 请完善程序(有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h> int main() { int x; printf("请输入x: "); scanf("%d",&x); if printf( "该数是偶数\n"); //偶数除以2的余数为0,注意条件的括号不能少 if(x%2!=0) printf( "该数是奇数\n"); return 0; }

22、输入一个考试分数(0至100范围内),如果分数小于60分,则输出“不及格”;大于90分输出“优秀”;大于等于60并且小于等于90,则输出“合格”。(有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h> int main() { int x; printf("请输入分数(0-100): "); scanf("%d",&x); if(x<60) printf( "不及格\n"); if(x>90) printf( "优秀\n"); printf( "合格\n"); //注意分数在一个区间内,C语言中该如何描述 return 0; }

23、我国的邮政编码由六位阿拉伯数字组成,前第三位代表邮区,厦门市的邮政编码前三位为361 。 下面的程序功能:如果输入的邮政编码前3位是361,则输出“厦门市的邮件”;如果不是361,则输出“不是厦门市的邮件”。 请完善程序(有2个空,答案一行写一个,不要添加多余的空格). #include <stdio.h> int main() { int code; printf("请输入邮政编码: "); scanf(" %*3d",&code); //用scanf函数截取输入邮政编码的前3位 if(361 code ) printf( "厦门市的邮件\n"); if (361!=code) printf( "不是厦门市的邮件\n"); return 0; } 需要更多样例参考的同学可查阅课件 “ 选择结构初步 ” 里的最后一个文档 “ 习题解析 ”中第2题

第四周 选择结构2

多分支选择题

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

2、分析以下程序, 下列说法正确的是( ) #include<stdio.h> main() { int x=6,a=8,b=3; if(x=a+b) printf("* * * *\n"); else printf("# # # #\n"); }
A、有语法错,不能通过编译
B、通过编译,但不能连接
C、输出* * * *
D、输出# # # #

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

4、运行以下程序,如果从键盘上输入5,则输出结果是( ) #include<stdio.h> int main() { int x; scanf("%d", &x); if ( x--< 5) printf("%d", x); else printf("%d",x++); }
A、3
B、4
C、5
D、6

5、运行以下程序,如果从键盘上输入5,则输出结果是( ) #include<stdio.h> int main() { int x; scanf("%d", &x); if ( x--< 5) printf("%d", x); else printf("%d",++x); }
A、?3
B、?4
C、?5
D、?6

6、运行以下程序,如果从键盘上输入9,则输出结果是( ) #include<stdio.h> int main() { int x; scanf("%d", &x); if ( ++x< 10) printf("%d", x); else printf("%d",--x); }
A、?11
B、?10
C、?9
D、?8

7、以下程序的输出是( ) #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.000000?
B、?0.250000
C、?0.500000
D、1.000000?

8、?下面程序的运行结果是( )。 #include <stdio.h> main() { int a=12, b= -34, c=56, min=0; min=a; if(min>b) min=b; if(min>c) ? min=c; printf("%d", min); }
A、12
B、-34
C、?56
D、?0

9、分析以下程序, 输出结果是( ) #include<stdio.h> int main() { int x=5; if(x) printf("* * * *\n"); printf("# # # #\n"); }
A、* * * * # # # #
B、# # # #
C、* * * *
D、无输出

10、分析以下程序, 输出结果是( ) #include<stdio.h> int main() { int x=5; if(x) x=6; x=7; printf("%d\n",x); }
A、7
B、5
C、6
D、x

11、下面( )是正确的符号函数程序。 当x>0时,y=1 当x=0时,y=0 当x<0时,y=-1 (提示:按if-else配对规则分析程序,y值的运算结果与符号函数一致,才是正确的程序)
A、if(x>0) y=1; else if(x==0) y=0; else y=-1;
B、y=0; if(x!=0) if(x>0) y=1; else y=-1;
C、y=0; if(x>=0) if(x>0) y=1; else y=-1;
D、if(x>=0) if(x>0) y=1;else y=0; else y=1;

12、程序功能:输入一个整数,当它是偶数时,输出“该数是偶数”,否则,输出“该数是奇数”。 请完善程序,空格处应填( )。 #include <stdio.h> int main() { int x; printf("请输入x: "); scanf("%d",&x); if(x%2==0) printf( "该数是偶数\n"); //偶数除以2的余数为0 printf( "该数是奇数\n"); return 0; }
A、else
B、if(x%2!=0)
C、if(x/2!=0)
D、else if(x%2!=0)

13、输入一个考试分数(0至100范围内),如果分数小于60分,则输出“不及格”;否则输出“及格”。(程序有1个空,请选择正确的答案) #include <stdio.h> int main() { int x; printf("请输入分数(0-100): "); scanf("%d",&x); if(x<60) printf( "不及格\n"); printf( "及格\n"); return 0; }
A、else
B、if(x>=60)
C、else if(x>=60)
D、x>=60

14、读程序,写出运行结果。 #include <stdio.h> main() { int a=1,b=3,c=5; if (c==a+b) printf("yes\n"); else printf("no\n"); }

15、读程序,写出运行结果。 #include <stdio.h> int main() { int x=2, y=-1, z=5; if(x<y) if(y<0) z=0; else z=z+1; printf(“%d\n”,z); }

16、读程序,写出运行结果。 #include <stdio.h> main() { float a,b,c,t; a=3; b=7; c=1; if(a>b) { t=a;a=b;b=t;} if(a>c) { t=a;a=c;c=t;} if(b>c) { t=b;b=c;c=t;} printf("%5.2f,%5.2f,%5.2f",a,b,c); //注意%5.2f 的输出格式与逗号 }

17、下面是一个旅游自助程序。程序先输出选择菜单, 如果用户输入1,则提示输入租车数量,用变量i保存,然后计算需支付的金额,并输出。 如果用户输入2,则提示输入购票数量,用变量j保存,然后计算需支付的金额,并输出。 如果用户输入其它数,则提示选择错误。 费用计算方法: 租一辆车需支付150元。 门票一张60元,如果购票数>=10,则每张50元。 请完善程序。(程序有2个空,答案一行写一个,不要添加多余的空格) #include <stdio.h> int main() { int choose,i,j,money; printf("\n\t\t旅游自助服务\n"); printf("\t1---租车\t2---购买门票\n\n"); printf("请选择您需要的服务:"); scanf("%d",&choose); if( ) { printf("请输入租车数量"); scanf("%d",&i); money=150*i; printf("\n您需支付:%d元\n",money); } (choose==2) { printf("请输入购票数量"); scanf("%d",&j); if(j>=10) money=50*j; else money=60*j; printf("\n您需支付:%d元\n",money); } else { printf("选择错误"); } return 0; }

第五、六周 循环基础

单循环选择、填空题

1、设有如下程序段,则输出结果为() int k=0,a; for (a=1;a<=1000;a++) k=k+1; printf("k=%d",k); 提示:可参考课件“附加例题解析”文档中的例题
A、k=1
B、k=1001?
C、k=1000
D、溢出

2、设有如下程序段,则最后一次输出的是() int a; for (a=1;a<=1000;a++) printf("a=%d",a); 提示:可参考课件“附加例题解析”文档中的例题
A、?a=1
B、?a=1000
C、a=1001
D、溢出?

3、设有如下程序段,则输出结果是() int a; for (a=1;a<=1000;a++) ; printf("a=%d",a); 提示:可参考课件“附加例题解析”文档中的例题
A、?a=a=aaa a= 1 a= 1a=1
B、a=1000
C、a=1001
D、溢出?

4、设有如下程序段,则输出结果为() int k=0,a; for (a=1;a<=1000;a++) { a=a+1;k=k+1;} printf("k=%d",k);
A、?k=1000
B、?k=499
C、k=500
D、?k=501

5、int i,j=10; for( i=1; i==j; i++); 的循环次数是() 提示:可参考课件“附加例题解析”文档中的例题
A、?0
B、?5
C、?10
D、无限

6、int i, j; j=10; for(i=1; i<=j; i++) j--; 程序的循环次数是()
A、?0
B、?5
C、?10
D、?无限

7、语句for(x=0,y=0; y!=1&&x<4; x++); 是()
A、?无限循环
B、循环次数不定
C、循环4次?
D、循环3次

8、设有程序段: int k=10; while(k=0)k = k- 1; 则下面叙述正确的是()
A、?while循环执行10次
B、是无限循环
C、?循环体语句执行一次
D、?循环体语句一次也不执行

9、?设有程序段: int k=10; while(k==0)k = k- 1; 则下面叙述正确的是()
A、while循环执行10次
B、无限循环
C、循环体语句执行一次
D、循环体语句一次也不执行

10、?设有程序段: int k=10; while(k!=0) k = k- 1; 则下面叙述正确的是()
A、while循环重复执行10次
B、是无限循环
C、循环体语句执行一次
D、?循环体语句一次也不执行

11、与语句while(!x);等价的语句是()
A、?while(x= =0);
B、?while(x!=1);
C、?while(x!=0);
D、?while(x==1);

12、int i=0, j; for( j=10; i<j; j--) i++; 程序的循环次数是()
A、0?
B、5?语法错误 5
C、语法错误
D、无穷多次?

13、设有程序段,以下说法正确的是() x = -1; do { x = x*x; } while( !x);
A、?循环体将执行一次
B、?循环体将执行两次
C、循环体将执行无限次
D、系统将提示有语法错误?

14、C语言中while 和do-while 循环的主要区别是()
A、?do-while的循环体至少无条件执行一次
B、? while 的循环控制条件比do-while 的循环控制条件严格
C、?do-while的循环体比while的循环体少执行1次
D、?do-while 的循环体不能是复合语句

15、下列语句不是死循环的是()?
A、int i = 1; ?while(1) i++;
B、int i =1; for(;;) i++;?
C、?int i =1; do i++; while(1);
D、?int i =10; while(i) i--;

16、下面程序的功能是:计算1~10之间的奇数之和及偶数之和,空白处应填 () #include<stdio.h> int main() { int a, b, c, i; a = c = 0; for(i=0; i<=10; i+=2) { a += i; } printf("偶数之和=%d!\n", a); printf("奇数之和=%d!\n", c-11); }
A、?c+=i;
B、c+=i+1;?
C、?b+=i;
D、b+=i+1;

17、下面程序的功能是() #include<stdio.h> int main() { int x,s=0,i; for(i=1; i<=5; i++) { scanf("%d",&x); s=s+x; } printf("s=%d\n", s); return 0; }
A、输入任意5个整数,输出这5个数的和
B、输入任意5个整数,输出这5个数
C、求1+2+3+4+5的和
D、输入语句scanf("%d",&x);不能放在循环中,程序出错

18、下面程序的功能是() #include<stdio.h> int main() { int x,s=0,i; scanf("%d",&x); while(x!=0) { s=s+x; scanf("%d",&x); } printf("s=%d\n", s); return 0; }
A、输入一组整数,以输入0作为结束,求所有数的和并输出
B、输入一组整数,输出不为0的数
C、输入一组整数,并输出这些数
D、程序只输入了一个整数,输出0

19、编程:输入一个整数,计算该整数的位数,并输出位数。 输入样例:12345 输出样例:输入的是5位数 请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h> int main( ) { int i=0,k,j; scanf("%d",&k); do { k= k/10; i++; }while( ); printf("输入的是%d位数\n", i); } 提示:第二周讨论题-----讨论一类赋值语句的特点,在置顶贴的回复中,有本题的相关内容。这一类赋值语句常用于循环中。

20、编程:输入一个整数,计算该整数的位数,并输出位数。 输入样例:12345 输出样例:输入的是5位数 请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h> int main( ) { int i=0,k,j; scanf("%d",&k); do { i++; }while(k!=0); printf("输入的是%d位数\n", i); } 提示:第二周讨论题-----讨论一类赋值语句的特点,在置顶贴的回复中,有本题的相关内容。这一类赋值语句常用于循环中。

第九周 函数

函数的定义、调用选择题

1、C语言程序由函数组成。正确的说法是( )
A、主函数必须写在其他函数之前,函数内可以嵌套定义函数
B、主函数必须在写其他函数之后,函数内可以嵌套定义函数
C、主函数必须写在其他函数之前,函数内不可以嵌套定义函数
D、主函数可以写在其他函数之后,函数内不可以嵌套定义函数

2、以下说法正确的是( )
A、C语言程序总是从第一个定义的函数开始执行
B、C语言程序中,被调用的函数必须在main()函数中定义
C、C语言程序总是从主函数main()开始执行。
D、C程序中的main()函数必须放在程序的开始处

3、已知函数fun类型为void,则void的含义是( )
A、执行函数fun后,函数没有返回值
B、执行函数fun后,可以返回任意类型的值
C、执行函数fun后,程序结束,不再返回主调函数
D、以上三个答案都是错误的

4、若有返回值的函数类型和return语句中的表达式类型不一致,则( )
A、运行时出现不确定结果
B、返回值的类型以函数类型为准
C、编译时出错
D、返回值的类型以return语句中表达式的类型为准

5、下面函数定义正确的是( )。
A、double fun(double u,v) { return u+v;}
B、double fun(double u;double v) { return u+v;}
C、double fun(float u,float v) { return u+v;}
D、double fun( u,v) { float u,v ;return u+v;}

6、以下函数fun的返回值类型为( )。 fun(double x){ ……}
A、double
B、void
C、int
D、无法确定类型

7、一个C语言程序的基本组成单位是( )。
A、主程序
B、子程序
C、函数
D、过程

8、C语言中函数返回值类型由( )决定。
A、调用该函数的主调函数类型
B、函数参数类型
C、return语句中的表达式类型
D、定义函数时指定的函数类型

9、编写函数计算下面多项式的值,并返回值 编写main,输入x,调用该函数计算多项式的值并显示结果。 请完善下面的程序:(有2个空,答案一行写一个,不要添加多余的空格) #include<stdio.h> double f(double x) { 2*x*x+3*x+1; } int main() { double x; printf("请输入x:"); scanf("%lf",&x); printf("f(%.2f)的值是%.2f",x, ); return 0; }

10、一个正整数如果恰好等于它的除自身外的因数之和,这个数称为“完数”。例如,6的因数有1、2、3,且6=1+2+3,因此6是“完数”。 编写判别完数的函数wanshu(int x):功能判断x是否为完数,如果是,则返回1,不是,则返回0。 编写main()中让x从1循环至1000,并调wanshu函数,如果返回值为1,则输出该数。 请完善下面的程序:(有3个空,答案一行写一个,不要添加多余的空格) #include <stdio.h> int wanshu(int x) { int i,r=0; for(i=1;i<x;i++) { if ( ) //判断x能整除i? 即判断i是否是x的因数 r=r+i; //将因数累加进r中 } if (r==x) //判断因数和是否等于x,是则返回1,不是,返回0 return 1; else return ; } int main() { int i; for (i=1;i<=1000;i++) { if ( ) //调用wanshu函数,根据函数值,判断i是否为完数, printf("%d是完数\n",i); } return 0; }

11、编写最小值函数,功能求x,y的最小值,并返回最小值。 main()中输入x,y的值,并调用min函数,输出返回值。 请填空完善程序。(有3个空,答案一行写一个,不要添加多余的空格) #include<stdio.h> int (int x, ) { if(x<y) return x; return y; } int main() { int x,y; printf("请输入2个数"); scanf("%d%d",&x,&y); printf("较小的数是%d",min(x,y)); return 0; }

12、编写求最大公约数函数gcd:功能是求两数的最大公约数,并返回该数。 main函数中调用该函数,并输出最大公约数。 请填空完善程序。(有2个空,答案一行写一个,不要添加多余的空格) #include<stdio.h> int gcd(int m,int n) //求m,n的公约数的函数 { int r; r=m; // r 是公约数,初值为 m while((m%r!=0)||(n%r!=0)) //当 r 不是公约数时,循环直至找到公约数 ; // r 减小1 return r; } int main() { int m,n; printf("请输入两个数"); scanf("%d%d",&m,&n); printf("最大公约数%d\n", ); //调用gcd函数 return 0; }

13、编写求最小公倍数函数sct:功能是求两数的最小公倍数,并返回该数。 main函数中调用该函数,并输出最小公倍数。 请填空完善程序。(有2个空,答案一行写一个,不要添加多余的空格) #include<stdio.h> int sct(int m,int n) //求m,n的公倍数的函数 { int r; r=m; // r 是公倍数,初值为 m while((r%m!=0)||(r%n!=0)) //当 r 不是公倍数时,循环直至找到公约数 ; // r 增加1,用于下次循环测试下一个数 return ; // 返回得到的公倍数 } int main() { int m,n; printf("请输入两个数"); scanf("%d%d",&m,&n); printf("最小公倍数是%d\n",sct(m,n)); return 0; }

第十周 函数与变量

选择题

1、以下叙述中错误的是( )。
A、函数形参是存储类型为自动类型的局部变量
B、全局变量的存储类别是auto型的。
C、static int x; 则x会被初始化为0
D、函数中定义的变量默认是自动变量

2、下列叙述错误的是( )。
A、形参是局部变量
B、复合语句中定义的变量只在该复合语句中有效
C、主函数中定义的变量在整个程序中都有效
D、其他函数中定义的变量在主函数中不能使用

3、当全局变量与函数内部的局部变量同名时,则在函数内部( )。
A、全局变量有效
B、局部变量有效
C、全局变量与局部变量都有效
D、全局变量与局部变量都无效

4、以下说法中正确的是( )
A、形参是全局变量,其作用范围仅限于函数内部。
B、形参是全局变量,其作用范围从定义之处到文件结束。
C、形参是局部变量,其作用范围仅限于函数内部。
D、形参是局部变量,其作用范围从定义之处到文件结束。

5、在一个源文件中定义的全局变量的作用域为( )
A、本文件的全部范围
B、本程序的全部范围
C、本函数的全部范围
D、从定义该变量的位置开始至本文件结束

6、下面程序的运行结果是( ) #include<stdio.h> void proc (int a); int main ( ) { proc(2); proc(3); } void proc (int a) { static int x; //静态存储 int y=0; x=x+a; y=y+a; printf("%d\t%d\t",x,y) ; }
A、2 2 3 3
B、2 2 3 5
C、2 2 5 3
D、2 2 5 5

7、下面程序运行中,x被分配---释放存储空间,总共有( )次这样的过程。 #include<stdio.h> void proc (int a); int main ( ) { proc(2); proc(3); } void proc (int a) { static int x; ....; }
A、1
B、3
C、2
D、0

8、下面程序运行中,x被分配---释放存储空间,总共有( )次这样的过程。 #include<stdio.h> void proc (int a); int main ( ) { proc(2); proc(3); } void proc (int a) { int x; ....; }
A、1
B、2
C、3
D、4

9、下面程序中,x被分配---释放存储空间,总共有( )次这样的过程。 #include<stdio.h> void proc (int a); int x; int main ( ) { proc(2); proc(3); } void proc (int a) { x=2; ....; }
A、1
B、2
C、3
D、0

10、下面程序运行中,形参a被分配---释放存储空间,总共有( )次这样的过程。 #include<stdio.h> void proc (int a); int main ( ) { proc(1); proc(2); proc(3); } void proc (int a) { a=2; ....; }
A、1
B、2
C、3
D、4

11、程序输出结果为( ) #include<stdio.h> void proc (); int main ( ) { int x=1; //定义局部变量x,局部变量只在本函数中有效 proc( ); printf("%d\n",x); } void proc ( ) { int x; //定义局部变量x,局部变量只在本函数中有效 x=2; }
A、1
B、2
C、main,proc函数中都定义了变量x,程序错误
D、0

12、程序输出结果为( )。 #include<stdio.h> int x=0; //x定义在所有函数之外,为全局变量 void proc (); int main ( ) { x=1; proc( ); printf("%d\n",x); } void proc ( ) { x=2; }
A、2
B、0
C、1
D、程序错误

13、下面程序的执行结果为( )。 #include<stdio.h> void proc (); int main ( ) { int x=8; //定义局部变量x,局部变量只在本函数中有效 proc( ); printf("%d\n",x); return 0; } void proc ( ) { x=100; }
A、编译不能通过
B、8
C、100
D、随机数

14、阅读“变量的作用域”的讨论题中程序,其中定义了全局变量 float area1,area2,area3; 下面叙述正确的是()。
A、area1,area2,area3定义为全局变量,可以将cal函数计算出来的面积值传递给max_3函数
B、float area1,area2,area3; 语句后的所有函数都可以使用这3个变量
C、将 float area1,area2,area3; 放在main函数中效果一样
D、该语句有语法错误

第十一、十二周 一维数组

一维数组选择题

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

2、设有定义 int a[10]=;则说法正确的是( )。
A、数组a有10个元素,各元素的值为0
B、数组a有10个元素,其中a[0]的值为0,其他元素的值不确定
C、数组a有1个元素,其值为0
D、数组初始化错误,初值个数少于数组元素个数

3、在以下字符串String的赋值运算中,错误的是( )。
A、char str[10]= { 'S' ,'t', 'r' ,'i','n', 'g','\0'};
B、char str[10]= "String";
C、char str[10]= { 'S' ,'t', 'r' ,'i','n', 'g'};
D、char str[]= { 'S' ,'t', 'r' ,'i','n', 'g',0};

4、设有以下字符串定义,则数组s1和s2( )。 char s1[]={ 'S' ,'t', 'r' ,'i','n', 'g'}; char s2[]= "String";
A、长度相同,内容也相同
B、长度不同,但内容相同
C、长度相同,但内容不同
D、长度不同,内容也不同

5、设已定义 char str[6]= { 'a','b','\0','c','d','\0'}; 执行语句 printf(("%s",str) 后,输出结果为( )。
A、a
B、ab
C、abcd
D、ab\0cd\0

6、引用数组元素时,数组元素下标不可以是( )。
A、字符常量
B、整型变量
C、字符串
D、算术表达式

7、已定义字符数组s1和s2,以下错误的输入语句是( )。
A、scanf("%s%s ", &s1,&s2);
B、gets(s1,s2) ;
C、gets(s1); gets(s2);
D、scanf("%s%s ", s1,s2);

8、int a[10]={ 1,2,3}; 则a[2]的值为( )。
A、2
B、3
C、1
D、0

9、int a[5]={ 1,2,3}; 则a[4]的值为( )。
A、0
B、3
C、没有确定的值
D、2

10、下面( )是字符串结束符。
A、'\0'
B、end
C、'\t'
D、enter

11、下面( )是错误的数组定义。
A、int a[2*i];
B、int a[10];
C、int b[10+10];
D、float x[15-5];

12、设有定义 int a[3]; 下面数组元素的赋值中,错误的是( )。
A、a[1]=1;
B、a[0]=2;
C、a[3]=3;
D、a[2]=100;

13、定义int a[5]; 下面( )不可以给5个数组元素赋值。
A、a={ 1,2,3,4,5};
B、for(i=0;i<5;i++) a[i]=i;
C、for(i=0;i<5;i++) scanf("%d",&a[i]);
D、a[0]=1;a[1]=1;a[2]=2;a[3]=3;a[4]=4;

14、定义int b[6]; 下面( )可以输出数组的所有元素的值。
A、for(i=0;i<6;i++) printf("%d",b[i]);
B、for(i=1;i<=6;i++) printf("%d",b[i]);
C、printf("%d",b);
D、while(b[i]!='\0') printf("%d",b[i]);

15、有长度为10的一维整型数组a,由键盘输入它的值(10个不等的数),求a数组中最小元素的值及其在数组中的位置。 输入样例: 16 9 56 23 24 75 6 81 36 35 输出样例: 最小元素是 6,是第7个元素 注意:a[0]是数组中的第1个元素。 请完善程序。(有2个空,答案一行写一个,不要添加多余的空格) #include<stdio.h> int main() { int i,a[10],min,k; // k存储位置 for(i=0;i<10;i++) scanf("%d",&a[i]); min=a[0]; // 假设第1个数为最小数 k=1; // k保存最小数的位置,此时为1 for(i=1;i<10;i++) { if(a[i] ) { min=a[i]; // min更新为较小数 // k更新为较小数的位置 } } printf("最小元素是 %d,是第%d个元素",min,k); } 提示:求数组元素的最小值可以参考本周附加例题解析“求最值及其位置”中的数组方法例题 ,注意位置序号与本例的区别