当前位置:首页 » 编程语言 » c语言程序设计答案沈显君

c语言程序设计答案沈显君

发布时间: 2023-04-19 01:29:38

A. c语言二级考试题及答案

2011年3月全国计算机等级考试二级笔试试卷
C语言程序设计
(考试时间90分钟,满分100分)

一、 选择题(1-10,21-40每题2分,11-20每题1分,共70分)

(1)下列关于栈叙述正确的是
A)栈顶元素最先能被删除
B)栈顶元素最后才能被删除
C)栈底元素永远不能被删除
D)以上三种说法都不对

(2)下列叙述中正确的是
A)有一个以上根结点的数据结构不一定是非线性结构
B)只有一个根结点的数据结构不一定是线性结构
C)循环链表是非线性结构
D)双向链表是非线性结构

(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)
A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档是
A)软件集成测试计划 B)软件详细设计说明书
C)用户手册 D)软件需求规格说明书

(5)结构化程序所要求的基本结构不包括
A)顺序结构 B)GOTO跳转
C)选择(分支)结构 D)重复(循环)结构

(6)下面描述中错误的是
A)系统总体结构图支持软件系统的详细设计
B)软件设计是将软件需求转换为软件表示的过程
C)数据结构与数据库设计是软件设计的任务之一
D)PAD图是软件详细设计的表示工具

(7)负责数据库中查询操作的数据库语言是
A)数据定义语言
B)数据管理语言
C)数据操纵语言
D)数据控制语言

(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是
A)1:1联系 B)1:m联系
C)m:1联系 D)m:n联系

(9)有三个关系R、S和T如下:


则由关系R和S得到关系T的操作是
A)自然连接 B)交 C)除 D)并

(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是
A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5}

(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是
A)C语言程序仅可以编译执行
B)C语言程序仅可以解释执行
C)C语言程序既可以编译执行又可以解释执行
D)以上说法都不对

(12)以下叙述中错误的是
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能直接在计算机上运行
C)通过编译得到的二进制目标程序需要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

(13)以下选项中不能用作C程序合法常量的是
A)1,234 B)'123'
C)123 D)"\x7G"

(14)以下选项中可用作C程序合法实数的是
A).1e0 B)3.0e0.2
C)E9 D)9.12E

(15)若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是
A)a=(b=4)=3; B)a=b=c+1;
C)a=(b=4)+c; D)a=1+(b=c=4);

(16)有以下程序段
char name[20];
int num;
scanf("name=%s num=%d",name;&num);
当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为
A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001

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

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

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

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

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

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

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

(24)设有定义:doublex[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是
A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));
C)scanf("%lf",p+6); D)scanf("%lf",p[6]);

(25)有以下程序(说明:字母A的ASCII码值是65)
#include
void fun(char *s)
{ while(*s)
{ if(*s%2) printf("%c",*s);
s++;
}
}
main()
{ char a[]="BYTE";
fun(a); printf("\n");
}
程序运行后的输出结果是
A) BY B) BT C) YT D) YE

(26)有以下程序段
#include
main()
{ …
while( getchar()!='\n');

}
以下叙述中正确的是
A)此while语句将无限循环
B) getchar()不可以出现在while语句的条件表达式中
C)当执行此while语句时,只有按回车键程序才能继续执行
D)当执行此while语句时,按任意键程序就能继续执行

(27)有以下程序
#include
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
程序运行后的输出结果是
A)3 B)2 C)1 D) 0

(28)若有定义语句:chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是
A)p=s; B)p=k; C)p=s[0]; D)k=s;

(29)有以下程序
#include
void fun(char *c)
{ while(*c)
{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');
c++;
}
}
main()
{ char s[81];
gets(s); fun(s); puts(s):
}
当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是
A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
#include
#define N 10
void fun(int x[N])
{ int i=0;
while(i<>
}
在程序中下划线处应填入的是
A)x+i B)&x[i+1]C)x+(i++) D)&x[++i]

(31)有以下程序
#include
main()
{ char a[30],b[30];
scanf("%s",a);
gets(b);
printf("%s\n %s\n",a,b);
}
程序运行时若输入:
how are you? I am fine<回车>
则输出结果是
A)how are you? B)how I am fine are you? I am fine
C)how are you? I am fine D)row are you?

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

(33)有以下程序
#include
int fun (int x,int y)
{ if (x!=y) return ((x+y);2);
else return (x);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是 A)3 B)6 C)8 D)12

(34)有以下程序
#include
int fun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是 A)0 B)10 C)30 D)64

(35)有以下程序
#include
#define S(x) 4*(x)*x+1
main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
}
程序运行后的输出结果是 A)197 B)143 C)33 D)28

(36)设有定义:struct {charmark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是
A)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;

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

(38)有以下程序
#include
struct S
{ int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程序运行后的输出结果是 A)10 B)11 C)20 D)21

(39)有以下程序
#include
main()
{ unsigned char a=8,c;
c=a>>3;
printf("%d\n",c);
}
程序运行后的输出结果是 A)32 B)16 C)1 D)0

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

二、填空题
(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】 测试

(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。


(6)以下程序运行后的输出结果是 【6】。
#include
main()
{ int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}

(7)有以下程序
#include
main()
{ int x;
scanf("%d",&x);
if(x>15) printf("%d",x-5);
if(x>10) printf("%d",x);
if(x>5) printf("%d\n",x+5);
}
若程序运行时从键盘输入12<回车>,则输出结果为 【7】 。

(8)有以下程序(说明:字符0的ASCII码值为48)
#include
main()
{ char c1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2);
}
若程序运行时从键盘输入48<回车>,则输出结果为 【8】 。

(9)有以下函数
void prt(char ch,int n)
{ int i;
for(i=1;i<=n;i++)
printf(i%6!=0?"%c":"%c\n",ch);
}
执行调用语句prt('*',24);后,函数共输出了 【9】 行*号。

(10)以下程序运行后的输出结果是 【10】。
#include
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}

