牛客網C語言程式設計初學者入門訓練130題詳解
阿新 • • 發佈:2021-01-03
2021/1/2
1、實踐出真知
題目描述
於老師經常告訴我們“學習程式設計最好的辦法就是上機實踐,因為你要對計算機下指令,想讓計算機幫你幹活,就得多和計算機‘交流’,實踐才能出真知。”
輸入描述:
無
輸出描述:
Practice makes perfect!
解答
#include <stdio.h>
int main()
{
printf("Practice makes perfect!");
return 0;
}
2、我是大V
題目描述
每個人都想成為大V ,但要一點一點積累才行,先從小v做起。要求輸出由小寫字母v組成的大V。
輸入描述:
無
輸出描述
v v v v v
備註
換行使用轉義字元‘\n’
解答
#include <stdio.h>
int main()
{
printf("v v\n");
printf(" v v\n");
printf(" v\n");
return 0;
}
3、有容乃大
題目描述
確定不同整型資料型別在記憶體中佔多大(位元組),輸出不同整型資料型別在記憶體中佔多大(位元組)。
輸入描述:
無
輸出描述:
不同整型資料型別在記憶體中佔多大(位元組),具體格式詳見輸出樣例,輸出樣例中的?為不同整型資料型別在記憶體中佔的位元組數。輸出樣例如下: The size of short is ? bytes. The size of int is ? bytes. The size of long is ? bytes. The size of long long is ? bytes.
解答
#include <stdio.h>
int main()
{
printf("The size of short is %lld bytes.\n", sizeof(short));
printf("The size of int is %lld bytes.\n", sizeof(int));
printf("The size of long is %lld bytes.\n", sizeof(long));
printf("The size of long long is %lld bytes.\n" , sizeof(long long));
return 0;
}
C6328:大小不匹配:已將"unsigned _int64"作為_Param_(2)傳遞,但需要使用"int"來呼叫“printf".
原始碼
#include <stdio.h>
int main()
{
printf("The size of short is %d bytes.\n", sizeof(short));
printf("The size of int is %d bytes.\n", sizeof(int));
printf("The size of long is %d bytes.\n", sizeof(long));
printf("The size of long long is %d bytes.\n", sizeof(long long));
return 0;
}
解析
- 雖然提示上面的錯誤,但能輸出結果
- 提示已經很明確,說你將一個64位 (8bytes)的無符號整型作為printf的第二個引數傳入;
- 查資料佔位符%d在格式化輸入輸出中代表int(4bytes),%ld代表long int(>=4bytes), %lld代表long long int (8bytes);
- 問題出在sizeof上,它返回的是一個64位 (8bytes)的無符號整型,所以佔位符應該是%lld
- 補充:sizeof不是函式,而是單目運算子,C/C++語言編譯器在預編譯階段的時候就已經處理完了sizeof的問題,也就是說sizeof類似於巨集定義,
sizeof 一般形式為:sizeof(object),也可以sizeof var_char,不過大部分programer習慣用sizeof(),其運算子的含義是:求出物件在計算機記憶體中所佔用的位元組數。
4、小飛機
題目描述
KiKi學會了printf在螢幕輸出資訊,他想輸出一架小飛機。請幫他編寫程式輸出這架小飛機。
輸入描述:
無
輸出描述:
解答
#include <stdio.h>
int main()
{
printf(" **\n");
printf(" **\n");
printf("************\n");
printf("************\n");
printf(" * *\n");
printf(" * *");
return 0;
}
5、反向輸出四位數
題目描述
將一個四位數,反向輸出。
輸入描述:
一行,輸入一個整數n(1000 <= n <= 9999)。
輸出描述:
針對每組輸入,反向輸出對應四位數。
輸入
1234
輸出
4321
解答
//按照int型別輸出
#include <stdio.h>
int main()
{
int n = 0;
int result = 0;
//輸入
scanf("%d",&n);
//輸出
//個位變千位
result += n % 10 * 1000;
//將小數點左移一位
n /= 10;
//十位變百位
result += n % 10 * 100;
//將小數點左移一位
n /= 10;
//百位變十位
result += n % 10 * 10;
n /= 10;
//千位變一位
result += n;
printf("%04d",result);
return 0;
}
//按照str型別輸出
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
//當整除後結果為0表示已運算完最高位,跳出迴圈
while(n != 0){
//依次列印最低位
printf("%d",n % 10);
//抹掉最後一位
n /= 10;
}
return 0;
}
輸出8進位制,10進位制,16進位制輸出以及高位補0
int PrintVal = 9;
/*按整型輸出,預設右對齊*/
printf("%d\n",PrintVal);
/*按整型輸出,補齊4位的寬度,補齊位為空格,預設右對齊*/
printf("%4d\n",PrintVal);
/*按整形輸出,補齊4位的寬度,補齊位為0,預設右對齊*/
printf("%04d\n",PrintVal);
/*按16進位制輸出,預設右對齊*/
printf("%x\n",PrintVal);
/*按16進位制輸出,補齊4位的寬度,補齊位為空格,預設右對齊*/
printf("%4x\n",PrintVal);
/*按照16進位制輸出,補齊4位的寬度,補齊位為0,預設右對齊*/
printf("%04x\n",PrintVal);
/*按8進位制輸出,預設右對齊*/
printf("%o\n",PrintVal);
/*按8進位制輸出,補齊4位的寬度,補齊位為空格,預設右對齊*/
printf("%4o\n",PrintVal);
/*按照8進位制輸出,補齊4位的寬度,補齊位為0,預設右對齊*/
printf("%04o\n",PrintVal);
6、大小寫轉換
題目描述
實現字母的大小寫轉換。多組輸入輸出。
輸入描述:
多組輸入,每一行輸入大寫字母。
輸出描述:
針對每組輸入輸出對應的小寫字母。
輸入
A
B
輸出
a
b
解答
#include <stdio.h>
int main()
{
int ch = 0;
while((ch = getchar()) != EOF){
printf("%c\n",ch+32);
getchar();//輸入一個字串回車,鍵盤緩衝區存在兩個字元,一個是輸入的,另一個是回車的\n,當下次迴圈讀取的時候,會讀取\n所以,要吸收掉才行
}
return 0;
}