1. c語言選擇題
C正確,選C。因為按C的規則,基本數據類型由低到高是char<int<long<float<double,再按表達式中有不同類型時低類型自動向高類型轉換的規則,i*(j-k)中k的類型最高,最後就是k的類型。
2. 請幫我做這幾道C語言選擇題
是9個,'A' 'T' 'S' '\n' '0' '1' '2' '1' '\'
主要是理解s=*p1++;*p1=*p2--;*,s=*p1++;相當於s先賦值為*p1,然後p1執行加1操作,*p1=*p2--;*相當於*p1先賦值為*p2,然後p2執行減1操作
循環體共執行4次,第一次指針p指向s,所以輸出ABCD,第二次指針p指向'B'的地址,所以輸出BCD,第三次指向'C』的地址,輸出CD,第四次指向'D』,輸出D
num不是函數strle中定義的局部變數嗎?while(*(a+num)!='0') num++;執行後,num是a的字元串長度,也就是6,while(b[n]) { *(a+num)=b[n];num++;n++;}中每次循環num執行加1,共4次循環,所以一共加4,最終結果是10.
isalpha是函數,用來判斷傳入的參數是否是英文字母,for(i=0,j=0;str[i];i++) if(isalpha(str[i]))str[j++]=str[i];是str字元串中的每個字元判斷如果其是英文字母的話就保存,如果不是的話不保存,繼續下一個循環判斷下一個字元,所以最終的結果是把傳入字元串中的非英文字母去掉,只保留英文字母。
3. 關於c語言編程GA選數的問題 從1-8中任選幾個數字,使它們相加等於20,每次循環中一個數字用一
我不明白你為什麼一定要隨機選定數,如果是隨機選定數你怎麼判斷結束條件呢?
下面我是不隨機選定數的,你看看是否有用
思路是:
定義一個數組,用來存放已入選的數。
在主要實現函數search中,sum表示已入選的數的和,index表示數組中下一個數的存放位置的下標,big表示從不大於big的數中選數,從最大的可選數top開始。
如果big 和sum的和比目標小,就把big寫入數組,進入下一輪搜索,
新搜索參數index+1,big-1。
如果想等,則把big寫入數組,列印數組中直到index下標的數,也就是相加等於目標的數
如果大於,就什麼都不做了。
最後search調用自己,在big- 1 的可選數中搜索一遍。因為是遞歸調用的,所以big-2,big-3...
直到base都會調用一遍。
結束條件為 搜索的范圍小於可選的最小數,即沒有數可選時。
#include<stdio.h>
#define base 1
#define top 8
#define TARGET 20
int arr[8-1+2]; //to store selected numbers
void show(int index){
int i;
for(i = 0; i <= index; ++i)
printf("%d\t", arr[i]);
printf("\n");
}
void search(int sum, int index, int big){ //big is the biggest number can be chose from to continue adding up
//if big < base, sum cannot increase, exit
if(big < base)
return;
if(sum + big < TARGET){
arr[index] = big;
search(sum + big, index + 1, big - 1);
}else if (sum + big == TARGET){
arr[index] = big;
show(index);
}
search(sum, index, big - 1);
}
int main(){
search(0, 0, top);
return 0;
}
4. C語言 幾道選擇題
註:水平不高……第一想幫幫你,第二我也在學習C++,所以想試試,如有錯誤,請您見諒
【1】選(B)
因為A,B,C都是整型,在商的過程中,小數點後面都沒有了,所以得出結果的1.4,最後因為C的整型類型的緣故,導致後面的小數點0.4沒有了,結果只是1
【2】選(B)
continue的作用是,符合IF判斷條件則跳出循環,進行下一循環,則由於i=0,符合判斷條件if(i<1),然後就跳出循環,再重復while循環,然後再判斷,又符合,然後再再執行循環,無限下去……因此是死循環
【3】選(A)
由於switch(i)的循環體內,並沒有break,導致每一個case,如果符合條件,就會一條條的執行下去
若i=1,依次執行case1,case2,default,由於case1沒有貢獻,case2使得a=8,default使得a=13
若i=2,依次執行case2,default,由case2使得a=16,default使得a=21
若i=3,依次執行case3,case1,case2,default,這樣下去,到i=4的循環執行完畢後,再判斷一下i的大小
最後就跳出了,答案是a=31
【4】選(C)
這道題,直接放到編譯器……就可以了,但是強調的是……不同的編譯器選擇的自增自減的語句原則不同
以VISUALC++為例,一般符合學習語法,但是TUBOR和CFREE等,對自增自減的語法有不同的規定
舉個例子,n=(++a)+(++a)+(++a);,假如a=3,那麼有的編譯器會認為n等於15,但有的認為是12
因為有的編譯器認為每次都要自增,但是有的編譯器認為自增一次後,等到等式運算結束,碰到分號,結束語句後再進行處理自增(雖然a=6,但是不同編譯器處理n值結果不一樣)。
本題如果按照visualC++來的話,應該是1313。因為n=(++x)+(++x);第一個x這時先自增成6,再參與加法運算,然後第二個x同理先自增,再運算,變成8,於是就是n=6+8;而m=(x--)+(x--);由n運算完畢的x是等於8的,參與m的減法運算之後,再自減,同理m=8+6;最後x還是等於5。
【5】選(C)
因為if((++i>0)||(++j>0))a++;這一句,編譯器是這樣執行的,當或語句出現,只要第一個條件滿足,立刻忽略後面的語句,即編譯器編譯啊編譯啊,突然編譯到++i>0,這句時,發現時TRUE,是正確的,由或概念,可知,if語句判斷通過,於是編譯器直接忽略後面的++j,於是j的值其實根本沒有改變。
【6】選(D)
字元串的放置,人是看不見的,在機器內部,默認的放置時,比如說chara[]=」abc」;那麼系統會拿出4個「盒子」,打個比喻,說成盒子,其實盒子就內存。abc分別裝入三個盒子,最後一個盒子裝的是「 」,這個「 」符號表示的是結束的意思,就是說,系統一碰到這個符號,默認認為輸入的字元立刻結束。所以說,你定義的chara[]=」abc abc」;,系統編譯時,一碰到 立刻停止往數組內輸入數據,實際上字元串輸入數組只有abc。另外: 符號,不會輸出在屏幕上的。
【7】選(C)
關鍵在於printf(「%d」,c>b>a);,C=3,B=2,那麼C>B,是真,真就是1,系統默認的,就好比一個if判斷語句,什麼也不寫。if(){/*這裡面是程序*/},那麼判斷的時候,怎麼判斷呢?如果數據進入時0,那麼就為假,如果數據進入的是1或者非零,就是真,道理就在這里。而且符號大於號,是判斷符號,不是賦值符號。因此C>B的事實是正確的,因此C>B結果是1,然後按照比較符號的調用左規則,繼續和A比較,而1是等於A的,而不是大於A,那麼此事件是假,為假事件,那麼假事件結果就是0
【8】選(D)
p=&a,指的是*P這個指針現在等於a,注意是「星P」等於a,而P不是等於a的,P是a的地址,*P才是等於a,其實星P就是和a沒有區別,a就是星P,星P就是a。然後a=*p+b;就是a=a+b;所以a=11了
【9】選(C)
所謂預處理是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理是C語言的一個重要功能,它由預處理程序負責完成。當對一個源文件進行編譯時,系統將自動引用預處理程序對源程序中的預處理部分作處理,處理完畢自動進入對源程序的編譯。在編譯預處理時,對程序中所有出現的「宏名」,都用宏定義中的字元串去代換,這稱為「宏代換」或「宏展開」。宏定義是由源程序中的宏定義命令完成的。宏代換是由預處理程序自動完成的。至於正確選項:C語言本身沒有輸入輸出語句,其功能須通過調用相關函數來實現。語言本身沒有輸入/輸出語句其功能須通過調用相關函數來實現。
【10】選(B)
這個……A項少了分號,C項既然是指針,那麼取的應該是地址,最後一項,顯然……字元串,如果不是GETS()函數,那麼就應該用循環,才能實現SCANF的輸入
【11】選(B)
顯然example是結構體內某個具體的對象,而x,y,z都是關於example屬性修飾之類的成員,比如說example可以代表一本例子樣本的書,那麼x,y,z可以代表修飾書的作者,出版時間,出版社,都是書的成員屬性。而至於一個結構體類型有其專有的標志,它由兩個單片語成,第一個關鍵字struct,第二個單詞按標識符命名規則指定。
【12】選(A)
由於判斷的條件不是K==1,注意是兩個等號,由於只是一個等號,系統認為,條件是K=1,注意是把1賦值給K,然後就成了,然後進入循環。切記=是賦值,==是判斷。以後所有的……個跟第七題,很像了,凡是非零的數據進入判斷,都是真事件
汗……怎麼直接15題
【15】選(D)
顯然……你之前的題目裡面就有A項的賦值方法,然後B項可以理解為將n3的值賦給n2,然後再把覆蓋的n2賦給n1,C項理解為判斷i與j是否相等,相等則事件真,k就等於1,若為假,k就等於零。D項錯在等號的賦值符號是具有右結合性的,應從右至左處理符號。顯然最後一項有錯誤
以上全為個人所寫,絕無雷同,請勿傳播……如有錯誤,請指出,共同進步
5. c語言選數求和
由於你的求和個數不一樣,很難計算,不過可以通過修改代碼來實現,以下提供求和個數為3的代碼
# include <stdio.h>
int main ()
{
int n, i, j, k, sum = 0;
FILE *pout;
pout = fopen("ok.txt", "wb");
printf("please enter n: ");
scanf("%d", &n);
int* arg = new int[n];
for (i = 0; i != n; ++i)
{
printf("please enter the %d number: ", i + 1);
scanf("%d", &arg[i]);
}
for (i = 0; i != n - 2; ++i)
{
for (j = i + 1; j != n - 1; ++j)
{
for (k = j + 1; k != n; ++k) //求和個數為3就用3個for循環,4個就再加一個,下面的修改下就行了
{
fprintf(pout, "%d + %d + %d = %d", arg[i], arg[j], arg[k], arg[i] + arg[j] + arg[k]);
fprintf(pout, "%c%c", 0x0d, 0x0a);
}
}
}
for (i = 0; i != n; ++i)
{
sum += arg[i];
}
fprintf(pout, "sum is %d", sum);
delete []arg;
fclose(pout);
return 0;
}
6. C語言選擇題(最好解釋)
len和str分別是3和9
c中字元串的長度len計算的結束標志就是遇到\0,所以就是3
字元串大小,就是整個字元串的大小了,\0也是一個字元,所以就是9
7. C語言 數組選擇題
A
D (c2 - 0)是字元'2'的ASCII值,所以不是數字2.
a[1]數組a的第二個數
'd' - c1 -> 'd' - 'b' 等於2
a['3' - c2] -> a[ '3' - '2'] -> a[1]
8. C語言數據選擇問題
printf()這個函數中 可以定義輸出格式 比如 printf("%0f"); 可以想輸出多少 輸出多少 帶不帶小數點.
(1). 可以在"%"和字母之間插進數字表示最大場寬。
例如: %3d 表示輸出3位整型數, 不夠3位右對齊。
%9.2f 表示輸出場寬為9的浮點數, 其中小數位為2, 整數位為6,
小數點佔一位, 不夠9位右對齊。
%8s 表示輸出8個字元的字元串, 不夠8個字元右對齊。
如果字元串的長度、或整型數位數超過說明的場寬, 將按其實際長度輸出。
但對浮點數, 若整數部分位數超過了說明的整數位寬度, 將按實際整數位輸出;
若小數部分位數超過了說明的小數位寬度, 則按說明的寬度以四捨五入輸出。
另外, 若想在輸出值前加一些0, 就應在場寬項前加個0。
例如: %04d 表示在輸出一個小於4位的數值時, 將在前面補0使其總寬度
為4位。
如果用浮點數表示字元或整型量的輸出格式, 小數點後的數字代表最大寬度,
小數點前的數字代表最小寬度。
例如: %6.9s 表示顯示一個長度不小於6且不大於9的字元串。若大於9, 則
第9個字元以後的內容將被刪除。
(2). 可以在"%"和字母之間加小寫字母l, 表示輸出的是長型數。
例如: %ld 表示輸出long整數
%lf 表示輸出double浮點數
(3). 可以控制輸出左對齊或右對齊, 即在"%"和字母之間加入一個"-" 號可
說明輸出為左對齊, 否則為右對齊。
例如: %-7d 表示輸出7位整數左對齊
%-10s 表示輸出10個字元左對齊
2. 一些特殊規定字元
9. 選數 c語言
雙重雙循環加一個素性檢驗子函數即可……
10. C語言隨機數題目
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#defineN9
ints[10];
voidcreate()
{
inti=0,m=0;
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
m=rand()%90+10;
s[i]=m;
}
printf(" 以下是產生的數字 ");
for(i=0;i<9;i++)
printf("%d->",s[i]);
printf("%d ",s[9]);
}
voidsort()
{
inttmp;
inti=0,j=0;
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
{
if(s[i]>s[j])
{
tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
for(i=0;i<9;i++)
printf("%d->",s[i]);
printf("%d ",s[9]);
}
voidfind()
{
intk=0,mid,left=0,right=N;
sort();
printf("請輸入你要查找的數字(10<k<100) ");
scanf("%d",&k);
mid=left+right;
while(left<=right&&s[mid]!=k)
{
if(s[mid]<k)
left=mid+1;
elseif(s[mid]>k)
right=mid-1;
mid=(left+right)/2;
}
if(s[mid]==k)
printf("數組中有%d這個數字,位置為第%d個",k,++mid);
elseprintf("數組中沒有%d這個數字 ",k);
}
main()
{
inti=10;
while(i)
{
printf(" -------------------------------- ");
printf(" 1隨機10個數字 ");
printf(" 2查找 ");
printf(" 3排序 ");
printf(" 0退出 ");
printf(" 請選擇 ");
scanf("%d",&i);
switch(i)
{
case1:create();break;
case2:find();break;
case3:printf(" 以下是排序後的結果 ");sort();break;
case0:printf("退出 ");break;
default:printf("error!");
}
printf(" 按任意鍵繼續...");
getch();system("cls");
}
}