| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 961 人关注过本帖
标题:二题+(有疑问的答案)
只看楼主 加入收藏
cranky
Rank: 1
等 级:新手上路
威 望:1
帖 子:89
专家分:0
注 册:2005-11-21
收藏
 问题点数:0 回复次数:3 
二题+(有疑问的答案)
上次有位帅哥发了套c题上来,真好我这几天都在做这类型的题,正好练练,答案有疑问!
请大家帮忙改正一下:

1 语句printf("%%d%d", 123); 将输出: C
A) %123%d B) %%d123 C) %d123 D)上述语句语法有错

2 执行下列程序段后, a值为: D
int a, b;
a=15; b=12;
a=(a-- ==b++)? a%5 : a/5;
A) 0 B) 2.8 C ) 4 D) 2

3 判断字符变量c的值为数字('0'---'9')则返回1,否则返回0, 可用表达式: B
A) '0'<=c<='9' B) '0'<=c && c<='9' C) '0'<=c || c<= '9' D)以上均不是

4 对于int x, y; 语句 if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于: B
A) y=0; if (x>=0) if (x) y=1; else y= -1;
B) if (x!=0) if (x>0) y=1; else y= -1; else y=0;
C) if (x<0) y= -1; if (x!=0) y=1; else y=0;
D) y= -1; if (x!=0) if (x>0) y=1; else y=0;

5 循环 for(i=0, j=5; ++i!=--j; ) printf("%d %d", i, j); 将执行 D
A) 6次 B) 3次 C) 0次 D) 无限次

6 下列程序段执行后s值为: C
int i=5, s=0;
do if (i%2) continue; else s+=i; while (--i);
A) 15 B) 9 C) 6 D) 以上均不是

7 以下程序的正确运行结果是。D
f(int a)
{int i=0;static int c=3;
i++;c++;
return(a+i+c);
} main()
{int a=2,i;
for(i=0;i<3;i++) printf("%4d",f(a));
} A) 7 7 7 B) 7 10 13 C) 7 9 11 D) 7 8 9

8 对于以下宏定义: D
#define SQ(x) x*x
#define DD(x,y) SQ(x)-SQ(y)
宏调用DD(2*3, 2+3)执行后值为
:
A) 43 B) 11 C) 25 D) 以上均不是

9 对于以下结构定义: A
struct { int len;
char *str;
} *p;
*p->str++中的++加在

A) 指针str上 B) 指针p上 C) str所指的内容上 D) 以上均不是

10 若x=2,y=3则x&y的结果是。 B
A) 0 B) 2 C) 3 D) 5

11若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式 B
字符串应是。

A) "ab+" B) "wb+" C) "rb+" D) "ab"

12 已知函数的调用形式:fread(buffer,size,count,fp);其中 buffer代表的是。C
A) 一个整形变量,代表要读入的数据项总数

B) 一个文件指针,指向要读的文件
C) 一个指针,指向要读入数据的存放地址
D) 一个存储区,存放要读的数据项

13 若有以下说明和语句, 已知int和double类型分别占2和8个字节,则sizeof(st)的值为: A
struct st {
char a[10];
union {
int i;
double y;
}
};
A) 18 B) 20 C) 12 D) 以上均不是

14 在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为:D
A) void B) double C) char D) int

15 对于以下递归函数f, 调用f(4),其返回值为:A

int f(int n)
{ if (n == 0)
return 1;
return f(n-1)+n;
}
A) 10 B) 11 C) 0 D) 以上均不是

二、填空题(每空2分, 共40分)

1 用for循环打印 1 4 7 10 13 16 19 22 25 , 其语句应为(只能用变量i或其表达式):
for (i=1; i<=9; i++) printf("%3d",___⑴
_____); 3*i-2
2 执行完下列语句段后, 将输出: ____⑵_____ 6 llo
static char s[]="hello";
printf("%d %s", sizeof(s), s+2)
3 执行完下列语句段后, i值为:____⑶_____ 0
static int a[3][4]={{1,2,3},{4,5,6}}, i;
i= a[1][3];
4 执行完下列语句段后, i值为:___⑷
______ 4
int i;
int f(int x)
{ static int k = 0;
x+=k++;
return x;
}
i=f(2);
i=f(3);
5 执行完下列语句段后, i值为:____⑸_____ 18
int i;
int f(int x)
{ return ((x>0)? x*f(x-1):3); }
i=f(f(1));
6 对于如下程序test.c, 编译后运行 test hello world 将输出______⑹_________: 2 o
#include <stdio.h>
main(int agrc, char *argv[])
{ printf("%d %s", argc, argv[1]+1);
}
7 对于char c; 若已知其值为小写字母, 将其转换为相应大写字母的表达式为_⑺
_ c=c-32
8 对于如下类型定义A:
typedef int (*A[10])();
也可以用以下方式分开定义
:
typedef ______⑻
_________; /*先定义PT*/ int (*PT)() //有疑问!!
typedef PT A[10] ;
9 将p说明为字符数组指针,数组大小为10,可写为:______⑼
________
10 如下函数
void f(char *s, char *t)
{ int i;
i=0;
while (s[i]=t[i]) i++;
}
等价于:
void f(char *s, char *t)
{ while (____⑽
___ = *t++); *i++
}
11 int i=0, s=0;
while (i<n) s+=i++;
等价于
int i, s;
for(________
____________); i=0,s=0;i<n;s+=i,i++
12 下列程序将字符串s逆序输出,如f("abcd"), 将输出"dcba";
void f(____⑿
________) char *s
{ int i=0;
while(s[i]) i++;
for ( ________) printf("%c", s[i]) ; ;i>=0;i--
}
13 下列程序判断字符串s是否对称,对称则返回1,否则返回0; 如f("abcba")返回1, f("abab")返回0;
int f(____⒁
_______) char *s;
{ int i=0,j=0;
while(s[j]) j++;
for ( j--; i<j && ___
____; i++, j--) ; s[i]==s[j]
return _________; 1
}
14 对于 int *p, *q, i=5, j=6;执行:
p = &i;
q = p;
p = &j;
后 (*p)=____ ⒄___ , (*q)= ________ 6 5
15 下面程序用变量counter统计文本文件test.txt中字符'a'的个数。
#include <stdio.h>
main()
{ FILE *fp;
long counter=0;
char c;

if ( __⒆____) { ( fp=fopen(“text.txt”,”r”))==NULL
printf("Can not open file\n");
exit(0);
}
while (_____________) !feof(in)
if (c=='a')
counter++;
printf("The number of a is: %d\n", counter);
}

