内容正文:
编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。
山东省软件与应用技术类
《编程语言基础—C语言》高教版第五版
高频考点冲刺卷(六)解析版
时间:60分钟 总分:100分
班级 姓名 学号 成绩
一、单选题(共25小题,每题2分,共50分)
1. 以下选项中,不能作为C语言合法常量的是()
A. 0.1e+6 B. 'cd' C. "\a" D. '\011'
答案:B
解析: 'cd'是多个字符,在C语言中不能用单引号括起来表示一个字符常量,除非是转义字符或单个字符。字符常量只能是单个字符或转义字符。
2. 设有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是()
A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000
答案:A
解析:计算过程:a%3=1,(int)(x+y)=7,1*7=7,7%2=1,1/4=0(整数除法),x+0=2.5。
3. 在下列选项中,不正确的赋值语句是()
A.++t; B. n1=(n2=(n3=0)); C.k=i=j; D.a=b+c=1;
答案:D
解析:不能给表达式赋值
4. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是()
A. (!a==1) && (!b==0) B. (a<b) && !c||1
C. a && b D. a||(b+b)&&(c-a)
答案:A
解析: !a=0,所以(!a==1)为假,整个表达式为0。
5. 有以下程序段:int k=0; while(k=1) k++; while循环执行的次数是()
A. 无限次 B. 有语法错,不能执行
C. 一次也不执行 D. 执行1次
答案:A
解析: while(k=1)是将1赋值给k,循环条件永远为真,无限循环。
6. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int i=0, a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printf("%d
", a);
}
A. 21 B. 32 C. 33 D. 11
答案:B
解析: 第一次进入while,i=0,进入for,if条件成立,break跳出for,i+=11变为11,a=11。第二次while循环,i=11,进入for,if条件不成立,i--变为10,继续循环,if条件成立break,跳出for,i+=11变为21,a=11+21=32。此时i=21,while条件不成立,结束。
7. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a=5, b=4, c=3, d=2;
if(a>b>c)
printf("%d
", d);
else if((c-1>=d)==1)
printf("%d
", d+1);
else
printf("%d
", d+2);
}
A. 2 B. 3 C. 4 D. 5
答案:B
解析: a>b>c即(5>4)>3,5>4为1,1>3为假,所以执行else if。c-1>=d即3-1>=2为真,值为1,等于1,所以输出d+1=3。
8. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int i, n=0;
for(i=2; i<5; i++)
{
do {
if(i%3) continue;
n++;
} while(!i);
n++;
}
printf("n=%d
", n);
}
A. n=5 B. n=2 C. n=3 D. n=4
答案:D
解析: i=2时,do-while循环:i%3=2非0,continue,但continue在do-while中跳到循环条件,!i为0,循环结束。n++一次,n=1。i=3时,i%3=0,不执行continue,n++变为2,然后while(!i)为0,退出内层循环,n++变为3。i=4时,i%3=1非0,continue,条件!i为0退出,n++变为4。
9. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} };
int b[3]={0}, i;
for(i=0; i<3; i++)
b[i]=a[i][2-i];
for(i=0; i<3; i++)
printf("%d ", b[i]);
}
A. 1 5 9 B. 3 5 7 C. 3 6 9 D. 1 4 7
答案:B
解析: b[i]=a[i][2-i],即b[0]=a[0][2]=3,b[1]=a[1][1]=5,b[2]=a[2][0]=7。
10. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[4][4]={ {1,3,5,7},{2,4,6,8},{3,5,7,9},{4,6,8,10} };
int i, s=0;
for(i=0; i<4; i++)
s+=a[i][1];
printf("%d
", s);
}
A. 18 B. 16 C. 20 D. 22
答案:A
解析:求第二列的和:3+4+5+6=18。
11. 以下程序的输出结果是()
#include <stdio.h>
int f(int x)
{
int y;
if(x==0||x==1) return 3;
y=x*x-f(x-2);
return y;
}
main()
{
int z;
z=f(3);
printf("%d
", z);
}
A. 0 B. 9 C. 6 D. 8
答案:C
解析: f(3)=3×3-f(1)=9-3=6。
12. 以下程序的输出结果是()
#include <stdio.h>
int fun(int a, int b)
{
static int m=0, i=2;
i+=m+1;
m=i+a+b;
return m;
}
main()
{
int k=4, m=1, p;
p=fun(k, m); printf("%d,", p);
p=fun(k, m); printf("%d
", p);
}
A. 8,17 B. 8,16 C. 8,20 D. 8,8
答案:A
解析:第一次调用:i=2+0+1=3,m=3+4+1=8,返回8。第二次调用:静态变量m和i保持上一次的值,m=8,i=3,i=3+8+1=12,m=12+4+1=17,返回17。
13. 以下程序的输出结果是()
#include <stdio.h>
#define N 4
void fun(int a[][N], int b[])
{
int i;
for(i=0; i<N; i++)
b[i]=a[i][i];
}
main()
{
int x[N][N]={ {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16} }, y[N], i;
fun(x, y);
for(i=0; i<N; i++)
printf("%d,", y[i]);
}
A. 1,6,11,16, B. 1,2,3,4, C. 4,7,10,13, D. 4,8,12,16,
答案:A
解析:函数fun取二维数组对角线元素,即x[0][0],x[1][1],x[2][2],x[3][3]。
14. 以下程序的输出结果是()
#include <stdio.h>
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->x);
printf("%d,", (++p)->x);
printf("%d
", ++(*p->y));
}
A. 51,60,21 B. 50,60,21 C. 51,60,20 D. 50,60,20
答案:A
解析: ++p->x:->优先级高于++,所以相当于++(p->x),即aa[0].x自增为51。然后(++p)->x:p先自增指向aa[1],再取x=60。最后++(*p->y):p指向aa[1],p->y指向dt[1],(*p->y)即20,自增后为21。
15. 设有定义:int a, *pa=&a; 以下scanf语句中能正确为变量a读入数据的是()
A. scanf("%d", pa); B. scanf("%d", a);
C. scanf("%d", &pa); D. scanf("%d", *pa);
答案:A
解析: pa是指针,已指向a,所以scanf中应使用pa,即变量地址。
16. 若有以下定义和语句:int s[4][5], (*ps)[5]; ps=s; 则对s数组元素的正确引用是()
A. ps+1 B. *(ps+3) C. ps[0][2] D. *(ps+1)+3
答案:C
解析: ps是指向长度为5的数组的指针,ps=s后,ps[0][2]等价于s[0][2]。
17. 以下程序的输出结果是()
#include <stdio.h〉
void main( )
{ char str[]=”1a2b3c”; int i;
for(i=0;str[i]!='\0';i++)
if(str[i]>='0’&&str[i]<='9’)
printf(”%c”,str[i]);
printf(”
”);
}
A. 123456789 B.1a2b3c C. abc D. 123
答案:D
解析:输出字符串”1a2b3c”中的数字字符。
18. 以下程序的输出结果是()
#include <stdio.h>
main()
{
char *s="12134211";
int v[4]={0,0,0,0}, k, i;
for(k=0; s[k]; k++)
{
switch(s[k])
{
case '1': i=0; break;
case '2': i=1; break;
case '3': i=2; break;
case '4': i=3; break;
}
v[i]++;
}
for(k=0; k<4; k++)
printf("%d ", v[k]);
}
A. 4 2 1 1 B. 0 0 0 8 C. 4 6 7 8 D. 8 8 8 8
答案:A
解析:统计字符串中1、2、3、4的个数,分别为4、2、1、1。
19. 以下程序的输出结果是()
#include <stdio.h>
#include <string.h>
main()
{
char b1[8]="abcdefg", b2[8], *pb=b1+3;
while(--pb>=b1) strcpy(b2, pb);
printf("%d
", strlen(b2));
}
A. 8 B. 3 C. 1 D. 7
答案:D
解析: pb初始指向b1[3]即'd',然后循环:--pb指向'c',strcpy(b2, "cdefg"),b2变为"cdefg";然后--pb指向'b',strcpy(b2, "bcdefg");然后--pb指向'a',strcpy(b2, "abcdefg");然后--pb指向b1之前,循环结束。最后输出strlen(b2)为7。
20. 以下程序的输出结果是()
#include <stdio.h>
void swap(char *x, char *y)
{
char t;
t=*x; *x=*y; *y=t;
}
main()
{
char *s1="abc", *s2="123";
swap(s1, s2);
printf("%s,%s
", s1, s2);
}
A. 123,abc B. abc,123 C. 1bc,a23 D. 321,cba
答案:C
解析:swap函数交换的是字符,但s1和s2指向的是字符串常量,不能修改,程序运行会出错。但从逻辑上,交换的是两个字符串的第一个字符,所以理论上输出是"1bc,a23"。
21.设有以下函数:void fun(int n, char *s) { ... }则下面对函数指针的定义和赋值正确的是( )
A. void (*pf)(); pf=fun; B. void *pf(); pf=fun;
C. void *pf(); *pf=fun; D. void (*pf)(int, char); pf=&fun;
答案:D
解析: 函数指针定义:void (*pf)(int, char); 赋值:pf=fun; 或 pf=&fun; 都可以。
22. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[5]={2,4,6,8,10}, *p, k;
p=a;
k=&p;
printf("%d ", *(p++));
printf("%d
", k);
}
A. 4 4 B. 2 2 C. 2 4 D. 4 6
答案:C
解析:*(p++)先取*p即2,然后p指向4。k是取p指向的值,此时p指向4,所以输出4。
23. 以下程序的输出结果是()
#include <stdio.h>
main()
{
char *a[]={"abcd","efgh","ijkl","mnop"};
char p;
p=a;
printf("%s
", *(p+1));
}
A. a B. abcd C. e D. efgh
答案:D
解析: p指向数组a的首元素,*(p+1)即a[1],为"efgh"。
24. 以下程序的输出结果是()
#include <stdio.h>
void fun(int *a, int n)
{
int i, t;
for(i=0; i<n/2; i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
main()
{
int k[10]={1,2,3,4,5,6,7,8,9,10}, i;
fun(k,5);
for(i=0; i<10; i++)
printf("%d,", k[i]);
}
A. 5,4,3,2,1,6,7,8,9,10, B. 10,9,8,7,6,5,4,3,2,1,
C. 1,2,3,4,5,6,7,8,9,10, D. 1,2,3,4,5,10,9,8,7,6,
答案:A
解析: fun(k,5)将数组前5个元素逆置,变为5,4,3,2,1,6,7,8,9,10。
25. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} };
int *p, i;
p=&a[0][0];
for(i=0; i<9; i++)
p[i]=i+1;
printf("%d
", a[1][2]);
}
A. 3 B. 6 C. 9 D. 2
答案:B
解析: p指向数组首地址,通过p[i]将数组元素依次赋值为1到9,所以a[1][2]对应p[5]=6。
二、简答题(共3小题,每题5分,共15分)
1.阅读程序,写出运行结果。
#include <stdio.h>
main()
{
int a=3, b=4, c=5, t=99;
if(b<a && a<c) t=a; a=c; c=t;
if(a<c && b<c)t=b; b=a; a=t;
printf("%d %d %d
", a, b, c);
}
答案:4 5 99
解析:
第一个if条件(b<a && a<c)为假,所以不执行t=a;然后执行a=c,a变为5;执行c=t,c变为99。第二个if条件(a<c && b<c)为真(5<99 && 4<99),执行t=b,t变为4;然后执行b=a,b变为5;执行a=t,a变为4。输出a、b、c:4 5 99。
2. 阅读程序,写出运行结果
#include <stdio.h>
int f(int m){
static int n=0;
n+=m;
return n;}
main(){
int n=0;
printf("%d,", f(++n));
printf("%d
", f(n++));
}
答案:1,2
解析:
第一次调用f(++n):++n使n变为1,传入f,静态局部变量n初始为0,n+=m后变为1,返回1。
第二次调用f(n++):n++传递的是1,然后n变为2,静态局部变量n保持为1,n+=m后变为1+1=2,返回2。
3.求一维数组a中的最大元素及其下标。
例如,当一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9,
程序的输出应为:The max is: 34,pos is:7 。
#include <conio.h>
#include <stdio.h>
main()
{
int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos;
max = a[0];
pos = 0;
for ( i=1; i〈10; i++)
if (max > a[i])
{
max = a[i];
i = pos;
}
printf("The max is: %d ,pos is: %d
”, max , pos);
}
答案:
(1)max > a[i]应该为max <a[i]
(2)i = pos;应该改为pos = i;
三、案例分析题(共3小题,每题5分,共15分)
1. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数。请完成填空。
#include <stdio.h>
main(){
int i, j;
for(i=0; ① ; i++)
{
j=i*10+6;
if( ② ) continue;
printf("%d ", j);
}
}
答案:①:i<10,②:j%3!=0
2. 下面程序的功能是:将字符串s中的数字字符取出,并转换成一个整数。请完成填空。
#include <stdio.h>
main(){
char s[80], *p=s;
int num=0;
gets(s);
while( ③ )
{
if(*p>='0'&&*p<='9')
num = ④ + *p - '0';
p++;
}
printf("%d
", num);
}
答案:③:*p!='\0',④:num*10
3. 下面程序的功能是:输入一个字符串,将其中所有的大写字母转换为小写字母,其他字符不变。请完成填空。
#include <stdio.h>#include <ctype.h>
main(){
char str[80];
int i;
gets(str);
for(i=0; str[i]!='\0'; i++)
if( ⑤ ) //
str[i] = ⑥ ;
puts(str);
}
答案:⑤:str[i]>='A'&&str[i]<='Z',⑥:str[i]+32
四、综合应用题(共2小题,每题10分,共20分)
1. 编写程序,输入一个正整数n(n<=20),然后输入n个整数,将这n个整数逆序存放并输出。
答案:
参考程序:
#include <stdio.h>
main(){
int n, i, t, a[20], *p, *q;
printf("请输入整数个数n:");
scanf("%d", &n);
printf("请输入%d个整数:", n);
for(i=0; i<n; i++)
scanf("%d", a+i); // 使用指针表示法
p = a; // p指向数组首元素
q = a + n - 1; // q指向数组最后一个元素
while(p < q)
{
t = *p;
*p = *q;
*q = t;
p++;
q--;
}
printf("逆序存放后:");
for(i=0; i<n; i++)
printf("%d ", *(a+i));
}
2. 用递归调用函数求1+2+3+...+n。要求在主函数中输入n的值,并输出结果。
答案:
参考程序:
#include<stdio.h>
main()
{
int sum(int k);
int n,s;
scanf("%d" ,&n);
s=sum(n);
printf("s=%d
",s);
}
sum(int k)
{ int s;
if(k==1)s=1;
else s=k+sum(k-1);
return s;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。
山东省软件与应用技术类
《编程语言基础—C语言》高教版第五版
高频考点冲刺卷(六)解析版
时间:60分钟 总分:100分
班级 姓名 学号 成绩
一、单选题(共25小题,每题2分,共50分)
1. 以下选项中,不能作为C语言合法常量的是()
A. 0.1e+6 B. 'cd' C. "\a" D. '\011'
2. 设有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是()
A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000
3. 在下列选项中,不正确的赋值语句是()
A.++t; B. n1=(n2=(n3=0)); C.k=i=j; D.a=b+c=1;
4. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是()
A. (!a==1) && (!b==0) B. (a<b) && !c||1
C. a && b D. a||(b+b)&&(c-a)
5. 有以下程序段:int k=0; while(k=1) k++; while循环执行的次数是()
A. 无限次 B. 有语法错,不能执行
C. 一次也不执行 D. 执行1次
6. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int i=0, a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printf("%d
", a);
}
A. 21 B. 32 C. 33 D. 11
7. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a=5, b=4, c=3, d=2;
if(a>b>c)
printf("%d
", d);
else if((c-1>=d)==1)
printf("%d
", d+1);
else
printf("%d
", d+2);
}
A. 2 B. 3 C. 4 D. 5
8. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int i, n=0;
for(i=2; i<5; i++)
{
do {
if(i%3) continue;
n++;
} while(!i);
n++;
}
printf("n=%d
", n);
}
A. n=5 B. n=2 C. n=3 D. n=4
9. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} };
int b[3]={0}, i;
for(i=0; i<3; i++)
b[i]=a[i][2-i];
for(i=0; i<3; i++)
printf("%d ", b[i]);
}
A. 1 5 9 B. 3 5 7 C. 3 6 9 D. 1 4 7
10. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[4][4]={ {1,3,5,7},{2,4,6,8},{3,5,7,9},{4,6,8,10} };
int i, s=0;
for(i=0; i<4; i++)
s+=a[i][1];
printf("%d
", s);
}
A. 18 B. 16 C. 20 D. 22
11. 以下程序的输出结果是()
#include <stdio.h>
int f(int x)
{
int y;
if(x==0||x==1) return 3;
y=x*x-f(x-2);
return y;
}
main()
{
int z;
z=f(3);
printf("%d
", z);
}
A. 0 B. 9 C. 6 D. 8
12. 以下程序的输出结果是()
#include <stdio.h>
int fun(int a, int b)
{
static int m=0, i=2;
i+=m+1;
m=i+a+b;
return m;
}
main()
{
int k=4, m=1, p;
p=fun(k, m); printf("%d,", p);
p=fun(k, m); printf("%d
", p);
}
A. 8,17 B. 8,16 C. 8,20 D. 8,8
13. 以下程序的输出结果是()
#include <stdio.h>
#define N 4
void fun(int a[][N], int b[])
{
int i;
for(i=0; i<N; i++)
b[i]=a[i][i];
}
main()
{
int x[N][N]={ {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16} }, y[N], i;
fun(x, y);
for(i=0; i<N; i++)
printf("%d,", y[i]);
}
A. 1,6,11,16, B. 1,2,3,4, C. 4,7,10,13, D. 4,8,12,16,
14. 以下程序的输出结果是()
#include <stdio.h>
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->x);
printf("%d,", (++p)->x);
printf("%d
", ++(*p->y));
}
A. 51,60,21 B. 50,60,21 C. 51,60,20 D. 50,60,20
15. 设有定义:int a, *pa=&a; 以下scanf语句中能正确为变量a读入数据的是()
A. scanf("%d", pa); B. scanf("%d", a);
C. scanf("%d", &pa); D. scanf("%d", *pa);
16. 若有以下定义和语句:int s[4][5], (*ps)[5]; ps=s; 则对s数组元素的正确引用是()
A. ps+1 B. *(ps+3) C. ps[0][2] D. *(ps+1)+3
17. 以下程序的输出结果是()
#include <stdio.h〉
void main( )
{ char str[]=”1a2b3c”; int i;
for(i=0;str[i]!='\0';i++)
if(str[i]>='0’&&str[i]<='9’)
printf(”%c”,str[i]);
printf(”
”);
}
A. 123456789 B.1a2b3c C. abc D. 123
18. 以下程序的输出结果是()
#include <stdio.h>
main()
{
char *s="12134211";
int v[4]={0,0,0,0}, k, i;
for(k=0; s[k]; k++)
{
switch(s[k])
{
case '1': i=0; break;
case '2': i=1; break;
case '3': i=2; break;
case '4': i=3; break;
}
v[i]++;
}
for(k=0; k<4; k++)
printf("%d ", v[k]);
}
A. 4 2 1 1 B. 0 0 0 8 C. 4 6 7 8 D. 8 8 8 8
19. 以下程序的输出结果是()
#include <stdio.h>
#include <string.h>
main()
{
char b1[8]="abcdefg", b2[8], *pb=b1+3;
while(--pb>=b1) strcpy(b2, pb);
printf("%d
", strlen(b2));
}
A. 8 B. 3 C. 1 D. 7
20. 以下程序的输出结果是()
#include <stdio.h>
void swap(char *x, char *y)
{
char t;
t=*x; *x=*y; *y=t;
}
main()
{
char *s1="abc", *s2="123";
swap(s1, s2);
printf("%s,%s
", s1, s2);
}
A. 123,abc B. abc,123 C. 1bc,a23 D. 321,cba
21.设有以下函数:void fun(int n, char *s) { ... }则下面对函数指针的定义和赋值正确的是( )
A. void (*pf)(); pf=fun; B. void *pf(); pf=fun;
C. void *pf(); *pf=fun; D. void (*pf)(int, char); pf=&fun;
22. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[5]={2,4,6,8,10}, *p, k;
p=a;
k=&p;
printf("%d ", *(p++));
printf("%d
", k);
}
A. 4 4 B. 2 2 C. 2 4 D. 4 6
23. 以下程序的输出结果是()
#include <stdio.h>
main()
{
char *a[]={"abcd","efgh","ijkl","mnop"};
char p;
p=a;
printf("%s
", *(p+1));
}
A. a B. abcd C. e D. efgh
24. 以下程序的输出结果是()
#include <stdio.h>
void fun(int *a, int n)
{
int i, t;
for(i=0; i<n/2; i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
main()
{
int k[10]={1,2,3,4,5,6,7,8,9,10}, i;
fun(k,5);
for(i=0; i<10; i++)
printf("%d,", k[i]);
}
A. 5,4,3,2,1,6,7,8,9,10, B. 10,9,8,7,6,5,4,3,2,1,
C. 1,2,3,4,5,6,7,8,9,10, D. 1,2,3,4,5,10,9,8,7,6,
25. 以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} };
int *p, i;
p=&a[0][0];
for(i=0; i<9; i++)
p[i]=i+1;
printf("%d
", a[1][2]);
}
A. 3 B. 6 C. 9 D. 2
二、简答题(共3小题,每题5分,共15分)
1.阅读程序,写出运行结果。
#include <stdio.h>
main()
{
int a=3, b=4, c=5, t=99;
if(b<a && a<c) t=a; a=c; c=t;
if(a<c && b<c)t=b; b=a; a=t;
printf("%d %d %d
", a, b, c);
}
2. 阅读程序,写出运行结果
#include <stdio.h>
int f(int m){
static int n=0;
n+=m;
return n;}
main(){
int n=0;
printf("%d,", f(++n));
printf("%d
", f(n++));
}
3.求一维数组a中的最大元素及其下标。
例如,当一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9,
程序的输出应为:The max is: 34,pos is:7 。
#include <conio.h>
#include <stdio.h>
main()
{
int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos;
max = a[0];
pos = 0;
for ( i=1; i〈10; i++)
if (max > a[i])
{
max = a[i];
i = pos;
}
printf("The max is: %d ,pos is: %d
”, max , pos);
}
三、案例分析题(共3小题,每题5分,共15分)
1. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数。请完成填空。
#include <stdio.h>
main(){
int i, j;
for(i=0; ① ; i++)
{
j=i*10+6;
if( ② ) continue;
printf("%d ", j);
}
}
2. 下面程序的功能是:将字符串s中的数字字符取出,并转换成一个整数。请完成填空。
#include <stdio.h>
main(){
char s[80], *p=s;
int num=0;
gets(s);
while( ③ )
{
if(*p>='0'&&*p<='9')
num = ④ + *p - '0';
p++;
}
printf("%d
", num);
}
3. 下面程序的功能是:输入一个字符串,将其中所有的大写字母转换为小写字母,其他字符不变。请完成填空。
#include <stdio.h>#include <ctype.h>
main(){
char str[80];
int i;
gets(str);
for(i=0; str[i]!='\0'; i++)
if( ⑤ ) //
str[i] = ⑥ ;
puts(str);
}
四、综合应用题(共2小题,每题10分,共20分)
1. 编写程序,输入一个正整数n(n<=20),然后输入n个整数,将这n个整数逆序存放并输出。
2. 用递归调用函数求1+2+3+...+n。要求在主函数中输入n的值,并输出结果。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$