我这有C语言的题,哪位大侠能解决一下,必有重谢!

2024-12-22 21:10:05
推荐回答(3个)
回答1:

1.若有定义:const int i=10,j=20;int* const pi=(int*)&i;,则下列操作正确的为(A )。

A)*pi=0;
B)pi=&j;
C)i=10;pi=&j;
D)j=*pi;
解释:const定义的数据为只读数据。也就是说i和pi(地址)的值是不可以被修改的。B C D都修改了只读数据的值。A是修改了pi所指向的值,不是修改了pi的地址。所以A正确。

2.函数调用语句:fseek(fp,-20L,2);的含义是(C )。

A)将文件位置指针移到距离文件头20个字节处
B)将文件位置指针从当前位置向后移动20个字节
C)将文件位置指针从文件末尾处后退20个字节
D)将文件位置指针移到距离当前位置20个字节处

PS:仔细看下fseek函数就可以了。

3.在下述程序中,if (i>j) 语句共执行的次数是( )。
main()
{ int i=0,j=14,k=2,s=0;
for(;;)
{ i+= k ;
if(i>j)
{ printf(“%d”,s);
break ;
}
s+=i ;
}
}

A)6
B)9
C)7
D)12
这个好像没有答案 我计算的应该是8

4.语句printf(“%d\n”,strlen(“xyz\t\xab\3\\”));的输出结果是( C)。

A)9
B)11
C)7
D)8
PS:strlen遇到\0就停止计算长度。x y z \t ab 3 \

5.在C语言中,函数的隐含存储类别是(A )。

A)auto
B)static
C)extern
D)无存储类别
PS:查查资料,书上有说明的。

6.下列程序的输出结果是( C)。
main()
{
int k=4,m=5,n=7;
int *pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm); //运算符优先级
printf(“%d\n”,n);
}

A)5
B)7
C)20
D)21

7.以下程序将输出的字符是( C)。
#include "stdio.h"
main()
{
char c;
char (*p)[3];
char s[2][3] ={’a’,’b’,’c’,’d’,’e’,’f’};
p=&s[0];
c=*(p[1]+1);
printf("%c",c);
}

A)b
B)d
C)e
D)f

8.若a是整型变量,表达式~(a^~a)等价于(C )。

A)~a
B)1
C)0
D)2
PS:~优先级高于^。

9.有以下程序:
main()
{ char str[ ][8]={“Hello”,“Beijing”},*p=str;
printf(“%s\n”,p+8);}
该程序运行后的输出结果是(B )。

A)Hello
B)Beijing
C)jing
D)ijing

10.设有定义:#define STR "12345";,则以下叙述正确的是(B )。

A)宏名STR代替的是数值常量12345
B)宏定义以分号结束,编译时会产生错误信息
C)宏名STR代替的是字符串"12345"
D)宏名STR代替的是字符串常量"12345"

11.以下程序的输出结果为(C )。
int a=2;
int f(int *a)
{
return(*a)++;
}
void main()
{
int s=0;
{
int a=5;
s+=f(&a);
}
s+=f(&a);
printf("%d %d\n",a,s);
}

A)2 7
B)2 10
C)3 7
D)3 11
PS:全局变量和局部变量。

12.在下列字符序列中,属于C语言合法标识符的是(B )。

A)P12.a
B)stud_100
C)$water.1
D)88sum

13.若有定义:int a,b;char x,y;并有以下输入数据: 12 13 AaBb(回车)
则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是()。

A)scanf(“%d”,&a);
scanf(“%d”,&b);
x=getchar();y=getchar();
B)scanf(“%d%d %c %c”, &a, &b,&x,&y);
C)scanf(“%d %d %c %c”, &a,&b,&x,&x,&y,&y);
D)scanf(“%d %d %c%c%c%c”,&a,&b,&x,&x,&y,&y);
//这个好像没有答案。

14.下列选项中属于不正确的赋值语句的是( B)。

A)t--;
B)k=i==j;//优先级
C)t1=t2=t3=3;
D)t1=1,t2=2;

15.在下列语句选项中,只有一个在功能上与其他三个语句不等价(其中s1和s2表示某个C语句),这个不等价的语句是(D )。

A)if (a) s1; else s2;
B)if (!a) s2; else s1;
C)if (a!=0) s1; else s2;
D)if (a==0) s1; else s2;

LZ,给分吧。

