高手进来做题

willchou1 2012-10-16 03:22:10
1、以下程序运行后,输出结果是(  )
main()
{
char *s="abcde";
s+=2;
printf("%ld\n",s);
}
A.cde B.字符c的ASCII码值 
C.字符c的地址 D.出错
2、下面的程序将输出:( )
main()
{
char ch;
ch=’1’;
ch+=1;
switch(ch)
{
case ‘1’: printf("this is one. ");
case ‘2’: printf("this is two. ");
default: printf("no way! ");
}
}
A.this is one. B.this is two. C.no way! D.this is two.no way!
3、 以下所列的C语言常量中,错误的是( )
A. 0xFF B. 1.2e0.5 C. 2L D. '\72'
4、 设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不正确的语句是( )
A.k=*P1+*P2; B.P2=k; C.P1=P2; D.k=*P1 * (*P2);
5、 设有如下定义
int arr[]={6,7,8,9,10};
int * ptr;
则下列程序段的输出结果为:( )
ptr=arr;
* (ptr+2)+=2;
printf ("%d,%d\n",*ptr,*(ptr+2));
A.8,10 B.6,8 C.7,9 D.6,10
6、在下以下程序的输出结果是:( )
#define f(x) x*x
main()
{
int a=6,b=7,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A.9 B.35 C.36 D.18
7、设有以下说明和定义
typedef union
{ long i; int k[15]; char c; }DATE;
struct date
{ int cat; DATE cow; double dog; } too;
DATE max;
则下列语句的执行结果是:( )
printf ("%d",sizeof (struct date ) +sizeof(max));
A.30 B.35 C.70 D.75
8、若已知int a[3][4],*p;p=(int *)a;那么对数组a的第2行第2列的正确引用是:( )
A.a[2][2] B.p[9] C.a[9] D.p[1][1]
9、下列程序段所表示的逻辑关系是:( )
if(a<b) { if(c==d) x=1;} else x=2;
A. x =
B. x =
C. x =
D. x =
10、若有说明int a[2][2];那么,下面正确的C赋值语句是:( )
A.a=2; B.a[1]=2; C.a[1]={1,2}; D.a[0][1]=a[1][0];
11、给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为
A、数组X和数组Y等价 B、数组x和数组Y的长度相同
C、数组X的长度大于数组Y的长度 D、数组X的长度小于数组Y的长度
12、有以下程序
main()
{ char a[]="programming", b[]="language";
char *p1,*p2;
int i;
p1=a; p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i));
}
输出结果是:
A、gm B、rg C、or D、ga
13、下面函数调用语句含有实参的个数为:
func((exp1,exp2),(exp3,exp4,exp5));
A、1 B、2 C、3 D、4
14、当执行下面的程序时,如果输入ABC,则输出结果是
#include "stdio.h"
#include "string.h"
main(){
char ss[10]="1,2,3,4,5";
gets(ss);
strcat(ss, "6789");
printf("%s\n",ss);
}
A、ABC6789 B、ABC67 C、12345ABC6 D、ABC456789
15、若二维数组a 有m列,则在a[i][j]之前的元素个数为( )
A、j*m+i B、i*m+j C、 i*m+j-1 D、i*m+j+1
主观题部分:
一、简答题(每题2.5分,共2题)
1、阅读程序写结果
#include <stdio.h>
int f(int n)
{
static int s=1;
while(n) s*=n--;
return s;
}
main()
{
int i,j;
i=f(3); j=f(5)+f(2);
printf("\nThe outputis:\n");
printf("i=%#x,j=%d \n",i,j);
}
2、阅读程序写结果
#include <stdio.h>
typedef struct stu
{ char name[10];
int age;
}STU;
char *fun(STU *p,int m)
{ int k,i;
STU *q;
k=200;
for(i=0;i<m;i++)
if((p+i)->age<k)
{
k=p->age;
q=p+i;
}
return q->name;
}
main()
{ struct stu students[3]=
{
"Zhang",20,
"Wang",19,
"Zhao",18};
printf("%s\n",fun(students,3));
}
二、论述题(每题5分,共2题)
1、编这样一个程序,用户输入10个整数,程序找出其中的最大值和最小值,并输出最大值与最小值的和、差、积、商。
2、下面程序的功能是将一个字符串续接到另一个字符串上,至少包含有10处错误。请纠正错误的地方,使之成为正确运行的程序。
#include "string.h"
#include “stdio.h”
void main()
{
char str1[4];
char *str2="4567";
void StringCat(char s1;char *s2)
str1="123";
StringCat(str1,str2);
printf("%s",str1);
}
void StringCat(char s1;char *s2);
{
char *p1,p2;
p1=s1;
p1+=strlen(s1);
p2=s2;
while(p2)
*p1++=*p2++;
*p1=0;
}
...全文
247 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1.我觉得会报错
2.D ‘1’的ASCII为49,加1为50,是字符‘2’,由于SWITCH没有BREAK,执行后两条。
5.D 一开始就赋值为首地址,故*ptr指向6,*(ptr+2)+=2里先算括号,然后取*,最后算+
。。。。
。。。。
L_chxu 2012-10-16
  • 打赏
  • 举报
回复
5楼的第二题错了
因为没有break;语句,
所以后面的也会输出
AndyZhang 2012-10-16
  • 打赏
  • 举报
回复
工作时回答问题真蛋疼,还没弄完就有人搞完了。
AndyZhang 2012-10-16
  • 打赏
  • 举报