(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。
void fun(int a[N],int k)
{ int i;
for(i=k;i
}

(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。
#include
【12】 ;
main()
{ double x,y,(*p)();
scanf("%lf%lf",&x,&y);
p=avg;
printf("%f\n",(*p)(x,y));
}
double avg(double a,double b)
{ return((a+b)/2);}

(13)以下程序运行后的输出结果是 【13】。
#include
main()
{ int i,n[5]={0};
for(i=1;i<=4;i++)
{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }
printf("\n");
}

(14)以下程序运行后的输出结果是 【14】。
#include
#include
#include
main()
{ char *p; int i;
p=(char *)malloc(sizeof(char)*20);
strcpy(p,"welcome");
for(i=6;i>=0;i--) putchar(*(p+i));
printf("\n-"); free(p);
}

(15)以下程序运行后的输出结果是 【15】。
#include
main()
{ FILE *fp; int x[6]={1,2,3,4,5,6},i;
fp=fopen("test.dat","wb");
fwrite(x,sizeof(int),3,fp);
rewind(fp);
fread(x,sizeof(int),3,fp);
for(i=0;i<6;i++) printf("%d",x[i]);
printf("\n");
fclose(fp);
}

2011年3月全国计算机等级考试二级笔试试卷
C语言程序设计答案

一.选择题1-5 ABDDB
6-10 ACDCB 11-15 ADBAA
16-20 ADCAD 21-25 BDBCD
26-30 CDCCC 31-35 BBBDB
36-40 CDDCB
二,填空题
1) 顺序 2) DEBFCA 3) 单元测试 4) 主键 5) D 6) 3 7) 1217
8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715
14) e(E)moclew 15) 123456
2010年9月全国计算机等级考试二级C笔试试卷答案
一、选择题
1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB
21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD 36~40 :BACBD

二、填空
1.1DCBA2345 2.n-1 3.25 4.结构化 5.物理设计 6.2008
7.15 8.非0 9. 1 4 13 40 10.i 11.2
12.a[row][col] 13.3 14.*s 15.FILE

B. C语言程序设计作业题-

《C语言程序设计》作业与思考题解答

说明:习题中P119:2.7 表示《C/C++上机实践及习题选解》中第119页的2.7题,其它以此类推,书后有解答。非《C/C++上机实践及习题选解》中的习题提供习题参考答案。

习题解答

作业一

1.合法的标识符: a12 A21 sum2 _fun C_program

不合法的标识符:f(x) $a21 21a while [email protected]

2.

main( )

{ int i, j, s;

i=2; j=3;

s=i*j;

printf(“ %d %d=%d”,i,j,s)

}

作业二

1.指出下列哪些为C语言正确的整型(int)常量、实型(float)常量、字符型(char)常量?

正确的整型(int)常量:0 -325 128 03456

正确的实型(float)常量: 0.0 2. 1.2e-3 5e2

正确的字符型(char)常量: ‘b’ ‘104’ ‘108’ ‘ ’ ‘8’

2.表达式的结果 (1) 1

(2) 0

(4) 0

(5) 9.5

(9) ‘A’

(11) 2

(12) 4.5

3. Y=sin(2*x)+(a+b)/(a*b)/(1+a/b)+*a*a/2

4.设m为整数,用逻辑表达式表示:能同时被3与7整除或者被5除余2且小于100的整数。

m%3= =0 && m%7= =0 || m%5= =2 && m<100

作业三

1.华氏温度通过公式C=5/9(f-32)转换成摄氏温度。试编程并上机调试运行:从键盘上输入华氏温度,利用公式计算后输出摄氏温度(要求:保留一位小数;记录调试过程中遇到的问题及解决方法)。

#include

main( )

{ float f,c;

scanf(“%f”,&f);

c=5.0/9*(f-32);

printf(“c=%.1f”,c);

}

2.

用IF语句:

#include

#include

main( )

{ float x,y;

scanf(“%f”,&x);

if (x<0) y=fabs(x);

else if (x<10) y=x;

else if (x<20) y=3-x/5;

else if (x<40) y=3*x-10;

else y=0;

printf(“y=%f’,y);

}

用switch 语句:

#include

#include

main( )

{ float x,y;

scanf(“%f”,&x);

if (x<0) y=fabs(x);

else switch ( int(x/10) )

{ case 0: y=x; break;

case 1: y=3-x/5;break;

case 2,3: y=3*x-10; break;

defaut y=0;

}

printf(“y=%f’,y);

}

3. 解答见P151;

4.程序如下:

#include

#include

main()

{

int i=0;

char ch;

ch=getchar();

while (ch!=' ')

{ if (ch=='(') i++;

if (ch==')') i--;

if (i<0) break;

ch=getchar();

}

if (i==0) printf("(与)匹配") ;

else if (i<0) printf(" 缺) ") ;

else printf("缺少)");

}

5. 程序如下:

#include

main()

{

int i,j,k,m=0;

for (i=1;i<10;i++)

for (j=1;j<20;j++)

{ k=100-i*10-j*5;

if (k>0) { printf(" i=%-3dj=%-3dk=%-3d",i,j,k);

m++;

if (m%4==0) putchar(' ');

}

}

printf(" m=%d ",m);

}

6. 在横线上填写合适语句,完善程序,使之完成如下功能:从键盘上输入一个不多于7位的正整数,统计其中2的个数,并求各位数字中的最小数。

#include

main( )

{int count,min,temp;

long n;

min=9; count=0;

scanf( “%ld” ,&n);

do

{ temp= n % 10 ;

if (temp= =2) count++;

if (min>temp) min=temp;

n=n/10;

}while ( n );

printf(“count=%d,min=%d”,count,min)

}

作业四

1.p128: 4.6 解答见p156

2. p128: 4.11 解答见p158

3.编写一递归函数计算mn ,并从键盘输入m,n的值(如4,3),求mn 的值(上机调试)。

