1.以下程序输出结果是()
int main() {
int a = 1, b = 2, c = 2, t;
while (a < b < c) {
t = a;
a = b;
b = t;
c--;
}
printf("%d %d %d", a, b, c);
}
2.以下程序输出结果是()
int main() {
char a[] = "morming", t;
int i, j = 0;
for (i = 1; i < 7; i++)
if (a[j] < a[i])
j = i;
t = a[j];
a[j] = a[7];
a[7] = a[j];
puts(a);
}
3.以下程序输出结果是()
int main() {
char ch[2][5] = { "693","825" }, * 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 ' && p[i][j] <= '9'; j += 2)
s = 10 * s + p[i][j] - '0';
printf("%d", s);
}
4.以下程序输出结果是()
#define P 3
#define S(a) P*a*a
int main() {
int ar;
ar = S(3 + 5);
printf("%d", ar);
}
5.以下程序输出结果是()
#define N 3
#define Y(n) ((N+1)*n)
int main() {
int z;
z = 2 * (N + Y(5 + 1));
printf("%d", z);
}
6.以下程序输出结果是()
int main() {
int a = 2, b = -1, c = 2;
if (a < b)
if (b < 0) c = 0;
else c++;
printf("%d", c);
}
7.
#define SQR(X) X*X
main() { int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n”,a); }
8.执行以下语句,输出结果是 C 。
int x=2;
printf(“%d”, ((x=4*5, x*5), x+20));
A) 120 B) 100 C) 40 D) 20
以下程序的输出结果是( )。
int 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;
case’2’:i=1;
case’3’:i=2;
case’4’:i=3;
v[i]++:
for(k=0;k<4;k++)printf("%d",v[k]);
}
A.4 2 1 1B.0 0 0 8C.4 6 7 8D.8 8 8 8
9.
int w = 3;
int main() {
int w = 10;
printf("%d\n", fun(5) * w);
}
fun(int k)
{
if (k == 0)
return w;
return(fun(k - 1) * k);
}
int main() {
int x = 023;
printf("%d", --x);
}
10.
int a[3][3] = { {2},{4},{6} };
int main() {
int i, * p =
for (i = 0; i < 2; i++) {
if (i == 0)
a[i][i + 1] = *p + 1;
else
++p;
printf("%d", *p);
}
}
fun(int x)
{
static int a = 3;
a += x;
return(a);
}
int main() {
int k = 2, m = 1, n;
n = fun(k);
n = fun(m);
printf("%d", n);
}
11.
f(int a)
{
int b = 0; static c = 3;
a = c++, b++;
return(a);
}
int main() {
int a = 2, i, k;
for (i = 0; i < 2; i++)
k = f(a++);
printf("%d", k);
}
12.
fun(s, n1, n2)
int* s, n1, n2;
{
int i, j, t;
i = n1; j = n2;
while (i<j)
{
t = *(s + i);
*(s + i) = *(s + j);
*(s + j) = t;
}
}
int main() {
int a[10] = { 1,2,3,4,5,6,7,8,9,0 }, i, * p = a;
fun(p, 0, 3);
fun(p, 4, 9);
fun(p, 0, 9);
for (i = 0; i < 10; i++)
printf("%d", *(a + i));
printf("\n");
}
13.
int main() {
int a[] = { 1,2,3,4 }, i;
int x = 0;
for (i = 0; i < 4; i++) {
sub(a, x);
printf("%d", x);
printf("\n");
}
}
sub(int* s, int y)
{
static int t = 3;
y = s[t]; t--;
}
14.
#include <stdlib.h>
#include <stddef.h>
void fun(float* p1, float* p2, float* s)
{
s = (float*)malloc(1, sizeof(float));
*s = *p1 + *(p2++);
}
int main() {
float a[2] = { 1.1,2.2 }, b[2] = { 10.0,20.0 }, * s = a;
fun(a, b, s);
printf("%f", *s);
}
15.假设a和b为int型变量,则执行以下语句后,b的值为 __D____。
a=1;b=10; do {b-=a;a++; }while(b--<0); A.9B.-2C.-1D.8
16.当运行以下程序时,从键盘输入:AhaMA Aha
int main() {
char s[80]; // 定义字符数组 s
char c = 'a'; // 小写字母
int i = 0; // 索引初始化
// 输入字符串
scanf("%s", s);
// 遍历字符串
while (s[i] != '\0') {
if (s[i] == c) {
s[i] = s[i] - 32; // 将小写字母转换为大写
}
else if (s[i] == c - 32) {
s[i] = s[i] + 32; // 将大写字母转换为小写
}
i++; // 增加索引
}
// 输出结果
puts(s);
return 0;
}
17 以下程序输出什么?
int main() {
struct p
{
char name[9];
int age;
};
struct p class[10] = { "John",17,"Paul",19,"Marry",18,"Adam",16 };
printf("%c", class[2].name[0]);
}
18.假定下列程序的可执行文件名为prg . exe,则在该程序所在的子目录下输入命令行: prg hello good<回车〉后,程序的输出结果是()
19.下列程序输出结果是 15
#define MIN(x,y) (x)<(y)?(x):(y)
int main() {
int i, j, k;
i = 10; j = 15;
k = 10 * MIN(i, j);
printf("%d", k);
}
20.以下语句定义正确的是 D
int main() {
int a[1][4] = { 1,2,3,4,5 };
float x[2][] = { {1},{2},{3} };
long b[2][3] = { {1},{1,2},{1,2,3} };
double y[][3] = { 0 };
}
21.
22.下列程序段不是死循环的是________。
A. int s=36; while(s); --s;
B. int i=100; while(1) {i=i%100+1; if(i>100) break;}
C. int k=0; do{++k;}while(k>=0);
D. for( ; ; );
23.A正确
24.以下程序输出的结果是:
int main() {
char* p1, * p2, str[50] = "xyz";
p1 = "abcd";
p2 = "ABCD";
strcpy(str + 2, strcat(p1 + 2, p2 + 1));
printf("%s", str);
}
25.以下输出结果是: 6
struct abc
{
int a, b, c;
};
int main() {
struct abc s[2] = { {1,2,3},{4,5,6,} }; int t;
t = s[0].a + s[1].b;
printf("%d", t);
}
26.
void fun(int* a, int* b)
{
int* k;
k = a; a = b; b = k;
}
int main() {
int a = 3, b = 6, * x = &a, * y =
fun(x, y);
printf("%d %d", a, b);
}
27.下面程序的输出结果为( )。
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,
int main( ) {
p=aa;
printf(“%d\n”,++p->x);
printf(“%d|n”,(++p)->x);
printf(“%d\n”,++(*p->y));
}
A. 10 20 20
B. 50 60 21
C. 51 60 21
D. 60 70 31
28.以下程序输出的结果为:
main()
{int a[6],i;
for(i=1;i<6;i++)
{ a[i]=9*(i-2+4*(i>3))%5;
printf("%2d",a[i]);
}
}
A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0
29.以下程序输出的结果为:
union myun {
struct {
int x, y, z;
} u;
int k;
} a;
int main() {
a.u.x = 4;
a.u.y = 5;
a.u.z = 6;
a.k = 0;
printf("%d", a.u.x);
}
30.以下程序输出什么
#include <stdio.h>
void main()
{
union
{
unsigned char c;
unsigned int i[4];
}z;
z.i[0]=0x39;
z.i[1]=0x36;
printf("%c\n",z.c);
}
31.正确的答案是()
若有代数式3ae/bc,则不正确的c语言表达式是()
A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/b*3
32.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的输入方式是( D )。(代表空格,↙代表Enter)
int a1,a2; char c1,c2;
scanf("%d%d",&a1,&a2);
scanf("%c%c",&c1,&c2);
A. 1020AB↙
B. 1020↙
C. 1020AB↙
D. 10 20AB↙
33.下面四个选项中,均是不合法的整型常量的选项是( )。
A.--0f1 -oxffff 0011
B.-0xcdf 017 12,456
C.-018 999 5e2
D.-0x48e -068 03f
34.以下程序输出的结果为 D
main()
{ int x,i;
for(i=1;i<=100;i++)
{ x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d ",x);
} }
A)39 81 B)42 84 C)26 68 D)28 70
35.程序输出的结果是 k=8 b=-2
#include <stdio.h>
int main() {
int i, b, k = 0;
for (i = 1; i <= 5; i++) {
b = i % 2; // b = 0 (偶数) 或 1 (奇数)
while (b-- >= 0) { // 当 b 为 0 或 1 时,循环体执行
k++; // 计数器加 1
}
}
printf("%d, %d", k, b); // 打印 k 和 b 的值
return 0;
}
36.输入3.6 2.4回车,则结果为(1.6)
main()
{
float x,y,z;
scanf("%f%f",
z=x/y;
while(1)
{
if (fabs(z)>1.0)
{
x=y; y=z; z=x/y;
}
else break;
}
printf("%f\n",y);
}
37.以下程序输出的结果是()
int main() {
int a, b;
for (a = 1, b = 1; a <= 100; a++) {
if (b >= 20) break; // 如果 b >= 20,退出循环
if (b % 3 == 1) { // 如果 b 除以 3 的余数为 1
b += 3; // 将 b 增加 3
continue; // 跳过当前迭代,继续下一次循环
}
b -= 5; // 否则,b 减去 5
}
printf("%d\n", a); // 打印 a 的值
return 0;
}
若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:[ i*m+j-1 ]。(假设a[0][0]位于数组的第一个位置上。)
若二维数组a有m列 则a[i][j]前的元素个数为 i*m+j'
38.下面程序运行结果是( )
#include <stdio.h>
int main() {
char ch[7] = "12ab56";
int i, s = 0;
for (i = 0; ch[i] >= '0' && ch[i] <= '9'; i += 2) {
s = 10 * s + (ch[i] - '0');
}
printf("%d\n", s);
return 0;
}
A.1
B.1256
C.12ab56
D.1
2
5
6
39.以下程序输出的结果是什么()
#include "stdio.h"
int main() {
char a1[5], a2[5], a3[5], a4[5];
scanf("%s%s", a1, a2);
gets(a3);
gets(a4);
puts(a1);
puts(a2);
puts(a3);
puts(a4);
}
40.以下程序输出的结果是()
执行时输入:1234567
int main()
{
int x,y;
scanf("%2d%*2d%ld",
printf("%d",x+y);
}
41.以下程序输出的结果是
#include <stdio.h>
void fun(int k) {
if (k > 0) fun(k - 1);
printf("%d", k);
}
int main() {
int w = 5;
fun(w);
printf("\n");
}
A.5 4 3 2 1
B.0 1 2 3 4 5
C.1 2 3 4 5
D.5 4 3 2 1 0
42.输出结果是
long fun(int n) {
long s;
if (n == 1 || n == 2)
s = 2;
else
s = n + fun(n - 1);
return s;
}
int main() {
printf("%ld", fun(4));
}
43下列程序输出结果是()
#include <stdio.h>
void add() {
int x = 0;
static int y = 0;
printf("%d %d\n", x, y);
x++;
y = y + 2;
}
int main() {
int i;
for (i = 0; i < 2; i++)
add();
return 0;
}
44.下列程序输出结果是()
#include <stdio.h>
long fib(int n) {
if (n > 2)
return (fib(n - 1) + fib(n - 2)); // 应该是加号
else
return 2;
}
int main() {
printf("%ld\n", fib(3)); // 使用 %ld 来打印 long 类型
return 0;
}
45.要求函数的功能是交换x 和y 中的值,且通过正确调用返回交换结果.能正确执行能的函数是 。
46.分析下面函数,以下说法正确的是__D____。
swap(int *p1,int *p2) { int *p; *p=*p1; *p1=*p2; *p2=*p; }
A. 交换 *p1 和 *p2 的值 B. 正确,但无法改变 *p1 和 *p2 的值 C. 交换 *p1 和 *p2 的地址 D. 可能造成系统故障,因为使用了空指针
47.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是______。 A.*p=&a;scanf("%ld",p); B.p=&a;scanf("%ld",p); C.scanf("%ld",p=&a); D.scanf("%ld",&a);
48.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是 _______。 A.p+1 B.a+1 C.a++D.++p
49.设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )
A. P2=k; B. P1=P2; C. k=*P1+*P2; D. k=*P1*(*P2);
50.程序输出数组中的最大值,由s指针指向该元素,则划线处条件应该是___B____。
int main(void) { int a[ 10] ={6,7,2,9,1,10,5,8,4,3,}, *p,*S;
for(p=a,s=a; p-a<10; p )
if(___)s=p;
printf( "The max:%d",* S);
return 0;
A. p>s B. *p>*S C. a[p]>a[ s] D. p-a>p-s
51.若有说明int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。
A.i=*p
B.*p=*&j
C.i=&j
D.i=**p;
52.以下函数的功能是()
sss(char*s,char*t)
{while((*s)&&(*t)=*s ));
return(*s-*t);
}
A.求字符串的长度
B.比较两个字符串的大小
C.将字符串s复制到字符串t中
D.将字符串s接续到字符串t中
53.函数的功能是______。
int fun1(char *x)
{
char *y=x;
while(*y++);
return(y-x-1);
}
A. 求字符串的长度
B. 比较两个字符串的大小
C. 将字符串x复制到字符串y
D. 将字符串x连接到字符串y后面
54.输出的结果是(10)
int fun(int a, int b) {
int c;
c = a + b;
return c;
}
int main() {
int x = 5, z;
z = fun(++x, --x);
printf("%d", z);
}
55.
int main() {
int i, a[10] = { 1,3,5,7,9,2,4,6,8,0 }, temp;
temp = a[9];
for (i = 9; i; i--)
a[i] = a[i - 1];
a[0] = temp;
printf("a:");
for (i = 0; i < 10; i++)
printf("%d", a[i]);
}