一道簡單的c語言題,一道簡單的C語言題

2022-06-09 06:21:24 字數 4329 閱讀 1831

1樓:匿名使用者

這個程式的目的是將你輸入的字串中的a,a互換大小寫.

但程式寫錯了.首先scanf遇到空格就停止了,所以s只接收到了ahama.其次,還是同樣的問題,scanf是遇到空格停止的,所以s中並沒有'\n',因此while迴圈並不是如你想象到的ahama就結束了,而是會繼續下去,導致s[i]訪問無效資料.

再次,s[i]-32是無效語句,應該是s[i]-=32;

正確**如下

#include

main()

puts(s);}

c='a'就是設一個字元變數,用來和s中的元素比較,看s[i]是否為'a'或'a'

scanf是遇到空格就停止的,要想整行輸入,用gets,但gets會忽略回車,所以迴圈要以!='\0'來判斷.

puts就是printf("%s\n",s);

2樓:

把字串中a的大小寫轉換.

答案應該是對的.

不過程式有問題.

3樓:江湖三腳貓

#unclude

main()

puts(s);}

程式問題不大,你的問題還是找本c語言基礎方便的書好好看看吧。

輸出是 ahama[空格]aha 嗎?答案這麼給的 我覺得不對 應該時什麼?

答:答案是對的。

還有c='a' 是什麼意思 如果時賦值的話為什麼不直接寫成c=a ?

答:字元是用ascii碼錶示的,c是定義的char型變數,'a'表示是字元a的ascii碼,即97,該式等價於c=97。如果你寫成c=a的話,編譯器會認為a也是一個變數,但是沒定義,會報錯變數a未定義。

ps:不加符號表示變數,用單引號的表示該字元的ascii碼,用雙引號的表示字串(其實就和一串單引號的字元連在一起差不多)。

scanf("%s",s) 這個時對陣列賦值嗎?可以這麼賦值嗎?都是這樣對陣列賦值嗎?

答:這個事從標準輸入(就是你的鍵盤了)輸入一個字串。

puts(s) 是輸出陣列嗎?為什麼我沒見過啊,都是這樣嗎?

答:輸出字串s直到'\0'為止。

4樓:匿名使用者

你的**錯誤百出,仔細對一下我給你調好的.

#include//這裡你\抄錯了吧

main()

else if(s[i]==c-32)

i++;

}puts(s);

}這種函式puts就是輸出字串

你沒見過是因為你沒用過

從這個**就可以看出,你需要多練習.多動手

5樓:

答案是對的

在表示字元的時候要用單引號

c='a'此時a就是字元常量字母a

如果你用

c=a的話,那麼此時

a代表的是一個變數。

scnaf("%s",s);是對陣列賦值。這樣可以賦值。因為%s表示字串。

當然也可以用gets(s)和你下面的puts()c對應puts和gets是對應的。不過要加一個標頭檔案#include相當於printf("%s",s);

#include

#include//這裡你\抄錯了吧

main()

else if(s[i]==c-32)

i++;

}puts(s);

}首先scanf遇到空格就停止了。所以要輸入空格只能用gets(s)

6樓:匿名使用者

scanf("%s", s)是對字串賦值,就是輸入字串。

7樓:匿名使用者

題目是沒有問題的,你還是好好看看字串操作的基礎吧

一道簡單的c語言題

8樓:匿名使用者

其實這就是個迴圈連結串列,順便理解自增操作就行了。

可知a[2].i 的值為3,故選d。

9樓:匿名使用者

答案為d

a[3]陣列之中元素值(每一個陣列元素都是結構體)a[0] =

a[1] =

a[2] =

ptr =&a[1];

選項a ptr->i++ = 1+1 =2;

選項bptr++->i =(ptr->i)++此時ptr->i =2,由於是字尾,所以在此式子之後才變化b、d就是++i,i++區別了。

選項c為

*ptr->i =*(ptr->i) //錯誤選項d++ptr->i = ++(ptr->i)

一道c語言的簡單題目

10樓:匿名使用者

0,1,2就對了啊。列舉型是一個集合,集合中的元素(列舉成員)是一些命名的整型常量。你沒指定就是從0開始。

11樓:

顏色 名稱 應該是用字串 吧?

