C語言程式設計第2講
- BC6-小飛機
- BC8-十六進制轉十進制
- BC9-printf函數的傳回值
- BC11-學生基本資訊輸入輸出
- BC35-判斷字母
- BC12-字元金字塔
- BC13-ASCII碼
- BC14-出生日期輸入輸出
- BC29-2的n次方計算
- BC15-按照格式輸入并交換輸出
- BC16-字元轉ASCII碼
- BC17-計算表達式的值
- BC18 計算帶餘除法
BC6-小飛機
描述:
KiKi學會了printf在螢幕輸出資訊,他想輸出一架小飛機。請幫他編寫程式輸出這架小飛機。
輸入描述:
無
輸出描述:
**
**
************
************
* *
* *
#include<stdio.h>
int main()
{
printf(" ** \n");
printf(" ** \n");
printf("************\n");
printf("************\n");
printf(" * * \n");
printf(" * * \n");
return 0;
}
BC8-十六進制轉十進制
描述
BoBo寫了一個十六進制整數ABCDEF,他問KiKi對應的十進制整數是多少。
輸入描述:
無
輸出描述:
十六進制整數ABCDEF對應的十進制整數,所占域寬為15。
備注:
printf可以使用使用格式控制串“%md”輸出域寬為m的十進制整數。
#include<stdio.h>
int main()
{
printf("%15d\n",0XABCDEF);
return 0;
}
BC9-printf函數的傳回值
描述
KiKi寫了一個輸出“Hello world!”的程式,BoBo老師告訴他printf函數有傳回值,你能幫他寫個程式輸出printf(“Hello world!”)的傳回值嗎?
輸入描述:
無
輸出描述:
包括兩行:
第一行為“Hello world!”
第二行為printf(“Hello world!”)調用後的傳回值。
#include<stdio.h>
int main()
{
//方法1
int returnvalue=printf("Hello world!\n");//printf的傳回值是列印的字元數
printf("%d",returnvalue-1);//注意字元包括了\n!
//方法2
int returnvalue=printf("Hello world!");//printf的傳回值是列印的字元數
printf("\n%d",returnvalue);//注意字元包括了\n!
//方法3
printf("\n%d",printf("Hello world!"));
printf("%d",printf("%d",printf("%d",43)));//4321
return 0;
}
BC11-學生基本資訊輸入輸出
描述
依次輸入一個學生的學号,以及3科(C語言,數學,英語)成績,在螢幕上輸出該學生的學号,3科成績。
輸入描述:
學号以及3科成績,學号和成績之間用英文分号隔開,成績之間用英文逗号隔開。
輸出描述:
學号,3科成績,輸出格式詳見輸出樣例。
示例1
輸入:
17140216;80.845,90.55,100.00
輸出:
The each subject score of No. 17140216 is 80.85, 90.55, 100.00.
#include<stdio.h>
int main()
{
int id=0;
float s1,s2,s3;//保持精度
scanf("%d;%f,%f,%f",&id,&s1,&s2,&s3);//float-%f double-%lf
printf("The each subject score of No. %d is %.2f, %.2f, %.2f.",id,s1,s2,s3);//.n 輸出小數n位
return 0;
}
BC35-判斷字母
描述
從鍵盤任意輸入一個字元,程式設計判斷是否是字母(包括大小寫)。
輸入描述:
多組輸入,每行輸入包括一個字元。
輸出描述:
針對每行輸入,輸出該字元是字母(YES)或不是(NO)。
示例1
輸入:
H
9
輸出:
YES
NO
#include<stdio.h>
int main()
{
char ch;
while((ch=getchar())!=EOF)
{
//方法一
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
printf("YES\n");
else
printf("NO\n");
//方法二
//#include<ctype.h>
printf("%s",isalpha(ch)?"YES\n":"NO\n");//isalpha(ch)是字母傳回真,不是傳回假
getchar();//處理\n
}
return 0;
}
BC12-字元金字塔
描述
輸入一個字元,用它構造一個三角形金字塔。
輸入描述:
輸入隻有一行,一個字元。
輸出描述:
該字元構成的三角形金字塔。
示例1
輸入:
1
輸出:
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
#include<stdio.h>
int main()
{
char ch;
ch=getchar();
int i;
for(i=0;i<5;i++)
{
int j;
//列印空格
for(j=0;j<4-i;j++)
{
printf(" ");
}
//列印字元
for(j=0;j<=i ;j++)
{
printf("%c ",ch);
}
printf("\n");
}
return 0;
}
BC13-ASCII碼
描述
BoBo教KiKi字元常量或字元變量表示的字元在記憶體中以ASCII碼形式存儲。BoBo出了一個問題給KiKi,轉換以下ASCII碼為對應字元并輸出他們。
73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33
輸入描述:
無
輸出描述:
轉換輸出題目中給出的所有ASCII到對應的字元。
#include<stdio.h>
int main()
{
char arr[]={73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33};
int size=sizeof(arr)/sizeof(arr[0]);
int i=0;
for(;i<size;i++)
printf("%c",arr[i]);
return 0;
}
BC14-出生日期輸入輸出
描述
輸入一個人的出生日期(包括年月日),将該生日中的年、月、日分别輸出。
輸入描述:
輸入隻有一行,出生日期,包括年月日,年月日之間的數字沒有分隔符。
輸出描述:
三行,第一行為出生年份,第二行為出生月份,第三行為出生日期。輸出時如果月份或天數為1位數,需要在1位數前面補0。
示例1
輸入:
20130225
輸出:
year=2013
month=02
date=25
#include<stdio.h>
int main()
{
//方法一
int input;
scanf("%d",&input);
int year=input/10000;
printf("year=%d\n",year);
int month=input/100%100;
if(month<10)
printf("month=0%d\n",month);
else
printf("month=%d\n",month);
int date=input%100;
if(date<10)
printf("date=0%d\n",date);
else
printf("date=%d\n",date);
//方法二
int year,month,date;
scanf("%4d%2d%2d",&year,&month,&date);
printf("year=%d\n",year);
printf("month=%02d\n",month);
printf("date=%02d\n",date);
return 0;
}
BC29-2的n次方計算
描述
不使用累計乘法的基礎上,通過移位運算(<<)實作2的n次方的計算。
輸入描述:
多組輸入,每一行輸入整數n(0 <= n < 31)。
輸出描述:
針對每組輸入輸出對應的2的n次方的結果。
示例1
輸入:
2
10
複制
輸出:
4
1024
#include<stdio.h>
int main()
{
/*
int a=1;//00000000000000000000000000000001
a<<2;//00000000000000000000000000000100
*/
int n;
//多組輸入
while(scanf("%d",&n)!=EOF)
{
//2的n的次方
printf("%d\n",1<<n);
}
return 0;
}
BC15-按照格式輸入并交換輸出
描述
輸入兩個整數,範圍-2^31~2^31-1,交換兩個數并輸出。
輸入描述:
輸入隻有一行,按照格式輸入兩個整數,範圍,中間用“,”分隔。
輸出描述:
把兩個整數按格式輸出,中間用“,”分隔。
示例1
輸入:
a=1,b=2
輸出:
a=2,b=1
#include<stdio.h>
int main()
{
int a=1,b=2;
scanf("a=%d,b=%d",&a,&b);
b=b-a;
a=a+b;
b=a-b;
printf("a=%d,b=%d",a,b);
return 0;
}
BC16-字元轉ASCII碼
描述
BoBo教KiKi字元常量或字元變量表示的字元在記憶體中以ASCII碼形式存儲。BoBo出了一個問題給KiKi,輸入一個字元,輸出該字元相應的ASCII碼。
輸入描述:
一行,一個字元。
輸出描述:
一行,輸出輸入字元對應的ASCII碼。
示例1
輸入:
c
輸出:
99
#include<stdio.h>
int main()
{
printf("%d",getchar());
return 0;
}
BC17-計算表達式的值
描述
請計算表達式“(-8+22)×a-10+c÷2”,其中,a = 40,c = 212。
輸入描述:
無。
輸出描述:
(-8+22)×a-10+c÷2計算之後的結果,為一個整數。
#include<stdio.h>
int main()
{
printf("%d",(-8+22)*40-10+212/2);
return 0;
}
BC18 計算帶餘除法
描述
給定兩個整數a和b (-10,000 < a,b < 10,000),計算a除以b的整數商和餘數。
輸入描述:
一行,包括兩個整數a和b,依次為被除數和除數(不為零),中間用空格隔開。
輸出描述:
一行,包含兩個整數,依次為整數商和餘數,中間用一個空格隔開。
示例1
輸入:
15 2
輸出:
7 1
#include<stdio.h>
int main()
{
int num1=0,num2=0;
scanf("%d %d",&num1,&num2);
printf("%d %d",num1/num2,num1%num2);
return 0;
}