您的位置:

极简的c语言题,c语言常见题型

本文目录一览:

几道简单的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项也是缺少分号。