C语言考试题

求下列题的答案,300分奖励1.设x的值为15,n的值为2,则表达式x%n运算后,表达式的值为()。2.设inta=7,b=9,t;执行完表达式t=(a>b)?a:b后,... 求下列题的答案, 300分奖励

1.设x的值为15,n的值为2,则表达式x%n运算后,表达式的值为( )。
2.设 int a=7,b=9,t;执行完表达式t = (a>b)?a:b后,t的值是( )。
3.下面程序段的输出结果是( )。
int a=96; printf(“%d %c\n”,a,a);
4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是( )。
char a[3];
5.设有以下宏定义,则执行赋值语句 a=PP*20;(a为int型变量)后,a的值是( )。
#define PP 80
6.在C文件中,数据存在的两种代码形式是( )和( )。
7.C语言中调用( )函数打开文件,调用( )函数关闭文件,调用( )函数可实现文件的随机读写。

1.设 int a=12; 表达式a+=a-=a*=a的值是( )。
A 12 B 144 C 0 D 132
2.以下程序的输出结果是( )。
main( )
{ int a=96;
printf(“%d\n”,++a);
}
A 96 B 97 C a D b
3.以下程序的输出结果是( )。
#define ADD(x) (x)+(x)
main()
{ int a=4,b=6,c=7,d=ADD(a+b)*c;
printf(“d=%d”,d);
}
A d=70 B d=140 C d=280 D d=80
4.下面的选项中正确的赋值语句是(char a[5],*p=a;)( )。
A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”;
5.若k为整形,则while循环执行( )次。
k=2; while(k==0) printf(“%d”,k); k--; printf(“\n”);
A 10 B 9 C 0 D 1
6.数组名作为实参传递给形参时,数组名被处理为该数组的( )。
A长度 B元素个数 C首地址 D各元素的值
7.两个指针变量不可以( )。
A. 相加 B 比较 C 相减 D 指向同一地址
8.若有以下程序段,则值为6的表达式是( )。
struct st{ int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’},*p; p=&a[0];
A p++->n B p->n++ C (*p).n++ D ++p->n
9.要打开一个已存在的非空文件”file”用于修改,选择正确的语句( )。
A fp=fopen("file","r"); B fp=fopen("file","w");
C fp=fopen("file","r+"); D fp=fopen("file","w+");
10. 9.若有int a[3]={10,12,30};则a+1是( )。
A a[0]的地址 B a[1]的地址 C a[1]的值 D a[0]的值加1
写出下列程序的运行结果:
1.main( )
{ int a[6]={10,6,23,-90,0,3},i;
for(i=0;i<6;i++) printf(“%d,”,a[i]);
printf(“\n”);
}

2.f1(int a)
{ int b=0; static int c=3;
b+=1; c++;
return(a+b+c);
}
main()
{ int a=1,i;
for(i=0;i<3;i++) printf("%d ",f1(a)); }
在 处填入适当内容:
求100~200间的全部素数。
(1)
main()
{ int m,k,i,n=0;
for(m=101;m<=200;m+=2)
{ if(n%10==0) printf("\n");
k=sqrt(m);
for(i= (2) ;i<=k;i++) if(m%i==0) (3) ;
if(i== (4) )
{ printf("%d ",m);n++;}
}
}
编程求解
1*2*3。。。n
1+2+3+…+100
展开
 我来答
