一. 选择题(本题共10小题,每小题2分,满分40分)
1.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是【1】.
A) 字符A B)字符a C)字符e D)非法的常量
2. 以下非法的赋值语句是【2】.
A) n=(i=2,++i); B)j++; C) ++(i+1); D)x=j>0;
3. 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是【3】.
A)6.500000 B)6 C) 5.500000 D) 6.000000
4. 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是【4】.
A) scanf(“%2d%2d%2d”,&i,&j,&k);
B) scanf(“%d %d %d”,&i,&j,&k);
C)scanf(“%d,%d,%d”,&i,&j,&k);
D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
5. 与数学式子 对应的C语言表达式是【5】.
A) 3*x^n(2*x-1) B) 3*x**n(2*x-1)
C) 3*pow(x,n)*(1/(2*x-1)) D) 3*pow(n,x)/(2*x-1)
6. 以下选项中,与k=n++完全等价的表达式是【6】.
A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+1
7. 有以下程序
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0:m++;break;
case 1:m++;
switch(b%2)
{ default:m++;
case 0:m++;break;
}
}
printf(“%d\n”,m);
}
程序运行后的输出结果是【7】.
A) 1 B) 2 C) 3 D) 4
8. C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是【8】.
A) void B) int C) float D) double
9. 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是【9】.
A) p=q; B) *p=*q; C) n=*q; D) p=n;
10.以下4个选项中,不能看作一条语句的是【10】. A){;} B)a=0,b=0,c=0; C)if(a>0); D) if(b==0) m=1;n=2;
11.设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是【11】.
A)scanf("%d",pa);
B)scanf("%d",a);
C)scanf("%d",&pa);
D)scanf("%d",*pa);
12. 下面的程序输出是【12】.
typedef unio
{ long x[2]; int y[4]; char z[8];} MYTYPE;
MYTYPE them;
main()
{ printf("%d\n",sizeof(them));}
A) 32 B) 16 C) 8 D) 24
13.有以下程序
main( )
{ int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf("%d\n",s);
}
程序执行后的输出结果是【13】.
A)自然数1~9的累加和 B)自然数1~10的累加和
C)自然数1~9中的奇数之和 D)自然数1~10中的偶数之和
14.若程序中定义了以下函数
double myadd(double a,double b)
{ return (a+b);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以 下选项中错误的说明是【14】.
A)double myadd(double a,b);
B)double myadd(double,double);
C)double myadd(double b,double a);
D)double myadd(double x,double y);
15.有以下程序
char fun(char x , char y)
{ if(x
return y;
}
main( )
{ int a='9',b='8',c='7';
printf("%c\n",fun(fun(a,b),fun(b,c)));
}
程序的执行结果是【15】.
A)函数调用出错 B)8 C)9 D)7
16.设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
【16】.
A)p=1; B)*q=2; C)q=p; D)*p=5;
17.有以下程序
void sum(int *a)
{ a[0]=a[1];}
main( )
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--) sum(&aa[i]);
printf("%d\n",aa[0]);
}
执行后的输出结果是【17】.
A)4 B)3 C)2 D)1
18.有以下定义
#include
char a[10],*b=a;
不能给数组a输入字符串的语句是【18】.
A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);
19.有以下程序
main( )
{ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4]));
}
执行后输出结果是【19】.
A)2 B)3 C)4 D)5
20. 设有以下语句
typedef struct S
{ int g; char h;} T;
则下面叙述中正确的是【20】.
A)可用S定义结构体变量 B)可以用T定义结构体变量
C)S是struct类型的变量 D)T是struct S类型的变量
二. 填空题(本题共10个空,每空3分,满分30分)
1.以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来.请填空.
#include
main()
{ FILE *fp;
char str[100]; int i=0;
if((fp=fopen("text.txt", 【 21】 ))==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]=__【22】__;
fputc(str[i],fp);
i++;
}
fclose(fp);
fp=fopen("test.txt",_【23】 );
fgets(str,100,fp);
printf("%s\n",str);
fclose(fp);
}
2. 以下程序可以把从键盘上输入的十进制数(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]=_【24】 ;
i++; n=n/base;
} while(n!=0);
printf("transmite new base:\n");
for(--i;i=0;--i)
{ d=c[i];
printf("%c",b_【25】 );
}
}
3. 有以下程序
main()
{ int i, j;
for(j=10;j<11;j++)
{ for(i=9;i
if (!(j%i))break;
if(i=j-1)printf("%d",j);
}
}
输出结果是:【26】.
4. 以下程序的输出结果是【27】.
main()
{ int a=177;
printf("%o\n",a);
}
5. 以下程序的输出结果是【28】.
main()
{ int a=0
a+=(a=8);
printf("%d\n",a);
}
6. 以下程序输出的结果是【29】.
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
7. 以下程序的输出结果是【30】.
main()
{ char s[]="abcdef";
s[3]=‘\0';
printf("%s\n",s);
}
三. (本题共1小题,满分20分)
将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和十位上, b数的十位和个位数依次放在c数的百位和千位上(例如,当a=45,b=12。执行程序后,c=2154)。编程实现上述功能。
四. (本题共1小题,满分20分)
编写程序,实现下述功能。
从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
五. (本题共1小题,满分20分)
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
六. (本题共1小题,满分20分)
读取10个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。