提示:内容已经过期谨慎付费,点击上方查看最新答案
C语言程序设计
- C语言的函数,函数体中可以没有任何语句。( )
- int *p();表示该函数的返回值是一个指针。( )
- 在C语言中,所谓指针型数据,即指该数据是一个地址。( )
- 有如下程序段:int i, j = 2, k, *p = &i;k = *p + j;这里出现的两个“*”号,含义是一样的。( )
- 对于指向单个变量的指针变量,像p+n、p++、p- -等运算是无意义的。( )
- 变量根据其作用域的范围可以分作局部变量和全局变量。( )
- 设p是指向数组a的指针变量,则a[i]和p[i]等价。( )
- 数组中的每一个元素,若要让一个指针变量指向它,必须用“&数组元素”的方法向该指针变量赋值。( )
- 一个C源程序可以由多个函数组成。( )
- ++*p等价于++(*p)。( )
- int i=1;
while(i<5)
{
if(i>1) continue;
if(i==3) break;
i++;
}
上述程序中while 循环的执行次数是( )。
void fun(int *x,int i)
{*x=*(x+i);}
int main()
{
int a[8]={1,2,3,4,5,6,7,8},i;
fun(a,5);
for(i=0;i<8;i++)
printf("%d",a[i]);
return 0;
}
上列程序的运行结果是( )。- 在C语言中,能正确表示数学关系“10<a<20”的表达式为( )。
- C语言中,函数的数据类型是指( )。
- 有以下程序:
#include<stdio.h>
int main()
{ int i,j,s=0;
int a[3][3]={1,2,3,0,2,4,3,6,9};
for(j=0;j<3;j++)
{
i=j;
if(i>1) i=2-j;
s+=a[i][j];
}
printf("%d\n",s);
}
以下程序执行后的输出结果是( )。 - 若有定义:double a[3][5];则a数组中行、列下标的下限分别为( )。
- 以下叙述正确的是( )。
- 关于实参与形参,以下说法正确的是( )。
- 有以下程序
#include <stdio.h>
main()
{int x;
scanf(“%d”,&x);
if(x<=3);
else if(x!=10)
printf(“%d\n”,x);}程序运行时,
输入的值在哪个范围才会有输出结果( )。 - 有以下程序:
int fun(int a[][3])
{ int i,j,sum=0;
for (i=0;i<2;i++)
for(j=0;j<3;j++)
sum=sum+a[i][j];
return(sum);
}
int main()
{
int a[2][3]={1,2,3,4,5,6},s;
s=fun(a);
printf("s=%d\n",s);
return 0;
}
下列程序的运行结果是:( ) - 有以下程序
#include<stdio.h>
int main()
{
int y=5;
while(y--);
printf(”y=%d\n”,y);
return 0;
}
程序执行后的输出结果是( ) - 以下选项中,能用作数据常量的是( )。
- 有以下程序:
void fun(int n)
{
if(n/2>0)
fun(n/2);
printf("%d",n);
}
int main()
{
fun(6);
printf("\n");
return 0;
}
程序的运行结果是:( ) - 设有数组定义: char array[ ]="China"; 则数组array所占的空间为( )
C语言对嵌套if语句的规定时:else语句总是与( )配对。
- 若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是( )
- int p[7]={1,2,3,4,5,6,7},i=0,k=0;
while(i<3&&*(p+i)%2) {k=k+*(p+i); i++;}
printf("%d\n",k);
有以上程序段定义,则运行后的结果是( ) - void fun(int x,int *y)
{
printf("%d%d",x,*y);
x=5;
*y=6;
}
int main()
{
int x=1,y=2;
fun(y,&x);
printf("%d%d",x,y);
return 0;
}
上述程序的运行结果是( )。 - main()
{int a=2,b=7,c=5;
switch(a>0)
{case 1:switch(b<0)
{case 1:switch(“@”); break;
Case 2: printf(“!”); break;
}
case 0: switch(c==5)
{ case 0: printf(“*”); break;
case 1: printf(“#”); break;
case 2: printf(“$”); break;
}
default : printf(“&”);
}
printf(“\n”);
}
以上程序的运行结果是( )。 - int main()
{
int a=1,b=2;
for(;a<6;a++) {b+=a; a+=2;}
printf("%d,%d\n",a,b);
return 0;
}
程序运行后的输出结果是( ) - 已知int x=10,y=20,z=30;
if(x>y) z=x; x=y; y=z;
以上语句执行后x,y,z的值是( )。 - 有以下程序,
#include <stdio.h>
____________________
int main( )
{
double x,y,z;
scanf("%lf%lf",&x,&y);
z=mul(x,y);
printf("%f\n",z);
return 0;
}
double mul(double a,double b)
{ return (a*b); }
请在______处填写( )语句,使程序可正常编译运行。( ) - 有以下程序:
#include<stdio.h>
int sub(int a,int b)
{ int c;
c=a-b;
return c;
}
void print(int z)
{ printf("z=%d\n",z); }
int main()
{ int x,y,z;
x=10; y=5;
z=sub(x,y);
print(z);
return 0;
}
程序的运行结果是:( ) - void fun(char *a, char *b)
{ *a=*a+32;
*b=*b-32;
}
int main()
{
char c1='A',c2='a',*p1,*p2;
p1=&c1;
p2=&c2;
fun(p1,p2);
printf("%c%c\n",c1,c2);
return 0;
}
以上程序的运行结果是( )。 - int i=0,a=0;
while(i<10)
{
for(;;)
{
if(i%2==0) break;
else i--;
}
i+=2;
a+=i;
}
printf("%d",a);
以上程序的运行结果是( )。 - 已定义以下函数
void fun(char *p2, char *p1)
{ while((*p2=*p1)!='\0'){ p1++;p2++; } }
函数的功能是( ) - int a[10]={0,1,2,3,8,5,6,4,7,9},*p=a+3;
printf("%d",*p+5);
以上程序已定义,则运行结果是( )。 - 若有以下数组说明,
int a[10]={1,5,4,10,2,7,8,11,3,6}, int i=5;
则a[a[i]]元素数值是( )。 - 下面叙述中正确的是( )
- 以下关于C语言的叙述中正确的是( )。
- C程序中函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是( )
- 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是( )
- 若变量已正确定义,有以下程序段
int a=3,b=5,c=7;
if(a>b) a=b; c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是( )。 - 执行语句x = ( a = 3, b= a - -)后 ,x , a , b 的值依次为( )。
- 以下结构体类型说明和变量定义中正确的是( )。
- main()
{
int a=1,b;
for(b=1;b<=10;b++)
{
if(a>=8) break;
if(a%2==1) { a+=5; continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是( )。 - 以下是if语句的基本形式:
if(表达式)
语句
其中“表达式”( )。 - 假设a、c均为字符数组,则以下正确的输入语句是( )。
- #include <stdio.h>
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++; break;
case 1: b++; break;
}
case 2: a++; b++; break;
case 3: a++; b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
程序的运行结果是( )。 - 有以下程序
main()
{ int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
程序运行后的输出结果是( )。 - 有以下程序
main()
{int i,j,x=0;
for(i=0;i<2;i++)
{x++
for(j=0;j<=3;j++)
{if(j%2)continue;
x++
}
x++
}
printf(x=%d\n,x);
}
程序执行后的输出结果是( )。 - 能表示x为偶数的表达式是( ) 。
- 有以下程序:
#include <stdio.h>
int x=10,y=5;
void fun(int y)
{ x--;
y--;
}
int main()
{
int x=20;
fun(x);
printf("%d",x-y);
}
程序的运行结果是:( ) - 以下fun函数的功能是:找出具有N个元素的一维数组中的最大值,并作为函数值返回。
int fun(int a[N])
{
int i,k=0;
for(i=0;i<N;i++)
if(a[i]>a[k]) k=i ;
return ___________;
}
空白处,应填入( )。 - 阅读以下程序:
#include <stdio.h>
int main( )
{
char str[][20]={"china","beijing","shanghai"};
int i ;
for(i=0;i<3;i++)
{
printf("%s-", (str[i]+i));
}
return 0;
}
程序的输出结果为( )。
A:错 B:对
答案:正确
A:对 B:错
AI参考:正确答案是B:错。int *p()表示的是一个指向整型的指针的函数,而不是函数的返回值是一个指针。所以这句话是错误的。'
A:对 B:错
答案:正确
A:对 B:错
答案:错AI参考:答案:B。第一个“*”是取指针变量p指向的变量i的值,第二个“*”是取变量j的值,所以两个“*”的含义不一样。因此本题是错误的。'
A:对 B:错
答案:×AI参考:答案是B:错。对于指向单个变量的指针变量,像p+n、p++、p--等运算是无意义的。这些运算符会改变指针变量的值,使其指向下一个或上一个位置,而不是指向另一个变量。因此,这种运算是有意义的。'
A:错 B:对
答案:正确AI参考:答案是B:对。变量根据其作用域的范围可以分作局部变量和全局变量,这是正确的。局部变量是在函数内部定义的,只在其被声明的代码块内有效;而全局变量是在函数外部定义的,在整个程序中有效。因此,这个判断题是正确的。'
A:对 B:错
A:错 B:对
AI参考:正确答案是【对】。指针变量需要指向数组中的某个元素,可以通过取地址符&获取该元素的地址,再将该地址赋值给指针变量。因此,要让一个指针变量指向数组中的元素,必须用“&数组元素”的方法向该指针变量赋值。'
A:对 B:错
A:对 B:错
AI参考:答案:B:错。++*p等价于(*p)++,即先解引用p,然后将结果加1。而++(*p)则是先将p指向的地址加1,然后再试图将这个新地址赋给*p,这可能不会得到预期的结果,因为原来的值可能已经被销毁或者被其他变量覆盖了。所以++*p和++(*p)的语义是有区别的。因此,选项B“错”是正确的。'
A:1次 B:4次 C:0次 D:无数次
AI参考:在给定的程序中,变量`i`从1开始,每次循环`i`都会自增1。如果`i`大于1,则执行`continue`语句跳过当前循环体中的剩余语句,直接进入下一次循环。如果`i`等于3,则执行`break`语句跳出循环。由于在循环体中没有其他操作,所以最终循环次数取决于`i`的值。在给定的代码中,当`i`等于3时,循环会立即跳出。因此,循环的执行次数取决于`i`从1到3的变化次数。由于初始值为1,因此循环至少会执行一次。当`i`等于3时,循环结束。因此,最终的执行次数为2次(包括初始执行的一次)。因此,正确答案是B:4次。'
A:72345678 B:34567892 C:12345678 D:62345678
AI参考:代码中的 `fun` 函数是用来将数组 `a` 的指定索引位置的值向后移动一位。这里使用的是指针运算,所以首先 `*x` 是取出数组中指针 `x` 所指向的元素的值,然后再加上 `i`,把结果赋值给 `*x`。这样 `a[i]` 的值就会按照指定的偏移量移动。因此,当你调用 `fun(a,5)` 时,`a[5]` 的值会被移动到 `a[6]` 的位置,`a[6]` 的值会被移动到 `a[7]` 的位置,以此类推。所以,当你运行主函数中的循环时,你会看到数组 `a` 的所有元素都被打印出来,顺序是 62345678。所以正确答案是 D:62345678。'
A:a>10 & a<20 B:a>10 | | a<20 C:a>10 && a<20 D:a>10 | a<20
AI参考:正确选项是C:a>10 && a<20。在C语言中,逻辑与运算符(&&)用于连接两个布尔表达式,只有当两个表达式都为真时,整个表达式才为真。因此,要表示“10<a<20”这个数学关系,需要使用两个小于运算符(<),一个大于运算符(>),并将它们用逻辑与运算符连接起来。正确的表达式应该是a>10 && a<20。因此,选项C是正确答案。'
A:函数返回值的数据类型 B:调用该函数时的实参的数据类型 C:函数形参的数据类型 D:任意指定的数据类型
A:21 B:9 C:12 D:6
A:3 5 B:3 3 C:5 5 D:2 4
A:do-while语句构成的循环不能用其它语句构成的循环来代替 B:用do-while语句构成的循环,在while后的表达式为零时结束循环。 C:用do-while语句构成的循环,在while后的表达式为非零时结束循环 D:do-while语句构成的循环只能用break语句退出
A:形参是虚拟的,不占用存储单元 B:实参和与其对应的形参共享一个存储单元 C:实参和与其对应的形参各占用独立的存储单元 D:只有当形参和与其对用的实参同名时才共享存储单元
A:大于3或等于10的整数 B:不等于10的整数 C:大于3且不等于10的整数 D:小于3的整数
AI参考:程序运行时,输入的值在大于3且不等于10的整数范围才会有输出结果,因此正确选项为C。程序中的if语句和else if语句用于判断输入的整数x是否满足大于3且不等于10的条件,只有当x满足这个条件时才会输出结果。其他选项都不符合程序逻辑。'
A:0 B:21 C:s=21 D:s=0
AI参考:程序的运行结果是选项 B:21。程序中的函数 `fun` 接受一个二维数组 `a` 作为参数,并返回一个整数值,该值是二维数组中所有元素的总和。在主函数中,我们定义了一个二维数组 `a`,并将其传递给 `fun` 函数进行计算。程序中,二维数组 `a` 的大小为 2x3,因此其元素总数为 6。在 `fun` 函数中,我们使用两个嵌套的循环遍历数组中的所有元素,并将它们相加得到总和。由于数组中的所有元素都被加在一起,所以总和为 21。因此,程序的输出结果为 `s=21`。选项 C 和 D 都是错误的,因为它们都包含了一个错误的变量名 `s`。选项 A 也是错误的,因为程序中并没有任何变量名为 `0`。'
A:y=1 B:while构成无限循环 C:y=0 D:y= -1
A:0118 B:o115 C:1.5e1.5 D:115L
A:631 B:61 C:136 D:16
AI参考:程序的运行结果是:B:61。程序中的fun函数是一个递归函数,它会不断地调用自身,直到n为0为止。在main函数中,我们调用了fun(6)函数,所以初始的n值为6。在递归过程中,当n为3时,fun(3)会被调用,此时n的值为3。当n为1时,fun(1)会被调用,此时n的值为1。最后,printf函数会输出n的值,即61。因此,程序的运行结果是61。'
A:7个字节 B:5个字节 C:不确定的值 D:4个字节
A:缩进位置相同的if B:第一个if C:其之前最近的且尚未配对的 D:其之前最近的if
A:&a,&*point ,point B:*&point,*point,&a C:a,point,*&a D:&*a,&a,*point
A:3 B:0 C:1 D:2
AI参考:选项B:0解释:程序段中的while循环遍历数组p中的元素,通过取余操作判断是否为偶数,当数组元素为奇数时,将该元素的值加到变量k上。因此,循环结束后,变量k的值将为初始值0加上数组中前三个奇数(即1、3、5)的值,即k=0+1+3=4。而题目要求输出的是k的值,因此答案为0。程序代码分析:* `int p[7]={1,2,3,4,5,6,7}`:定义了一个包含7个整数的数组p。* `i=0`:初始化循环变量i为0。* `while(i<3&&*(p+i)%2)`:循环条件为i小于3且p+i的值为奇数。* `k=k+*(p+i);`:当p+i的值为奇数时,将p+i的值加到变量k上。* `printf("%d",k);`:输出变量k的值。注意:在C语言中,数组的索引是从0开始的,因此数组p的第一个元素的索引为0,而不是1。所以循环只会遍历数组的前三个元素。'
A:2162 B:5662 C:2165 D:5656
AI参考:在C语言中,函数参数传递时,如果参数是数组或者指针类型,那么在函数内部对该参数的修改会影响到主函数中的原始值。在这个程序中,`fun`函数接收一个整数`x`和一个指向整数的指针`y`。在函数内部,我们首先打印出`x`和`*y`的值(即y指向的整数值),然后将`x`的值改为5,最后将`y`指向的值改为6。在主函数中,我们首先创建了变量`x`和`y`,并将它们的初始值分别设为1和2。然后我们调用`fun`函数,并将返回值赋给`x`(即修改了主函数中的原始值)。最后,我们打印出`x`和`y`的值。所以,程序运行的结果应该是:2165。这是因为主函数中的变量`x`被修改了,所以打印出来的结果也改变了。所以,正确答案是选项C:2165。'
A:#$& B:#& C:*# D:#$
AI参考:程序运行结果为:#$&程序首先判断a是否大于0,如果是,则进入第一个switch语句,判断b是否小于0,如果是,则进入第二个switch语句,判断“@”这个字符。由于“@”不在switch语句的范围内,因此不会执行任何操作,直接跳出当前case语句。接下来,程序判断a是否大于0的后续情况,此时a的值为2,因此进入case 0的switch语句。在这个case中,程序会判断c是否等于5,如果等于5,则进入第一个case 0的printf语句输出“*”,并跳出当前case语句。由于c不等于5,因此不会执行任何printf语句,直接跳出当前case语句。最后,程序执行default语句,输出“&”。由于已经执行了前面的case语句,因此不会再次输出“&”。因此,程序的运行结果是#$&。所以正确选项为A:#$&。'
A:10,14 B:9,18 C:8,11 D:7,7
AI参考:程序运行后的输出结果是【B:9,18】。程序中使用了for循环,循环条件是a小于6,在每次循环中,b加上a的值并更新a的值,所以循环结束后b的值是a的值加上2到6之间的所有奇数的和。因此,当a从1增加到6时,b的值从1增加到18。最后,程序输出a和b的值,所以输出结果是9和18。'
A:x=20, y=30, z=30 B:x=20, y=30, z=20 C:x=10, y=20, z=30 D:x=20, y=30, z=10
A:doule mul(double a,double b); B:doule mul(double a,double b) C:mul(double a,double b) D:doule mul(a, b);
AI参考:根据程序逻辑,`doule mul(double a,double b)` 需要作为函数的定义出现在程序的开头。这是正确的选项。`double`是数据类型,用于存储浮点数。该函数被调用并返回两个输入值的乘积。`doule`是大写的,这是C语言中函数定义的正确格式。所以,正确的答案是A: `doule mul(double a,double b);`。'
A:5 B:z=5 C:0 D:z=0
A:AA B:aA C:aa D:Aa
A:30 B:28 C:32 D:26
AI参考:在代码中,`while`循环中的条件是`i < 10`,但`i`的值会在循环内部改变,因此在执行`while`循环的过程中,当`i`的值为偶数时,使用`break`退出循环,`i`会继续减1并再次进入循环,以此类推,当循环结束时,`i`的值为2、4、6、8,但是有一个循环没有结束,所以最后的值为8。对于for循环内部的代码,每次循环都会执行一次if条件判断,如果`i`是偶数,那么就会执行`break`退出循环。所以当i为偶数时,不会执行for循环内部的代码。所以,当循环结束后,变量a的值应该是:```ci = 8, a = i + (i+2) = 8 + (8+2) = 18```再根据printf函数,输出a的值。因此程序的运行结果是:D:26。'
A:8 B:6 C:9 D:7
AI参考:在给定的程序中,数组`a`的元素被初始化为从0到9的连续整数。指针`p`被初始化为指向数组`a`中第3个元素(即a[3])。当程序运行`printf("%d", *p + 5);`时,它将计算指针`p`所指向的元素(即a[3] + 5 = 8)并打印出来。所以,结果应为选项A:8。'
A:5 B:7 C:11 D:2
AI参考:这个问题中的数组a被赋予了一个数组值,数组元素值是按照顺序排列的。在给定的数组中,a[i]的值是10,那么a[a[i]]就意味着在数组中索引为10的元素。但是,数组的索引是从0开始的,所以实际上,a[a[i]]实际上是访问数组中的第6个元素,即a[5]。这个元素的值是8。因此,正确答案是D:2。'
A:若定义函数时函数的返回类型缺省,则函数的默认数据类型为int B:函数必须返回一个值 C:函数体为空的函数,不完成任何操作,所以在程序设计中没有用处 D:声明函数时只需要说明返回类型
A:C语言的数值常量中夹带空格不影响常量值的正确表示 B:C语言中的变量可以在使用之前的任何位置进行定义 C:在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 D:C语言中的注释不可以夹在变量名或关键字的中间
A:函数返回值 B:参数的形实结合 C:同名的局部变量 D:全局变量
A:*p=j; B:p=*j; C:p=&j D:p=
A:程序段有语法错 B:3,5,5 C:3,5,7 D:3,5,3
A:3 ,2, 3 B:2 ,3 ,2 C:3 ,2 ,2 D:3 ,3 ,2
AI参考:执行语句x = ( a = 3, b= a - -)后,x的值是3,a的值是2,b的值是2。解释:- 首先,a = 3赋值给x,所以x的值为3。- 然后,b = a - -中,- -是一个短横线,在Python中表示“从当前值中减去1”。所以b = a - -相当于b = a - 1。此时a的值已经是3,所以b = 3 - 1 = 2。所以答案是选项B: 2 ,3 ,2。'
A:typedef struct B:typedef struct REC ; C:struct {int n=0; char c=’A’;}t1,t2; {int n;char c;}REC t1,t2; D:struct REC; {int n; char c;}REC; {int n; char c;}; REC t1,t2; REC t1,t2;
A:5 B:4 C:6 D:3
AI参考:程序运行后的输出结果是(B:4)。程序中,变量a的值在循环中被改变,但每次循环结束后都会恢复为上一次循环结束时的值。因此,在第一次循环中,a的值是1,循环会执行到if(a%2==1)这个条件判断,由于a是奇数,所以执行continue语句,跳过本次循环的剩余部分,直接进入下一次循环。此时,b的值是2。在第二次循环中,a的值被更新为6(没有改变的上一次循环结束时的值),if(a>=8)这个条件不满足,因此不会执行break语句跳出循环。因此,此时b的值应该是第一次循环结束时的值,即2。这样依次执行下去,直到程序结束。所以程序输出的结果应该是b的值,即4。因此选项B是正确的。'
A:可以是任意合法的表达式 B:必须是逻辑表达式或关系表达式 C:必须是关系表达式 D:必须是逻辑表达式
A:gets(a,c); B:scanf("%s %s",a,c); C:gets("a"); gets("c"); D:scanf("%s %s",&a,&c);
A:a=1,b=1 B:a=2,b=2 C:a=2,b=1 D:a=1,b=0
A:2 3 3 B:1 2 3 C:2 2 3 D:2 3 4
A:x=4 B:x=8 C:x=12 D:x=6
A:x%2 B:x%2!=0 C:x%2==0 D:x%2==1
AI参考:正确选项为:C:x%2==0。解释:表达式x%2表示取x除以2的余数,如果余数为0,则x为偶数;如果余数不为0,则x为奇数。因此,选项C x%2==0能表示x为偶数。选项A、B、D都只能表示x为奇数。'
A:20 B:15 C:10 D:5
A:a[N] B:a[k] C:a[0] D:a[i]
AI参考:答案:B解析:本题中,函数的功能是找出数组中的最大值,并返回。在for循环中,k被设定为数组中的最小值,如果数组中的某个元素大于k,则k被更新为该元素的下标。因此,函数返回的是数组中的最大值,即a[k]。所以空白处应填入a[k]。'
A:china-eijing-anghai B:china-beijing-shanghai C:china-eijing-hanghai- D:china-eijing-anghai-
温馨提示支付 ¥2.00 元后可查看付费内容,请先翻页预览!