funm_n(int m,int n)

{

int y;

if (n==1) y=m;

else y=m*funm_n(m,--n);

return y;

}

main()

{int m,n,y;

printf("Input integer(m,n):");

scanf("%d,%d",&m,&n);

y=funm_n(m,n);

printf(" %d^%-d=%-d",m,n,y);

}

4.P128: 4.12 (3); 答案:12345678

5.求3-100中的素数,要求编写一函数来判断某数是否为素数。

main()

{

int prime,i,n=0;

for (i=3;i<=100;i++)

{ prime=prime_num(i);

if (prime) { if (n%10==0) printf(" ");printf("%4d",prime);n++;}

}

}

prime_num(int m)

{ int k=2,r;

do {

r=m % k;

if (r==0) break;

k++;

}while(k<m); p=""> </m);>

if (r!=0) return m;

else return 0;

}

6. 结果如下:

main0:x=12,y=2

fun: x=6,y=25

main:x=12,y=2

fun:x=7,y=26

main:x=12,y=2

作业五

1.从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。

#include

#include

main()

{

int i=0,c[52]={0},m=0;

char str[80];

printf("Input a string:");

scanf("%s",str);

while (str[i])

{ if (str[i]>='A' && str[i] <='Z') c[str[i]-'A']++;

if (str[i]>='a' && str[i] <='z') c[str[i]-'a'+26]++;

i++;

}

for (i=0;i<26;i++)

if (c[i]){ if (m%8==0) putchar(' ');m++;

printf("%c:%-d ",i+'A',c[i]);

}

for (i=0;i<26;i++)

if (c[i+26]){if (m%8==0) putchar(' ');m++;

printf("%c:%-d ",i+'a',c[i+26]);

}

}

2. P132: 5.15 程序见p167

3.从键盘上输入8个数,用选择法按由大到小的顺序排列并输出,要求用指针实现。

#include

#include

main()

{

int data[8],i,*p1,*p2,temp;

p1=data;

printf("Input 8 numbers:");

for (i=0;i<8;i++)

{ scanf("%d",p1);/* 或 &(*p1) */ ;

p1++;

}

for (p1=data;p1<data+8-1;p1++) p=""> </data+8-1;p1++)>

for (p2=p1+1;p2<data+8;p2++) p=""> </data+8;p2++)>

if (*p1<*p2){ temp=*p1; *p1=*p2; *p2=temp;}

for (i=0,p1=data;i<8;i++,p1++)

printf("%6d",*p1 ) ;

}

4.从键盘上输入一个4 4整数矩阵,以主对角线()为对称轴,将左下角元素中较大元素代替右上角对应元素,并将右上角元素(含对角线元素)输出。

#include

#include

main()

{

int d[4][4],i,j,temp;

printf("Input 16 numbers:");

for (i=0;i<4;i++)

for (j=0;j<4;j++)

scanf("%d",&d[i][j]) ;

for (i=0;i<4;i++)

for (j=0;j<i;j++) p=""> </i;j++)>

if (d[i][j]>d[j][i]) d[j][i]=d[i][j];

for (i=0;i<4;i++)

{ printf(" ");

for (j=0;j<4;j++)

if (j>=i) printf("%6d",d[i][j] ) ;

else printf("%6c",' ') ;

}

}

5.盘上输入两个字符串a,b,下面程序将a,b的对应字符中的较大者存放在数组c的对应位置上,填空完善之。

#include

#include

main( )

{int k=0;

char a[80],b[80],c[80]={‘’},*p,*q;

p=a; q=b;

gets(a); gets(b);

while (*p!=0 || * q!=0 )

{ if ( *p!=0 ) c[k]=*p;

else c[k]=*q;

p++; q++; k++;

if ( *p !=0 ) strcat(c,p);

else strcat(c,q);

puts(c);

}

作业六

1.P134:6.5 程序见p178

2.P135:6.7 程序见p181

3.P134:6.18 程序见p196

C. C语言程序设计(201803)测试求大佬帮忙!

  1. 选D

  2. 选C;"my name"算上空格一共7个字符,加上结尾的''为8个字符,所以如果m前没有空格,那么答案为C

  3. 选C;p指向a[3]=4的地址,即p及其之后地址中的数值为{4,5,6,7,8,9,10},所以其中第5个数为p[4]=8

  4. 选C

  5. 选D;A错误,字符串应为char型;B错误,数组长度不够;C错误,没有vhst类型;D正确,可看作字符数组,{}内的数值可转为相应的ASCII字符

  6. 选C;字符数组即字符串不能直接通过"="赋值,要使用strcpy函数

  7. 选C;函数实参可以是常量、变量或表达式,该题中逗号表达式(exp2,exp3)返回exp3,(exp4,exp5,exp6)返回exp6,因此一共3个实参

  8. 选C;A错误,函数调用时不用指明其参数类型;B错误,fun函数没有返回值,不能赋给k;C正确;D错误,函数调用时不用指明其返回类型

  9. 选A;n++表示先返回n的值,再对n进行自增操作,即先令k=n,再执行n=n+1

  10. 选C;if-else不是循环结构

  11. 选D;aa表示数组首地址,即&aa[0],而不是&aa[1]

  12. 选B

  13. 选B;a[2]=3,a[2]+1=4,所以a[a[2]+1]=a[4]=5

  14. 选C;A错误,除非函数定义在调用语句之后的位置,才需要提前声明;B错误,函数返回值不一定要显示给出,没有返回值类型的默认为整型;C正确;D错误,在类的定义中,当构造函数和析构函数不需要完成操作时可用空函数来表示,但它们又是有意义的

  15. 选B;scanf需指明读入变量的地址,字符串名称c就表示字符串的地址,也即字符数组首元素的地址,不用再加取地址符&

  16. 选A

  17. 选D;同第6题

码字不易,望采纳~

D. 在C语言中,在执行 char str[10]=”ch\nina” ; strlen(str) 的结果是( )。 A、5 B、6 C、7 D、9

Neusoft

《C语言程序设计》习题集
《C程序设计》习题集
第一章C语言基础知识

1.1 填空题
1.要把高级语言编写的源程序转换为目标程序,需要使用
A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序
2. 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是
A) scanf("%d%d%d",&a,&b,d); B) scanf("%d%d%d",&a,&b,&d);
C) scanf("%d%d%d",a,b,d); D) scanf("%d%d%d",a,b,*d);
3.以下选项中合法的用户标识符是______。
A) long B) _2Test C) 3Dmax D) A.dat
4.设a和b均为誉睁double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是______。
A) 6.500000 B) 6 C) 5.500000 D) 6.000000
5.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。
A) scanf("%2d%2d%2d"庆禅岁,&i,&j,&k);
B) scanf(""%d %d %d",&i,&j,&k);
C) scanf("%d,%d,%d",&i,&j,&k);
D) scanf("i=%d,j=%d,k=%d",&i,&j,&k);
6.C语言程序的执行,总是起始于()。
A) 程序中的第一条可执行语句
B) 程序中的第一个函数
C) main函数
D) 包含文件中的第一个函数