井钰gQ
2008-05-23 · TA获得超过2480个赞
知道大有可为答主
回答量:1303
采纳率:0%
帮助的人:1474万
展开全部
我来回答下把:
1.1
2.9
解释:t = (a>b)?a:b等价于t = ((a>b)?a:b),这下应该知道了把
3.96 `(和~键是同一个键)
解释:a=96;96是那个字符的ACSII码值的十进制表示,它的十六进制表示的ASCII码值为60,你可以对96进行除16取余法得到60,然后你去查看下字符的ASCII码 16进制表示的那个表就会发现,它对应的是这个字符,所以就是他了,别和单引号混淆就好,单引号的ASCII码十六进制表示为27
4.a[0] a[1] a[2]
5.1600
6.文本文件 二进制文件 [这个拿的不是很准]
7.fopen fclose fseek

下面:
1.C
解释:a+=a-=a*=a,首先要知道+=,-=,*=的优先级是相同的,但是他们的结合性是由右向左的,所以,他相当于a+=a-=(a=a*a),你还要知道,这是在同一条语句中多次修改同一个变量的值,这里有结合性,可以保证,但是有的时候并不可以,因为语言中明确规定,求值顺序未定义,一般尽可能不要在同一条语句里多次修改同一个变量的值,有的时候还和编译器有关的,a+=a-=(a=a*a)相当于a+=(a=a-(a=a*a)),在a=(a+(a=a-(a=a*a))),所以为0
2.B
3.D
解释:你定义一个带参数的宏#define ADD(x) (x)+(x)
你要知道,宏替换是机械化的替换,不会很智能化的,也就是说
在这里,替换的时候是替换成了这样d=(a+b)+(a+b)*c;所以最后就是80了
4. A
解释:这样理解把, char a[5]; char *p=a;这个是把数组的首地址赋给指针p来初始化指针,你后面再加一句p="abcd";不就是对指针的赋值吗,使指针不再指向数组的首地址,而是指向了字符串的首地址了.相信char *p="abcd";很常见把,呵呵...
5.C
解释:因为k=2,然后执行关系表达式k==0,结果显然判断结果为假,所以不执行循环体
6.C
7.A
指针是不能相加的

8.D
解释:这个应该好好解释下,这个题还好了
struct st{ int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’},*p; p=&a[0];
A p++->n B p->n++ C (*p).n++ D ++p->n
分析:首先你要知道,这是定义了一个结构体数组,这个static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’}写的易读一点就是static struct st a[3]={{5,&a[1]},{7,&a[2]},{9,'\0'}},是不是明了了好多.
你做这个题目之前还需要明白一点,即箭头操作符的优先级高于++运算符,然后分析选项
选项A.p++是后缀加,所以执行(p++)->n(即p++->n) 相当于执行p->n,即得到的值是5
选项B. p->n++相当于(p->n)++,由于是后缀加,所以得到的值也是5
选项C.(*p).n++ 就是相当于((*p).n)++,更相当于(p->n)++,所以和上面的是一样的,也是5,为什么它相当于它呢,这就要你看看箭头操作符的由来了,箭头操作符的由来就是为了结合解引用操作符*和点操作符.于一起的.来简化书写,增加可读性
选项D.++p->n 相当于++(p->n),由于是前缀加,所以得到的值为6了
9.C,选择W会格式化
10. B ,数组名其实就相当于一个指针,这里对指针做运算,加1使指针下移

写出运行结果:
1.
10623-9003
2.
6 7 8

填空题:
1.
#include <stdio.h>
#include <math.h>
2. 2
3.break;
4.k+1

编程题:
1.代码如下:
#include<stdio.h>
int main()
{
int i,n;
long s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
s*=i;
printf("%ld",s);
return 0;
}

2.代码如下

#include<stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=100;i++)
s+=i;
printf("%d",s);
return 0;
}

应该没错把,楼主有什么问题可以发消息给我
高金山
2008-05-23 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1646万
展开全部
这些都是最基本的题,但要想全部做对,还真不容易
我已经尽量保证我下面的答案都是对的
就算错也错不会超过1-2个的

填空题
1.1
2.9
3.96 `(~键的那个符号,1键前面)
4.a[0] a[1] a[2]
5.1600
6.文本文件 二进制文件
7.fopen fclose fseek

选择题
1.C
2.B
3.D
4. A
只有A是正确的,BCD都是编译都通不过的
B. a是数组,是不能直接对数组进行赋值的

5.C
6.C
7.A
指针是可以相减,进行比较,指向同一地址的,但相加是不行的

8.D
9.C
10. B

写出下列程序的运行结果:
1.
10,6,23,-90,0,3

2.
6 7 8

在 处填入适当内容:
(1)#include <math.h>
(2)2
(3)break;
(4)k+1

编程求解
1、1*2*3。。。n
#include<stdio.h>
void main()
{
int n,i,sum=1;

printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum*=i;
printf("sum=%d\n",sum);
}

