蓝莓题库

c程序设计基础中国大学mooc网课答案-k8凯发

欢迎来访!

k8凯发-凯发官网入口中级会计习题 正文

作者2023-02-26 23:40:56中级会计习题 78 ℃0 评论
第一周 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 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 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、//是行注释,从//开始至行尾为注释内容

判断题(本周语法汇总)

1、编写c程序时,main函数必不可少。

2、printf("\n"); 可实现换行

3、c的每条语句结束处必须用分号。

4、注释语句不影响程序的运行。

5、若使用printf输出结果,则必须在程序前添加#include

6、c程序中的标点符号(如分号;)必须用英文的标点符号。

简单语法与程序

1、作业说明: 本课程所有编程题在“拼题a”(pta|程序设计类实验辅助教学平台)完成,提交代码时平台自动评测是否正确。 请按下面的步骤注册并绑定mooc帐号后,即可在”拼题a”平台上看到本周的习题。 1、在拼题a上用邮箱注册, http://pintia.cn/ 2、你的拼题a账号所用的电子邮箱必须与的账号进行绑定: 方法:同时在两个窗口登录拼题a和,进入拼题a用户名下的“个人中心”找“我的绑定”,点击“绑定”即可); 3、你需要在“个人中心”的“个人信息”中输入邀请码,应邀做题。本学期的邀请码为:0e8d14d4722c7e72。 4、在“题目集”-----我的题目集中---完成“第一 周 编写简单的程序”作业 “拼题a”上的练习只在“拼题a”平台上提交,不需在此mooc中提交。

第二周 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 int main() { int x=10,y=3; printf("%d",y=x/y); return 0; }
    a、0
    b、1
    c、3
    d、不确定的值

9、下面程序的输出是( ) 。 #include 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的结果是( )。
    a、78
    b、8
    c、7
    d、10

11、下面程序的输出是( ) 。 #include int main() { int a=8; printf("%d\n",(a )*2); return 0; }
    a、8
    b、9
    c、16
    d、18

12、下面程序的输出是( ) 。 #include int main() { int a=3; printf("%d\n",(a--)*7); return 0; }
    a、21
    b、2
    c、3
    d、14

13、下面程序的输出是( ) 。 #include 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;
    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;
    b、a=y00/100;
    c、a=y0;
    d、a=y/100;
    e、a=y/10000;
    f、a=y/1000;

第二周 易错知识点练习1(选做)

1、当x是41.0时,算术表达式5/9*(x-32)的运算结果是( )。
    a、5
    b、5.0
    c、0
    d、4.9

2、
    a、
    b、3.14159*r^2/(a b)
    c、3.14159*r*r/(a b)
    d、

3、当x是41.0时, printf("%f",5.0/9*(x-32)); 输出结果是( )。
    a、5
    b、5.000000
    c、0.000000
    d、4.900000

4、x为int型,表达式 (x=1) 2的值是( ),x的值是( )。
    a、出错,1
    b、1,1
    c、3,1
    d、1,3

5、int a=10,b=100; printf("%d,%d\n,", a , b); printf("%d", a); 程序的输出结果是( )。
    a、10,101 11
    b、11,100 11
    c、10,101 10
    d、10,100 10

6、在c语言中,下面( )是正确的赋值表达式。
    a、x 1=2
    b、x=2
    c、2=x
    d、b=a=2

输入数据_表达式_数学函数的编程练习--------计分

1、请按下面的步骤注册并绑定mooc帐号后,即可在”拼题a”平台上看到本周的习题。 已绑定的同学可以跳过下面的1-3步。 【1、在拼题a上用邮箱注册, http://pintia.cn/ 2、你的拼题a账号所用的电子邮箱必须与的账号进行绑定: 方法:同时在两个窗口登录拼题a和,进入拼题a用户名下的“个人中心”找“我的绑定”,点击“绑定”即可); 3、你需要在“个人中心”的“个人信息”中输入邀请码,应邀做题。本学期的邀请码为: 0e8d14d4722c7e72。】 4、在“题目集”-----“我的题目集”中---完成“第二周编程 输入数据_表达式_数学函数的编程练习(mooc计分)”作业 拼题a上的练习只在拼题a平台上提交,不需在此mooc中提交。

算术运算符编程练习-------选做,不计入总分