回答2:

1、下列叙述不正确的是( )。本题(1分)
A:用typedef可以定义各种类型名,但不能用来定义变量
B:typedef和#define都是在预编译时处理的
C:用typedef只是将已存在的类型用一个新的标识符来代表
D:使用typedef有利于程序的通用和移植
A  B  C  D 
2、以下选项中,能定义s为合法的结构体变量的是( )。本题(1分)
A:typedef struct abc
{ double a;
char b[10];
}s;
B:struct abc
{ double a;
char b[10];
}s;
C:struct ABC
{ double a;
char b[10];
}
ABC s;
D:typedef ABC
{ double a;
char b[10];
}
ABC s;
A  B  C  D 
3、若a是整型变量,表达式~(a^~a)等价于( )。本题(1分)
A:~a
B:1
C:0
D:2
A  B  C  D 
4、语句printf(“%d\n”,strlen(“xyz\t\xab\3\\”));的输出结果是( )。本题(1分)
A:9
B:11
C:7
D:8
A  B  C  D 
5、假设所有变量均为整型,则执行运算x=(a=2,b=5,b++,a+b)后, x的值是( )。本题(1分)
A:7
B:8
C:6
D:2
A  B  C  D 
6、若二维数组定义为a[m][n],则在a[i][j]之前的元素个数为( )。本题(1分)
A:j*m+i
B:i*m+j
C:i*m+j-1
D:j*m+i-1
A  B  C  D 
7、当a=2,b=3,c=4,d=5时, 执行下面一段程序后x的值为( )。
if(a if(c>d)x=1 ;
else
if(a>c)
if(b else x=3 ;
else x=4 ;
else x=5 ;本题(1分)
A:2
B:3
C:4
D:5
A  B  C  D 
8、以下程序的运行结果是( )。
void fun(int *n)
{
static int m=2;
*n*=m-1; m+=2;
}
void main()
{
static int m=1;
int i;
for(i=1;i<4;i++)
fun(&m);
printf("%d\n",m);
}本题(1分)
A:8
B:10
C:11
D:15
A  B  C  D 
9、程序中对fun函数有如下说明:
int *fun();
下面说法正确的是( )。本题(1分)
A:fun函数是整型函数
B:fun函数的返回值是整型数据
C:fun函数的返回值是指向整型数据的指针类型
D:指针fun指向一个函数,该函数返回整型数据
A  B  C  D 
10、有以下程序段:
int a=0,b;
do { scanf(“%d”,&a);b++;} while(a!= 10 || b<3);
此处do-while循环的结束条件是( )。本题(1分)
A:a的值等于10并且b的值大于3
B:a的值等于10并且b的值大于等于3
C:a的值不等于10或者b的值小于3
D:a的值不等于10并且b的值大于等于3
A  B  C  D 
11、设char ch,str[4],*strp;,则下列赋值语句正确的是( )。本题(1分)
A:ch="CBA";
B:str="CBA";
C:strp="CBA";
D:*strp="CBA";
A  B  C  D 
12、以下程序关于sizeof()的运行结果是( )。
void main()
{
char a[]="movie",b[10]="movie";
printf("%d %d\n",sizeof(a),sizeof(b));
}本题(1分)
A:5 5
B:6 6
C:6 10
D:其他输出
A  B  C  D 
13、以下程序功能为输入1个正整数n, 计算并输出s的前n项的和:s=1/2-2/3+3/4-4/5+ ……(-1) n/(n+1),下划线处应填入的正确语句为(  )。
#include "stdio.h"
void main( )
{ int k, flag=1, n;
float s=0;
scanf("%d", &n);
for (k=1; k<=n; k++){
s=s+______;
flag=-flag;
}
printf("sum=%f\n", s);
}本题(1分)
A:1.0*k/(k+1)* flag
B:flag*n/(n+1)
C:-k/(k+1)
D:1.0*k/(k+1)
A  B  C  D 
14、在下述程序中,if (i>j) 语句共执行的次数是( )。
main()
{ int i=0,j=14,k=2,s=0;
for(;;)
{ i+= k ;
if(i>j)
{ printf(“%d”,s);
break ;
}
s+=i ;
}
}本题(1分)
A:6
B:9
C:7
D:12
A  B  C  D 
15、下列程序片段的输出结果是( )。
printf("%d\n",strlen("ATS\n0l2\2\\"));本题(1分)
A:l1
B:10
C:9
D:8
A  B  C  D 
16、以下程序的输出结果是( )。
main()
{int a=0,j;
for(j=0;j<4;j++)
{switch(j)
{case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}本题(1分)
A:20
B:13
C:10
D:36
A  B  C  D 
17、字符串"a\x44\\\nbcd\102a"的长度是( )。本题(1分)
A:12
B:17
C:9
D:11
A  B  C  D 
18、设有程序段 char k;while (k>0) k++; printf("%d\n",k);则程序输出结果为( )。本题(1分)
A:-127
B:256
C:-128
D:128
A  B  C  D 
19、以下程序将输出的字符是( )。
#include "stdio.h"
main()
{
char c;
char (*p)[3];
char s[2][3] ={’a’,’b’,’c’,’d’,’e’,’f’};
p=&s[0];
c=*(p[1]+1);
printf("%c",c);
}本题(1分)
A:b
B:d
C:e
D:f
A  B  C  D 
20、若以下程序所生成的可执行文件名为filel.exe ,当输入命令行:FILE1 CHINA BEIJING SHANGHAI ,执行该程序时,程序的输出结果是( )。
main(int argc,char * argv [])
{ while(argc-->1)
{++argv;printf("%s ",*argv);}
}本题(1分)
A:CHINA BEIJING SHANGHAI
B:FILE1 CHINA BEIJING
C:C B S
D:F C B
A  B  C  D 
21、语句:printf(“%d”,!0);的输出结果是( )。本题(1分)
A:1
B:0
C:有语法错误 ,不能执行
D:!0
A  B  C  D 
22、下列程序的输出结果是( )。
main()
{
int k=4,m=5,n=7;
int *pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf(“%d\n”,n);
}本题(1分)
A:5
B:7
C:20
D:21
A  B  C  D 
23、下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序:
void sort(int a[ ],int n)
{ int i,j,t;
for(i=0;i for(j=i+1;j if(a[i]}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10 },i;
sort(&aa[2],5);
for(i=0;i<10;i++)printf(“%d,”,aa[i]);
printf(“\n”);
}
该程序运行后的输出结果是( )。本题(1分)
A:1,2,3,4,5,6,7,8,9,10,
B:10,9,8,7,6,5,4,3,2,1,
C:1,2,7,6,5,4,3,8,9,10,
D:1,2,10,9,8,7,6,5,4,3,
A  B  C  D 
24、若有定义:int a,b;char x,y;并有以下输入数据: 12 13 AaBb(回车)
则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是( )。本题(1分)
A:scanf(“%d”,&a);
scanf(“%d”,&b);
x=getchar();y=getchar();
B:scanf(“%d%d %c %c”, &a, &b,&x,&y);
C:scanf(“%d %d %c %c”, &a,&b,&x,&x,&y,&y);
D:scanf(“%d %d %c%c%c%c”,&a,&b,&x,&x,&y,&y);
A  B  C  D 
25、以下程序的输出结果是(  )。
main( )
{ int n;
(n=6*4,n+6),n*2;
printf("n=%d\n",n);
}本题(1分)
A:30
B:24
C:60
D:48
A  B  C  D 
26、以下关于枚举的程序,其运行结果是( )。
#include "stdio.h"
main()
{
enum weekday
{ sun,mon,tue=5,wed,thu,fri,sat } a,b,c,d;
a=sun;
b=mon;
c=tue;
d=wed;
printf("%d %d %d %d\n",a,b,c,d);
}本题(1分)
A: 0 0 5 0
B: 1 2 5 4
C: 0 1 5 6
D: 0 1 5 3
A  B  C  D 
27、有以下程序:
main()
{ char str[ ][8]={“Hello”,“Beijing”},*p=str;
printf(“%s\n”,p+8);}
该程序运行后的输出结果是( )。本题(1分)
A:Hello
B:Beijing
C:jing
D:ijing
A  B  C  D 
28、以下程序运行后的输出结果是( )。
#include
struct NODE
{ int num; struct NODE *next; };
main()
{
struct NODE *p,*q,*r;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p->num=10; q->num=20; r->num=30;
p->next=q; q->next=r;
printf("%d\n ",p->num+q->next->num);
}本题(1分)
A:10
B:20
C:30
D:40
A  B  C  D 
29、下列函数调用语句中含有( )个参数。
func((f1,f2),(f2,f3),(f5,f6,f7))本题(1分)
A:3
B:5
C:6
D:7
A  B  C  D 
30、设有数组定义:char array[ ]=“123456789”;则数组array所占的空间为( )。本题(1分)
A:7个字节
B:8个字节
C:9个字节
D:10个字节
A  B  C  D 
31、设有定义:#define STR "12345";,则以下叙述正确的是( )。本题(1分)
A:宏名STR代替的是数值常量12345
B:宏定义以分号结束,编译时会产生错误信息
C:宏名STR代替的是字符串"12345"
D:宏名STR代替的是字符串常量"12345"
A  B  C  D 
32、下列程序的输出结果是( )。
struct student
{ int a, b, c; };
main()
{ struct student stu[2]={{2,3,4},{5,6,7}}; int t;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%d \n",t); }本题(1分)
A:0
B:1
C:4
D:5
A  B  C  D 
33、有如下程序:
#define f(x)x*x
main()
{ int i ;
i=f(2+2)/(1+1);
printf(“%d\n”,i);}
该程序执行后的输出结果是( )。本题(1分)
A:21
B:7
C:8
D:4
A  B  C  D 
34、有如下程序,该程序的输出结果是( )。
long f(int n)
{ if(n>2) return(f(n-2)+f(n-3));
else
if(n==2) return(2);
else return(1); }
main()
{ printf("%d\n",f(5)); }本题(1分)
A:2
B:3
C:4
D:5
A  B  C  D 
35、若有定义:const int i=10,j=20;int* const pi=(int*)&i;,则下列操作正确的为( )。本题(1分)
A:*pi=0;
B:pi=&j;
C:i=10;pi=&j;
D:j=*pi;
A  B  C  D 
36、在下列字符序列中,属于C语言合法标识符的是( )。本题(1分)
A:P12.a
B:stud_100
C:$water.1
D:88sum
A  B  C  D 
37、以下程序的输出结果是( )。
main()
{int a=1,b=0;
switch(a)
{case 1: switch (b)
{case 0:printf("**0**");break;
case 1:printf("**1**");break;
}
case 2:printf("**2**");break;
}
}本题(1分)
A:**0**
B:**0****2**
C:**0****1****2**
D:有语法错误
A  B  C  D 
38、以下程序的输出结果是( )。
main( )
{ int w=4,x=3,y=2,z=1;
if(x>y&&!(z==w)) printf("%d\n",(w else printf("%d\n", (w>x?w:z>y?z:x));
}本题(1分)
A:1
B:2
C:3
D:4
A  B  C  D 
39、在下列语句选项中,只有一个在功能上与其他三个语句不等价(其中s1和s2表示某个C语句),这个不等价的语句是( )。本题(1分)
A:if (a) s1; else s2;
B:if (!a) s2; else s1;
C:if (a!=0) s1; else s2;
D:if (a==0) s1; else s2;
A  B  C  D 
40、在C语言中,函数的隐含存储类别是( )。本题(1分)
A:auto
B:static
C:extern
D:无存储类别
A  B  C  D 
41、在C程序中有如下语句:char *func(int x,int y); 它是( )。本题(1分)
A:对函数func的定义
B:对函数func的调用
C:对函数func的原型说明
D:不合法的
A  B  C  D 
42、有以下函数:char *fun(char *p){return p;},该函数的返回值为( )。本题(1分)
A:不确定值
B:参数p中存放的地址值
C:一个临时存储单元的地址值
D:形参p自身的地址值
A  B  C  D 
43、下列程序的输出结果是( )。
struct st
{ int x;int *y;}*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{ p=aa;
printf(“%d ”,++(*p->y));
printf(“%d ”,(++p)->x);
printf(“%d ”,++p->x);本题(1分)
A:20 20 10
B:21 60 50
C:11 60 61
D:31 70 60
A  B  C  D 
44、以下是求两个正整数的最大公约数的函数fun( ), 下划线处应填入的正确语句为( )。
int fun(m,n)
int m,n;
{int r;
if(m if(n= =0) return(m);
do{ r=m%n;
if (r!=0){ m=n;n=r;}
} while (______);
return(n);
}本题(1分)
A:r!=0
B:r==0
C:n!=0
D:n==0
A  B  C  D 
45、以下程序输出的字符序列是( )。
#include "stdio.h"
main(){
char a[]="language",*p;
p=a;
while(*p!=’u’){ printf("%c",*p-’u’+’U’);p++;}
}本题(1分)
A:LANGUAGE
B:language
C:LANG
D:LANGuage
A  B  C  D 
46、下列程序的运行结果是( )。
main()
{ char arr[2][4];
strcpy(arr,“abc”);strcpy(arr[1],“ABC”);
printf(“%s\n”,arr);}本题(1分)
A:abc ABC
B:abc
C:ABC
D:arr
A  B  C  D 
47、C语言中运算对象必须是整型的运算符是( )。本题(1分)
A:/
B:++
C:%
D:!=
A  B  C  D 
48、以下程序的输出结果是( )。
main()
{ int i,j,x=0;
for (i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{ if (j%2) continue;
x++;}
x++; }
printf("x=%d\n",x); }本题(1分)
A:x=4
B:x=8
C:x=6
D:x=12
A  B  C  D 
49、以下程序的输出结果为( )。
int a=2;
int f(int *a)
{
return(*a)++;
}
void main()
{
int s=0;
{int a=5;
s+=f(&a);
}
s+=f(&a);
printf("%d %d\n",a,s);
}本题(1分)
A:2 7
B:2 10
C:3 7
D:3 11
A  B  C  D 
50、函数调用语句:fseek(fp,-20L,2);的含义是( )。本题(1分)
A:将文件位置指针移到距离文件头20个字节处
B:将文件位置指针从当前位置向后移动20个字节
C:将文件位置指针从文件末尾处后退20个字节
D:将文件位置指针移到距离当前位置20个字节处
A  B  C  D 
51、以下程序的运行结果是( )。
#include "stdio.h"
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=NULL;
q=p+5;
printf("%d %d\n",*p,*q);
}本题(1分)
A:运行后报错
B:6 11
C:6 12
D:5 5
A  B  C  D 
52、在PC16位机环境下,以下程序的运行结果是( )。
main()
{ unsigned int a ;
int b=-2;
a=b;
printf(“%u”,a);}本题(1分)
A:-2
B:65534
C:32768
D:-32768
A  B  C  D 
53、以下程序的输出结果是( )。
#include
int main()
{
char str[100]="ABCDEFG", *p=str;
int i;
for(i = 0; *p != ’\0’; p++,i++);
printf("%d\n",i);
return 0;
}本题(1分)
A:7
B:8
C:99
D:100
A  B  C  D 
54、有如下定义:
struct s1
{
char a[3];
int num;
}t={’a’,’b’,’x’,4},*p;
p=&t;
则下列语句输出结果为x的是( )。本题(1分)
A:printf("%c\n",p->t.a[2]);
B:printf("%c\n",(*p).a[2]);
C:printf("%c\n",p->a[3]);
D:printf("%c\n",(*p).t.a[2]);
A  B  C  D 
55、若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式应是( )。本题(1分)
A:"ab+"
B:"rb+"
C:"wb+"
D:"ab"
A  B  C  D 
56、若变量定义时未初始化,则其值不确定的是( )。本题(1分)
A:静态全局变量
B:静态局部变量
C:局部变量
D:全局变量
A  B  C  D 
57、下列程序运行后的输出结果是( )。
fun(int a, int b)
{ if(a>b) return(a);
else return(b);
}
main()
{ int x=3, y=8, z=6, r;
r=fun(fun(x,y), 2*z);
printf("%d\n", r);
}本题(1分)
A:3
B:6
C:8
D:12
A  B  C  D 
58、若x是int型变量,且有下面的程序片段:
for(x=5;x<8;x++)
printf((x/2)?(“**%d”):(“##%d”),x);
该程序片段的输出结果是( )。本题(1分)
A:**5**6**7
B:##5**6##7**8
C:**5##6**7
D:**5##6**7##8
A  B  C  D 
59、下列选项中属于不正确的赋值语句的是( )。本题(1分)
A:t--;
B:k=i==j;
C:t1=t2=t3=3;
D:t1=1,t2=2;
A  B  C  D 
60、以下程序的输出结果是( )。
main( )
{ char ch[2][5]={ "6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]> ’\0’;j+=2)
s=10*s+p[i][j]- ’0’;
printf("%d\n",s);
}本题(1分)
A:69825
B:63825
C:6385
D:693825
A  B  C  D

回答3:

好难,我今天刚开始学习C语言