国家二级C语言机试(C语言程序设计)模拟试卷25
(总分:70.00,做题时间:90分钟)
一、选择题(总题数:35,分数:70.00)
1.以下是if语句的基本形式:if(表达式)语句其中“表达式”
(分数:2.00)
A.必须是逻辑表达式
B.必须是关系表达式
C.必须是逻辑表达或关系表达
D.可以是任意合法的表达式√
解析:解析:本题考查if语句,c语言中if语句中的表达式可以是任意合法的表达式。
2.有以下程序main(){int a=0,b=0,c=0,d=0;if(a=1)b=1;c=2;else d=3;printf("%d,%d,%d,%d\n”,a,b,c,d);}程序输出
(分数:2.00)
A.0,0,0,3
B.1,1,2,0
C.编译有错√
D.0,1,2,0
解析:解析:if语句的格式为:if(表达式)语句1 else 语句2 if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句。因此题目“if(a=1)b=1;c=2;else d=3;”,if分支有两条语句,没构成复合语句。
3.有以下程序main(){int x=1,y=0;if(!x)y++;else if(x==0) if(x)y+=2; else y+=3;printf("%d \n",y);}程序运行后的输出结果是
(分数:2.00)
A.2
B.0 √
C.1
D.3
解析:解析:x=1,if和else if的条件都不满足,故y值不改变输出。
4.若变量己正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是
(分数:2.00)
A.ch=getchar()
B.a==b+c
C.a<>b+c √
D.a++
解析:解析:在if()语句的括号是一个合法的C语言表达式即可,如果表达式的值为0,则不执行if语句,否则执行if语句,而在选项C)中,符号<>不是C语言的合法运算符,如果要表达a大于或小于b+c可用a!=b+c或(a>b+c)‖(a<b+c)来表达,而不能使用a<>b+c。所以它不是一个合法的C语言表达式。5.有以下程序段int a,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%d b=%d c=%d\n",a,b,c);程序的输出结果是
(分数:2.00)
A.a=10 b=50 c=30
B.a=10 b=30 c=10
C.a=10 b=50 c=10 √
D.a=50 b=30 c=50
解析:解析:本题的程序段首先定义三个整型变量a,b,c,并且其初始值分别等于10,50,30,然后判断a>b是否成立,如果条件成立,则把b的值赋给a,把c的值赋给b。由a和b的初始值可知,此条件
表达式不成立,所以a和b的值保持不变。再执行下一条语句,把a的值赋给c,所以c的当前值等于10,最后由输出语句输出变量a,b,c的当前值,分别为10,50,10。
6.设有定义: int a=1,b=2,c=3;以下语句中执行效果与其它三个不同的是
(分数:2.00)
A.if(a>b)c=a;a=b;b=c;√
B.if(a>b){c=a,a=b,b=c;}
C.if(a>b)c=a,a=b,b=c;
D.if(a>b){c=a;a=b;b=c;}
解析:解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项B)、C)、D)表示的功能相同,而选项A)表示的是一条if语句,两条赋值语句。
7.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是
(分数:2.00)
A.必须是整数值
B.必须是正数
C.可以是任意合法的数值√
D.必须是逻辑值
解析:解析:在if语句中,表达式可以是任意合法的数值。当其值为非零时,执行if语句,为0时执行else语句。
8.有如下嵌套的if语句if(a<b)if(a<c)k=a; else k=c; else if(b<c)k=b; else k=c;以下选项中与上述if语句等价的语句是
(分数:2.00)
A.k=(a<b)?((bc)?b:c);
B.k=(a<c)?b:c;
C.k=(a<c)?a:c;
D.k=(a<b)?((a<c)?a:c):((b<c)?b:c);√
解析:解析:嵌套的if else语句的含义是,在变量a的信小干蛮量h的值,同时,变量a的值小于变量c的值时,把变量a的值赋给变量k。在变量a的值小于变量b的值,同时,变量a的值大丁等丁变量c的值时,把变量c的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值小于变量c的值时,把变量b的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值大于等于变量c的值时,把变量c的值赋给变量k。
9.math.h文件,不能够正确计算上述公式的程序段是
(分数:2.00)
A.y=sqrt(x);if(x<0)y=sqrt(-x);√
B.if(x>=0)y=sqrt(x);else y=sqrt(-x);
C.if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);
D.y=sqrt(x>=0?x:-x);
解析:解析:由题意可知计算公式的含义是:当x大于等于0时,y值等于x的算术平方根;当x小于0时,y值等于x的相反数的算术平方根。所以选项B)用一个完整的if else语句表达了计算公式的含义;选项C)用两个if语句表达了计算公式的含义;选项D)在求平方根函数的后面用x≥0?x:-x条件表达式来表达了计算公式的含义。选项A)没有用C语言语句正确的表达计算公式的含义。
10.有以下程序#include main() { int x;scanf("%d",&x);if(x<=3);else if(x!=10)printf("%d \n",x);}程序运行时,输入的值在哪个范围才会有输出结果
(分数:2.00)
A.不等于10的整数
B.大于3或等于10的整数
C.小于3的整数
D.大于3且不等10的整数√
解析:解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于3且不等于10时打印出来。
11.有以下程序main(){int a=1,b=2,c=3,d=0;if(a==1&&b++==2) if(b!=2‖c--!=3) printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d \n",a,b,c);}程序运行后的输出结果是
(分数:2.00)
A.1,3,2
B.1,2,3
C.1,3,3 √
D.3,2,1
解析:解析:a,b,c,d初始值分别为1,2,3,0。嵌套的if语句中,第一个if中,表达式a==1&&b++==2值为1,执行嵌套的if分支,此时“b=3,b!=2”成立,由于运算符是‖,不管后面一个表达式的值是不是1,其整个表达式的值总是1,“c--!=3”表达式不执行,最后打印出a,b,c的值是1,3,3。
12.下列条件语句中,输出结果与其他语句不同的是
(分数:2.00)
A.if(a==0)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)printf("%d\n",x);else printf("%d\n",y);
解析:解析:选项B)、C)、D)这三条语句都是在变量不等于0的情况下,输出x;等于0的情况下输出y,而选项A)则正好相反。
13.若有以下程序#include<stdio.h>main(){int a=1,b=2,c=3,d=4;if((a=2)‖(b=1))c=2;
if((c==3)&&(d=-1))a=5; printf("%d,%d,%d,%d\n",a,b,c,d);}则程序的输出结果是(分数:2.00)
A.2,1,2,-1
B.2,2,2,4 √
C.5,1,2,-1
D.1,2,3,4
解析:解析:代码中有两条并列的if语句,第一条if语句执行,(a=2)‖(b=1)值为1,由于逻辑或表达式,根据其短路运算规则,a=2,b=2,即b值不变执行if分支c=2。并列的if语句中表达式(c==3)&&(d=-1)为逻辑与表达式,c=3不成立,不考虑d=-1表达式,d为5,逻辑表达式值为0,不执行相应if分支。
14.若有以下程序#include<stdio.h>main(){int a=1,b=2,c=3,d=4,r=0; if(a!=1);else r=1;if(b==2)r+=2; else; if(c!=3)r+=3; else; if(d==4)r+=4; printf("%d\n",r);}则程序的输出结果是
(分数:2.00)
A.10
B.6
C.7 √
D.3
解析:解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d=4成立,执行该if分支语句,r+=4,r=7。
15.若有以下程序#include<stdio.h>main(){int a=1,b=2,c=3,d=4; if((a=2)&&(b=1))c=2;
if((c==3)‖(d=-1))a=5; printf("%d,%d,%d,%d\n",a,b,c,d);}则程序的输出结果是(分数:2.00)
A.2,1,2,一1
B.2,2,2,4
C.1,2,3,4
D.5,1,2,一1 √
解析:解析:代码中有两条并列的if语句,第一条if语句,逻辑与表达式(a=2)&&(b=1)中,a=2,则执行b=1,得到该逻辑与表达式值为1,执行分支语句c=2;第二条if语句(c==3)‖(d=-1),c==3不成立,执行d=-1,而后得出整个逻辑与表达式值为1,执行分支语句a=5。
16.若有以下程序main(){int a=1,b=2,c=3,d=4,r=0;if(a!=1);else r=1;if(b==2)r+=2;if(c!=3);r+=3; if(d==4)r+=4; printf("%d\n",r);}则程序的输出结果是
(分数:2.00)
A.7
B.10 √
C.6
D.3
解析:解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b=2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行语句r+=3。r=6;第四条if 分支d=4成立,执行该if分支语句,r+=4,r=10。
17.以下叙述中正确的是
(分数:2.00)
A.if语句只能嵌套一层
B.不能在else子句中再嵌套if语句
C.if子句和else子句中可以是任意的合法的C语句√
D.改变if-else语句的缩进格式,会改变程序的执行流程
解析:解析:含else子句的if语句的格式为 if(表达式)语句1 else 语句2 其中if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句,对于if和else语句的嵌套原则是比较自由的。
18.以下选项中与if(a==1)a=b;else a++;语句功能不同的switch语句是
(分数:2.00)
A.switch(a) {case 1:a=b;break; default:a++; }
B.switch(a==1) {case 0:a=b;break; case 1:a++: } √
C.switch(a) {default:a++;break; case 1:a=b; }
D.switch(a==1) {case 1:a=b;break; case 0:a++; }
解析:解析:本题主要考查if和switch结构。“if(a==1)a=b;else a++;”代码段的功能是如果a等于则把b的值赋值给a,否则a++。选项A)使用switch对a进行判断,如果是1则a=b,跳出switvch,如果是其他值则a++;选项B)对a=1的结果进行switch判断,如果为0表示a不等于1则a=b,和题目要求不符合;选项C)和选项A)一样;选项D)和选项case条件相反,满足题目要求。
19.若以下选项中变量全部为整型变量,且己正确定义并赋值,则语法正确的switch语句是
(分数:2.00)
A.switch(a+b) {case 1:case 3:y=a+b; break; case 0:case 4:y=a-b; }
B.switch(a*a+b*b) {default:break; case 3:y=a+b;break; case 2:y=a-b;break;} √
C.switch(a+9) {case c1:y=a-b; case c2:y=a+b; }
D.switch a*b {case 10:x=a+b; default :y=a-b; }
解析:解析:本题考查switch的使用。选项A)中的case 0和case 4没有break语句:选项B)正确;选项C)中的case后面不是常量,错误;选项D)中switch后面没有括号。
20.有以下程序main(){int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0:a++;break;case 1:b++;break;} case 2:a++;b++;break;case 3:a++;b++;} printf("a=%d,b=%d\n",a,b);}程序的运行结果是
(分数:2.00)
A.a=2,b=2
B.a=1,b=1
C.a=1,b=0
D.a=2,b=1 √
解析:解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个switch(x)判断,进入case 1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case 2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1。
21.若有定义: float x=1.5;int a=1,b=3,c=2;则正确的switch语句是
(分数:2.00)
A.switch(a+b){case 1:printf("*\n"); case 2+1:printf("**\n");} √
B.switch((int)x);{case 1:printf("*\n");case 2:printf("**\n");}
C.switch(x){case 1.0:printf("*\n");case 2.0:printf("**\n");}
D.switch(a+b){case 1:printf("*\n");case c:printf("**\n");}
解析:解析:在C语言中,switch()后一对圆括号中的可以是整型表达式或字符表达式。case语句后面的常量表达式的类型必须与switch后圆括号中的表达式类型相同,各case语句标号的值应该互不相同,选项B)中switch后括号表达式出错,选项C)中case后面的常量类型不正确,选项D)中case后面出现了变量表达式,所以D)不正确。
22.下列叙述中正确的是
(分数:2.00)
A.在switch语句中必须使用default
B.break语句必须与switch语句中的case配对使用
C.在switch语句中,不一定使用break语句√
D.break语句只能用于switch语句
解析:解析:break为C语言关键字,又称间断语句。break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在switch语句中,也可以出现在循环语句中。default是关键字,起标号的作用,代表所有case标号之外的那些标号。default标号可以出现住语句体中任何标号位置上。在switch语句体中也可以没有default标号。
23.有以下程序main(){int k=5,n=0; do{switch(k){ case 1:case 3:n+=1;k--;break; default:n=0;k--; case 2:case 4:n+=2;k--;break;} printf("%d",n);} while(k>0&&n<5)}运行以后的输出结果是
(分数:2.00)
A.0235
B.235 √
C.02356
D.2356
解析:解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,“n=0,k=4”,没有break语句,因此执行case 2分支语句,n为2,k为3,程序进行第2次循环,执行“case 3:n=3,k=2”,输出n值为3,程序进行第3次循环,执行case 3这个分支,结果是“n=5,k=1”,打印出5;这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束。
24.以下选项中与if(a==1)a=b;else a++;语句功能不同的switch语句是
(分数:2.00)
A.switch(a==1){case 0:a=b;break;case 1:a++;} √
B.switch(a){case 1:a=b;break;default:a++;}
C.switch(a){default:a++;break;case 1:a=b;}
D.switch(a==1){case 1:a=b;break;case 0:a++;}
解析:解析:if else语句的含义是,如果变量a的值等于1,则把变量b的值赋给变量a,否则,变量a 的值加1。在本题的4个选项中,与其含义不同的是选项A),表示如果变量a的值等于1,则把变量a的值加1,否则,把变量b的值赋给变量a。
25.有以下程序#includemain(){int x=1,y=0,a=0,b=0;switch(x){case 1:switch(y) {case 0:a++;break; case 1:b++;break;} case 2:a++;b++;break;} printf("a=%d,b=%d\n",a,b); }程序运行后的输出结果是
(分数:2.00)
A.a=1,b=1
B.a=1,b=0
C.a=2,b=1 √
D.a=2,b=2
解析:解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个switch(x)判断,进入case 1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行 case 2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1。
26.若以下选项中的变量a,b,y均已正确定义并赋值,则语法正确的switch语句是
(分数:2.00)
A.switch(a*a+b*b){default:break;case 3:y=a+b;break;case 2:y=a-b;break;} √
B.switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}
C.switch (a+9){ case a:y=a-b;case b:y=a+b;}
D.switch a*b{case 10:y=a+b;default:y=a-b;}
解析:解析:使用switch语句直接处理多个分支,其一般形式为: switch(表达式) { case常量表达式1:语句1:break;…… case常量表达式n:语句n;break;default:语句n+1;break;} switch 语句的执行流程是:首先汁算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句。对于选项B),case语句和常量之间没有空恪,而选项C)中的case后面为变量,选项D)中switch后面没给出圆括号。
27.在嵌套使用if语句时,C语言规定else总是
(分数:2.00)
A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对√
D.和之前的第一个if配对
解析:解析:本题考查if语句,在C语言中,else总是和之前与其最近的且不带else的if配对。
28.以下程序段中,与语句: k=a>b?(b>c?1:0):0;功能相同的是
(分数:2.00)
A.if((a>b)‖(b>c))k=1;else k=0;
B.if(a<=b)k=0;else if(b<=c)k=1;
C.if((a>b)&&(b>c))k=1;else k=0;√
D.if(a>b)k=1;else if(b>c)k=1;else k=0;
解析:解析:题干中的表达式的功能是当a>b并且b>c时,变量k的值等于1,其余情况下,变量k的值都是等于0。
29.关于“while(条件表达式)循环体”,以下叙述正确的是
(分数:2.00)
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数与循环体的执行次数一样
C.条件表达式的执行次数总是比循环体的执行次数多一次√
D.条件表达式的执行次数与循环体的执行次数无关
解析:解析:while语句中表达式是循环条什,语句为循环体。while语句中当表达式计算的值为真(非0)时,执行循环体语句。因此条件表达式执行的次数总是比循环体多一次。
30.有以下程序#include<stdio.h>main()(int y=10; while(y--); printf("y=%d\n",y);}程序执行后的输出结果是
(分数:2.00)
A.y=0
B.y=-1 √
C.y=1
D.while构成无限循环
解析:解析:在while循环中每次变量y的值减1,直到其值等于0时退出循环,这时y的再减1变为-1。
31.有以下程序main(){int k=5;while(--k)printf("%d",k-=3):printf("\n");}执行后的输出结果是
(分数:2.00)
A.2
B.4
C.1 √
D.死循环
解析:解析:在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出1,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。
32.有以下程序main(){int y=10; while(y--); printf("y=%d\n",y);}程序执行后的输出结果是(分数:2.00)
A.y=0
B.y=1
C.y=-1 √
D.while构成无限循环
解析:解析:while循环语句的循环体为空语句,所以每一次循环程序什么都不做。当循环自变量y=0时,退出循环结束,变量y执行自减运算,得-1,所以打印输出变量y的值-1。
33.有以下程序#include<stdio.h>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,则输出结果是
(分数:2.00)
A.66656
B.6566456 √
C.66666
D.6666656
解析:解析:这道试题主要考查了switch和break语句,当变量s的值为1时,执行case1、case 2两条语句,输出65;当变量s的值为2时,执行case 2语句,输出6;变量s的值为3时,执行case3、default 两条语句,输出64;变量s的值为4时,执行default语句,输入5;变量s的值为5时,执行default 语句,输出6;变量s的值为0时,程序运行结束。
34.有以下程序#includemain(){int a=7;while(a--); printf("%d\n",a);}程序运行后的输出结果是
(分数:2.00)
A.0
B.1
C.-1 √
D.7
解析:解析:在while语句中,先判断while后面的表达式是否为0,如果为0,则退出循环,否则执行循环体。在本题中,当变量a的值经过几次循环后,其值等于0时,退出while循环语句,变量a再执行自减运算,所以其值等于-1。
35.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
(分数:2.00)
A.(E>0‖E<0) √
B.(!E==0)
C.(E!=0)
D.(E==0)
解析:解析:在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项A)中表达式E>0‖E<0是一个逻辑表达式。
《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”; D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 x = 9; while (x > 7)
长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include
printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include
printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include
C语言程序设计试题1 一、单项选择题 1.C语言规定,在一个源程序中main函数的位置______d___ 。 A.必须在最开始B.必须在最后 C.必须在预处理命令的后面D.可以在其他函数之前或之后 2.以下选项中,_________d__ 是C语言关键字 A.printf B.include C.fun D.default 3.已知有声明"int a=3,b=4,c;",则执行语句"c=1/2*(a+b);"后,c的值为____a_ 。 A.0 B.3 C.3.5 D.4 4.设指针变量占4个字节的内存空间,若有声明"char *p="123";int c;",则执行语句 "c=sizeof(p);"后,c的值为__d__ A.1 B.2 C.3 D.4 5.已知有声明"int a=3,b=4;",下列表达式中合法的是_d___。 A.a+b=7 B.a=|b| C.a=b=0 D.(a++)++ 6.已知有声明"char s[20]="Hello";",在程序运行过程中,若要想使数组s中的内容修改为"Good",则以下语句中能够实现此功能的是___d_。 A.s="Good"; B.s[20l="Good"; C.strcat(s,"Good"); D.strcpy(s,"Good"); 7.已知有声明"int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};",若需要引用值为12的数组元素,则下列选项中错误的是_a___ 。 A.*(a+2)+3 B.*(*(a+2)+3) C.*(a[2]+3) D.a[2][3] 8.已知有声明"int n;float x,y;",则执行语句"y=n=x=3.89;"后,y的值为_b___ 。 A.3 B.3.0 C.3.89 D.4.0 9.已知有声明"int a=12,b=15,c;",则执行表达式"c=(a||(b-=a))"后,变量b和c的值分别为 __b__。 A.3,1 B.15,12 C.15,1 D.3,12 10.下面的函数定义正确的是_____d________ A)float fun (float x ; float y) {return x*y;} B)float fun (float x,y) {return x*y;} C)float fun (x,y) {int x,y;return x*y;} D)int fun (int x, int y) {return x*y;} 11.某程序需要使用一个代表常数3.14的符号常量名P,以下定义中正确的是_d___。 A.#define P 3.14; B.#define P(3.14) C.#define P=3.14; D.#define P 3.14 12.下列四个选项中,属于C语言关键字的是__c__ 。 A.Float B.single C.double D.real 13.已知某编译系统中signed int类型数据的长度是16位,该类型数据的最大值是_D___。 A.32767 B.32768 C.127 D.65535
2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include
#include
习题7 7.1选择题。 (1)下列对字符串的定义中,错误的是: A 。 A) char str[7] = "FORTRAN"; B) char str[] = "FORTRAN"; C) char *str = "FORTRAN"; D) char str[] = {'F','O','R','T','R','A','N',0}; (2)以下程序段的输出结果是:____D_________ char a[] = "ABCDE" ; char *p = NULL; for (p=a; p main() { static char a[5]; a = "abcde" ; printf("%s\n", a); }
B) #include <> main() { static char a[7]= "goodbye!"; printf("%s\n", a) ; } C) #include <> main() { char a[5] = "abcde"; printf("%s\n", a) ; } D) #include <> main() { static char a[]="abcde"; printf("%s\n", a) ; } (4)阅读下列函数,函数功能为___A_____。 void Exchange(int *p1, int *p2) { int p; p = *p1; *p1 = *p2; *p2 = p; } A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值 C)交换*p1和*p2的地址 D)可能造成系统故障
《C语言程序设计》模拟试卷A 一、单项选择题(每题2分,共20分) 1、下列有关C语言的叙述中错误的就是(D)。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被瞧作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的就是(C)。 A) MAIN B) _HJ C) 2ong D) LINE1 3、以下能正确定义一维数组的就是(C)。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 4、执行下列程序段后输出的结果就是(C)。 x = 9; while (x > 7) { printf(“*”); x- -; } A) **** B) *** C) ** D) * 5、设char str1[10] = “ABCDE”, str2[10] = “xyz”; 则执行语句 printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果就是(D)。 解析: strcpy(str1,str2); 后,str1[] 里就是"XYZ", Z 后面有字符串结束符 strcpy(str1,str2); 执行后,函数返回的就是str1, 因为str1[] 里就是新值"XYZ", 而 strlen(strcpy(str1,str2)) 就就是strlen(str1的新值),所以得3。 strlen 统计到字符串结束符以前,即,不计入字符串结束符。 A) 9 B) 8 C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的就是(A)。
二级(C语言程序设计)上机题汇总 一、程序调试题 (一)程序填空 练习一: /*该程序功能:对x=1,2,。。。。。,10,f(x)=x*x*-5*x+sin(x)的最大值。*/ #include
void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= __m%2___; m=m/2; } for(;j!=0;j--) printf("%d", ____bin[j-1]_ _____ ); } void main() { int n; scanf("%d",&n); Dec2Bin(n); } 练习四: /*该程序功能:输入数组x[7],调用函数f,去除数组中的负数,输出结果为:1 3 4 6*/ #include
C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。
3算法描述流程图
4源程序 #include
for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。
c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1. A 2. C 3. D 4. A 5. B 1.以下4组用户定义标识符中,全部合法的一组是() A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是() #include
C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(
#include
《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案 (教育部考试中心)高等教育出版社出版 (第一章、第二章、第三章) 第一章程序设计基本概念 1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。 答案:.exe 1.2 C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。 答案:.c .obj .exe 1.3 结构化程序由_____、_____、_____三种基本结构组成。 答案:顺序、选择、循环 第二章 C程序设计的初步知识 一、选择题 2.1 以下选项中正确的整型常量是 A)12. B)-20 C)1,000 D)4 5 6 答案:B 2.2 以下选项中正确的实型常量是 A)0 B)3. 1415 C)0.329×10(2)(10的2次方)D).871 答案:D 2.3 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2 答案:B 2.4 以下选项中不合法的用户标识符是 A)abc.c B)file C)Main D)PRINTF 答案:A 2.5 以下选项中不合法的用户标识符是 A)_123 B)printf C)A$ D)Dim 答案:C 2.6 C语言中运算对象必需是整型的运算符是 A)% B)/ C)! D)** 答案:A 2.7 可在C程序中用作用户标识符的一组标识符是 A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG 答案:B 2.8 若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B 2.9 以下叙述中正确的是 A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。 B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。 C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0。 D)已有a=3,b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。 答案:B 2.10 以下叙述中正确的是 A)在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。 B)C程序由主函数组成。 C)C程序由函数组成。 D)C程序由函数和过程组成。 答案:C 2.11 TURBO C中int类型变量所占字节数是 A)1 B)2 C)3 D)4 答案:B
C语言程序设计试题 (2008 /2009 学年第二学期) 一.选择题(满分30分,每题2分) 1.若a、b、c都定义为int类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j,i=1;执行语句“j=i++;”后,变量i的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C语言中函数返回值的类型由 D 决定的。 A. return语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。8. 若int i=10;执行下列程序后,变量i的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A. char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include 《C语言程序设计》模拟试卷二 一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2; 则执行下述printf语句的输出结果是___1.000000___ _____。 printf("%f\n",1.0+x/y); 2.执行下述程序 #include float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( X>0&&X<=100 ) { if (x>amax) amax=x; else if (x _k++ _________; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是_-3 -4 0 4 4 3___ ____。 #inclued C 语言程序设计 请编写函数fun ,其功能是:找出2W 整型二维数组中最大元素的值,并将此值返回调用函 数。 int fun (int a[][M]) { int i,j,max=a[O][O]; for(i=0;i<2;i++) for(j=0;j 实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果: 项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果: 一、单项选择题(本大题共20题,每题2分,共40分) 1、以下不是C语言的特点的是 A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是 A、ABC B、abc C、a_bc D、ab.c3、一个C语言程序是由。 A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是 A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为 A、int B、float C、double D、不确定6、在C语言中,char型数据在内存中的存储形式是。 A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果 是。 #include C 语言程序设计 请编写函数fun ,其功能是:找出2×M 整型二维数组中最大元素的值,并将此值返回调用函 数。 int fun (int a[][M]) { int i,j,max=a[0][0]; for(i=0;i<2;i++) for(j=0;j 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师 实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include 2. (1) 改正后的源程序: #include C语言程序设计模拟试题2(附答案)
二级C语言程序设计题
C语言程序设计实验实验指导书及答案
C语言程序设计期末考试试卷
二级C语言程序设计题
C语言程序设计实验报告(实验1-12)