7.下列说法中正确的是()
A) C程序书写时,不区分大小写字母
B) C程序书写时,一行只能写一个语句
C) C程序书写时,一个语句可分成几行书写
D) C程序书写时每行必须有行号

8.若有说明语句:int a; float b;,以下输入语句正确的是()
A) scanf("%f%f",&a,&b);
B) scanf("%f%d",&a,&b);
C) scanf("%d,%f",&a,&b);
D) scanf("%6.2f%6.2f",&a,&b);
9.以下程序的输出结果是()
main( )
{ int x=11,y=11;
printf("%d%d\\n",x--,--y);
}
A) 11,11 B) 10,10 C) 10,11 D) 11,10

10.执行下面程序段,给x、y赋值时,不能作为数据分隔符的是()
int x,y;
scanf("%d%d",&x,&y);
A) 空格 B) Tab键 C) 回车 D) 逗号

11.执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是。
int a;
float b;
scanf("a=%d,b=%f",&a,&b);
A) 25□2.5
B) 25,2.5
C) a=25,b=5.5
D) a=25□b=2.5

12.英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为
A) 50 B) 66 C) 52 D) 68
13.以下定义语句中错误的是( )。
A)int a=3,b=5; B)float x1; x2;
C)char c1,c2,c3; D)double y3, y4;
14.若将整数4和5赋给整型变量a和b,对于语句scanf("%d%d" , &a,&b);在从键盘袭春输入数据时,正确的数据输入格式为( )。
A)4,5 B)4 5 C)4:5 D)4#5
15.若整型变量a和b的值分别为6和8,则下列语句printf("a=%d,b=%d",a,b); 的输出结果为( )。
A)6, 8 B)6 8 C)a=6 b=8 D)a=6, b=8
16.C语言中的字符常量是以( )括起来的一个字符。
A)双引号 B)单引号 C)\……\ D)*……*
17.C语言中的转义字符\n的作用是( )。
A)回车换行 B)横向跳格
C)纵向跳至本列下行 D)将光标移至本行行首
18.若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为
A) 1.4 B) 1 C) 2.0 D) 2
19.如果要把常量327存入变量a中,a可以定义成哪些类型?(多选)
A. int B. char
C. long D. float
20.下面哪个表达式的值为4.(单选)
A. 11/3 B. 11.0/3
C. (float)11/3 D. (int)(11.0/3+0.5)
#include<stdio.h>
#include<math.h>
main( )
{int a=1,b=4,c=2;
float x=5.5,y=9.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf("%f\n",z);
}
A).9.800000 B).9.300000 C).8.500000 D).8.000000

21.main( )
{int x = 10, y = 3;
printf("%d\n",y=x/y);
}
A).0 B).1 C).3 D).不确定的值

22.main( )
{int a;
printf("%d\n";(a=3*5,a*4,a+5));
}
A).65 B).20 C).15 D).10

23.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65。以下程序
main()
{ unsigned int a=32, b=66;
printf("%c\n", a+b);
}
的结果为:
A).66 B).98 C).b D).B

24.设有如下定义
int x=10,y=3,z;
则语句
printf("%d\n",z=(x%y,x/y));
的输出结果是
A).1 B).0 C).4 D).3

25.#define SQR(X) X*X
main()
{
int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
A).10 B).1 C).9 D).0

26.#define MAX(x, y) (x)>(y)?(x):(y)
main()
{ int a=1, b=2, c=3, d=2, t;
t=MAX(a+b, c+d)*100;
printf("%d\n",t);
}
的运行结果为:
A).500 B).5 C).3 D).300

27.以下程序的输出结果是
main()
{
int x=10,y=10;
printf("%d %d\n",x--,--y);
}
A).10 10 B).9 9 C).0 10 D).10 9

28.语句:printf("%d",(a=2)&&(b= -2));的输出结果是
A).无输出 B).结果不确定 C).-1 D).1
33、当c的值不为0时, 能正确将c的值赋给变量a、b
A).c=b=a;
B).(a=c)||(b=c)
C).(a=c)&&(b=c)
D).a=c=b

29.能正确表示a和b同时为正或同时为负的逻辑表达式是
A).(a>=0||b>=0)&&(a<0||b<0) B).(a>=0&&b>=0)&&(a<0&&b<0)
C).(a+b>0)&&(a+b<=0) D).a*b>0

30.下面合法的赋值语句是
A) x+y=2002; B) ch="green"; C) x=(a+b)++; D) x=y=0316;

31.下面哪个表达式的值为4.(单选)
A. 11/3 B. 11.0/3
C. (float)11/3 D. (int)(11.0/3+0.5)

