有一些c语言题目不会啊,请给我解答一下吧!谢谢

1.有以下程序
#include <stdio.h>
main( )
{char a,b,c,d;
scanf("%c%c",&a,&b);
c=getchar(0; d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第一列开始,<CR>d代表回车,注意:回车也是一种字符)
12<CR>
34<CR>
则输入结果是
A.1234 B.12 C.12 D.12
3 34
2 。以下关于return语句的叙述中正确的是
A.一个自定义语句函数中必须有一条return语句
B.一个自定义函数中可以根据不同情况设置多条return语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数再执行结束时不恩能够返回到调用处
3.有以下程序
#include <stdiu.h>
void fun(char *c.int d)
{
*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
}
main( )
{char b='a',a='A';
fun(&b,a); printf("%c,%c\n",b,a);
}
程序运行后的输出结果是
A.b,B,b,A B.b,B,B,A C.a,B,B,a D.a,B,a,B
4.有以下程序
#include 《stdio.h>
#define SUB(a) (a)-(a)
main()
{int a=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf("%d\n",d);
}
程序运行后的输出结果是
A.0 B.-12 C.-20 D.10
5.有以下程序
#intclude <stdio.h>
main()
{ int m,n;
scanf("%d%d",&m,&n );
while (m!=n)
{ while(m>n)m=m-n;
while(m<n)n=n-m;
}
printf("%d\n,m);
}
程序运行后,当输入14 63<回车>时,输入结果是______.
ps:麻烦大家给我解答一下啊,这些题目不会做啊,请各位解释一下,说一下理由!

1.有以下程序
#include <stdio.h>
main( )
{char a,b,c,d;
scanf("%c%c",&a,&b);
c=getchar(); d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第一列开始,<CR>代表回车,注意:回车也是一种字符)
12<CR> 次处将1赋给变量a,2赋给变量b,回车赋给变量c,回车有换行作用
34<CR> 次处将3赋给变量d,4和回车不做赋值操作
则输入结果是
A.1234 B.12 C.12 D.12
3 34 选择B
2 。以下关于return语句的叙述中正确的是 选择B

A.一个自定义语句函数中必须有一条return语句
B.一个自定义函数中可以根据不同情况设置多条return语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数再执行结束时不恩能够返回到调用处
自定义函数中可以没有return语句,也可有一条或多条return语句,不管函数有没有return语句,函数在被调用后都会返回到调节器用处。void类型的函灵敏的函数体中不能出现return语句
3.有以下程序 下面的说明编号为运行顺序
#include <stdiu.h>
void fun(char *c.int d)
{
*c=*c+1;d=d+1; 3)传地址后*c等价于变量a,所以*c=*c+1也就是变量a的值加1,而变量d的值也加1(注意b的值没有变化)
printf("%c,%c,",*c,d);4)输出*c,d分别为b,B
}
main( )
{char b='a',a='A'; 1)让变量b获得字母a,变量a获得字母A
fun(&b,a); )将变量b的地址,变量a的值传递给函数fun(char *c,int d)的两个参数,形参c获得变量b的地址,形参d获得变量a的值字母A,
printf("%c,%c\n",b,a);5)输出b,a,分别为b,A
}
程序运行后的输出结果是
A.b,B,b,A B.b,B,B,A C.a,B,B,a D.a,B,a,B 选择A
4.有以下程序
#include 《stdio.h>
#define SUB(a) (a)-(a)
main()
{int a=2,b=3,c=5,d;
d=SUB(a+b)*c; SUB(a)代替为字符串 (a)-(a),所以SUB(a+b)*c代替为字符串(a+b)-(a+b)*c,根据计算(2+3)-(2+3)*5得-20
printf("%d\n",d);
}
程序运行后的输出结果是 选择C
A.0 B.-12 C.-20 D.10
5.有以下程序
#intclude <stdio.h>
main()
{ int m,n;
scanf("%d%d",&m,&n );
while (m!=n)
{ while(m>n)m=m-n;
while(m<n)n=n-m;
}
printf("%d\n",m);
}
程序运行后,当输入14 63<回车>时,输入结果是_7_____.
m!=n,进入循环后,由于条件m>n不成立,执行第二个循环,执行后n=7,m=4
再次判断m!=n,由于条件m>n成立,执行第一个循环,执行`后n=7,m=7
判断m<n不成立,判断m!=n不成立,跳出循环,输出m的值为7
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-22
1、B
输入12后 a=1,b=2,紧接着输入了回车和34,这时候回车赋给了c,而3赋给了d

2、B
a、不必须 b、正确 c、因为是void类型,所以不允许带返回值的返回 d、返回调用处与return语句无关,而由PC指针决定

3、A
这条考的是传值与传址的概念,调用fun函数时,b传入的是地址,而a传入的是值,所以在fun结束后b的值改变了而a的值没有改变

4、-20
这条考的是宏函数,宏只负责展开,所以d=SUB(a+b)*c展开成 d=(a+b)-(a+b)*c=5-25=-20

5、7
这条用代入法计算即可
m n
14 63
14 7(63-14*4)
7 7(14-7)

请采纳,不懂的继续留言追问

第四题:d=SUB(a+b)*c展开成 d=(a+b)-(a+b)*c这里为什么不是d=(a+b)*c-(a+b)*c呢?

追答

因为宏只负责表达式的展开,也就是说
SUB(a+b) 变成了 (a+b)-(a+b)
后面再加个*c的话就是(a+b)-(a+b)*c,不会自动补上括号的
详细参考宏的概念

本回答被提问者采纳
第2个回答  2012-02-24
*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
}
main( )
{char b='a',a='A';
fun(&b,a); printf("%c,%c\n",b,a);
}
程序运行后的输出结果是
A.b,B,b,A B.b,B,B,A C.a,B,B,a D.a,B,a,B
4.有以下程序
#include 《stdio.h>
#define SUB(a) (a)-(a)
main()
{int a=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf("%d\n",d);
}
程序运行后的输出结果是
A.0 B.-12 C.-20 D.10
5.有以下程序
#intclude <stdio.h>
main()
{ int m,n;
scanf("%d%d",&m,&n );
while (m!=n)
{ while(m>n)m=m-n;
while(m<n)n=n-m;
}
printf("%d\n,m);
第3个回答  2012-02-22
1、B 经过代码测试
第4个回答  2012-02-24
1 C
相似回答
大家正在搜