2017年最新C语言考题带答案
A.3839
B.3938
C.380039
D.390038
(42)有以下程序
#include
main()
{ int a,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,
B.;
}
输出结果是
A.2,1
B.3,2
C.4,3
D.2,-1
(43)设有如下定义:
int (*ptr)*();
则以下叙述中正确的是
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
(44)有以下程序
#include
struct stu
{ int num;
char name[10];
int age;
};
void fun(struct stu *p)
{ printf("%s\n",(*p).name); }
main()
{
struct stu students[3]={ {9801,"Zhang",20},
{9802,"Wang",19},
{9803,"Zhao",18} };
fun(students+2);
}
输出结果是
A.Zhang
B.Zhao
C.Wang
D.18(45)设有以下说明和定义:
typedef union
{ long i; int k[5]; char c; }DATE;
struct date
{ int cat; DATE cow; double dog; } too;
DATE max;
则下列语句的执行结果是
printf ("%d",sizeof (struct date )+sizeof(max));
A.26
B.30
C.18
D.8
(46)有以下程序
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
(47)有以下程序
viod fun (int a,int b,int
C.
{ a=456; b=567; c=678;}
main()
{ int x=10, y=20,z=30;
fun (x,y,z);
printf("%d,/%d\n",c,
D.;
}
输出结果是
A.30,20,10
B.10,20,30
C.456,567,678
D.678,567,456
(48)有以下程序
int fun(int x,int y,int *cp,int *dp)
{ *cp=x+y; *dp=x-y; }
main()
{ int a, b, c, d;
a=30; b=50;
fun(a,b,&c,&
D.;
printf("%d,%d\n", c,
D.;
}
输出结果是
A.50,30
B.30,J50
C.80,-20
D.80,20
(49)有以下程序
main()
{ int i, j;
for(j=10;j<11;j++)
{ for(i=9;i=j-1)printf("%d",j);
}
}
输出结果是
A.11
B.10
C.9
D.10 11
(50)有以下程序
#include "atdio.h"
int abc(int u,intv);
main ()
{ int a=24,b=16,c;
c=abc(a,
B.;
printf('%d\n",
C.;
}
nt abc(int u,int v)
{ int w;
while(v)
{ w=u%v; u=v; v=w }
return u;
}
输出结果是
A.6
B.7
C.8
D.9 二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡【1】-【20】序号的横线上,答在试卷上不得分.
(1) 自动批自理文件名为【1】 。
(2) DOS命令分为内部命令与外部命令,COMP命令属于【2】命令。
(3) 设当前为C盘,现要用一条DOS命令在打印机上输出A盘当前目录下所有扩展名为.DAT的文件内容。这一条DOS命令应为【3】 。
(4) 要将当前盘当前目录下的子目录XYZ中所有扩展名为.BAK 的文件名改成扩展名为.FOR,应使用的DOS命令为【4】 。
(5) 设DOS外部命令文件所在的路径均已用PATH命令打通。现要将当前盘当前目录下的文件WST.TXT设置为只读属性,应使用的DOS命令为【5】 。
(6) 设x和y均为int型变量,且x=1,y=2,则以下表达式的值为【6】 。
1.0+x/y
(7) 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【7】 。
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
(8) 设有以下定义的语句:
int a[3][2]={10,20,30,40,50,60}, (*p)[2];
p=a;
则 *(*(p+2)+1)值为【8】 。
(9) 以下程序的输出结果是【9】 。
#include
int fun(int x,int y)
{ static int m=0,i=2;
i+=m+1;
m=i+x+y;
return m
}
main()
{ int j=4,m=1,k;
k=fun(j,m); printf("%d,",k);
k=fun(j,m); printf("%d\n",k);
}
(10) 函数fun的功能是:使一个字符串按逆序存放,请填空
void fun (char str[])
{ char m; int i,j;
for(i=0,j=strlen(str);i<【10】;i++,j--)
{ m=str[i];
str[i]=【11】;
str[j-1]=m;
}
printf("%s\n",str);
}
(11) 以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
#include"ctype.h"
#include"stdio.h"
main()
{ char str[81],*sptr;
int i;
for(i=0;i<80;i++)
{ str[i]=getchar();
if(str[i]=='\n') break;
}
str[i]=【12】;
sptr=str;
while(*sptr) putchar(*sptr【13】);
}
(12) 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。
#include
main()
{ char str[100],str2[100],c;
int i,s;
printf("\n input string 1:\n"); gest(str1);
printf("\n input string 2:\n"); gest(str2);
i=0;
while((strl[i]==str2[i]&&(str1[i]!=【14】))
i++;
s=【15】;
printf("%d\n",s);
}(13) 以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。
#include
main()
{ FILE *fp;
char str[100]; int i=0;
if((fp=fopen("text.txt",【16】))==NULL)
{ printf("can't open this file.\n");exit(0);}
printf("input astring:\n"); gest(str);
while (str[i])
{ if(str[i]>='a'&&str[i]<='z')
str[i]=【17】;
fputc(str[i],fp);
i++;
}
fclose(fp);
fp=fopen("test.txt",【18】);
fgets(str,100,fp);
printf("%s\n",str);
fclose(fp);
}
(14) 以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。
#include.
main()
{ char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C'
,'D','E','F'};
int c[64],d,i=0,base;
long n;
printf("enter a number:\n"); scanf("%ld",&n);
printf("enter new base:\n"); scanf("%d",&base);
do
{ c[i]=【19】;
i++; n=n/base;
} while(n!=0);
printf("transmite new base:\n");
for(--i;i>=0;--i)
{ d=c[i];
printf("%c",b【20】;
}
}
参考答案
一、选择题((1)-(40)题每题1分;(41)-(50)题每题2分)
(1)B (2)B (3)D (4)D (5)B (6)A (7)B (8)C (9)D (10)A
(11)D (12)C (13)A (14)B (15)D (16)C (17)B (18)A (19)A (20)A
(21)C (22)D (23)A (24)D (25)B (26)C (27)C (28)B (29)C (30)C
(31)D (32)D (33)B (34)C (35)B (36)D (37)B (38)A (39)D (40)D
(41)A (42)A (43)C (44)B (45)B (46)D (47)A (48)C (49)B (50)C
二、填空题(每空2分,共4分)
(1)至(5)题中所有字母都允许大,小写或大小写混合
(1) 【1】AUTOEXEC.BAT
(2) 【2】外部(答 外部命令不扣分)
(3) 【3】COPY A:*.DAT PRN
(在 COPY 后面与A:*.DAT后面都至少要有一个空格)
(4) 【4】RENXYZ\*.BAK *.FOR 或RENAME XYZ\*.BAK*.FOR
(在REN 或RENAME 后面与XYZ\*.BAK 后面都至少要有一个空格)
(5) 【5】ATTRIB+R WST.TXT
(在ATTRIB 后面与+R后面都至少有一个空格)或ATTRIB WST.TXT+R(在ATTRIB后面与WST.TXT后面都至少要有一个空格)
(6) 【6】1.0或1
(7) 【7】10
(8) 【8】60
(9) 【9】8,17
(10) 【10】 strlen(str )/2或strlen(str)/2.0或0.5*strlen(str)或j或j-1
【11】 str[j-1]或*(str+j-1)
(11) 【12】 '\0' 或0
【13】 ++
(12) 【14】 '\0'或0
【15】 strl[i]-str2[i]
(13) 【16】 "w"或"w+"或"wt"或"w+t"或"""wt+"
【17】 str[i]-32 或str[i]-('a'-'A'或str[i]-'a'+'A'
【18】 "r"或"r+"或"r+t"或"rt+"
(14) 【19】 nºse
【20】 [d]
【2017年最新C语言考题带答案】相关文章:
9.C语言for循环