在定義列舉前,先定義 red 為 字串變數,並賦值「red」,printf 裡注意格式,,再試試

12樓:匿名使用者

c語言預設將列舉型別數字化,第一個列舉值為0,以此類推,所以用%d輸出肯定是0,1,2

一道簡單的c語言題目。。

13樓:it孤鶩

scanf("%d,%d,%d\n",&a,&b,&c);

改為scanf("%d,%d,%d",&a,&b,&c);

'\n'也是一個字元 那你要輸入兩次回車才有結果

14樓:雲淡風輕in蘇州

scanf("%d,%d,%d\n",&a,&b,&c);

都是float型,用%f,另外\n去掉

改成scanf("%f,%f,%f",&a,&b,&c);

15樓:匿名使用者

如果需要直接輸入2 3 4後回車需改為「scanf("%d%d%d\n",&a,&b,&c);」

原因:scanf是格式輸入函式,呼叫時,需要傳兩個實參,第一個實參是一個格式控制字串,如果裡面包含普通字元,那麼在輸入資料時,需要輸入其中的普通字元。否則會報錯,或者是你輸入進去的資料沒有正確地賦值給相關變數。

希望能幫到您!

16樓:2b丶xiao年輕

不要在scanf函式裡面加\n scanf是標準格式輸入函式 你定了什麼格式就按照什麼格式輸入 你的格式是%d,%d,%d\n 那你就應該輸入 2,3,4\n

c語言的一道簡單題目

17樓:擁抱

選a。%20.5s的意思是輸出20個字元,最右邊是5個,而左邊如果不夠的話就用空格補充。

簡單c語言題目一道 10

18樓:

輸出結果跟輸入有關。o是你執行程式後在控制檯輸入的。case是列舉o情況,如果輸入的o是+則執行r=x+y;break ;以此類推。輸入三空格無回車沒啥意義。

19樓:

#include "stdio.h"

void main()

printf("%f",r);

}先輸入第一個數,按enter鍵後在輸入第二個數和運算子。結果是根據你輸入的運算子對兩個數進行運算。5-6=-1這樣咯

20樓:匿名使用者

就是輸入時候的問題,兩個float數在一起沒有用符號或者空格隔開輸入到電腦就無法區分,你改成或者把空格變為逗號就ok了,譬如說你輸入5+3,那麼你就輸入5 3 +,不改的時候你輸入的53+,這電腦不認得,你如果改成 scanf("%f%c%f",&x,&o,&y);輸入5+3,也可以

一道簡單的c語言題目,求**

21樓:聽不清啊

#include

int main()

return 0;}

22樓:4747哦

#include

int main()

return 0;}

c語言一道簡單題

23樓:

c語言沒有規定簡單變數不得有指標吧?這很正常,你覺得**有問題?有了char c,*p=&c; ,c='3';和*p='3';不就是一回事了嘛。

指標這東西,就是程式設計附加變數,你可以用也可以不用;對於複雜型別,用指標可以大大簡化程式設計,但對於一些簡單型別反而會顯得複雜了——就像這裡,但並沒有什麼不妥之處。

一道簡單的c語言,一道c語言程式設計?

m是計算執行的次數,二重迴圈的迴圈次數就是外迴圈次數 內迴圈次數。外迴圈 1,5,9,13 內迴圈 3,7,11,15,19 4 5 20次,所以m 20 功能是輸出兩層巢狀迴圈執行的次數。用外迴圈執行次數 內迴圈執行次數。外迴圈變數的值變化 共4次。內迴圈變數的值變化 共5次。所以m的值為20 4...

求解一道c 程式設計題,求解一道簡單的C語言程式設計題

include using namespace std int search int p1,int n,int p2 void print int p,int n int main int arr1 10 int arr2 int count search arr1,10,arr2 print ar...

c語言 acm一道 很簡單的,c語言 ACM一道 很簡單的

樓上的回答不太好,有點篡改樓主的意思!我的回答也是樓主的迴圈條件 有問題,不過改法是這樣的 while scanf d d a,b 2 在兩個 d之間刪除那個多餘的空格。scanf在掃描的時候,字串裡面多的空格它也是需要進行匹配的。所以樓主只要連續碼兩個 d d 就可以了。實際從鍵盤向程式輸入時,由...