永发信息网

C语言题目 #include <stdio.h> void ch(int *a,int *b) { int c; c=*a; *a=b; *b=c; } void main( ) { st

答案:5  悬赏:60  手机版
解决时间 2021-03-20 18:45
C语言题目 #include <stdio.h> void ch(int *a,int *b) { int c; c=*a; *a=b; *b=c; } void main( ) { sta
最佳答案
void ch(int *a,int *b) { int c; c=*a; *a=b; *b=c; } 这一行定义了一个void类型的函数ch,形式参数是指针变量a,b,函数的功能是实现两个整型数据的交换
比如,我将你的主函数补充为下面的函数:
void main()
{int x=5,y=6;
printf("%d,%d\n",x,y);
ch(&x,&y);
printf("%d,%d\n",x,y);
}
程序运行后结果应该如下:
5,6
6,5
希望对你有所帮助追问具体是这样的
#include
void ch(int *a,int *b)
{ int c;
c=*a; *a=b; *b=c;
}
void main( )
{ static int a[10]={32,5,18,56,98,52,78,15,132,112};
int x=0,y=1,i;
if(a[x]>a[y]) ch(&x,&y);
for(i=2;i<10;i++)
if(a[i]else if(a[i]>a[y]) y=i;
ch( &a[x], &a[y]);
for(i=0;i<10;i++) printf("%d,",a[i]);
}
怎么做 谢谢 答案是32 132 18 56 98 52 78 15 5 112追答分析你的输出结果可以看出,只有5和132进行了交换,详细的分析如下:
main( ) { static int a[10]={32,5,18,56,98,52,78,15,132,112}; 定义一个静态数组并初始化
int x=0,y=1,i; 定义变量x,y,i,其中x,y分别初始化为0和1
if(a[x]>a[y]) ch(&x,&y); 如果a[0]>a[1],交换x,y的值,本题中32>5,所以现在x=1,y=0
for(i=2;i<10;i++) for 循环
if(a[i]a[y]) y=i; for循环体,
第一次循环时,i=2,x=1,y=0,代入循环体,因为a[2]=18,a[1]=5,a[0]=32,所以两个条件均不成立,所以此次循环结束时,i=3,x=1,y=0,
开始第二次循环,代入循环体可得y=3,此次循环结束时i=4,x=1,y=3,
然后开始第三次循环,代入循环体可得y=4,此次循环结束时i=5,x=1,y=4,
然后开始第四次循环,代入循环体可得y=4,此次循环结束时i=6,x=1,y=4,
然后开始第,五次循环,代入循环体可得y仍然等于4,,此次循环结束时i=7,x=1,y=4,
然后开始第六次循环,代入循环体可得y=4,此次循环结束时i=8,x=1,y=4,
然后开始第七次循环,代入循环体可得y=4,此次循环结束时i=9,x=1,y=8,
然后开始第八次循环,代入循环体可得y=8,此次循环结束时i=10,x=1,y=8,
i=10,不再满足循环条件a<10,,for循环结束
ch( &a[x], &a[y]); 交换a[x],a[y]的值,x=1,y=8,交换a[1],a[8]的值,因为使用的是指针变量进行交换,所以交换了的a[1],a[8]的值可以带回到原数组中....a[1]=132,a[8]=5,其他的值都没有改变
for(i=0;i<10;i++) printf("%d,",a[i]); 输出数组a的各个元素}
全部回答
给你贴个卷子,供你参考:
一、单项选择题 1.函数调用语句:fseek(fp,-20L,2);的含义是( )。A)将文件位置指针移到距离文件头20个字节处
B)将文件位置指针从当前位置向后移动20个字节
C)将文件位置指针从文件末尾处后退20个字节
D)将文件位置指针移到距离当前位置20个字节处
2.C语言规定,函数返回值的类型是由( )。A)return语句中的表达式类型所决定
B)调用该函数时的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
3.下列转义字符不正确的是( )。A)’\\’
B)’\ab’
C)’\083’
D)’\0’
4.C语言中运算对象必须是整型的运算符是( )。A)/
B)++
C)%
D)!=
5.下列选项中属于不正确的赋值语句的是( )。A)t--;
B)k=i==j;
C)t1=t2=t3=3;
D)t1=1,t2=2;
6.在PC 16位机下,下列程序执行后的输出结果是( )。
main( )
A)-32767
B)FFFE
C)-1
D)-32768
7.以下程序的输出结果是( )。
main()
{ int x=’a’,y=’b’;
printf(“x=%%%c,y=%%%c\n”,x,y);}A)x=%a,y=%b
B)x=a,y=b
C)x=%%%c,y=%%%c
D)x=%%c,y=%%c
8.执行下列程序中的输出语句后,x的值是( )。
main()
{int x ;
printf(“%d\n”,(x=4*5,x*2,x+20));}A)20
B)40
C)60
D)80
9.执行以下程序后的输出结果是( )。
#include "stdio.h"
void main()
{
int i = 0, j = 0, a = 6;
if ((++i0)||(++j0)) a ++;
printf("i=%d, j=%d, a=%d\n", i, j, a);
}A)i=0, j=0, a=6
B)i=1, j=1, a=7
C)i=1, j=0, a=7
D)i=0, j=1, a=7
10.为表示“a和b都不等于0”,应使用的C语言表达式是( )。A)(a!=0) || (b!=0)
B)a || b
C)!(a=0)(b!=0)
D)a b
11.执行以下程序的输出结果是( )。
main()
{ int i=1,j=1,k=2;
if((j++||k++) i++)
printf("%d,%d,%d\n",i,j,k);
}A)1,1,2
B)2,2,1
C)2,2,2
D)2,2,3
12.以下程序的输出结果是( )。
main()
{int a=0,b=1,c=0,d=20;
if (a) d=d-10;
else if (!b)
if (!c) d=15;
else d=25;
printf("d=%d\n",d);
}A)d=10
B)d=15
C)d=20
D)d=25
13.以下程序的输出结果为( )。
#include "stdio.h"
void main()
{
int a=1,b=0;
for(;a3;a++)
switch(a++)
{
case 1: b--;break;
case 2: b++;break;
case 3: b+=3;break;
}
printf("%d\n",b);
}A)0
B)-1
C)3
D)其他
14.以下程序的运行结果是( )。
void main()
{
int a=4; char ch=’a’;
printf( "%d\n",(a2)(ch’A’));
}A)0
B)1
C)2
D)3
15.设有程序段 char k;while (k0) k++; printf("%d\n",k);则程序输出结果为( )。A)-127
B)256
C)-128
D)128
16.下列程序的运行结果是( )。
main()
{ int y=10;
do while(y);
printf(“%d\n”,y- -);}A)-1
B)-2
C)9
D)0
17.以下是求两个正整数的最大公约数的函数fun( ), 下划线处应填入的正确语句为( )。
int fun(m,n)
int m,n;
{int r;
if(mn)
if(n= =0) return(m);
do{ r=m%n;
if (r!=0)
} while (______);
return(n);
}A)r!=0
B)r==0
C)n!=0
D)n==0
18.现已定义整型变量int i=1; 执行循环语句“while(i++5);”后,i的值为( )。A)1
B)5
C)6
D)以上三个答案均不正确
19.以下程序的输出结果是( )。
main()
{int a=0,j;
for(j=0;j4;j++)
{switch(j)
{case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}A)20
B)13
C)10
D)36
20.若a、b均为int型变量,且a=100,则以下关于for循环语句的正确判断为( )。
for(b=100;a!=b;++a,b++)printf("————\n");A)循环体只执行一次
B)是死循环
C)循环体一次也不执行
D)输出————
21.下面有关for循环的描述正确的是( )。A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)for循环中可以用break语句跳出循环体
D)for循环中可以包含if语句,但必须用花括号括起来
22.以下程序的输出结果为( )。
#include stdio.h
main()
{ int i=0,a=0;
while(i20)
{ for( ; ; )
{ if((i%10)==0) break;
else i--; }
i+=11; a+=i;
}
printf("%d\n",a);
}A)21
B)32
C)33
D)11
23.下列说法正确的是( )。A)break 用在switch语句中,而continue 用在循环语句中
B)break 用在循环语句中,而continue用在switch语句中
C)break 能结束循环,而continue只能结束本次循环
D)continue能结束循环,而break只能结束本次循环
24.若有以下程序段
… …
int a[ ]=,i,j,t;
for(i=1;i5;i++)
{t=a[i];j=i-1;
while(j=0ta[j])

a[j+1]=t;}
… …
则该程序段的功能是( )。A)对数组a进行插入排序(升序)
B)对数组a进行插入排序(降序)
C)对数组a进行选择排序(升序)
D)对数组a进行选择排序(降序)
25.下面的程序对输入的每一个数字出现的次数进行计数,下划线处应填入的正确语句为( )。
#include "stdio.h"
main()
{int i,ch, n[10];
for(i=0;i10;++i) n[i]=0;
while((ch=getchar())!=‘\n’)
if(ch=‘0’ ch=‘9’)
________;
for(i=0;i10;++i)
printf("数字%d出现的次数是:%d\n",i,n[i]);
}A)n[ch-‘0’]++
B)n[ch]++
C)i++
D)n[i]++
26.以下程序段输出字符串str的内容, 其中循环条件str[i]!= ’\0’还可以写成( )。
char str[80];
for(i=0;str[i]!=’\0’ i++)
putchar(str[i]);A)str[i]!=NULL
B)i 80
C)!(str[i])= ’\0’
D)i=80
27.下列程序的运行结果是( )。
main()
{int a=4,y;
y=fn(a,++a);
printf(“%d”,y);}
int fn(x,c)
{int b;
if(xc)b=1;
else if(x==c)b=0;
else b=-1 ;
return(b);
}A)4
B)-1
C)1
D)0
28.下列程序执行后的输出结果是( )。
void func(int *a,int b〔〕)

