預編譯命令題及答案
#include <assert.h> //設定插入點
#include <ctype.h> //字元處理
#include <errno.h> //定義錯誤碼
#include <float.h> //浮點數處理
#include <fstream.h> //文件輸入/輸出
#include <iomanip.h> //參數化輸入/輸出
#include <iostream.h> //數據流輸入/輸出
#include <limits.h> //定義各種數據類型最值常量
#include <locale.h> //定義本地化函數
#include <math.h> //定義數學函數
#include <stdio.h> //定義輸入/輸出函數
#include <stdlib.h> //定義雜項函數及內存分配函數
#include <string.h> //字元串處理
#include <strstrea.h> //基於數組的輸入/輸出
#include <time.h> //定義關於時間的函數
#include <wchar.h> //寬字元處理及輸入/輸出
#include <wctype.h> //寬字元分類
//////////////////////////////////////////////////////////////////////////
標准 C++ (同上的不再注釋)
#include <algorithm> //STL 通用演算法
#include <bitset> //STL 位集容器
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex> //復數類
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque> //STL 雙端隊列容器
#include <exception> //異常處理類
#include <fstream>
#include <functional> //STL 定義運算函數(代替運算符)
#include <limits>
#include <list> //STL 線性列表容器
#include <map> //STL 映射容器
#include <iomanip>
#include <ios> //基本輸入/輸出支持
#include <iosfwd> //輸入/輸出系統使用的前置聲明
#include <iostream>
#include <istream> //基本輸入流
#include <ostream> //基本輸出流
#include <queue> //STL 隊列容器
#include <set> //STL 集合容器
#include <sstream> //基於字元串的流
#include <stack> //STL 堆棧容器
#include <stdexcept> //標准異常類
#include <streambuf> //底層輸入/輸出支持
#include <string> //字元串類
#include <utility> //STL 通用模板類
#include <vector> //STL 動態數組容器
#include <cwchar>
#include <cwctype>
using namespace std;
//////////////////////////////////////////////////////////////////////////
C99 增加
#include <complex.h> //復數處理
#include <fenv.h> //浮點環境
#include <inttypes.h> //整數格式轉換
#include <stdbool.h> //布爾環境
#include <stdint.h> //整型環境
#include <tgmath.h> //通用類型數學宏
㈡ #include p 3 void F(int x) {return (p*x*x);} void main() {printf("%d\n",F(3+5));}這題求解釋
#include p 3?
應該是#define p 3吧!如果是#define p 3那就賀謹寬是x=3+5(即8)傳遞給F函數,然後載返回p*x*x的值,即3*8*8的值。最後在main函數中輸出F返回的值!
還有上面的一個回答中說F(3+5) => 3*3+5*3+5=29 這個答案絕對是錯的。是將3+5的值8傳遞給x的!這個不是宏定義,在宏定義中,如果寫#define F(x) 3*x*x ,然後在程序中寫F(3+5),結果才是 3*3+5*3+5,因為宏定義只負責替換,不會運算,所以將F(3+5)替換成了 3*3+5*3+5。你這個是函數跟那個不一樣!函數調用時的參數可以是表達禪亮式,但是它會先計算表晌羨達式。
㈢ 一道C語言選擇題,求答案。
答案應該是答滾選C
因為C語言規則規定:標准庫函數不允許用戶磨指進行重新定義,只能進行引用,調用前需使用預編譯命令進瞎舉配行預編譯;
㈣ C語言預編譯填空題
正確結果是var=19
㈤ c++題目基礎題目
1. C++語言是在__C__語言的基礎上發展起來的。
2. C++語言的編譯單位是擴展名為__CPP__的__源__文件。
3. 行尾使用注釋的開始標記符為___//___。
4. 多行注釋的開始標記符和結束標記符分別為__/*__和__*/__。
5. 用於輸出表達式值的標准輸出流對象是__cout__。
6. 用於從鍵盤上為變數輸入值的標准輸入流對象是__cin__。
7. 一個完整程序中必須有一個名為__main__的函數。
8. 一個函數的函數體就是一條__復合___語句。
9. 當執行cin語句時,從鍵盤上輸入每個數據後必須接著輸入一個__換行__符,然後才能繼續輸入下一個數據。
10. 在C++程序中包含一個頭文件或程序文件的預編譯命令為__#include__。
11. 程序中的預處理命令是指以_#__字元開頭的命令。
12. 一條表達式語句必須以__;__作為結束符。
13. 在#include命令中所包含的頭文件,可以是系統定義的頭文件,也可以是___用戶___定義的頭文件。
14. 使用#include命令可以包含一個頭文件,也可以包含一個__hpp_文件。
15.一個函數定義由__函數名__和__函數體__兩部分組成。
16.若一個函數的定義處於調用它的函數之前,則在程序開始可以省去該函數的_聲明__語句。
17.C++頭文件和源程序文件的擴展名分別為__.h__和__.cpp_。
18.程序文件的編譯錯誤分為__語法__和__鏈接?__兩類。
19.當使用__void__保留字作為函數類型時,該函數不返回任何值。
20.當函數參數表用_void_保留字表示時,則表示該參數表為空。
21.從一條函數原型語句「int fun1(void);」可知,該函數的返回類型為__整型__,該函數帶有__零__個參數。
22. 當執行cout語句輸出endl數據項時,將使C++顯示輸出屏幕上的游標從當前位置移動到__下一行__的開始位置。
㈥ 電氣三班c語言選擇題
下面說法不正確的是()。
調用函數時,實參可以是表達式
調用函數時,實參和形參可以共用內存單元
調用函數時,將實參的值復制給形參,使實參變數和形參變數在數值上相等
調用函數時,實參與形參的類型必須一致
~B
~~~6
下面函數調用語句含有實參的個數為()。
func((exp1,exp2),(exp3,exp4,exp5));
1
2
3
5
~B
~~~6
在C語言中,函數調用時()。
實參和形參各占獨立的存儲單元
實參和形參共用存儲單元
由系統自動確定實參和形參是否共用存儲單元
由用戶指定實參和形參是否共用存儲單元
~A
~~~6
C語言規定,程序中各函數之間()。
既允許直接遞歸調用也允許間接遞歸調用
既不允許直接遞歸調用也不允許間接遞歸調用
允許直接遞歸調用不允許間接遞歸調用
不允許直接遞歸調用允許間接遞歸調用
~A
~~~8
下列能正確定義一維數組的選項是()。
int a[5]={0,1,2,3,4,5};
char a[]={0,1,2,3,4,5};
char a={'A','B','C'};
int a[5]="0123";
~B
~~~8
下列敘述中錯誤的是()。
對於double類型數組,不可以直接用數組名對數組進行整體輸入或輸出
數組名代表的是數組所佔存儲區的首地址,其值不可改變
在程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出「下標越界」的出錯信息
可以通過賦初值的方式確定數組元素的個數
~C
~~~8
有下列程序:
#include <string.h>
main()
{ char p[]={'a','b','c'},q[10]={'a','b','c'};
printf("%d%d\n",strlen(p),strlen(q));
}
下列敘述中正確的是()。
在給p和q數組賦初值時,系統會自動添加字元串結束符,故輸出的長度都為3
由於p數組中沒有字元串結束符,長度不能確定,但q數組中字元串長度為3
由於q數組中沒有字元串結束符,長度不能確定,但p數組中字元串長度為3
由於p和q數組中都沒有字元串結束符,故長度都不能確定
~A
~~~8
若要求從鍵盤讀入含有空格字元的字元串,應使用函數()。
getc()
gets()
getchar()
scanf()
~B
~~~8
當用戶要求輸入的字元串中含有空格時,應使用的輸入函數是()。
scanf()
getchar()
gets()
getc()
~C
~~~8
當有定義語句:char s[10];,若要從終端給s輸入5個字元,錯誤的輸入語句是()。
gets(&s[0]);
scanf("%s",s+1);
gets(s);
scanf("%s",s[1]);
~D
~~~8
當以下敘述中錯誤的是()。
gets函數用於從終端讀入字元串
getchar函數用於從磁碟文件讀入字元
fputs函數用於把字元串輸出到文件
fwrite函數用於以二進制形式輸出數據到文件
~B
下列關於字元串的敘述中正確的是()。
C語言中有字元串類型的常量和變數
兩個字元串中的字元個數相同時才能進行字元串大小的比較
可以用關系運算符對字元串的大小進行比較
空串一定比空格打頭的字元串小
~D
~~~8
下面能正確進行字元串賦值的是()。
char s[5]={"ABCDE"};
char s[5]={'A','B','C','D','E'};
char*s; s="ABCDE";
char*s;printf("%s",s);
~C
~~~8
字元串"\\\"ABCDEF\"\\"的長度是()。
15
10
7
8
~B
~~~8
下面各語句行中,能正確進行賦值字元串操作的是()。
char s[5]={'a','b','c','d','e'};
char *s;gets(s);
char *s;*s="ABCDEF";
char s[5];scanf("%s",&s);
~B
~~~8
設已執行預編譯命令#include<string.h>,以下程序段的輸出結果是()。
char s[]="abcdefg";
printf("%d\n",strlen(s));
7
8
9
10
~A
~~~8
若已包括頭文件<string.h>且已有定義char s1[18],s2={"ABCDE"}和int i,現要將字元串"ABCDE"賦給s1,下述語句錯誤的是()。
strcpy(s1,s2);
strcpy(s1,"ABCDE");
s1="ABCDE";
for(i=0;i<6;i++)
s1[i]=s2[i];
~C
###
~~~7
*以下程序的輸出結果是[<4>]。
*#include<stdio.h>
*main()
*{
* int a[5]={2,4,6,8,10},*p;
* p=a;p++;
* printf("%d",*p);
*}
~~~7
*以下程序的輸出結果是[<3 5>]。
*#include<stdio.h>
*void swap(int *a,int *b)
*{
* int *t ;
* t=a;a=b;b=t;
*}
*main()
*{
* int i=3,j=5,*p=&i,*q=&j;
* swap(p,q);printf("%d %d",*p,*q);
*}
~~~7
*下面程序段的運行結果是[<68>]。
*char str[]="ABCD",*p=str;
*printf("%d\n",*(p+3));
###
~~~7
設已有定義:float x;,則下列對指針變數p進行定義且賦初值的語句中正確的是( )。
float *p=1024;
int *p=(float)x;
float p=&x;
float *p=&x;
~D
~~~7
設有定義語句int (*f)(int);,則以下敘述正確的是( )。
f是基類型為int的指針變數
f是指向函數的指針變數,該函數具有一個int類型的形態
f是指向int類型一維數組的指針變數
f是函數名,該函數的返回值是其類型為int類型的地址
~B
~~~7
設有定義:int n1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是( )。
*p=*q
p=q
*p=&n1;
p=*q
~A
~~~7
在16位編譯系統上,若有定義int a[]={10,20,30},*p=&a;,當執行p++;後,下列說法錯誤的是( )。
p向高地址移了一個位元組
p向高地址移了一個存儲單元
p向高地址移了兩個位元組
p與n+1等價
~A
~~~7
若有定義語句:int k[2][3],*pk[3];,則下列語句中正確的是( )。
pk=k;
pk[0]=&k[1][2];
pk=k[0];
pk[1]=k;
~B
~~~7
若有定義:char(*p)[6];則標識符p( )。
是一個指向字元型變數的指針
是一個指針數組名
是一個指針變數,它指向一個含有6個字元型元素的一維數組
定義不合法
~C
~~~7
下面程序段的運行結果是( )。
#include<stdio.h>
void main()
{ char str[]="abc",*p=str;
printf("%d\n",*(p+3));
}
67
0
字元'C'的地址
字元'C'
~B
~~~7
若有以下定義,則對a數組元素的正確引用是( )。
int a[5],*p=a;
*&a[5]
*a+1
*(p+5)
*(a+2)
~D
###
~~~3
C語言中用[<非0>]表示邏輯"真",用[<0>]表示邏輯值"假"。
~~~3
C語言中邏輯運算符[<!>]的優先順序高於算術運算符。
~~~3
當a=1,b=2,c=3時,以下if語句執行後,a、b、c中的值分別為[<3>]、[<2>]、[<2>]。
if(a>c)
b=a;a=c;c=b;
~~~3
以下程序段的輸出結果是[<死循環>]
int k,n,m;
n=10;m=1;k=1;
while(k<=n) m*=2;
printf("%d\n",m);
~~~3
以下程序的輸出結果是[<-1>]
main()
{
int x=2;
while(x--);
printf("%d\n",x);
}
~~~3
以下程序段:
s=1.0;
for(k=1;k<=n;k++)
s=s+1.0/(k*(k+1))
printf("%f\n",s);
請填空,使下面的程序段的功能完全與之等同。
s=0.0
[<d=1.0>]
k=0;
do
{
s=s+d;
[<k++>]
d=1.0/(k*(k+1));
}
while[<k<=n>]
printf("%f\n",s);
~~~3
以下程序功能是:從鍵盤上輸入若干個學生的成績,統計並輸出最高成績和最低成績,當輸入負數時結束輸入。請填空。
main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while[<x>=0>]
{
if(x>amax) amax=x;
if[<x<amin>] amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
~~~5
若有定義int a[3][5];則排列在數組中的第九個元素是[<a[1][3]>]
~~~5
strlen("How are you\n")的值是[<12>]
~~~5
C語言中字元串結束的標志是[<'\0'>]
~~~5
寫出一個名為s的單精度實型一維數組,長度是6,所有元素初值均為0,其數組定義語句是[<float s[6]={0};>]
~~~5
strcmp("how","How")的值是[<32或者>0>]
~~~6
C語言程序執行的開始處是[<main函數>]
~~~6
C程序中的一個函數由兩部分組成,即[<聲明部分>]和[<執行部分>]
~~~6
為了保證被調用函數不返回任何值,其函數定義的類型應為[<void>]
~~~6
下面pi函數的功能是,根據以下公式返回滿足精度ε要求的∏的值。請填空。∏/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+...
double pi(double eps)
{double s=0.0,t=1.0;
int n;
for([<n=1>];t>eps;n++)
{
s+=t;
t=n*t/(2*n+1);
}
return (2.0*[<s>]);
}
~~~6
以下函數用以求x的y次方。請填空。
double fun(double x,int y)
{
int i;double z;
for(i=1;i[<<=y>];i++)
z=[<Z*x>];
return z;
}
~~~6
以下程序的功能是計算s=0!+1!+2!+3!+...+n!。請填空。
long f(int n)
{ int i; long s;
s=[<1L>];
for(i=1;i<=n;i++) s=[<S*i>];
return s;
}
main()
{
long s;int k,n;
scanf("%d",&n);
s=[<0>];
for(k=0;k<=n;k++) s=s+[<f(k)>];
printf("%ld\n",s);
}
###
~~~3
下列運算符中優先順序最高的運算符是()。
!
%
-=
&&
~A
~~~3
下列運算符中優先順序最低的運算符是()。
||
!=
<=
+
~A
~~~3
為表示關系x≥y≥z,應使用的C語言表達式是()。
(x>=y)&&(y>=z)
(x>=y)AND(y>=z)
(x>=y>=z)
(x>=y)&(y>=z)
~A
~~~3
設a、b和c都是int型變數,且a=3,b=4,c=5;則以下的表達式中,值為0的表達式是()。
a&&b
a<=b
a||b+c&&b-c
!(a<b)&&!c||1
~D
~~~5
若有int s[4]={1,2,3,4};則s[s[0]+2*s[2]-s[3]]的值是()。
1
2
3
4
~D
~~~5
對數組的描述正確的是()。
數組一旦定義去大小是固定的,但數組元素的類型可以不同
數組一旦定義去大小是固定的,但數組元素的類型必須相同
數組一旦定義去大小是可變的,但數組元素的類型可以不同
數組一旦定義去大小是可變的,但數組元素的類型必須相同
~B
~~~5
對字元串"Boy"進行完整賦值的操作是()
char s[3]={'B','o','y'}
char s[]="Boy"
char s[3]={"Boy"}
char s[3];s="Boy"
~B
~~~5
在c語言中引用數組元素時,其數組下標的數組類型允許是()
整型常量
整型表達式
整型常量或整型表達式
任何類型的表達式
~C
~~~5
對以下說明語句的正確理解是()
*int a[10]={6,7,8,9,10}
將5個初值依次賦給a[1]至a[5]
將5個初值依次賦給a[0]至a[4]
將5個初值依次賦給a[6]至a[10]
因為數組長度與初值的個數不相同,所以此語句不正確
~B
~~~5
以下程序段給數組所有元素輸入數據,應在下劃線處填入的是()
*main()
*{
*int a[10],i=0;
*while(i<10) scanf("%d",_______);
*:
*:
*}
a+(i++)
&a(i+1)
a+i
&a[++i]
~D
~~~5
以下程序的輸出結果是()
*main()
*{
* int a[]={2,4,6,8},y=1,x,*p;
*p=&a[1];
*for(x=0;x<3;x++) y+=*(p+x);
*printf("%d\n",y);
*}
17
18
19
20
~C
~~~6
下述函數定義形式正確的是()
int f(int x;int y)
int f(int x, y)
int f(int x,int y)
int f(x,y:y)
~C
~~~6
關於函數參數,說法正確的是()
實參與其對應的形參各自佔用獨立的內存單元
實參與其對應的形參共同佔用一個內存單元
只有當實參和形參同名時才佔用同一個內存單元
形參是虛擬的,不佔用內存單元
~A
~~~6
用數組名作為函數的實參時,傳遞給形參的是()
數組的首地址
數組的第一個元素
數組中的全部元素
數組的元素個數
~A
~~~6
復合語句中定義的變數的作用范圍是()
整個源文件
整個函數
整個程序
所定義的復合語句
~D
~~~6
一個函數的返回值由()確定
return語句中的表達式
調用函數的類型
系統默認的類型
被調用函數的類型
~D
~~~6
以下說法正確的是()
C語言程序總是從第一個定義的函數開始執行
在C語言程序設計中,要調用的函數必須在main函數中定義
C語言程序總是從main函數開始執行
C語言程序中的main函數必須放在程序的開始部分
~C
~~~6
以下函數的類型是()
*fff(float x)
*{
*printf("",x*x);
*}
與參數x的類型相同
void類型
int類型
無法確定
~C
~~~6
以下程序的輸出結果是()
*fun(int a,int b)
*{int c;
*c=a+b;
*retutn c;
*}
*main()
*{int x=6,y=7,z=8,r;
*r=func((x--,y++,x+y),z--);
*printf("%d\n",r);
*}
11
20
21
31
~C
~~~10
當說明一個結構體變數時,系統分配給它的內存是()
各成員所需內存總量的總和
結構中第一個成員所需內存量
成員中占內存量最大者所需的容量
結構中最後一個成員所需內存量
~A
~~~10
設有以下說明語句:
*struct stu
*{int a;
* float b;
*}stutype;
*則下面敘述不正確的是()
strut是結構體類型的關鍵字
strut stu是用戶定義的結構體類型
stutype是用戶定義的結構體類型名
a和b都是結構體成員名
~C
~~~10
C語言結構體類型變數在執行期間()
所有成員一直駐留在內存中
只有一個成員駐留在內存中
部分成員駐留在內存中
沒有成員駐留在內存中
~A
~~~11
若想對文本文件只進行讀操作,打開此文件的方式為()
"r"
"W"
"a"
"r+"
~A
~~~11
如果要打開C盤file文件夾下的abc.dat文件,fopen函數中第一個參數應為()
c:file\abc.dat
c:\file\abc.dat
"c:\file\abc.dat"
"c:\\file\\abc.dat"
~D
~~~11
用fopen函數打開文件,操作完畢後用()函數關閉它
fopen
open
fclose
close
~C
~~~11
以下可作為函數fopen中第一個參數的正確格式是()
c:user\test.txt
c:\user\test.txt
"c:\user\test.txt"
"c:\\user\\test.txt"
~D
~~~11
若執行fopen函數時發生錯誤,則函數的返回值是()
地址值
0
1
EOF
~B
~~~11
若要用fopen函數打開一個新的二進制文件,該文件要既能讀也能寫,則文件方式字元串應是()
"ab++"
"wb+"
"rb+"
"ab"
~B
若以"a+"方式打開一個已存在的文件,則以下敘述正確的是()
文件打開時,原有文件內容不被刪除,位置指針移到文件末尾,可作添加和讀操作
文件打開時,原有文件內容不被刪除,位置指針移到文件開頭,可作重寫和讀操作
文件打開時,原有文件內容不被刪除,只可作寫操作
以上各種說法皆不正確
~A
###
~~~9
下列程序的功能時:給r輸入數據後計算半徑為r的圓面積s。程序在編譯時出錯。
main()
{ int r; float s;
scanf("%d",&r);
s=pi*r*r;
printf("s=%f\n",s);
}
出錯的原因是()。
注釋語句書寫位置錯誤
存放圓半徑的變數r不應該定義為整型
輸出語句中格式描述符號非法
計算圓面積的賦值語句中使用了非法變數
~D
~~~9
以下敘述錯誤的是()。
在程序中凡是以「#」開始的語句行都是預處理命令行
預處理命令行的最後不能以分號表示結束
#define MAX是合法的宏定義命令行
C程序對預處理命令行的處理是在程序執行的過程中進行的
~C
~~~9
下列敘述中正確的是()。
預處理命令行必須位於源文件的開頭
在源文件的一行上可以有多條預處理命令
宏名必須用大寫字母表示
宏替換不佔用程序的運行空間
~D
~~~9
若程序中有宏定義行:#define N 100,則下列敘述中正確的是()。
宏定義中定義了標識符N的值為整數100
在編譯程序對C源程序進行預處理時用100替換標識符N
對C源程序進行編譯時用100替換標識符N
在運行時用100替換標識符N
~B
~~~9
程序
#include <stdio.h>
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5;
printf("%d\n",k);
}
的輸出結果是()。
100
50
55
45
~C
~~~9
下列敘述中正確的是()。
預處理命令行必須位於C源程序的起始位置
在C語言中,預處理命令行都以#開頭
每個C程序必須在開頭包含預處理命令行:#include<stdio.h>
C語言的預處理不能實現宏定義和條件編譯的功能
~B
~~~9
C語言的編譯系統對宏命令的處理是()。
在系統對源程序進行編譯前
和其他語句的編譯同時進行
在程序連接時進行
在程序運行時進行
~A
~~~9
以下敘述中不正確的是()。
預處理命令行都必須以「#」號開始,結尾不加分號
在程序中凡是以「#」開始的語句行都是預處理命令行
C程序在執行過程中對預處理命令進行處理
預處理命令可以放在程序的任何位置
~C
~~~9
下面敘述中正確的是()。
C語言中預處理是指完成宏替換和文件包含指定的文件的調用
預處理命令只能位於C源程序文件的首部
預處理命令可以放在程序中的任何位置
預處理命令結尾需要加分號
~C
~~~9
以下有關宏替換的敘述不正確的是()。
使用宏定義可以嵌套
宏定義僅僅是符號替換
雙引號中出現的宏名不替換
宏名必須用大寫字母表示
~D
㈦ C語言答案 求大神 解答
題號:1
以下正確的說法是( )
選項:
a、用戶若需要調用標准庫函數,調用前必須重新定義
b、用戶可以重新定義標准庫函數,若如此,該函數將失去原有意義
c、用戶系統根本不允許用戶重新定義標准庫函數
d、用戶若需要調用庫函數,調用前不必使用預編譯命令將該函數所在文件包括到用戶源文件中,系統自動尋找該文件
本題答案為d,無論是標准庫函數還是什麼函數,都是函數,都允許用戶重新定義和使用,使用的時候只需要用#include 包括進來就可以了,也就是預編譯命令。其中#include就是預編譯命令。
題號:2
以下正確的函數定義形式是( )
選項:
a、double fun(int x,int y)
b、double fun(int x
c、int y)
d、double fun(int x,int y)
e、doubel fun(int x
f、int y)
函數的定義規則是這樣的: (函數參數用逗號隔開){函數體}
函數聲明的規則是這樣的: (函數參數用逗號隔開);
綜上所述,該題沒有正確答案,唯一接近正確答案的為ad。
題號:3
以下不正確的說法為( )
選項:
a、在不同函數中可以使用相同名字的變數
b、形式參數是局部變數
c、在函數內定義的變數只在本函數范圍內有效
d、在函數內的復合語句中定義的變數在本函數范圍內有效
C中有一個關鍵字為extern,專門把局部變數轉為全局變數,所以C是錯誤的。
本題答案為C
題號:4
建立函數的目的之一,以下正確的說法是( )
選項:
a、提高程序的執行效率
b、提高程序的可讀性
c、減少程序的篇幅
d、減少程序文件所佔內存
本題答案為a,
函數的增加,
b會使得程序的可讀性增加,這個可以理解,模塊化了,當然可讀性增加了
c,多次調用一個函數即可,不用重復的寫代碼,這個也可以理解
d,重復的代碼既然少了,整個程序的大小自然也小了,當然減少了程序文件所佔的內存
至於a的效率提高了,這個不對,因為函數多了,會頻繁的進行壓棧出棧的操作,加大cpu的工作負荷,整個程序的效率變低了。
題號:5
C語言規定,函數返回值的類型是由( )所決定。
選項:
a、return語句中的表達式類型
b、調用該函數時的主調函數類型
c、調用該函數是系統臨時指定
d、在定義該函數時所指定的函數類型
這個可以參考第二題,函數的定義規則,當然是由定義的時候確定的了。
本題答案為d。
題號:6
凡是函數中未指定存儲類別的局部變數,其隱含的存儲類別為( )
選項:
a、auto
b、static
c、extern
d、register
這個題目容易,沒有指定當然是自動指定的了。
本題答案為a。
另外一個小知識,我們平常看到的int a,b,c;實際上省略了auto,全部應該是 auto int a,b,c;
題號:7
以下程序的運行結果是( )void sub (int x,int y,int *z){*z=y-x;}main(){int a,b,c;sub
(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%4d,%4d,%4d",a,b,c);}
選項:
a、5, 2, 3
b、 -5, -12, -7
c、 -5, -12, -17
d、 5, -2, -7
void sub (int x,int y,int *z)
{
*z=y-x;
}
main()
{
int a,b,c;
sub(10,5,&a); 執行完這句a的值為-5;
sub(7,a,&b);執行完這句b的值為-12;
sub(a,b,&c);執行完這句c的值為-7
printf("%4d,%4d,%4d",a,b,c);
}
答案為b;
題號:8
若用數組名作為函數調用的實參,傳遞給形參的是( )
選項:
a、數組的首地址
b、數組第一個元素的值
c、數組中全部元素的值
d、數組元素的個數
本題答案為a
數組名為數組的首地址,也是數組第一個元素的值的地址。數組名是一個地址。
題號:9
若使用一位數組名作為函數實參,則以下正確的說法是( )
選項:
a、必須在主調函數中說明此數組的大小
b、實參數組類型與形參數組類型可以不匹配
c、在被調函數中,不需要考慮形參數組的大小
d、實參數組名與形參數組名必須一致
本題答案為a,
必須在主調函數中定義該數組的大小。也就是該數組大小應該被提前設定好。
int a[10]可以作為參數,int a[x]不可以作為參數。
題號:10
如果在一個復合語句中定義了一個變數,則有關該變數正確的說法是( )
選項:
a、只在該復合語句中有效
b、只在該函數中有效
c、在本程序范圍內均有效
d、為非法變數
答案為
㈧ 求學過c語言的大佬解答下(6)的問題
首先,C語言耐差灶的define預處理語句只會直接替換,
然後表達式會按先乘昌扮除後加減的優先順序進行運算,
所以最後得出的結果加小括弧和不加小括弧是不一樣慶渣的.(見圖)
㈨ 一般地,調用標准字元或格式輸入輸出庫函數時,文件開頭應有以下預編譯命令:___
編譯,編譯程序讀取源程序(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的匯編代碼,再由匯編程序轉換為機器語言,並且按照操作系統對可執行文件格式的要求鏈接生成可執行程序。