32.已知a为整型变量,那么与表达式 a!=0 真假值情况相同的表达式有哪些?(多选)
A. a>0||a<0 B. a
C. !a= =0 D. !a

33.以下非法的赋值语句是
A) n=(i=2,++i); B) j++; C) ++(i+1); D) x=j>0;
34.若有以下程序:
main()
{int k=2,i=2,m;
m=(k+=i*=k); printf("%d,%d\n",m,i);
}
执行后的输出结果是______。
A) 8,6 B) 8,3 C) 6,4 D) 7,4

35.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是______。
A) 6 B) 0 C) 2 D) 1

36.以下程序的输出结果是
main()
{
int a=3;
printf("%d\n",(a+=a-=a*a) );
}
A) -6 B)12 C) 0 D) –12

37.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为
A) 0 B) 1 C)2 D) 3

38.假定w、x、y、z、m均为int型变量,有如下程序段:
w=1; x=2; y=3; z=4;
m=(w<x)?w: x;
m=(m<y)?m:y;
m=(m<z)?m: z;
则该程序运行后,m的值是
A) 4 B) 3 C) 2 D) 1

1.2 填空题
1.下面程序段的输出结果是。
int k=10;
float a=3.5,b=6.7,c;
c=a+k%3*(int)(a+b)%2/4;

2.表达式5%(-3)的值是,表达式-5%(-3)的值是。

3.已知:int a=5;则执行a+=a-=a*a;语句后,a的值为。

4.下面程序的运行结果是x=,y=。
main( )
{ float x=4.9;int y;
y=(int)x;
printf ("x=%f , y=%d", x ,y); }

5.若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为。

6.以下程序的输出结果是。
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}

7.以下程序的输出结果是。
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}

8.当a=3,b=4,c=5时,写出下列各式的值。
a<b的值为___, a<=b的值为___,
a==c的值为___, a!=c的值为___,
a&&b的值为___, !a&&b的值为___,
a||c的值为___, !a||c的值为___,
a+b>c&&b==c的值为___。

9.整型变量a的值是5,表达式a/=a+a;的值。

10.已知a=3,b=4,c=5,逻辑表达式a||b+c&&b-c的值

11.已知a=3,b=4,c=5,逻辑表达式!(a>b)&&!c||1的值

1.3 程序设计题
1.编写程序:在屏幕上显示一句话“hello neusoft!”。

2.编写程序在屏幕上输出如下图型:
*
***
*****
*******
3.已知圆的半径是5.6,求其直径、周长、面积并输出。
4.从键盘输入圆的半径,求其直径、周长、面积并输出。

5.编写程序求任意圆的体积

6.求任意一元二次方程度两个实根。

第二章 顺序程序结构设计

2.1 填空题
1.计算机语言提供三种基本控制结构,即,,。人们提倡使用这三种结构编写程序,并称这样的程序设计为。
2.2 程序设计题
1.从键盘输入5个整数,求它们的和、平均值并输出。

2.编写程序,从键盘输入两个整数分别存放在变量c1,c2中,要求通过程序交换它们的值。

第三章 分支结构程序设计

3.1 填空题
1.能正确表示“当x的值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()。
A)(x>=1)&& (x<=10) && (x>=200) || (x<=210)
B)(x>=1)|| (x<=10) || (x>=200) || (x<=210)
C)(x>=1)&& (x<=10) || (x>=200) && (x<=210)
D)(x>=1)|| (x<=10) && (x>=200) || (x<=210)
2.判断char型变量ch是否为大写字母的正确表达式是()。
A)’A’<=ch<=’Z’ B) (ch>=’A’) & (ch<=’Z’)
C) (ch>=’A’) && (ch<=’Z’) D)(‘A’<=ch) AND (‘Z’>=ch)
3.请阅读以下程序:
main()
{ int a=5, b=0, c=0;
if (a=b+c) printf(“***\n”);
else printf(“$$$\n”);
}
以上程序()。
A) 有语法错误不能通过编译 B) 可以通过编译但不能通过连接
C) 输出*** D) 输出$$$
4.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()。
if (a<b)
if(c<d) x=1;
else
if (a<c)
if (b<d) x=2;
else x=3;
else x=6;
else x=7;
A) 1 B) 2 C) 3 D) 6
5.以下程序的输出结果是()。
main()
{ int x=2, y=-1, z=2;
if (x<y)
if (y<0) z=0;
else z=z+1;
printf(“%d\n”, z);
}
A) 3 B) 2 C) 1 D) 0
6.若运行时给变量x输入12,则以下程序的运行结果是()。
main()
{ int x, y;
scanf(“%d”, &x);
y=x>12?x+10:x-12;
printf(“%d\n”, y);
}
A) 0 B) 22 C) 12 D) 10

3.2 填空题
1.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。请在横线上填写正确的内容。
main()
{ char ch;
scanf(“%c”, &ch);
if () ch=ch+32;
else if ( ch>=’a’ && ch<=’z’ ) ;
printf(“%c”, ch);
}
2.以下程序实现:输入三个整数,按从大到小的顺序进行输出。请在横线上填写正确内容。
main()
{ int x, y, z, c;
scanf(“%d %d %d”, &x, &y, &z);
if ( )

if ( )

if ()

printf(“%d, %d,%d”, x, y, z);
}
3.以下程序的运行结果是。
main()
{ int a, b, c, d, x;
a=c=0; b=1; d=20;
if (a) d=d-10;
else if (!b)
if (!c) x=15;
else x=25;
printf(“%d\n”,d);
}
4.下面程序根据以下函数关系,对输入的每个x值,计算出y值。请在横线上填写正确内容。
x y
2<x<=10 x(x+2)
-1<x<=2 2x
X<=-1 x-1
main()
{ int x, y;
scanf(“%d”, &x);
if () y=x*(x+2);
else if () y=2*x;
else if ( x<=-1 ) y=x-1;
else ;
if (y!=-1) printf(“%d”, y);
else printf(“error”);
}
5.设有程序片段:
switch (grade)
{ case ‘A’ : printf(“ 85-100\n”);
case ‘B’ : printf(“ 70-84\n”);
case ‘C’ : printf(“ 60-69\n”);
case ‘D’ : printf(“<60\n”);
default : printf(“error!\n”);
}
若grade的值为’C’,则输出结果是。
6.以下程序段的运行结果是。
int x=1, y=0;
switch (x)
{ case 1:
switch (y)
{ case 0 : printf(“**1**\n”); break;
case 1 : printf(“**2**\n”); break;
}
case 2: printf(“**3**\n”);
}