回复
#include <stdio.h>
int f(int n)
{
static int s=1;
while(n) s*=n--;
return s;
}
main()
{
int i,j;
i=f(3); j=f(5)+f(2);
printf("\nThe outputis:\n");
printf("i=%#x,j=%d \n",i,j);
}
i=0x6 j=2160
dpdp_2012 2012-10-16
  • 打赏
  • 举报
回复
根据5L,答案更正为 cdbbd,b*b*d,cdbab
顿时觉得自己C语言基础好差。。
L_chxu 2012-10-16
  • 打赏
  • 举报
回复
空格表示无答案
1-5 CDBBD
6-10 B B D
11-15 CDBAB

一、1.

The output is:
i=0x6,j=2160;

(个人认为此题的j的值因编译器而异,因为每次调用函数时s的值都不同,j=f(5)+f(2) f(5)与f(2)运算的顺序不定,导致j的值不同)

2.
zhao


1.代码如下:

#include<stdio.h>

void main()
{
int a[10];
int i,min,max;
printf("Please enter 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
min=a[0];
max=a[0];
for(i=0;i<10;i++)
{
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
}
printf("%d %d %d %d\n",max+min,max-min,max*min,max/min);

}



2.修改如下(结果1234567)


#include <stdio.h>
#include <string.h>
void main()
{
void StringCat(char *s1,char *s2);
char str1[4]="123";
char *str2="4567";
StringCat(str1,str2);
printf("%s",str1);
}

void StringCat(char *s1,char *s2)
{
char *p1,*p2;
p1=s1;
p1+=strlen(s1);
p2=s2;
while(*p2!='\0')
*p1++=*p2++;
*p1='\0';
}
AndyZhang 2012-10-16
  • 打赏
  • 举报
回复

1、以下程序运行后,输出结果是( c )
main()
{
char *s="abcde";
s+=2;
printf("%ld\n",s);
}
A.cde B.字符c的ASCII码值 
C.字符c的地址 D.出错
2、下面的程序将输出:( B )
main()
{
char ch;
ch=’1’;
ch+=1;
switch(ch)
{
case ‘1’: printf("this is one. ");
case ‘2’: printf("this is two. ");
default: printf("no way! ");
}
}
A.this is one. B.this is two. C.no way! D.this is two.no way!
3、 以下所列的C语言常量中,错误的是( B )
A. 0xFF B. 1.2e0.5 C. 2L D. '\72'
4、 设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不正确的语句是( B )
A.k=*P1+*P2; B.P2=k; C.P1=P2; D.k=*P1 * (*P2);
5、 设有如下定义
int arr[]={6,7,8,9,10};
int * ptr;
则下列程序段的输出结果为:( D )
ptr=arr;
* (ptr+2)+=2;
printf ("%d,%d\n",*ptr,*(ptr+2));
A.8,10 B.6,8 C.7,9 D.6,10
6、在下以下程序的输出结果是:( B )
#define f(x) x*x
main()
{
int a=6,b=7,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A.9 B.35 C.36 D.18
7、设有以下说明和定义
typedef union
{ long i; int k[15]; char c; }DATE;
struct date
{ int cat; DATE cow; double dog; } too;
DATE max;
则下列语句的执行结果是:( 132 )
printf ("%d",sizeof (struct date ) +sizeof(max));
A.30 B.35 C.70 D.75
8、若已知int a[3][4],*p;p=(int *)a;那么对数组a的第2行第2列的正确引用是:( B )
A.a[2][2] B.p[9] C.a[9] D.p[1][1]
9、下列程序段所表示的逻辑关系是:( ????? )
if(a<b) { if(c==d) x=1;} else x=2;
A. x =
B. x =
C. x =
D. x =
10、若有说明int a[2][2];那么,下面正确的C赋值语句是:( D )
A.a=2; B.a[1]=2; C.a[1]={1,2}; D.a[0][1]=a[1][0];
11、给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为 (C)
A、数组X和数组Y等价 B、数组x和数组Y的长度相同
C、数组X的长度大于数组Y的长度 D、数组X的长度小于数组Y的长度
12、有以下程序
main()
{ char a[]="programming", b[]="language";
char *p1,*p2;
int i;
p1=a; p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i));
}
输出结果是:(D)
A、gm B、rg C、or D、ga
13、下面函数调用语句含有实参的个数为:(B)
func((exp1,exp2),(exp3,exp4,exp5));
A、1 B、2 C、3 D、4
14、当执行下面的程序时,如果输入ABC,则输出结果是(A)
#include "stdio.h"
#include "string.h"
main(){
char ss[10]="1,2,3,4,5";
gets(ss);
strcat(ss, "6789");
printf("%s\n",ss);
}
A、ABC6789 B、ABC67 C、12345ABC6 D、ABC456789
15、若二维数组a 有m列,则在a[i][j]之前的元素个数为( B )
A、j*m+i B、i*m+j C、 i*m+j-1 D、i*m+j+1

  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

选择 cddad,b*b*c(d),cdbab
*是没答案的,第10题感觉选C选D都可以
[/Quote]

D
dpdp_2012 2012-10-16
  • 打赏
  • 举报
回复
选择 cddad,b*b*c(d),cdbab
*是没答案的,第10题感觉选C选D都可以
夏天__ 2012-10-16
  • 打赏
  • 举报
回复
高手天天闲的蛋疼,来没事做题?
种花大熊猫 2012-10-16
  • 打赏
  • 举报
回复
坐等高手做。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