main()
;
a=0; b〔0〕=3;
func(a,b); printf("%d\n",b〔0〕);
}A)6
B)7
C)8
D)9
29.函数f定义如下,执行语句“m=f(5);”后,m的值应为( )。
int f(int k)
{ if(k==0||k==1) return 1;
else return f(k-1)+f(k-2);
}A)3
B)8
C)5
D)13
30.下列关于字符串操作的输出结果是( )。
#include "stdio.h"
#include "string.h"
void main()
{
char p1[20]="abcd",p2[20]="ABCD";
char str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s\n",str);
}A)xyabcAB
B)abcABz
C)Ababcz
D)xycdBCD
31.有如下程序,该程序的输出结果是( )。
long f(int n)
{ if(n2) return(f(n-2)+f(n-3));
else
if(n==2) return(2);
else return(1); }
main()
A)2
B)3
C)4
D)5
32.以下程序的输出结果是( )。
#include "stdio.h"
void fun(int *p)
{
int a=10;
p=a;
++a;
}
void main()
{
int a=5;
fun(a);
printf("%d\n",a);
}A)5
B)6
C)10
D)11
33.如果要限制一个变量只能被本程序文件使用,必须通过( )来实现。A)静态内部变量
B)外部变量声明
C)静态外部变量
D)局部变量声明
34.以下程序的运行结果是( )。
void fun(int *n)
{
static int m=2;
*n*=m-1; m+=2;
}
void main()
{
static int m=1;
int i;
for(i=1;i4;i++)
fun(m);
printf("%d\n",m);
}A)8
B)10
C)11
D)15
35.设有下列定义:
static int x,*p=x,*q;
scanf(“%d,%d”,p,q);
若输入5,6,则x的值为( )。A)5
B)6
C)0
D)无法确定
36.以下程序的输出结果是( )。
#include stdio.h
#define H1 5
#define H2 H1+1
#define H3 H2*H2/2
void main()
{
int s=0,k=H3;
while(k--)s++;
printf("%d\n",s);
}A)18
B)19
C)10
D)宏定义有错,不能编译
37.执行以下程序后,a的值为( )。
int *p,a=10,b=1;
p=a;a=*p+b;A)12
B)编译出错
C)10
D)11
38.下列程序段的输出结果是( )。
int c[ ]=;
int *k=c+1;
printf("%d",*k++);A)2
B)7
C)8
D)12
39.若有二维数组定义语句:int a[4][5]; 则对元素a[2][3]的引用方式不正确的是( )。A)*(a[2][3])
B)*(a+5*2+3)
C)*(a[2]+3)
D)*(*(a+2)+3)
40.已知有以下的说明,
int a[]=; 那么a[*(a+a[3])]的值为( )。A)5
B)0
C)4
D)7
#include
void ch(int *a,int *b)
{ int c;
c=*a; *a=b; *b=c;
}// 交换数组中的两个数 *a=b应该改成*a=*b
void main( )
{ static int a[10]={32,5,18,56,98,52,78,15,132,112};
int x=0,y=1,i;
if(a[x]>a[y]) ch(&x,&y);
for(i=2;i<10;i++)
if(a[i]else if(a[i]>a[y]) y=i;//Y保存最小的下标
ch( &a[x], &a[y]);//交换最大最小两个数的位置
for(i=0;i<10;i++) printf("%d,",a[i]);//输出处理后的数组
}
分析你的输出结果可以看出,只有5和132进行了交换,详细的分析如下:
main( ) { static int a[10]={32,5,18,56,98,52,78,15,132,112}; 定义一个静态数组并初始化
int x=0,y=1,i; 定义变量x,y,i,其中x,y分别初始化为0和1
if(a[x]>a[y]) ch(&x,&y); 如果a[0]>a[1],交换x,y的值,本题中32>5,所以现在x=1,y=0
for(i=2;i<10;i++) for 循环
if(a[i]a[y]) y=i; for循环体,
第一次循环时,i=2,x=1,y=0,代入循环体,因为a[2]=18,a[1]=5,a[0]=32,所以两个条件均不成立,所以此次循环结束时,i=3,x=1,y=0,
开始第二次循环,代入循环体可得y=3,此次循环结束时i=4,x=1,y=3,
然后开始第三次循环,代入循环体可得y=4,此次循环结束时i=5,x=1,y=4,
然后开始第四次循环,代入循环体可得y=4,此次循环结束时i=6,x=1,y=4,
然后开始第,五次循环,代入循环体可得y仍然等于4,,此次循环结束时i=7,x=1,y=4,
然后开始第六次循环,代入循环体可得y=4,此次循环结束时i=8,x=1,y=4,
然后开始第七次循环,代入循环体可得y=4,此次循环结束时i=9,x=1,y=8,
然后开始第八次循环,代入循环体可得y=8,此次循环结束时i=10,x=1,y=8,
i=10,不再满足循环条件a<10,,for循环结束
ch( &a[x], &a[y]); 交换a[x],a[y]的值,x=1,y=8,交换a[1],a[8]的值,因为使用的是指针变量进行交换,所以交换了的a[1],a[8]的值可以带回到原数组中....a[1]=132,a[8]=5,其他的值都没有改变
for(i=0;i<10;i++) printf("%d,",a[i]); 输出数组a的各个元素}
//使用指针交换两个变量的内容
#include

void ch(int *a ,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void main()
{
int a = 4;
int b = 5;

ch (&a,&b);
printf("a = %d,b = %d\n",a,b);
}追问具体是这样的
#include
void ch(int *a,int *b)
{ int c;
c=*a; *a=b; *b=c;
}
void main( )
{ static int a[10]={32,5,18,56,98,52,78,15,132,112};
int x=0,y=1,i;
if(a[x]>a[y]) ch(&x,&y);
for(i=2;i<10;i++)
if(a[i]else if(a[i]>a[y]) y=i;
ch( &a[x], &a[y]);
for(i=0;i<10;i++) printf("%d,",a[i]);
}
怎么做 谢谢 答案是32 132 18 56 98 52 78 15 5 112
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
浴缸底部为什么不光滑?
全民拼成语10关答案
给水衬塑复合钢管中c1是什么意思
玩CF时经常出现“网络异常,与服务器断开连接
雷诺汽车热车抖动熄火,发动机过热是什么原因
脑血管供血不足严重吗
泉州自考大专怎么报名
无锡产检费用能报销?
未来软件园的软件怎么安装
NBA历史十大铁匠谁是铁王
春一怎么去啊,有知道地址的么
千鸟和雷切是同等级的忍术么?
日元为何狂涨?,
那么多晒干的朝天椒都不辣,这些不辣的干朝天
机房怎么建立局域网!
推荐资讯
血珀怎么看真假
跪求穷奇素描图
战地风暴达到五千万的战斗力需要花多少钱
爱心义卖作文开头
禅悟人生 需要一生去悟禅
我买了个2.1安的冲电器,为什么冲充步步高手机
温度升高,水的ph降低?不是也有oh生成吗
本人家在农村,盖的房子是把废弃的酒窖填平了
4000乘以3.25%乘以1的公式
螃蟹的螃还能组什么词?.
看图猜成语1一个苍字后面有黑色背景
女,46岁,以前血压一直正常,最近发现血压上
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?