3.3 程序设计题
1.写一程序,从键盘上输入一年份year(为十进制数),判断其是否为闰年。(闰年的条件是:能被4整除、但不能被100整除,或者能被400整除)

2.从键盘输入x的值,求y的值并输出。

3.从键盘输入四个整数,输出其中的最大者。

4.求任意二次方程的根。(包括虚根)

5.根据输入的X值计算并输出如下分段函数的值。

6.某百货公司采用购物打折扣的方法来促销商品,该公司根据输入的购物金额,计算并输出顾客实际付款金额,顾客一次性购物的折扣率是:
(1)少于500元不打折;
(2)500元以上且少于1000元者,按九五折优惠;
(3)1000元以上且少于2000元者,按九折优惠;
(4)2000元以上且少于3000元者,按八五折优惠;
(5)3000元以上者,按八折优惠。

7.根据输入的三个边长a,b,c,判断它们能否构成三角形;若能构成三角形,继续判断该三角形是等边、等腰还是一般三角形。

第四章 循环结构程序设计

4.1 选择题
1.设有程序段
int k=10;
while (k=0) k= k—1;
则下面描述中正确的是()
A) while循环执行10次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
2.下面程序的功能是计算:至50中是7的倍数的数值之和,请选择填空。
#include <stdio.h>
main()
{int i,sum= 0;
for(i=1;i<=50;i++)
if( () ) sum+=i;
printf("%d",sum);
}
A) (int)(i/7)==i/7 B) (int)i/7==i/7
C) i%7= 0 D) i%7==0
3.下面程序段的运行结果是
a=1;b= 2;c=2;
while(a<b<c)
{
t= a;
a= b;
b=t;
c- -;
}
printf("%d,%d,%d",a,6,c);
A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1
4.下面程序的功能是计算 1至10之间的奇数之和及偶数之和。请选择填空
#include <stdio.h>
main()
{int a,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{ a+=i;
() ;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11),
}
A)b=i-- B) b=i+1 C)b=i++ D)b=i-1
5.下面程序段:
for (t=1; t<=100;t++)
{
scanf("%d",&x);
if(x<0) continue;
printf("%3d",t);
}
A) 当x<0时整个循环结束
B) x>=0时什么也不输出
C) printf函数永远也不执行
D)最多允许输出100个非负整数
6.下面程序的运行结果是:
#include "stdio.h"
main()
{int i;
for(i=1;i<=5;i++)
{if (i%2) printf("*");
else continue;
printf("#");
}
printf("#");}
A) *#*#$ B) #*#*#*$ C) *#*#$ D)#*#*$
7.设有程序段
int k=10;
while(k=5) k=k-1;
则下面描述正确的是
A)while循环执行10次 B)是死循环
C)循环语句一次也不执行 D)循环体语句执行一次
8.以下程序运行后的输出结果是________。
main()
{int x=15;
while(x>10&&x<50)
{x++;
if(x/3)
else continue;
}
printf("%d\n",x);
}

4.2 程序设计题
1.求1~1000内所有能被3整除的整数,所有数右对齐,每行输出10个数,每屏输出20行。
2.从键盘上接受10个数,求和。要求:
(1)、先提示“请输入第1个数:” ,输入第一个数后再提示“请输入第2个数”,依次类推;
(2)、输入完十个数后,输出十个数求和的结果。

3.求n! ,n的值从键盘输入.

4.从键盘上输入一个正整数(VC下少于10位,winTC下小于32767),求其各数位之和.
5.从键盘输入10个数,找出其中最大的数。分别用while和for语句实现。
6.输出2~100(不含100)之间的全部同构数。所谓同构数是指:如果某数与其右起若干位的平方数相等,则称该数为同构数。

7.编写输出以下图形的程序(要求行数从键盘输入)。

1
12
123
1234
12345
123456
……
8.计算200以内的所有素数的和。

5.1 选择题
1.以下对一维数组a的正确说明是( )
(A)int a(10);
(B)int n=10,a[n];
(C)int n; scanf(“%d”,&n); int a[n];
(D)#define SIZE 10
int a[SIZE];
2.对以下说明语句的正确理解是( )
int a[10]=;
(A)将5个初值依次赋给a[1]至a[5]
(B)将5个初值依次赋给a[0]至a[4]
(C)将5个初值依次赋给a[6]至a[10]
(D)因为数组长度与初值的个数不相同,所以此语句不正确
3.下面程序的运行结果是( )
char c[5]=; printf(“%s”,c);
(A)ab (B)abc (C)abc+乱码 (D)ab\0c\0
4.对两个数组a和b进行如下初始化
char a[]=”ABCDEF”;
char b[]=;
则以下叙述正确的是 ( )
(A)a与b数组完全相同 (B)a与b长度相同
(C)a和b中都存放字符串 (D)a数组比b数组的长度长
5.下面是对s的初始化,其中不正确的是( )
(A)char s[5]=; (B)char s[5]=;
(C)char s[5]=””; (D)char s[5]=”abcdef”;
6.以下程序运行的结果是( )
char s[6];
s=”abcd”;
printf(“%s\n”,s);
(A)”abcd” (B)abcd (C)abcd+乱码 (D)编译出错
7.若有说明语句char u[]=”Microsoft”,则数组的大小是( )
(A)100 (B)80 (C)10 (D)9
8.以下不正确的定义语句是 ( )
(A)double y[5]=;
(B)int y[5]=;
(C)char c[]=;
(D)char c[]=;
9.当执行下面的程序时,如果输入ABC,则输出结果是( )
A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789
#include "stdio.h"
#include "string.h"
main()
{ char ss[10]="1,2,3,4,5";
gets(ss); strcat(ss, "6789"); printf("%s\n",ss);
}
10.下列程序段的输出结果是 。
main()
{ char b[]="Hello,you";
b[5]=0;
printf("%s \n", b );
}
11. 以下程序的输出结果是( )
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 369
12.在定义int a[10];之后,对a的引用正确的是( )。
A.a[10] B.a[6.3] C.a(6) D.a[10-10]

