请C语言高手帮忙解答一下以下几题!~考二级,急!
1.#include<stdio.h>voidmain(){doublea,b,c,ave;scanf("%lf%lf%lf",&a,&b,&c,);ave=(a+b+c...
1.#include <stdio.h>
void main()
{
double a,b,c,ave;
scanf("%lf%lf%lf",&a,&b,&c,);
ave=(a+b+c)/3;
printf("%.1f",ave);
} 这个程序问题出现在哪里??
2.编写程序输出学生生日,出生年月日y0,m0,d0,当前日期y1m1d1。以下是我写的程序,为什么只有1991年7月22日的验证不正确??
#include <stdio.h>
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<d2)
age--;
}
else
printf("the age is%d",age);
if(m1<m0)
{age--;printf("the age is%d",age);}
if(m1>m0)
printf("the age is%d",age);
}
3.若变量已正确定义,在执行以下while语句时,输入字符A后,ch的值为什么是0?
while(ch=getchar()=='A');
4.#include <stdio.h>
main()
{
int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);printf("%x\n",p+9);
}若一个int类型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句的输出结果是 ?
A.212 B.204 C.1a4 D.1a6
5.在预编译时到底要不要写void? 二级C语言教材上都没有,但我在电脑上操作时没写void就错了,为什么?
6.排序、查找是否很重要?二维数组在二级C语言考试中多吗?
第一题里那个逗号是打错了,、、~这些题目我问的主要都是语法,希望大家能帮我讲讲原理~~ 展开
void main()
{
double a,b,c,ave;
scanf("%lf%lf%lf",&a,&b,&c,);
ave=(a+b+c)/3;
printf("%.1f",ave);
} 这个程序问题出现在哪里??
2.编写程序输出学生生日,出生年月日y0,m0,d0,当前日期y1m1d1。以下是我写的程序,为什么只有1991年7月22日的验证不正确??
#include <stdio.h>
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<d2)
age--;
}
else
printf("the age is%d",age);
if(m1<m0)
{age--;printf("the age is%d",age);}
if(m1>m0)
printf("the age is%d",age);
}
3.若变量已正确定义,在执行以下while语句时,输入字符A后,ch的值为什么是0?
while(ch=getchar()=='A');
4.#include <stdio.h>
main()
{
int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);printf("%x\n",p+9);
}若一个int类型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句的输出结果是 ?
A.212 B.204 C.1a4 D.1a6
5.在预编译时到底要不要写void? 二级C语言教材上都没有,但我在电脑上操作时没写void就错了,为什么?
6.排序、查找是否很重要?二维数组在二级C语言考试中多吗?
第一题里那个逗号是打错了,、、~这些题目我问的主要都是语法,希望大家能帮我讲讲原理~~ 展开
4个回答
展开全部
第一题:scanf("%lf%lf%lf",&a,&b,&c,);参数c后面多了一个逗号!
首先,你的 else printf("the age is%d",age);应该放在第一个if语句的里面,其次,几个if语句应该是并列关系,应使用if{}else{}...;我帮你改了一下,验证正确!
#include <stdio.h>
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<d0)
age--;
else
printf("the age is%d",age);
}
else if(m1<m0){
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);定义时才需要写明参数。
首先,你的 else printf("the age is%d",age);应该放在第一个if语句的里面,其次,几个if语句应该是并列关系,应使用if{}else{}...;我帮你改了一下,验证正确!
#include <stdio.h>
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<d0)
age--;
else
printf("the age is%d",age);
}
else if(m1<m0){
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);定义时才需要写明参数。
展开全部
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.大略看一下二级题库就清楚了,指针不会少。
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.大略看一下二级题库就清楚了,指针不会少。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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语言还是指针最重要不轮哪个等级应该都是必考的。
排序、查找还是二维数组,如果你熟练掌握了指针你会发现回头做这些东西会觉得很简单。
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语言还是指针最重要不轮哪个等级应该都是必考的。
排序、查找还是二维数组,如果你熟练掌握了指针你会发现回头做这些东西会觉得很简单。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这些问题除了6,其它都可以通过VC6或TC进行验证,你没有编程环境么?如果没有call我,我帮你试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询