本文目錄一覽:
幾道簡單的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.123×10^3吧,就這個道理,所以選B不選C。
2.其實可能是題目錯了。
3.3ab,沒有這種寫法,c語言中,相乘必須有*號。取余的操作只能是整型。c中的運算符號只有(),沒有[]的。
4.c-=b+=c*c,這就要一步步算的。首先算b+=c*c等同於b=b+c*c,那麼可以得到b=8+10×10=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項也是缺少分號。
原創文章,作者:LJZR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/135401.html