13.以下对一维数组a进行正确初始化的是( )。
A.int a[10]=(0,0,0,0,0); B.int a[10]={};
C.int a[]=; D.int a[10]=;

14.以下对字符数组word进行不正确初始化的是( )。
A.char word[]=’Trubo\0’;
B.char word[]=;
C.char word[]=;
D.char word[]=”Trubo\0”;
15.以下正确的定义语句是( )。
A.int A[‘a’]; B.int A[3,4]; C.int A[][3]; D.int A[10];

16.以下给字符数组str定义和赋值正确的是( )。
A.char str[10]; str=;
B.char str[]=;
C.char str[10]; strcpy(str,“abcdefghijklmnop”);
D.char str[10]=;

17.在执行char str[10]=”China\0”; strlen(str)的结果是( )。
A.5 B.6 C.7 D.9

18.在执行char str[10]=”Ch\nina\0”; strlen(str)的结果是( )。
A.5 B.6 C.7 D.9

19.当接受用户输入的含空格的字符串时,应使用( )函数。
A.scanf() B.gets() C.getchar() D.getc()

20.当输出含空格的字符串时,应使用( )函数。
A.printf() B.puts() C.putchar() D.putc()

5.2 填空题
1. 若有定义语句char c[10]=”hello”,s[]=”world”;,则字符数组c的长度为,字符数组c的长度为,字符串”hello”的长度是,字符串“world”的长度为_。
2. 字符串”hello,world!”的长度为,若有说明语句char s[]=”hello,world!”,则数组s的大小是。
3.以下程序执行时输入Language Programming<回车>的结果是。
#include <stdio.h>
main( )
{
char str[30];
scanf(“%s”, str);
printf(“str=%s\n”, str);
}

4.以下程序执行时输入Language Programming<回车>的结果是。
#include <stdio.h>
main( )
{
char str[30];
gets(str);
printf(“str=%s\n”, str);
}

5.以下程序的执行结果是。
#include <stdio.h>
main( )
{
int a[]=, i, j, s=0;
j=0;
for (i=3; i>=0; i--)
{
s=s+a[i]*j;
j=j*10;
}
printf(“s=%d\n”, s);
}

6.以下程序的执行结果是。
#include <stdio.h>
main( )
{
char str[]=;
int i;
for (i=0; str[i]!=’\0’; i++)
if (str[i]>=’0’ && str[i]<=’9’)
printf(“%c”, str[i]);
printf(“\n”);
}
5.3 程序设计题
1.从键盘输入5个整数,保存到数组a中,先正序输出再逆序输出
2.从键盘输入6个整数保存到数组中,求值最大的元素,将这个值最大的元素与数组的最后一个元素交换。最后输出整个数组
3.从键盘输入8个整数保存到数组中,运用选择法按从大到小排序后输出数组。
4.编程实现:从键盘输入10个字符,存储到字符型一维数组str中,再从键盘上输入另一个字符ch,要求将str中出现的第一个ch字符删除。将删除ch后的数组str输出到屏幕上。
5.编写程序实现:将两个字符串数组进行交换。
6.编程求两个3×4 (3行4列)矩阵之和,然后输出(矩阵元素的值从键盘输入)
7.定义一个4行5列的二维整型数组,对其进行赋值,然后从该数组中选择出一个最小数及该数的下标值(行和列的下标值都要记录)。
另外,虚机团上产品团购,超级便宜

E. C语言程序设计题,请知道的帮忙解答下,谢谢

第2个看不懂

6 A B中指数必须用整数表示敏谨; C中do为关键字,不能用作变量;D中变量不能以数字开头。

7 D 语句以分号桥闹基结尾弯桥,D中有两个分号。

其他的都正确

F. C语言程序设计2015A卷-

一、判断题(每小题1分,共15分)

1.标准C中,只有数值型数据才能进行4则混合运算。

2.标准C中,_a是合法的自定义标识符。

3.有定义:float f;表达式f+=(int)3.6%2”不符合C语言语法。

4.标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。

6.以下运算符排列顺序满足按照优先级从高到低的排列:‘&&’、‘!’、‘==’、‘-’。

7.语句for(;;);是非法的。

8.在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。

9.while和do-while的主要区别是后者至少无条件执行一次。

10.数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。

11.当函数没有返回值类型时,表示函数类型为void。

12.C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。

13.一个函数中只允许有一条return语句。

14.在C语言中,如果没有说明变量的存储类型是auto类型的。

15.由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。

二、填空题(每空1分,共15分)

1. 若a=4;b=5,c=6;则表达式c==(b=-a); 中乱皮c的值是 (1) 。

2. 计算表达式的值:

4&&-4的值: (2) ;

设int a=3,b=4,c=5,则表达式a||b+c&&b==c的值: (3) ;

设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值: (4) ;

设a=12,则表达式a*=a/5的值: (5) ;

3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;}

则循环语句执行完后,z值为 (6) 。

4. 变量的指针就是指该变量的 (7) 。

5. 若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],桥穗则标识符p是 (9) ;

6. 已有定义:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf(“%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1));

的输出结果分别为: (10) 、 (11) 、 (12) 。

