本文目录一览:
几道简单的C语言选择题
1、D 数组长度中不能出现变量,其定义为 :类型名 数组名1【常量表达式1】,数组名2【常量表达式2】,······
2、D 如果A中的2是字符类型,则其为字符串,C也为字符串,字符型常量为ASCII字符集中的一个字符;B中用指数形式表示时,e的前面要有数字,后面的指数需为整数
3、B 字符串是用字符型数组存放的,用双引号括起来,而B char b[10];已有错,char b[10]=""; b="Hello!";赋值不对
4、C 说明这是以第一行,第一列开始计,而不是0行0列开始(a[2][0]),用指针则为*(a[3]+1),*(*(a+3)+1)
5、 B
("%.1f,%d\n",10./4,10/8 0.1f指整数部分原值输出,小数后输出2位;%d为整形数值
6、B y+=x+2.0 y=(x+2.0)+y=3+2+4=9
7、B
8、A 因为*P指向A数组的首地址
9、C 因为i++即i=i+1;表达式的值为增加了1
10、 C
11、 A int a, int b; 应为int a; int b;
12、C 表达式相当于z=(xy?y:x);即 if(xy) z=y;else z=x;
13、 D
14、A
15、 B 看ASCII表
16、B
初学者请教 两道简单的c语言编程题目
[回答]
1. 用C语言自己的时间函数
difftime(time_t time1, time_t time0) / 86400
这样做得缺点是,这里的time_t类型,只支持到2037年
2. 自己定义函数
楼主用的方法,在实际编程里不常用,变化比较大。
下面这个方法是直接计算两个日期到公元元年的天数
然后相减,这个是实际编程时的算法,经过很多程序员的洗炼,已经被广泛使用
#includestdio.h
#define LEAP(y) (y%(y%100?4:400)==0) /*公元y年是否闰年*/
long totaldays(int year,int month,int day)/*公元纪年的总天数*/
{ int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int c=day,m,y=year-1;
days[2]=28+LEAP(year);
for(m=1;mmonth;m++)c+=days[m];
return c+y/4-y/100+y/400+y*365L;
}
void main()
{ int y,m,d; long t1,t2;
printf("date 1: ");
scanf("%d%*c%d%*c%d",y,m,d);
t1=totaldays(y,m,d);
printf("date 2: ");
scanf("%d%*c%d%*c%d",y,m,d);
t2=totaldays(y,m,d);
printf("total days: %ld\n",t2-t1);
}
这应该是全部的实现方法了
楼主的方法没必要简化了
尤其是刻意追求短代码就更没有必要了
要知道,代码短了,可读性就差
两者协调好,才能称为好程序^^
悉雨辰寂
几道简单的C语言题目
1.这就是我们数学上的科学计数法,整数部分是要是小数,指数部分不能有小数,对照答案就知道了。还有我们不会吧123写成0.123x10^3吧,就这个道理,所以选B不选C。
2.其实可能是题目错了。
3.3ab,没有这种写法,c语言中,相乘必须有*号。取余的操作只能是整型。c中的运算符号只有(),没有[]的。
4.c-=b+=c*c,这就要一步步算的。首先算b+=c*c等同于b=b+c*c,那么可以得到b=8+10x10=108;再算c-=b,等同于c=c-b,那么就等于10-108=-98.所以答案是:
表达式的值是-98,b=108,c=-98.
5.第六行有错,a数组的最大下标为2.
6.A超出了整形标示的数的范围。系统不会给变量赋初值。整型相除的值微整形,所以答案为0.
7.A是空语句,是可以的。B 没有以分号结束,算不得语句。C宏定义不需要分号。D项也是缺少分号。