请C语言高手帮忙解答一下以下几题!~考二级,急!

2025-01-02 21:55:48
推荐回答(4个)
回答1:

第一题:scanf("%lf%lf%lf",&a,&b,&c,);参数c后面多了一个逗号!
首先,你的 else printf("the age is%d",age);应该放在第一个if语句的里面,其次,几个if语句应该是并列关系,应使用if{}else{}...;我帮你改了一下,验证正确!
#include
void main()
{
int y0,m0,d0,y1,m1,d1,age;
printf("input the birthday");
scanf("%d%d%d",&y0,&m0,&d0);
printf("input the date");
scanf("%d%d%d",&y1,&m1,&d1);
age=y1-y0;
if(m1==m0)
{
if(d1 age--;
else
printf("the age is%d",age);
}
else if(m1 age--;
printf("the age is%d",age);
}
else printf("the age is%d",age);
getch();
}
第三题:while(ch=getchar()=='A');这句的意思是用getchar()接收用户键入的字符并将该字符赋给字符变量ch,然后判断ch是否等于'A',若是则进入while()循环,否则退出循环。
我不明白你说的“输入字符A后ch的值为0”是什么意思。
第五题:你说是预编译,我想你说的是函数声明吧?程序开头带'#'号的叫预编译,在声明函数时如果该函数的返回值类型是void则也要写明,否则编译不通过!函数参数没必要指明,但要说明参数类型,例如void fun(int,int);定义时才需要写明参数。

回答2:

1:计算时没错,不知你是不是在键入a,b,c时没加空格,scanf对键入的格式有严格的要求。
2:楼上已有答案
3:等号运算符优先级别高于赋值运算符,程序先计算等号的值,再根据赋值运算符自右向左的运算法则赋值。所以ch的值是1或者0,如果你输入的是A ch的值应该是1,若想得到ch的值是A的ASCII码值你只需while((ch=getchar())=='A');
4.若int占两个字节,则数组的地址值从首地址是以2为单位递增的。答案D
5.很多编译器对main函数是否声明为void总是忽略不计的。早期的C的函数默认是int类型,并且对未声明的函数是否返回数据并不进行检测。C++里为达到描述的一致性,要求所有的函数都必须声明类型,对无类型声明的沿用C的习惯,但对int类型要求有返回值,否则会引发警告。
6.大略看一下二级题库就清楚了,指针不会少。

回答3:

1. scanf("%lf%lf%lf",&a,&b,&c,);最后多了一个逗号

2. 你用时间函数来做吧,你的题目是求生日,但是后面的程序思路我没看懂。

3.while(ch=getchar()=='A');是个空循环
当你输入A后,ch被赋值为1(真),并且成了一个死循环
while(ch=getchar()=='A');
printf("%c",ch); 上面成了死循环输出语句根本没走到,ch其实是个NULL值(0)所以应该改为
while(ch=getchar()=='A'){
printf("%d",ch);
return;


4.D //先转成10进制,加2(字节)*9(位数)再转成16进制输出

5 编译器识别问题,一般情况下不写void 编译器默认为void类型。vc6上可以不写void。

6.我没考过帮不了你,个人觉得C语言还是指针最重要不轮哪个等级应该都是必考的。
排序、查找还是二维数组,如果你熟练掌握了指针你会发现回头做这些东西会觉得很简单。

回答4:

这些问题除了6,其它都可以通过VC6或TC进行验证,你没有编程环境么?如果没有call我,我帮你试。