7. 已有定义: int x=65; 若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“ (13) , (14) ”, x, x)。

8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15) 。

三、简答题(每题4分,共12分)

1、简述选择语句if和else语句对与switch语句的区别。

2、简述在循环语句中,break和continue的区别。

3、若int a[5],*p=a;简述*p++和(*p)++的区别。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)



五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)



七、编程题(8分)

编译程序,其功能是比较字符串的大小( 不允许敏陪卜 用系统提供的字符串比较函数strcmp)。要求是:

(1) 通过主函数调用一个函数strcompare来实现。

(2) 要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。

(3) 并输出两个字符串中相同部分的子串。

《C语言程序设计基础》试卷参考答案

一、判断题(每小题1分,共15分)

1~5 ; 6~10 ; 11~15

二、填空题(每空1分,共15分)

(1) 6 (2) 1 (3) 1 (4) 2.5 (5) 24 (6) 6

(7)地址 (8) 行指针,指向有四个元素的一维数组

(9)指针数组名,该数组有四个元素,每个元素都是指针

(10)Russia (11)i (12)h (13) %c (14) %d (15)7

三、简答题(每题4分,共12分)

1、if总是判断其后面的表达式的值是否为非零值,如是非零值则执行其后面的语句或由{}括起来的复合语句,否则执行else后面的语句。而switch语句则根据其后面表达式的可数值来判断,执行switch语句体内与其中的一个case:常量值相等语句后面的语句。执行break语句后,跳出switch语句体。

2、break是终止整个循环过程;continue是终止本次循环。

3、*p++首先取a[0]的值,然后p指向a[1];(*p)++使得a[0]的值自增1,但p保持不变。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4 分,共16分)

1、 (1)缺#include ; (2)scanf(“%f”,a); 改为 scanf(“%f”,&a);

2、 (1)缺sum=0; (2)for(i=1; i<=3; i++) 改为for(i=0;i<3;i++)

3、 (1)p1=p2 改为 *p1=*p2 (2)swap(&a, *p) 改为swap(&a, p)

4、 (1)在if(m<0)语句后添加else if(m==0) a=1; (2) 添加 return(a);

五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

1、 (1)x=0; (2)if(n==x) (3)s++;或s=s+1;

2、 (4)&num[i] (5)max< num[i]? (6)num[i]!=0

3、 (7)n-i-1 (8)a[j]>a[j+1] (9)a[j+1]=temp

4、 (10)count=0; (11)n%10 (12)n>0或n!=0或n

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

1、 #*#*#*

2、 main i=1 j=2 k=2

sub i=1 j=2 k=1 x=2

sub i=1 j=2 k=1 x=3

七、编程题(8分)

#include

main()

{

int i,j, flag=0;

char str1[90],str2[90];

gets(str1);

gets(str2);

i=0;

do{

flag=strcompare(str1[i],str2[i]);

i++;

}while(str1[i]!=’’ && str2[i]!=’’ &&flag=0);

if(flag<0)printf(“%s小于%s ”,str1,str2);

else if(flag==0) printf(“%s 等于%s ”,str1,str2);

else printf(“%s大于%s ”,str1,str2);

printf(“两个字符串中相同的字串为:”);

j=0;

i--; 后3句可用str1[i]=’’; printf(“%s”,str1);代替//用str2也可以。

while(j<i){printf(“%c”,str1[i]);j++;} span=""> </i){printf(“%c”,str1[i]);j++;}>

}

int strcompare(char c1,char c2)

{

int v;

v=c1-c2;

return v;

}

G. C语言程序设计 char*p=‘’abc\101\0fghijk\0‘’; printf(‘’%d

最终答案为4,第一个\0后截止,\0是字符串结束的标志,所以实际字符串只有abc\101\0,\101为转义字符,根据ascii表,为字母A,而strlen函数是不统计\0的长度的,所以实际结果是abcA,所以结果为4,下附例图

H. C语言程序设计。

1.a
2.c
3.b
4.d
5.c
6.c
7.a
8.c
9.a
10.a
11.b
12.c
13.b
答案源李李仅供参考雹迟扰饥

I. C语言程序设计

1.n=0 a=0
从右往左开始运算.
n%=(n%=2)--->n%=(7%=2)---> n%=1--->n = 0
a+=a-=a*=a 这个语句不同的编译器的结果是不一样的。在vc下因为好薯空执行了一次a -= a的操作,友瞎所以a=0

2.m=17
首先执行(--y==x++)的时候,x的值变为16了,y的值变成19。判断 19==15 显然是false,再执行++x后返回17。

3.输出1,0
先执行手悔a+b和a-b,显然28 != 2,所以为真,值为1
同理 13.14 <= 0.4 ,为假,值为0

4.
#define pi 3.1415926
float GetVolume(const float& r,const float& h)
{
return pi*r*r*h/3;
}

J. c语言程序设计

答案源搏选:C

双引号引起来的字符串,系统会自动在后面填充一个'\0'符号,所以c1的长度为7,因为它包含的字符是:a b c d e '\0',而c2并没有'\0'握局,c2的长雹皮祥度为6。

热点内容
怎么给自己手机写一个脚本 发布:2024-11-01 20:23:41 浏览:241
c语言大小写判断 发布:2024-11-01 20:21:53 浏览:130
php的点餐系统源码 发布:2024-11-01 20:13:53 浏览:714
拜占庭算法 发布:2024-11-01 20:10:31 浏览:357
xcode编译参数 发布:2024-11-01 20:00:04 浏览:665
苹果5怎么设置密码锁屏 发布:2024-11-01 19:54:55 浏览:124
宝塔上传文件夹 发布:2024-11-01 19:39:50 浏览:257
java云编译器 发布:2024-11-01 19:34:24 浏览:385
免费源码分享网 发布:2024-11-01 19:29:19 浏览:855
硬盘8mb缓存 发布:2024-11-01 19:20:02 浏览:192