2、1+2+3+…+100
#include<stdio.h>
void main()
{
int i,sum=1;

for(i=1;i<=100;i++)
sum+=i;
printf("sum=%d\n",sum);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雏龙521
2008-05-23
知道答主
回答量:51
采纳率:0%
帮助的人:0
展开全部
1.设x的值为15,n的值为2,则表达式x%n运算后,表达式的值为(1 )。
2.设 int a=7,b=9,t;执行完表达式t = (a>b)?a:b后,t的值是( 9)。
3.下面程序段的输出结果是(96,` )。
int a=96; printf(“%d %c\n”,a,a);
4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是(a[0] a[1] a[2]
)。
char a[3];
5.设有以下宏定义,则执行赋值语句 a=PP*20;(a为int型变量)后,a的值是(1600 )。
#define PP 80
6.在C文件中,数据存在的两种代码形式是(ASCⅡ和二进制
)。
7.C语言中调用(fopen )函数打开文件,调用(fclose )函数关闭文件,调用(fseek )函数可实现文件的随机读写。

1.设 int a=12; 表达式a+=a-=a*=a的值是(C )。
A 12 B 144 C 0 D 132
2.以下程序的输出结果是( B)。
main( )
{ int a=96;
printf(“%d\n”,++a);
}
A 96 B 97 C a D b
3.以下程序的输出结果是(D )。
#define ADD(x) (x)+(x)
main()
{ int a=4,b=6,c=7,d=ADD(a+b)*c;
printf(“d=%d”,d);
}
A d=70 B d=140 C d=280 D d=80
4.下面的选项中正确的赋值语句是(char a[5],*p=a;)(C )。
A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”;
5.若k为整形,则while循环执行( C)次。
k=2; while(k==0) printf(“%d”,k); k--; printf(“\n”);
A 10 B 9 C 0 D 1
6.数组名作为实参传递给形参时,数组名被处理为该数组的(C )。
A长度 B元素个数 C首地址 D各元素的值
7.两个指针变量不可以(A )。
A. 相加 B 比较 C 相减 D 指向同一地址
8.若有以下程序段,则值为6的表达式是(D )。
struct st{ int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’},*p; p=&a[0];
A p++->n B p->n++ C (*p).n++ D ++p->n
9.要打开一个已存在的非空文件”file”用于修改,选择正确的语句( D)。
A fp=fopen("file","r"); B fp=fopen("file","w");
C fp=fopen("file","r+"); D fp=fopen("file","w+");
10. 9.若有int a[3]={10,12,30};则a+1是( B)。
A a[0]的地址 B a[1]的地址 C a[1]的值 D a[0]的值加1
写出下列程序的运行结果:
1.main( )
{ int a[6]={10,6,23,-90,0,3},i;
for(i=0;i<6;i++) printf(“%d,”,a[i]);
printf(“\n”);
}/* 结果:10,6,23,-90,0,3*/

2.f1(int a)
{ int b=0; static int c=3;
b+=1; c++;
return(a+b+c);
}
main()
{ int a=1,i;
for(i=0;i<3;i++) printf("%d ",f1(a)); } /*6 7 8*/
在 处填入适当内容:
求100~200间的全部素数。
(1)
main()
{ int m,k,i,n=0;
for(m=101;m<=200;m+=2)
{ if(n%10==0) printf("\n");
k=sqrt(m);
for(i= (2) ;i<=k;i++) if(m%i==0) (3) ;
if(i== (4) )
{ printf("%d ",m);n++;}
}
}
编程求解
1*2*3。。。n
///int main()
{
int i,n;
long s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
s*=i;
printf("%ld",s);
return 0;
}

1+2+3+…+100
//#include<stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=100;i++)
s+=i;
printf("%d",s);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lovemoon123
2008-05-23
知道答主
回答量:18
采纳率:0%
帮助的人:0
展开全部
1.答案为1
2.答案为9
3.答案为96和'这个字符
4.a[0] a[1] a[2]
5.答案为1600
6.ASCⅡ和二进制
7.fopen fclose fseek

1.C2.B3.B4.CD5.D6.C7.B8.C9.D10.C

1. 10,6,23,-90,0,3回车
2 7,8,9

(1) #include<math.h> (2)2 (3)continue (4)k+1
程序1:
maim()
{ int i,n,sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum*=i;
printf("sum=%d",sum);
}
程序2:
main()
{ int i,sum=0;
for(i=1;i<=100;i++)
sum+=i;
printf("sum=%d",sum);
}
中午没吃饭给你写这个,我也新手,你看看有什么不对的地方没(选择第8个我拿不准)!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ce293ac
2008-05-23 · TA获得超过1253个赞
知道小有建树答主
回答量:475
采纳率:0%
帮助的人:371万
展开全部
1)1;2)9;3)96,a;4)a[0]a[1]a[2];5)1600;6)文件,函数;7)fopen ,fclose,fgetc
1)c;2)b;3)a;4)b;5)c;6)c;7)b;8)a;9)d;10)b

1)10
6
23
-90
0
3
2)6,7,8
在 处填入适当内容
1)stdio<math.h>;2)i=2;3)m++;4)m

编程求解:
1)int i,t=1;
main()
{
for(i=0;i<n;i++)
t=t*i;
printf("%d",t);
}

2)int i,t=0;
main()
{
for(i=0;i<100;i++)
t=t+i;
printf("%d",t);
}

你这分可是真不好拿阿
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式