1、请按公告中步骤注册拼题a(http://pintia.cn/)并绑定mooc帐号。 登入拼题a: 在“题目集”------“我的题目集”中可看到本周的选做作业: 第二周编程 算术运算符编程练习-------mooc选做,不计入总分 拼题a上的练习只在拼题a平台上提交,不需在此mooc中提交。

第三周 格式化输入输出及选择结构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    a、‍ ( x>79 ) && ( x<90 )
    b、‍( x>79 )!=( x<90 )
    c、‍79    d、(x>79 )||( x<90)

4、设a为整型变量,不能正确表达数学关系10<a<15的c语言表达式是( )
    a、‍10    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 int main() { int a=1, b = 3, c = 4; if(a    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    a、‍3
    b、‍4
    c、5
    d、6

10、运行以下程序,如果从键盘上输入5,则输出结果是( ) #include 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("-,=\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、输入一个考试分数(0至100范围内),如果分数小于60分,则输出“不及格”;大于90分输出“优秀”;大于等于60并且小于等于90,则输出“合格”。(有1个空,答案一行写一个,不要添加多余的空格) #include 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; }

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

第三周 易错知识点练习(选做)

1、int x=8; 在c程序中,表达式0<=x<=3的运算结果是( )。
    a、0
    b、1
    c、true
    d、false

2、int x=2,y=2; printf("%d\n", (x=0)&&(y=3)); printf("x=%d y=%d\n ", x,y); 输出结果是( )。
    a、0 x=0 y=3
    b、0 x=0 y=2
    c、1 x=2 y=2
    d、1 x=0 y=2

3、int x=2,y=2; printf("%d ", (x=4)||(y=4)); printf("x=%d y=%d\n ", x,y); 第二个printf的输出结果是( )。
    a、x=4 y=4
    b、x=2 y=2
    c、x=4 y=2
    d、x=2 y=4

4、scanf("%d",&a); if(a<60) printf("a=%d\n",a); printf("over\n"); 如果输入50,则输出结果是( )。
    a、a=50
    b、over
    c、a=50 over
    d、无输出

5、scanf("%d",&a); if(a<60) printf("a=%d\n",a); printf("over\n"); 如果输入70,则输出结果是( )。
    a、a=70
    b、over
    c、a=70 over
    d、无输出

单分支编程题 . --------计分

1、1、按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。第二周已绑定的同学不用重复此操作。(目前用 chrome 浏览器或火狐浏览器浏览效果最佳) 2、登入“拼题a”(pta),“我的题目集”------第三周 单分支编程题(mooc计分) •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。注意输入、输出格式必须符合题目要求。

单分支 . -----------选做,不计入总分

1、1、按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。第二周已绑定的同学不用重复此操作。(目前用 chrome 浏览器或火狐浏览器浏览效果最佳) 2、登入“拼题a”(pta),“我的题目集”------第三周 单分支(mooc选做题)-------不计入总分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求。

第四周 选择结构2

多分支选择题

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

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

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

4、运行以下程序,如果从键盘上输入5,则输出结果是( ) #include 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 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 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 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 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 int main() { int x=5; if(x) printf("* * * *\n"); printf("# # # #\n"); }
    a、* * * * # # # #
    b、# # # #
    c、* * * *
    d、无输出

10、分析以下程序, 输出结果是( ) #include int main() { int x=5; if(x) x=6; x=7; printf("%d\n",x); }
    a、7
    b、5
    c、6
    d、x

11、按功能键f5进入调试状态后,可以( )。
    a、查出所有的语法错误
    b、设置断点
    c、控制程序一步一步地执行,每执行一步,都可以暂停
    d、观察变量或表达式值的变化

12、下面( )是正确的符号函数程序。 当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;

13、程序功能:输入一个整数,当它是偶数时,输出“该数是偶数”,否则,输出“该数是奇数”。 请完善程序,空格处应填( )。 #include 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)

14、输入一个考试分数(0至100范围内),如果分数小于60分,则输出“不及格”;否则输出“及格”。(程序有1个空,请选择正确的答案) #include 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

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

16、读程序,写出运行结果。 #include int main() { int x=2, y=-1, z=5; if(x
17、读程序,写出运行结果。 #include 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 的输出格式与逗号 }

18、下面是一个旅游自助程序。程序先输出选择菜单, 如果用户输入1,则提示输入租车数量,用变量i保存,然后计算需支付的金额,并输出。 如果用户输入2,则提示输入购票数量,用变量j保存,然后计算需支付的金额,并输出。 如果用户输入其它数,则提示选择错误。 费用计算方法: 租一辆车需支付150元。 门票一张60元,如果购票数>=10,则每张50元。 请完善程序。(程序有2个空,答案一行写一个,不要添加多余的空格) #include 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 x=0; if(!x) printf("x为非零\n"); else printf("x为零\n");
    a、x为非零
    b、x为零
    c、0
    d、无输出

2、a= 10; if (a%2==0) ; printf("偶数\n"); else printf("奇数\n"); 程序的运行是( )。
    a、偶数 奇数
    b、奇数
    c、偶数
    d、出错

3、int x=2, y=-1, z=2; if (x    a、3
    b、2
    c、1
    d、0

4、有如下程序段: if (q%p==0) a=q/p; printf("%d=%d*%d",q,p,a); //输出因式分解q=p*a else printf("不能整除"); 如果q=8,p=2,则输出( )。
    a、该段程序有语法错误,不能执行。
    b、q=p*a
    c、8=2*4
    d、不能整除

多分支编程题. ------计分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------第四周 多分支编程题(mooc---计分) •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格。

分支2 . -----------选做,不计入总分

1、登入“拼题a”(http://pintia.cn/), “题目集”------第四周 分支2 -----mooc选做,不计入总分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 · 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格。

第五周 循环基础

单循环选择、填空题

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    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 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 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 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、for (i = 1; i<=10; i ) printf("****"); 循环结束后,i 的值是( )。
    a、0
    b、11
    c、10
    d、****

20、下面( )循环体执行10次。
    a、for(i=1;i<=10;i=i 1) {循环体;}
    b、for(i=2;i<=20;i=i 2) {循环体;}
    c、for(i=0;i<=9;i=i 1) {循环体;}
    d、for(i=10;i>=1;i=i-1) {循环体;}

21、下面( )是正确的判断素数程序(m>1)。
    a、j=0; for (i =2; i<=m-1; i ) if ( m % i != 0) j ; if(j==m-2) printf(“%d是素数\n", m);
    b、j=0; for (i =2; i<=m-1; i ) if ( m % i == 0) j ; if(j==0) printf(“%d是素数\n", m);
    c、flag=0; for (i =2; i<=m-1; i ) if ( m % i == 0) flag=1; if(flag==0) printf(“%d是素数\n", m);
    d、for (i =2; i<=m-1; i ) if ( m % i == 0) i=m 2; if(i==m 3) printf(“%d是素数\n", m);

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

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

第五周 易错知识点练习(选做)

1、下面图中用箭头表示for循环语句的执行顺序,其中( )是正确的。
    a、
    b、
    c、
    d、

2、sum = 0; for (i = 1; i<=10; i ) ; sum = sum i; printf("%d", sum); 输出结果是( )。
    a、0
    b、11
    c、10
    d、55

3、sum = 0; for (i = 1; i<=10; i ) { sum = sum i; i ; } printf("%d", sum); 输出结果是( )。
    a、11
    b、55
    c、25
    d、0

4、int i,count=0; for(i=1;i<=20;i ) { if(i%3==0 || i%7==0) printf("%d\t",i); count ; if(count%5==0) printf("\n"); } 程序运行结果是( )。
    a、
    b、
    c、
    d、

5、int i,count=0; for(i=1;i<=20;i ) { if(i%3==0 || i%7==0) { printf("%d\t",i); count ; if(count%5==0) printf("\n"); } } 程序运行结果是( )。
    a、
    b、
    c、
    d、

6、scanf("%d", &m); for (i =2; i<=m-1; i ) if ( m % i != 0) printf(“%d是素数\n", m); 该程序是错误的判定素数程序,下面( )是该程序的输出。
    a、当m为7时,输出: 7是素数
    b、当m为8时,输出: 8是素数
    c、当m为7时,重复输出5行: 7是素数
    d、当m为8时,重复输出4行: 8是素数

单循环编程题 .------计分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------第五周 单循环编程题(mooc---计分) •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

循环基础练习1 .--------不计入总分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------第五周 循环基础练习1------mooc不计入总分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

第六周 循环进阶

循环进阶选择、填空题

1、运行下面的程序,得到的输出是() #include 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 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 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 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 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 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 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 int main() { int x,s,i; scanf("%d",&x); s=x; for(i=1; i<=6; i ) { scanf("%d",&x); if(s    a、输入6个整数,输出这些数的和
    b、输入7个整数,输出其中的最小数
    c、输入7个整数,输出其中的最大数
    d、输入6个整数,输出第1个数

11、阅读下面的程序,该程序完成的功能有( ) #include 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、下面( )仅输出m的大于1的最小因子。
    a、for (i =2; i<=m-1; i ) if ( m % i == 0) { printf("%d is 最小因子\n", i); break; }
    b、for (i =2; i<=m-1; i ) if ( m % i == 0) { printf("%d is 最小因子\n", i); continue; }
    c、for (i =2; i<=m-1; i ) if ( m % i == 0) { printf("%d is 最小因子\n", i); }
    d、i=2; while ( m % i != 0) i ; printf("%d is 最小因子\n", i);

13、程序功能:输入n的值(n<11),计算1! 2! 3! ...... n!,并输出计算结果。 请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格) #include 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; } 提示:可以参考“累加和”中讲解的最后一个例题

14、编写作图程序:输入一个整数n,输出由n行上三角形与n 1行下三角形组成的如下菱形。 输入样例: 5 输出样例: (程序有3个空,答案一行写一个,不要添加多余的空格) #include int main() { int n,i, j; scanf("%d",&n); for(i=1;i<= n;i ) //输出n行上三角形 { for(j=1;j<= n-i 1;j ) //输出每行*号前的空格 (1) for(j=1;j<= (2) ;j ) //输出第i行的*号 putchar('*'); putchar('\n'); } for(i=1;i<= (3) ;i ) //输出n 1行下三角形 { for(j=1;j<=i-1;j ) putchar(' '); for(j=1;j<= 2*n 3-2*i;j ) putchar('*'); putchar('\n'); } return 0; } 提示: n行上三角形的编程,可以参考本周教学内容:循环的嵌套中讲解的最后一个例题 n 1行下三角形的编程与上三角类似,如何用公式表示第i行*的个数,可参考循环的嵌套小节中的“问与答”文档

15、编程输出如下图的九九乘法口诀表: (程序有2个空,答案一行写一个,不要添加多余的空格) #include int main( ) { int i,j; printf("\t\t\t\t乘法口诀表\n\n"); for( i=1;i<=9;i ) //外循环输出9行 { for( j=1;j<= (1) ; j ) //内循环每行输出 i 列 printf("%d*%d=%d\t",i,j, (2) ); //输出乘法表 printf("\n"); //输出一行后换行 } return 0; } 提示: 1、注意规律,第 i 行第 j 列输出的是: i*j=i*j的积; 2、可以参照本周教学内容:循环的嵌套中输出直角三角形的例题,试试将输出字符'*'的语句替换为输出一条乘法口诀。

第六周 易错知识点练习(选做)

1、求:1-1/2 1/3-1/4 ... 1/99-1/100 下面( )是正确的。
    a、sum=0; sign=1.0; for(i=1;i<=100;i ) { term =sign/ i; sum = term; sign=-sign; }
    b、sum=0; for(i=1;i<=100;i ) { sum =sum (-1)^(i 1)* (1./i); }
    c、sum=0; for(i=1;i<=100;i ) { sum =sum pow(-1,i 1)* (1.0/i); }
    d、sum=0; for(i=1;i<=100; i=-i) { term =1./ i; sum = term; i ; }

2、下面( )求2 4 6 ... 100之和,即1-100间所有偶数和。
    a、
    b、
    c、
    d、
    e、

循环编程练习2. --------计分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------第六周 循环编程练习2---计分 答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

循环基础练习2 . -------不计入总分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------第六周 循环基础练习2---不计入总分 答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

第七周 基本数据类型

选择题

1、下列( )是合法的字符常量。
    a、"c"
    b、c
    c、'char'
    d、'\n'

2、下列合法的字符串常量是( )。
    a、56
    b、'56'
    c、"56"
    d、'\t'

3、已知字母a的ascii码为十进制的65,下面程序的输出是( )。 int main() { char ch1,ch2; ch1='a' '5'-'3'; ch2='a' '6'-'3'; printf("%d,%c",ch1,ch2); }
    a、67,d
    b、b,c
    c、c,d
    d、不确定的值

4、设有以下程序段,则输出结果是( )。 char c1='b', c2='e'; printf("%d,%c\n",c2-c1,c2-'a' 'a');
    a、2, m
    b、3,e
    c、2, e
    d、输出结果不确定

5、若变量c为char类型,能正确判断出c为小写字母的表达式是( )。
    a、'a'<=c<='z'
    b、(c>='a') || (c<='z')
    c、('a'<=c) and ('z'>=c)
    d、(c>='a') && (c<='z')

6、有如下程序段,执行该程序段后,x的值为( )。 int a=14,b=15,x; char c='a'; x=(a && b) && (c<'b');
    a、14
    b、false
    c、0
    d、1

7、若有下列类型说明语句: char w; int x ; float y ; double z ; 则表达式w*x z-y值的正确数据类型为( )。
    a、float
    b、char
    c、int
    d、double

8、若有下列类型说明语句: int x ; double y ; 则表达式x-y值的正确数据类型为( )。
    a、char
    b、int
    c、double
    d、float

9、double x; 正确的输入语句是( )。
    a、scanf("%lf",&x);
    b、scanf("%hf",&x);
    c、scanf("%f",&x);
    d、scanf("%ld",&x);

10、下面( )将十进制数转为八进制数输出。
    a、printf("%o",50);
    b、printf("%d",50);
    c、printf("%x",50);
    d、printf("%c",50);

11、下面( )将十进制转为十六进制输出。
    a、printf("%o",50);
    b、printf("%x",50);
    c、printf("%c",50);
    d、printf("%d",50);

12、下面( )将十六进制数转为八进制输出。
    a、printf("%o",050);
    b、printf("%o",0x50);
    c、printf("%d",050);
    d、printf("%x",50);

13、下面( )类型的取值范围没有负数 。
    a、int
    b、float
    c、double
    d、unsigned

14、下面程序段的输出结果是( )。 unsigned short i=1; while(i>0) { i ; } printf("i=%u\n",i);
    a、死循环,无输出
    b、0
    c、65535
    d、32767

15、如果想更精确地保存12345.67891,应该选用( )型的变量。
    a、double
    b、float
    c、long long int
    d、char

16、编程统计某高速收费站单向通过的车辆数量,该高速为3车道,一次通过的车不超过3辆。 程序功能:通过车辆时,输入相应的数(1-3之间),程序进行累加;当输入字符s时,输出当前通过的车辆总和;当输入e时,输出通过的车辆总数,并结束程序。 程序有一个空,请选择正确的答案。 #include int main() { char c1; int total=0; printf("\t\t\t\t计数程序\n\n"); //输出提示菜单 printf("s---显示当前通过的车辆总数\t 1-3---新增车辆数\t e---显示通过的车辆总数,并结束程序\n\n"); do { //输入一个字符 if(c1=='s') printf("当前通过的车辆总数是:%d\n",total); else if(c1=='1') total=total 1; else if(c1=='2') total=total 2; else if(c1=='3') total=total 3; }while(c1!='e'); printf("总过的车辆总数是:%d\n",total); return 0; } 输入、输出样例如下图: 完成后,可参与本周的课堂讨论,通过本例深入体会字符输入语句
    a、scanf(" %c",&c1); //%c前有空格
    b、scanf("%c",&c1);
    c、c1=getchar();
    d、getchar();

17、用for循环语句编程输出a~z之间的所有大写字母,字母之间以空格分隔,要求一行输出8个字符。下面的程序有一个空,请选择恰当的循环语句完善程序。 #include int main() { char c; int count=0; { printf("%c ", c); count ; if(count%8==0) //每8个字符换行 printf("\n"); } return 0; }
    a、for(c='a'; c<='z'; c )
    b、for(c=65; c<=90; c )
    c、for(c=1; c<=26; c )
    d、for(c='a'; c<='z'; c )

字符编程题. ----------计入总分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集------第七周 字符编程练习---计分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

字符更多编程练习2. ----------不计入总分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集------第七周 字符编程练习2---不计入总分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

第八周 函数

函数的定义、调用选择填空题

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

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

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

4、下面函数定义正确的是( )。 注意:形参的格式
    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;}

5、以下函数fun的返回值类型为( )。 fun(double x){ ……}
    a、double
    b、void
    c、int
    d、无法确定类型

6、一个c语言程序的基本组成单位是( )。
    a、主程序
    b、子程序
    c、函数
    d、过程

7、c语言中函数返回值类型由( )决定。
    a、调用该函数的主调函数类型
    b、函数参数类型
    c、return语句中的表达式类型
    d、定义函数时指定的函数类型

8、void area( int length, int width ) { int s; s= length * width ; printf(“长%d,宽%d的长方形面积是%d\n”, length , width ,s); } 有如上求长方形面积函数,正确的调用方法是( )。 提示: 本题area是无返回值的函数。
    a、c=area(1,2);
    b、area(1,2);
    c、area( );
    d、c=area( );

9、int area( int length, int width ) { int s; s= length * width ; return s; } 有如上求长方形面积函数,正确的调用方法是( )。 提示: 本题area是有返回值的函数。
    a、c=area(1,2);
    b、area(1);
    c、c=area("12","34" );
    d、area( );

10、编写函数area(int length, int width),函数的功能是:求长方形面积,并打印输出面积值。 下面( )是正确的。 提示: 本题area没有要求返回值。
    a、void area( int length, int width ) { int s; s= length * width ; printf(“长方形面积是%d\n”, s); }
    b、int area( int length, int width ) { int s; s= length * width ; printf(“长方形面积是%d\n”, s); }
    c、int area( int length, int width ) { int s; s= length * width ; return s; }
    d、void area( int length, int width ) { int s; s= length * width ; return s; }

11、编写函数area(int length, int width),函数的功能是:求长方形面积,并返回面积值。 下面( )是正确的。
    a、int area( int length, int width ) { int s; s= length * width ; return s; }
    b、void area( int length, int width ) { int s; s= length * width ; return s; }
    c、void area( int length, int width ) { int s; s= length * width ; printf(“长方形面积是%d\n”, s); }
    d、int area( int length, int width ) { int s; s= length * width ; printf(“长方形面积是%d\n”, s); }

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

13、一个正整数如果恰好等于它的除自身外的因数之和,这个数称为“完数”。例如,6的因数有1、2、3,且6=1 2 3,因此6是“完数”。 编写判别完数的函数wanshu(int x):功能判断x是否为完数,如果是,则返回1,不是,则返回0。 编写main()中让x从1循环至1000,并调wanshu函数,如果返回值为1,则输出该数。 请完善下面的程序:(有3个空,答案一行写一个,不要添加多余的空格) #include int wanshu(int x) { int i,r=0; for(i=1;i
14、编写最小值函数,功能求x,y的最小值,并返回最小值。 main()中输入x,y的值,并调用min函数,输出返回值。 请填空完善程序。(有3个空,答案一行写一个,不要添加多余的空格) #include int (int x, ) { if(x
15、编写求最大公约数函数gcd:功能是求两数的最大公约数,并返回该数。 main函数中调用该函数,并输出最大公约数。 请填空完善程序。(有2个空,答案一行写一个,不要添加多余的空格) #include 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; }

16、编写求最小公倍数函数sct:功能是求两数的最小公倍数,并返回该数。 main函数中调用该函数,并输出最小公倍数。 请填空完善程序。(有2个空,答案一行写一个,不要添加多余的空格) #include 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、已知个人所得税税率表如下: 应交税额=(收入-5000)*税率-速算扣除数。 ------------------------------------------------------------------------------------------------------- 编写求税收函数double tax_fun(double x):x为收入,计算应交税额,并返回该数。 a收入8000元,b收入7000元,c收入12000元,在main函数中调用tax_fun函数,计算出a、b、c的应交税总额。 程序有3个空,请选择应填入的正确答案。 #include double tax_fun( (1) x) { double y,tax; y=x-5000; //扣除5000元免税金额 if(y<=3000) //按分档税率计算应交税额,结果保存在tax变量中 tax=y*0.03; else if(y<=12000) tax=y*0.1-210; else if(y<=25000) tax=y*0.2-1410; else if(y<=35000) tax=y*0.25-2660; else if(y<=55000) tax=y*0.3-4410; else if(y<=80000) tax=y*0.35-7160; else tax=y*0.45-15160; return (2) ; } int main() { printf("a、b、c三人应缴税总额为%.2lf元 ", (3) ); return 0; }
    a、(1) double (2) tax (3) tax_fun(8000) tax_fun(7000) tax_fun(12000)
    b、(1) 不需填 (2) tax_fun (3) tax_fun(8000) tax_fun(7000) tax_fun(12000)
    c、(1) int (2) y (3) tax_fun(8000) tax_fun(7000) tax_fun(12000)
    d、(1) double (2) tax (3) tax_fun(double 8000) tax_fun(double 7000) tax_fun(double 12000)

2、程序功能:输入一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在多组符合条件的素数,则全部输出。 #include int isprime(int n) //判断n是否为素数 { int i, flag=1; for(i=2;i    a、return flag; isprime(i)==1
    b、return flag; isprime(i)==1 && isprime(m-i)==1
    c、return ; isprime( )==1 && isprime( )==1
    d、空 isprime(i)==1 && isprime(m-i)==1

创建函数. ----计分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集------第八周 创建函数---计分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

函数更多练习. ------不计入总分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集-----第八周 函数更多练习---不计入总分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

第九周 函数与变量

选择题

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 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 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 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 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 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 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 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 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、吴老师要为单位采购书籍,购买总金额不能超过4000 。现编写一段程序,帮助吴老师采购书籍。 程序功能:输入书的价格,程序提示购书的剩余金额,当新选的书价大于剩余金额,则提示"已超过购买限额",并结束程序。 请完善下面的程序:(有1个空,答案一行写一个,不要添加多余的空格) #include double book_sum(double price); //函数声明 int main () { double price,total=0,diff; while(total<=4000) { printf("请输入书价:"); scanf("%lf",&price); total=book_sum(price); //调用函数,计算当前所购书的总金额 diff=4000-total; if(diff>=0) printf("还可购买%.2f元的书\n",diff); else printf("已超过购买限额"); } return 0; } double book_sum(double price) { sum=0; sum=sum price; return sum; } 可以参阅本周课件“变量的存储类型”中第一个学习内容“请先动手做3---static变量”中的例题解说。

全局变量编程练习. --------计分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集------第九周 全局变量编程练习(不写main函数)---计分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

函数定义、调用完整程序练习. ------不计入总分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集------第九周 函数定义、调用完整程序练习---不计入总分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

第十周 一维数组

一维数组选择题

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、执行下面的初始化语句,( )保存的不是字符串。
    a、char str[10]= { 's' ,'t', 'r' ,'i','n', 'g','\0'};
    b、char str[10]= "string";
    c、char str[6]= { '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、printf("%d",b[5]);

15、有长度为10的一维整型数组a,由键盘输入它的值(10个不等的数),求a数组中最小元素的值及其在数组中的位置。 输入样例: 16 9 56 23 24 75 6 81 36 35 输出样例: 最小元素是 6,是第7个元素 注意:a[0]是数组中的第1个元素。 请完善程序。(有2个空,答案一行写一个,不要添加多余的空格) #include 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); } 提示:求数组元素的最小值可以参考本周附加例题解析“求最值及其位置”中的数组方法例题 ,注意位置序号与本例的区别

一维数组练习. ------计分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集------第十周 数组练习---mooc计分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

数组编程更多练习. ----------不计入总分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集------第十周 数组编程更多练习----不计入总分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

第十一周 二维数组及构造数据类型

二维数组与结构体选择题

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、下面程序的功能:输入一个3*3的整数矩阵,输出正对角线上元素之和。 #include int main () { int a[3][3],i,j,sum=0; printf("输入一个3*3的整数矩阵\n"); for(i=0;i<3;i ) for(j=0;j<3;j ) scanf("%d",&a[i][j]); printf("\n对角线上元素之和为:\n"); for(i=0;i<=3;i ) //计算对角线上元素之和 for(j=0;j<3;j ) if(j=i) sum=sum a[i][j]; printf("%d",sum); return 0; } 请判断:在“计算对角线上元素之和”这段程序中,共有2处错误,对吗? 修改正确后,运行如下图

7、定义行星枚举类型,枚举常量从1开始编号,请填写下面的空格(不要添加多余的空格) enum planet{mercury= , venus, earth, mars, jupiter, saturn, uranus, neptune}

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

9、已知二维数组元素的值,输入行下标和列下标,输出该行列元素的值 。 例如, 输入 1,0 输出 a[1][0]=9 填写程序中空白处,完善程序功能。(有2个空,答案一行写一个,不要添加多余的空格) #include main() { int a[3][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23}; int row, col; printf("input the value of row, col:") ; scanf("%d,%d", &row, &col); printf("a[%d][%d] = %d", row , , ); }

10、已知若干个学生的成绩,每个学生四门课程,要求输出其中有不及格成绩的学生编号。 学生编号由0开始计算。 有多门不及格的学生编号只输出一次。 请根据题意,填写程序空白处。(有2个空,答案一行写一个,不要添加多余的空格) #include main() { int score[][4]={{60, 70, 80, 90}, {56,70, 45,90},{70, 75, 48, 18}}; int i, j; int flag; //设标志,flag为0,表示未输出该学生编号;flag 为1,表示已输出该学生编号 for(i=0;i<3;i ) { flag = 0; for(j=0;j<4;j ) if ( <60 && flag== ) { printf("%d\t", i); flag = 1; } } }

二维数组与结构体编程. -------------不计入总分

1、1、请按公告中说明注册(http://pintia.cn/), 并绑定mooc帐号 。已绑定的同学不用重复此操作。 2、登入“拼题a”(pta),“题目集”------我的题目集------第十一周 二维数组与结构体练习-------不计入总分 •答案在“拼题a”上提交,如果测试不能通过,可在讨论区寻求帮助。 注意输入、输出格式必须符合题目要求,输出结果必须完全一样,不能增减空格或空行。

第十二周 指针

选择题

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 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 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 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、有函数 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、语句 if(x) 和( )等价。
    a、if(x<>0)
    b、if(x!=0)
    c、if(x==0)
    d、if(x=0)

2、合法的c语言标识符是()。
    a、2a
    b、x_9
    c、for
    d、a-b

3、scanf("%f,%f",&a,&b),程序运行时,正确的输入方法是( )。
    a、3 4 <回车>
    b、3,4 <回车>
    c、3.0 40 <回车>
    d、3.0 <回车> 4.0<回车>

4、结束循环后,( )中 i 的值是6。
    a、for(i=1;i<=6;i ) { }
    b、for(i=1;i<6;i ) { }
    c、for(i=0;i<=6;i=i 2) { }
    d、for(i=10;i>=6;i--) { }

5、下列循环中,( )的循环体执行超过3次。
    a、for(i=1;i<=3;i ) { }
    b、for(i=0;i<=3;i ) { }
    c、for(i=2;i<=6;i=i 2) { }
    d、for(i=3;i>=1;i--) { }

6、执行下列语句后,输出结果是( ) int x=102 , y=12; printf("-,=\n",x,y);
    a、102, 12
    b、10,012
    c、02, 12
    d、102,120

7、输出结果为3*5=15的语句是()。
    a、printf("%d*%d=%d",3,5,3*5);
    b、printf 3*5=15 ;
    c、printf("3*5=3*5");
    d、printf("%d*%d=%d,3,5,15");

8、下列浮点数的表示中不正确的是( )。
    a、5.0
    b、.25
    c、2.1e5
    d、e-2

9、利用/、%运算,求x分钟=n小时m分钟,下面( )是错误的。
    a、n=x/60; m=x`;
    b、n=x/60; m=x-n*60;
    c、m=x`; n=(x-m)/60;
    d、n=x`; m=x/60;

10、( )能取出任意正整数x的百位数。
    a、x/100
    b、x/100
    c、x0
    d、x-x0

11、scanf("%d %d %d",&a,&b,&c); if ((a-b)*(a-c)<0 ) printf("%d\n",a); if ((b-a)*(b-c)<0) printf("%d\n",b); if ((c-a)*(c-b)<0) printf("%d\n",c); 上面代码的输出结果是a,b,c中( )。
    a、最大数
    b、中间大的数
    c、最小数
    d、任意一个数

12、float x,y; printf("输入购买金额:"); scanf("%f",&x); if(x>=500) if (x>=1000) y=0.8*x; else y=0.9*x; else y=x; printf("实际支付金额为:%f\n",y); 当输入800时,输出实际支付金额为( )。
    a、640
    b、800
    c、720
    d、560

13、scanf("%c",&x); 判断x是否是大写字母,应选用( )。
    a、if(x>=a && x<=z)
    b、if('a'<=x<='z')
    c、if(x>='a' && x<='z')
    d、if(x>='a' && x<='z')

14、int x,y=9,z=1; scanf("%d", &x); if(--x< 5) if (y    a、2
    b、1
    c、0
    d、5

15、y=0; if(x>=0) { if(x>0) y=1; else y=-1; } 当x为-5时,y的值是( )。
    a、1
    b、-1
    c、-5
    d、0

16、已定义struct s{int a,b;} x; ,则正确的赋值语句是( )。
    a、s.a=1;
    b、x.a=1;
    c、b=1;
    d、s=1;

17、已定义下面的fun函数,则( )是对fun函数的正确调用。 void fun(int x) { ....... }
    a、fun(3);
    b、fun();
    c、z=fun(3);
    d、6*fun(3);

18、下面的函数定义,( )是正确的。
    a、void f() { ...... return; }
    b、void f() { ...... return 0; }
    c、int f(); { ...... return; }
    d、double f(int x;int y) { ...... return; }

19、下面程序段中,x是( )。 int x; void proc (int a) { x=2; ....; }
    a、全局变量
    b、局部变量
    c、有时全局,有时局部
    d、形参

20、如果想更精确地保存12345.67891,应该选用( )型的变量。
    a、double
    b、float
    c、long long int
    d、unsigned int

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

22、下面()中,数组str保存的不是字符串。
    a、char str[5]={'h','e','l','l','o'};
    b、char str[6] = {"china"};
    c、char str[6] = "china";
    d、char str[ ] = "china";

23、下面代码的输出结果是( )。 int k,i; k=456123; i=k; while(k!=0) { if(i>k) i=k; k=k/10; } printf("%d\n",i);
    a、1
    b、6
    c、3
    d、321654

24、能正确表达变量a在(10,15)内的c语言表达式是( )。
    a、10    b、a>10 && a<15
    c、a>10 || a<15
    d、a>10 and a<15

25、在c语言中,score大于60并且小于85,应使用( )。
    a、score>60 && score<85
    b、60    c、score>60 and score<85
    d、score>60 || score<85

26、下面程序的功能是( )。 int x,k=0; printf("请输入x: "); scanf("%d",&x); do { x=x/10; k ; } while(x>0); printf("k=%d ",k);
    a、当x>0时,输出x的位数
    b、当x>0时,输出x的个位数
    c、输出x/10的商
    d、求x的各位数之和

27、下列叙述错误的是( )。
    a、形参是局部变量
    b、全局变量不一定在所有的函数中有效
    c、主函数中定义的变量在整个程序中都是有效的
    d、其他函数中定义的变量在主函数中不能使用

28、c='a'; 下面( )可以将变量c中保存的大写字母转为小写字母。
    a、c=c 32;
    b、c=c-32;
    c、c="c" ('b' -'b');
    d、c="c" 32;

29、已定义下面的f2函数,( )对函数的调用是错误的。 int f2(int a) { return a*a; }
    a、f2(3,4);
    b、f2(4);
    c、int c; c=f2(4);
    d、f2(f2(4));

30、设有如下程序段,则输出结果为k=( )。 int k=0,a; for (a=1;a<=1000;a ) { a=a 1; k=k 1;} printf("k=%d",k);
    a、1000
    b、499
    c、500
    d、501

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

32、求出20至30内各数的乘法因子(不包括1与它自身)之和,并将其显示出来。 例如:36,其所有乘法因子为18、12、9、6、4、3、2,和为54。 程序有2个空,应选择( )填入。 #include int main() { int i,j,s; for (i=20;i<=30; i ) { (1) for (j=2;j<=i-1; j ) if ( (2) ) s=s j; printf("i=%d,s=%d\n",i,s); } return 0; }
    a、(1) s=0; (2) i%j==0
    b、(1) s=1; (2) i/j==0
    c、(1) flag=1; (2) i%j==0
    d、(1) 不需填 (2) i/j==0

33、程序功能:判断从键盘输入的自然数m(大于1)是否为素数。 程序有2个空,应选择( )填入。 #include int main( ) { int i,m,flag=1; printf("请输入正整数m:"); scanf("%d",&m); for( (1) ) if(m%i==0) { (2) } if(flag==1) printf("%d是素数\n",m); else printf("%d不是素数\n",m); return 0; }
    a、(1) i=2;i<=m-1;i (2) flag=0; break;
    b、(1) i=1;i<=m;i (2) flag=0;
    c、(1) i=1;i<=m;i (2) printf("%d不是素数\n",m);
    d、(1) i=2;i<=m-1;i (2) printf("%d不是素数\n",m);

34、分析下面代码,输出结果是( )。 void fun(int x,int *y) { x=1; *y=5 x; } int main() { int a=2,b=2; fun(a,&b); printf("%d",b); return 0; }
    a、6
    b、2
    c、1
    d、7

35、字符串"1234"的结束标记是字符( )。
    a、'\0'
    b、4
    c、'\n'
    d、end

36、一个c语句程序的基本组成单位是( )。
    a、模块
    b、过程
    c、函数
    d、子程序

37、已知y为float类型,则表达式:y=5/2的值是( )。
    a、2
    b、2.5
    c、1
    d、出错

38、下列合法的字符常量是( )。
    a、'n'
    b、"k"
    c、'kn'
    d、x

39、下面空格中填入( ),执行程序可以交换a,b的值。 int t,a=3,b=4; ( ) a=b; b=t;
    a、t=a;
    b、b=a;
    c、a=t;
    d、a==b;

40、int a=3; int *pointer; pointer=&a; 此时,*pointer与( )等价。
    a、a
    b、*a
    c、&a
    d、pointer

41、有一楼梯,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩余2阶;若每步跨4阶,则最后剩余3阶;若每步跨5阶,则最后剩余4阶。问该阶梯有几阶?编程完成,要求输出可能的最小5个数。 程序有2个空,应选择( )填入。 #include int main() { int count=0,i=0; while( ) { i ; if( ) { printf("阶梯可能%d阶\n",i); count ; } } }
    a、count<5 i%2==1 && i%3==2 && i%4==3 && i%5==4
    b、i<5 i%2==1 && i%3==2 && i%4==3 && i%5==4
    c、count<5 i%2==1 || i%3==2 || i%4==3 || i%5==4
    d、i<5 i%2==1 || i%3==2 || i%4==3 || i%5==4

42、 为了输出上面的图形,下面程序中的3个位置分别应设置( )。 #include int main() { int i,j; for(i=1;i<=5;i ) { for(j=1;j<= ① ; j ) printf(" "); for(j=1;j<= ② ;j ) printf("*"); ③ } }
    a、① 6-i ② 2*i-1 ③ printf("\n");
    b、① i ② 2*i-1 ③ printf("\n");
    c、① i ② i ③ printf("\n");
    d、① 6-i ② i 2 ③ printf("\n");

43、 为了输出上面的图形,下面程序中的2个位置分别应设置( )。 #include int main() { int i,j; for(i=1;i<= ① ;i ) { for(j=1;j<= ② ;j ) printf("*"); printf("\n"); } }
    a、① 5 ② 2*i-1
    b、① i ② 2*i-1
    c、① i ② i 2
    d、① i ② i

44、执行下面语句后,b[4]的值为( )。 int b[5], i; for(i=0;i<=4;i ) b[i]=i*3;
    a、0
    b、4
    c、1
    d、12

45、以下程序段( )的功能是:输入n的值,计算序列 1 2 3 ... n 的和。
    a、scanf("%d",&n); sum=0; for(i=1; i<=n ; i ) sum=sum i;
    b、n=100; sum=0; for(i=1 ; i<=n ; i ) sum=sum i;
    c、scanf("%d",&n); sum=0; for(i=1 , i<=n , i ) sum=sum i;
    d、scanf("%d",&n); sum=0; for(i=1; i<=n ; i ) ; sum=sum i;

46、以下程序段( )的功能是:输入n的值,计算序列 1 1/2 1/3 ... 1/n 的和。
    a、scanf("%d",&n); sum=0; for(int i=1; i<=n ; i ) sum=sum 1.0/i ;
    b、scanf("%d",&n); sum=0; for(int i=1; i<=n ; i ) sum=sum 1/i ;
    c、scanf("%d",&n); sum=0; for(int i=1; i<=n ; i ) ; sum=sum 1.0/i ;
    d、n=100; sum=0; for(int i=1; i<=n ; i ) sum=sum 1.0/i ;

47、putchar函数可以向屏幕输出一个( )。
    a、字符或字符变量的值
    b、实型变量值
    c、字符串
    d、整数

48、下面( )语句正确地描述了计算公式 。
    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

49、i=1; 执行( )语句后,变量 i 的值不会发生变化。
    a、i 5;
    b、--i;
    c、i=2*i;
    d、i=6;

50、设有程序段: int k=10; while(k=0) //注意,是赋值运算符 k=k - 1; 则下面叙述正确的是( )。
    a、循环体语句一次也不执行
    b、while循环执行10次
    c、循环是无限循环
    d、循环体语句执行一次

51、某人有10张2分的邮票和10张3分的邮票,问使用这些邮票可以组合出多少种不同面值的邮资。 (例如:3张2分的邮票或2张3分的邮票都可以组成同样的6分邮资,面值相同,只算1种组合。) 请选出正确的程序。
    a、#include int main() { int count=0,i,j,k; for(i=1;i<=50;i ) { for(j=0;j<=10;j ) { for(k=0;k<=10;k ) { if((2*j 3*k)==i) { count ; goto bb; } } } bb:; } printf("可以组成%d种。",count); return 0; }
    b、#include int main() { int m; int x,y; int num=0; for (m=1;m<=2*10 3*10;m ){ for (y=0;y<=10;y ){ if ((m-3*y)%2==0&&m>=3*y&&(m-3*y)<=20){ num ; break; } } } printf("有%d种\n",num); }
    c、#include int main() { int m; int x,y; int num=0; int a[100]=,i; for (x=0;x<=10;x ) for (y=0;y<=10;y ) a[2*x 3*y]=1; num=0; for(i=1;i<=50;i ) if (a[i]==1) num ; printf("有%d种\n",num); }
    d、#include int main() { int a[100],b=0,i,j,flag,k; for(i=0;i<=10;i ){ for (j=0;j<=10;j ){ flag =0; for(k=0;k<=b;k ){ if(a[k]==2*i 3*j) flag =1; } if (flag==0){ a[b]=2*i 3*j; b=b 1; } } } b=b-1; //a[0]=0,不算一种邮资,将其减去。 printf("有%d种",b); }
    e、#include int main() { int i,j,k,num=0,z=0,y=0,x[121]; for(i=0;i<=10;i ) { for(j=0;j<=10;j ) { x[y]=2*i 3*j; for(k=0;k    f、#include int check(int m) { int i, y; for(i = 0; i <= 10; i ) { if (i * 2 > m) return 0; y = m - 2 * i; if (y % 3 == 0 && y / 3 <= 10) return 1; } return 0; } int main() { int sum = 0; for (int i = 2; i <= 50; i ) sum = check(i); printf("有%d种\n", sum); return 0; }
    g、#include int main() { int i=1,j,k,l,m,n,t=0,sum[101]; for(j=1;j<=10;j ) for(k=1;k<=10;k ) sum[i ]=j*2 k*3; for(l=1;l<=100;l ) for(m=1;m<=100;m ) if (sum[l]==sum[m]) sum[m]=0; for(n=1;n<=100;n ){ if(sum[n]!=0) { t ; printf("%d",t); } } printf("%d",48); }

52、某餐厅评选最受欢迎的菜品,菜品从1到6编号。 现请10 位同学们对菜品进行投票,每位同学输入最喜欢的菜品编号,得票数最高的菜品为最受欢迎的菜品。 请编写程序完成计票工作,并输出最受欢迎的菜品编号和得票数。 如果有并列的最受欢迎的菜品,则按编号从小到大的顺序输出每一个菜品。 程序有2个空,应选择( )填入。 #include int main() { int i, j,no,max=0; int c[11]=; //各菜品得票数保存在c数组中 for (i=1;i<=10;i ) { scanf("%d",&no); (1) } for(i=1;i<=6;i ) if ( (2) ) max = c[i]; for(i=1;i<=6;i ) if (max == c[i]) printf("%d %d\n", i, max); return 0; }
    a、(1) c[no] ; (2) max    b、(1) for(j=1;j<=6;j ) if(j==no) c[j] ; (2) max    c、(1) for(j=1;j<=6;j ) c[j] ; (2) max>c[i]
    d、(1) c[i] ; (2) max
53、程序功能:输入一个正整数,求各位数,并统计其中数字0-9的出现的次数。 输入样例: 1232 输出样例: 数字1出现:1次 数字2出现:2次 数字3出现:1次 程序有2个空,应选择( )填入。 #include int main() { int t,x,flag[10]=,i; scanf("%d",&x); while(x!=0) { t = x; (1) x =x/10 ; } for(i=0;i<=9;i ) (2) printf("数字%d出现:%d次\n",i,flag[i]); return 0; }
    a、(1) flag[t] ; (2) if(flag[i]!=0)
    b、(1) for(i=0;i<=9;i ) if(t==i) flag[i] ; (2) if(flag[i])
    c、(1) if(t==i) flag[i] ; (2) if(flag[i])
    d、(1) for(i=1;i<=9;i ) if(t==i) flag[i] ; (2) if(x!=0)

54、程序功能:输入一个正整数数列(共5个数),统计数列中有多少个数,等于其他两个数之和,并输出统计结果。例如,输入正整数序列:1 2 5 4 3,输出: 3 因为3=1 2,4=1 3,5=1 4 ,所以有3个数等于其他两数之和。 注意:5=2 3,5=1 4,只能算1个数(5)。 程序有3个空,应选择( )填入。 #include int main() { int n,i,j,k=0,a[6],b[6]=,count=0; for(i=0;i<5;i ) scanf("%d",&a[i]); for(i=0; (1) ;i ) { (2) } for(i=0;i<5;i ) (3 ) printf("%d\n",count); return 0; }
    a、(1) i<4 (2) for(j=i 1;j<5;j ) b[ a[i] a[j] ]=1; (3) if( b[a[i]]==1 ) count ;
    b、(1) i<5 (2) for(j=0;j<5;j ) for(k=j 1;k<5;k ) if(a[i]==a[j] a[k]) b[i]=1 ; (3) if(b[i]==1) count ;
    c、(1) i<4 (2) for(j=i 1;j<5;j ) { b[k]=a[i] a[j]; k ; } (3) for(j=0;j    d、(1) i<5 (2) for(j=0;j<5; j ) { b[k]=a[i] a[j]; k ; } (3) for(j=0;j    e、(1) i<5 (2) for(j=i 1;j<5;j ) for(k=j 1;k<5;k ) if(a[i]==a[j] a[k]) count ; (3) ; //(2)中已统计出总个数,此处的循环是多余的,所以用空语句

55、输入一个英文句子,句子以 . 结束。 判断首字母是否为大写元音字母,并统计句子中小写元音字母(a、e、i、o、u)的个数,若首字符是大写元音字母,也要统计在内。 输入样例: open the door,please. 输出样例: 是 8 请选出正确的程序。
    a、#include int main() { char str[200]=; int a[150]=,i,num,first_upper; gets(str); a[str[0]] ; first_upper=a['a'] a['e'] a['i'] a['o'] a['u']; if(first_upper!=0) printf("是\n"); else printf("不是\n"); for(i=1;i<200;i ) { a[str[i]] ; } num=first_upper a['a'] a['e'] a['i'] a['o'] a['u']; printf("%d",num); return 0; }
    b、#include int main () { char c1;int num=0; int flag=1; scanf(" %c",&c1); while(c1!='.') { if(flag==1) //flag是标记变量,值为1表示首字母 { if(c1=='a' || c1=='e' || c1=='i' || c1=='o'|| c1=='u') { printf("是\n"); num=num 1; } else printf("不是\n"); flag=0; } else //当不是首字母时 if(c1=='a' || c1=='e' || c1=='i' || c1=='o'|| c1=='u') num=num 1; scanf(" %c",&c1); } printf("%d",num); return 0; }
    c、#include int main() { char a[100]; int i,num,s; scanf("%c",&a[1]); for(i=1;a[i]!='.';i=i 1) { scanf("%c",&a[i 1]); num=i 1;} if(a[1]=='a'||a[1]=='e'||a[1]=='i'||a[1]=='o'||a[1]=='u') { printf("是\n"); s=1; } else { printf("不是\n"); s=0; } for(i=2;i<=num;i ) { if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u') s=s 1; } printf("%d",s); return 0; }
    d、#include int main() { char a[21]; int i,j,num; for(i=0;i<=19;i ) { a[i]=getchar(); if(a[i]=='.') break; } if(a[0]=='a'||a[0]=='e'||a[0]=='i'||a[0]=='o'||a[0]=='u') printf("是\n"),num=1; else printf("不是\n"),num=0; for(j=1;j<=19;j ) { if(a[j]=='a'||a[j]=='e'||a[j]=='i'||a[j]=='o'||a[j]=='u') num ; } printf("%d",num); return 0; }

56、下面代码的输出结果是 2 。 int i=1; printf("%d", i);

57、下面代码的输出结果是 1 。 int j=1; printf("%d",j );

58、设a=1, b=2, c=0,表达式(!a)>=(b && c) 的值是 0 。

59、设a=0, b=1, c=2,表达式(!a)>(3-b||c) 的值是 0 。

60、程序要求的功能:从键盘输入一组非0整数,当输入0时结束。找出非0数的最小数。 请判断下面的程序段是否正确? int k,min; scanf("%d",&k); min=k; while(k!=0) { scanf("%d",&k); if(k
61、程序要求的功能:从键盘输入一组非0整数,当输入0时结束。找出非0数的最小数。 请判断下面的程序段是否正确? int k,min; scanf("%d",&k); min=k; while(k!=0) { if(k
62、x 1=2 是正确的赋值表达式。

63、a = 3; b = 4 ; c = 5; printf("%d", a
64、请完善程序,使输出结果为: 第1次调用fun函数 第2次调用fun函数 第3次调用fun函数 (注意:程序有1个空,不要添加多余的字符与空格) void fun() { int x; x ; printf("第%d次调用fun函数\n",x); } int main() { int i; for(i=0;i<3;i ) fun(); printf("\n"); return 0; }

65、先定义一个pd(int x)函数,函数形参为x,函数功能为:求整数x的百位数、十位数与个位数,当百位数>十位数 个位数时,返回1;否则,返回0。 然后在主函数main中使用循环结构,在循环体中调用pd函数,输出100到999之间所有满足上述条件的数(百位数>十位数 个位数)。(注意:程序有2个空,一个答案一行,不要添加多余的字符与空格) #include int pd(int x) { int i,j,k; i=x; j=x/10; k=x/100; if(i j
66、计算s=1-3 5-7 ......-99 101的值并输出.(注意:程序有1个空,请完善程序,不要添加多余的字符与空格) #include int main() { int i,j,k=-1; int s=0; for (i=1;i<=101; i=i 2) { k= - k; s=s j ; } printf("s=%d\n",s); printf("\n"); return 0; }

67、从大到小依次输出250到100之中所有个位数为6或7的数,要求每行输出6个数据,每列左对齐。(注意:程序有1个空,请完善程序,不要添加多余的字符与空格) #include int main() { int i,k=0; for(i=250;i>=100;i--) if(i % 10==6||i % 10==7) { printf("%d\t",i); k ; if( )printf("\n"); } printf("\n"); return 0; }

68、设计一个预测股票最佳买卖时机的程序。 输入8天的某股票预测价格,保存在数组a中,a[i]是某股票第 i 天的预测价格。 编程寻找买入与卖出的最佳时机,使获取的收益最大化。(注意:最多只能买卖一次) (如果有多种收益相同的最佳方案,输出一种即可。如果无收益方案,则输出“不推荐买入”。 ) 例如,输入:3 3 5 8 2 3 1 4 输出:最佳时机:第1天买入、第4天卖出 (注意:程序有3个空,一个答案一行,不要添加多余的字符与空格) #define n 8 #include int main() { int i,j,max,no1,no2,diff; float a[11]; for(i=1;i<=n;i ) scanf("%f",&a[i]); max=0; no1=1; no2=2; for(i=1;i<=n-1;i ) for(j=i 1;j<=n;j ) { diff= ; if(max

猜你喜欢

  • 2023-02-27 00:12
  • 2023-02-26 23:48
  • 2023-02-26 23:45
  • 2023-02-26 23:26
  • 2023-02-26 23:23
  • 2023-02-26 23:06
  • 2023-02-26 22:48
  • 2023-02-26 22:19
  • 2023-02-26 22:16
  • 2023-02-26 22:15
网站分类
最新发表
标签列表
网站地图