一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
- 定义如下变量和数组:
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是()
for(i=0;i<;i++) printf("%d",x[i][2-1]);
A. 159
B. 147
C. 258
D. 369
- 函数调用:strcat(strepy(strl,str2),str3)的功能是()
A.将串str1复制到串st2中后再连接到串str3之后
B. 将串 strl 连接到串 str2之后再复制到串 str3 之后
C. 将串str2 复制到串 str1 中后再将串 str3 连接到串 strl 之后
D.将串str2连接到串str1之后再将串str1复制到串 str3中
3.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是()
A. x&&y
B. x>=y
C. xl++y&&y-z
D. x<y&&!zl1
- 设有如下定义:
. struct sk
{
int a;float b;}
data,*p;
若有p-&data;,则对data中的a成员的正确引用是().
A. (*pdata.a
B. (*p).a
C. p->data.a
D. p.data.a
5.执行下面的程序后,结果是()
c
#include <stdio.h>
void main() {
int a, b;
for (a = 1, b = 1; a <= 100; a++) {
if (b >= 20) {
break;
}
if (b % 3 == 1) {
b += 3;
continue;
}
printf("%d ", a);
}
b = 5;
}
A.2
B. 8
C.4
D. 10
7,若调用一个函数,且此函数中没有retum语句,则以下正确的说法是()
A. 该函数没有返回值
B. 该函数返回若干个系统默认值
C.该函数能返回一个用户所希望的函数值
D.该函数返回一个不确定的值
8,下列四组选项中,均不是C语言关键字的选项是()
A. define IF type
B. getc char print
C. includecasescanf
D. whilegopow
- inta,*p;p=&a;下列写法不等价的是()
A. *(p++)=a++
B. &*p=&a
C. (*p)+=a++
D. *&a=a
- 若有以下定义和语句:inta [10] = {1, 2, 3, 4. 5, 6, 7, 8, 9, 10}, *p=a;则不能表示a数组元素的表达式是()
A. p
B. a [10]
C. *a
D. a [p-a]
- C语言中,运作对象必须是整型数的运算符是()
A. %
B.
C. %和、
D.**
12.设有如下定义: int x=10,y=3z;则语句printf("%din",2-(x%yx/y));的输出结果是()
A. 1
B. 0
C. 4
D. 3
- 以下不正确的if语句是()
A. if(m>n);
B. if(m=n)m+=n;
C. if(m!=n) scanf("%d", &m); else
scanf("%d", &n);
D. if(m=n)&&(n!=0) n+=m;
14,设有说明int*ptr[M];其中的标识符ptr是()
A. M 个指向整型变量的指针
B.指向M个整型变量的函数指针
c.一个指向具有M个整型元素的一维数组的指针
D.具有M个指针元素的一维指针数组名,每个元素都只能指向整型变量
15.设有语句: "int a=1, b=2, *pl=&a, *p2=&b;",则使指针pi指向变量b的赋值语句是()
A. pl=*p2
B. *pl=p2
C. pl=p2
D. *pl=*p2
16,有如下程序
#include <stdio.h>
void main{
int n[5]={0,0,0},i,k=2;
for(i=0;i<k;i++) n[i]=n[i]+1;
printf("%dn",n[k]);
}
该程序的输出结果是()
A. 不确定的值
B. 2
C. 1
D. 0
17有以下程序,执行后输出结果是( )
#inolude <stdio.h>
void main{
int x[8]=(8,7,6,5,0,0},*s;
s=x+3;
printf("%dn",s[2]);
}
A. 随机值
B.0
C.5
D.6
18.下面的程序的输出结果是()
#include <sidio.b>
void main()
{
int x=3,y=0,z=0
if(x=y+z)printf("*");
else printf("# # # #");
}
A. 有语法错误不能通过编译
B.输出
C.可以通过编译,但是不能通过连接,因而不能运行
D.输出####
- 以下程序的输出结果是()
#include<stdio.h>
void main()
{
printf"%dn",NULL);}
A. 不确定的值(因变量无定义)
B.0
C. -1
D. 1
- 以下程序的输出结果是()
#include <stdio.h>
void main()
{char *s="2468";
int ql=0,q2=2;
printf("%s%sin",s+ql,s+q2);
}
A. 26
B. 246868
C.输出项不合法
D. 存放字符的地址值
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结果填写在答题纸的相应位置上。)
c
//从键盘输入china
#include <stdio.h>
int main() {
int v1 = 0, v2 = 0;
char ch;
while ((ch = getchar()) != '\n') {
switch (ch) {
case 'a':
case 'h':
default:
v1++;
case 'n':
v2++;
}
}
printf("%d,%d\n", v1, v2);
return 0;
}
2------------------------
c
#include <stdio.h>
int main() {
int v1 = 0, v2 = 0;
char ch;
while ((ch = getchar()) != '\n') {
switch (ch) {
case 'a':
case 'h':
default:
v1++;
case 'n':
v2++;
}
}
printf("%d,%d\n", v1, v2);
return 0;
}
3------------------------
c
#include <stdio.h>
int k = 0;
void fun(int m) {
m += k;
k += -m;
printf("m=%d, k=%d ", m, k++);
}
int main() {
int i = 4;
fun(i++);
printf("i=%d, k=%d\n", i, k);
return 0;
}
4_______
c
#include <stdio.h>
int a = 5;
void fun(int b) {
static int a = 10;
a += b++;
}
int main() {
int c = 20;
fun(c);
a = c;
printf("%d\n", a);
return 0;
}
5______
c
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "good", str2[20] = "morning";
int i, j;
for (i = strlen(str1) + 1, j = 0; str2[j] != '\0'; i++, j++) {
str1[i] = str2[j];
}
str1[i] = '\0';
printf("string=%s", str1);
return 0;
}
三、程序填空题(每空 5分,共 35 分。请将答案填写在答题纸的相应位置上)。
#include <stdio.h>
void swap(int *pl, int *p2)
{
①;
t=*pl; *pl=*p2; *p2=t;
}
void main0
{
int x=5, y=7;
int *px=&x, *py=&y;
swap(②);
printf("%d, %d \n", x, y);}
- 下面 invert 函数的功能是将一个字符串 str 的内容颠倒过来。请填空。
void invert(char str)
{
int i,j,k;
for(i=0,j=① ;i<j;_②,③)
k=str[i];
str[i]=str[j];
str-k;
}
3下面程序的功能是输出一个整形数组x中的最大值。
c
#include<stdio.h>
#define N 10
int fimax(int y,int);
void main
{
int i,x[N]
for(i=0;i<N;i++)
scanf("%d",&x[i])
prinft("%d",①)
}
int fmax(int y[],int n)
{
int k=0,i;
for(i=0;i<n;i++)
scanf("%d",&x[i]);
printf["%d",①;)
}
int fimax(int y[],int n)
{
int k=0,i;
for(i=0;i<n;i++)
if(y[i]>y[k])
②;
return k;
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)1.从键盘输入一个日期(某年某月某日),假定输入的日期总是正确的,输出该日期是该年第几天。
1.从键盘输入一个日期(某年某月某日),假定输入的日期总是正确的,输出该日期是该年第几天。
-
编写函数,判断一个正整数是否为完数。主函数输入输出。完数:一个数如果恰好等于它的因子之和,称该数为"完数"。1不是完数。如6=1+2+3,则6为完数。
-
补全程序:
#include<stdio.h>
int main()
{
char ch[100]="good morning,haha",ch1[40]="good aftemoon";
int count=0,
len;strappend(ch,chi)//将 chl 中字符串连接到 ch 尾部
count=replace(ch,o);//将 ch中某字符(o)转大写,并返回转换的个数return 0;
}