三、程序阅读理解,并回答相应问题(共18分)
1 (6分
)
#include <stdio.h>
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
main()
{ int s, i;
for(s=0, i=0; i<3; i++)
s+= *(*a+i);
printf("%d ", s);
for(s=0, i=0; i<3; i++)
s+= **(a+i);
printf("%d ", s);
}

问题: 上述程序运行后, 将输出______①_________ 6 15

2 (12分)
#include <stdio.h> //只排五个数

int a[2][5];
void p1(int v[])
{ int i, j, temp;
for (i=1; i<5; i++)
for(j=i-1; j>=0 && v[j]<v[j+1]; j--) {
temp=v[j];
v[j]=v[j+1];
v[j+1]=temp;
}
}
void p2(int v1[], int v2[]) //
相当于顺序表插入排序
{ int i=0, j=0;
while (i<5 && j<5)
if (v1[i]>v2[j]) printf("%d ", v1[i++]);
else printf("%d ", v2[j++]);
while (i<5) printf("%d ", v1[i++]);
while (j<5) printf("%d ", v1[j++]);
printf("\n");
}
main()
{ int i,j;
for (i=0; i<2; i++)
for(j=0; j<5; j++)
scanf("%d", &a[i][j]);
p1(a[0]);
p1(a[1]);
for (i=0; i<2; i++)
for(j=0; j<5; j++)
printf("%d ", a[i][j]);
printf("\n");
p2(a[0], a[1]);
}

问题: 当输入5 9 1 12 10 7 3 11 4 10时, 上述程序运行后,
第一行将输出______②
________ 第二行将输出_______③________

12 10 9 5 1 11 10 7 4 3 12 11 10 10 9 7 5 4 3 1



谢谢!!!吃饭去了!!!!!下午又是笔试!!!!哎.....累

搜索更多相关主题的帖子: 疑问 
2005-12-05 13:45
wzzhi
Rank: 1
等 级:新手上路
帖 子:123
专家分:0
注 册:2005-11-11
收藏
得分:0 
1.两个百分号输出为一个百分号,d照样输出,再+123自然是c

2005-12-05 20:07
gree
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2005-11-2
收藏
得分:0 

能帮忙解释一下这几题吗?

8 对于以下宏定义
:
#define SQ(x) x*x
#define DD(x,y) SQ(x)-SQ(y)
宏调用DD(2*3, 2+3)执行后值为
:
A) 43 B) 11 C) 25 D) 以上均不是

13 若有以下说明和语句, 已知int和double类型分别占2和8个字节,则sizeof(st)的值为:
struct st {
char a[10];
union {
int i;
double y;
}
};
A) 18 B) 20 C) 12 D) 以上均不是


1 (6分)
#include <stdio.h>
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
main()
{ int s, i;
for(s=0, i=0; i<3; i++)
s+= *(*a+i);
printf("%d ", s);
for(s=0, i=0; i<3; i++)
s+= **(a+i);
printf("%d ", s);
}

问题: 上述程序运行后, 将输出______①_________


2005-12-06 11:13
xixigzcn
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-9-2
收藏
得分:0 
1 (6分)
#include <stdio.h>
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
main()
{ int s, i;
for(s=0, i=0; i<3; i++)
s+= *(*a+i);
printf("%d ", s);
for(s=0, i=0; i<3; i++)
s+= **(a+i);
printf("%d ", s);
}
a表示0行0列地址 *a+i就是第0行第i列的地址,*(*a+i)就是0行i列元素 所以为6
**(a+i)表示每行第0列元素,所以为15
楼主给的答案我认为是正确的
2005-12-08 15:21
快速回复:二题+(有疑问的答案)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041905 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved