int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
printf("haha\n");
//if (a == 1)
// if (b == 2)
// printf("hehe\n");
// else //else和最近的未匹配的if進(jìn)行匹配,與縮進(jìn)位置無關(guān)
// printf("haha\n");
return 0;
}
int main()
{
int age = 10;
if (age < 18)
printf("未成年\n");
else if (age >= 18 && age < 28)
printf("青年\n");
else if (age >= 28 && age < 50)
printf("壯年\n");
else
printf("老年\n");
//if(18 <= age < 28) //error:18 <= age等價于 0,0 < 28永遠(yuǎn)為真!
//if (age < 18)
// printf("未成年\n");
//else
// printf("成年\n");
return 0;
}
//代碼1
if(condition){
return x;
}
return y;
//代碼2
if(condition)
{
return x;
}
else
{
return y;
}
//代碼3
int num = 4;
if (num = 5) //= 賦值 == 判斷相等
{
printf("hehe\n");
}
//代碼4
int num = 4;
if (5 == num)
{
printf("hehe\n");
}
//1.判斷一個數(shù)是否為奇數(shù)
int main()
{
int num;
scanf("%d", &num);
if (num % 2 != 0)
printf("%d是奇數(shù)!\n", num);
else
printf("%d不是奇數(shù)!\n", num);
return 0;
}
//2.輸出1-100之間的奇數(shù)
int main()
{
for (int num = 1; num < 101; num++)
{
if (num % 2 != 0)
printf("%d ", num);
}
return 0;
}
//3.以下程序的打印結(jié)果是?
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
if (i = 5)
printf("%d ", i); //死循環(huán)的打印5
}
return 0;
}
//4.求a b c中最大的數(shù)
int main()
{
int a=0,b=0, c=0;
scanf("%d %d %d", &a, &b, &c);
if (a > b)
{
int tmp = a;
a = b;
b = tmp;
}
if (b > c)
{
int tmp = b;
b = c;
c = tmp;
}
//如果是三個數(shù)排序,就要加上以下代碼
//if (a > b)
//{
// int tmp = a;
// a = b;
// b = tmp;
//}
printf("%d\n", c);
return 0;
}
//int main()
//{
// int day = 0;
// scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("輸入錯誤\n");
break;
}
// //switch (day) //這個括號里面只能是整型表達(dá)式
// //{
// //case 1: //case 后面只能是整型常量表達(dá)式
// // printf("星期一\n");
// // break;
// //case 2:
// // printf("星期二\n");
// // break;
// //case 3:
// // printf("星期三\n");
// // break;
// //case 4:
// // printf("星期四\n");
// // break;
// //case 5:
// // printf("星期五\n");
// // break;
// //case 6:
// // printf("星期六\n");
// // break;
// //case 7:
// // printf("星期日\n");
// // break;
// //}
//
// //switch (day)
// //{
// //case 1:
// // printf("星期一\n");
// //case 2:
// // printf("星期二\n");
// //case 3:
// // printf("星期三\n");
// //case 4:
// // printf("星期四\n");
// //case 5:
// // printf("星期五\n");
// //case 6:
// // printf("星期六\n");
// //case 7:
// // printf("星期日\n");
// //}
//if (1 == day)
// printf("星期一\n");
//if (2 == day)
// printf("星期二\n");
//if (1 == day)
// printf("星期三\n");
//if (1 == day)
// printf("星期四\n");
...
// return 0;
//}
//1.以下程序的打印結(jié)果是?
int main()
{
int n = 1;
int m = 2;
switch(n) //n=1
{
case 1:
m++; //m=3
case 2:
n++; //n=2
case 3:
switch (n)
{
case 1: //不執(zhí)行
n++;
case 2:
m++; //m=4
n++; //n=3
break;
}
case 4:
m++; //m=5
break;
default:
break;
}
printf("m = %d,n = %d\n", m, n); //m=5,n=3
return 0;
}
//2.以下程序的打印結(jié)果是?
int func(int a)
{
int b;
switch (a)
{
case 1:b = 30;
case 2:b = 20;
case 3:b = 16;
default:b = 0;
}
return b;
}
int main()
{
int ans=func(1);
printf("%d\n", ans); //0
return 0;
}
//3.以下程序的返回結(jié)果是?
int func(int a)
{
int b;
switch (a)
{
case 1:b = 30;
case 2:b = 20;
case 3:b = 16;
default:b = 0;
}
return b; //0
}
//4.以下程序的打印結(jié)果是?
int main()
{
int x = 3;
int y = 3;
switch (x % 2) {
case 1:
switch (y)
{
case 0:
printf("first");
case 1:
printf("second");
break;
default:
printf("hello");
}
case 2:
printf("third");
}
return 0; //hellothird
}
int main()
{
int i = 0;
while (i < 10)
{
i++;
if (i == 5)
continue;
printf("%d ", i); //1 2 3 4 6 7 8 9 10
}
//int i = 1;
//while (i < 11)
//{
// if (i == 5)
// continue;
// printf("%d ", i); //1 2 3 4 死循環(huán)
// i++;
//}
//while (i < 11)
//{
// if (i == 5)
// break;
// printf("%d ", i); //1 2 3 4
// i++;
//}
//while (i<11)
//{
// printf("%d ", i);
// i++;
//}
//while (1) //死循環(huán)
// printf("hehe\n");
return 0;
}
總結(jié):continue在while循環(huán)中的作用是:
//代碼1
int main()
{
int ch = 0;
//ctrl + z - ch獲取到EOF
//EOF - end of file - 值為-1
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
//int ch=getchar();
//putchar(ch);
//printf("%c\n", ch);
return 0;
}
//代碼2
int main()
{
int ret = 0;
int ch = 0;
char password[20] = { 0 };
printf("請輸入密碼:");
scanf("%s", password);//請輸入密碼,并存放在password數(shù)組中
//緩沖區(qū)還剩余一個'\n'
//讀取一個'\n'
while ((ch = getchar()) != '\n')
{
;
}
printf("請確認(rèn)(Y/N):>");
ret = getchar();//Y/N
if (ret == 'Y')
{
printf("確定成功\n");
}
else
{
printf("放棄確認(rèn)\n");
}
//printf("%d\n", '\n'); //10
return 0;
}
//代碼3
int main()
{
int ch = 0;
while ((ch=getchar())!=EOF)
{
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}
return 0;
}
輸入緩沖區(qū):
//1.以下程序的輸出結(jié)果是?
int main()
{
int i = 0;
for (i = 0; i<10; i++)
{
if (i = 5)
printf("%d ", i); //死循環(huán)的打印5
}
return 0;
}
//2.求兩個數(shù)的最大公約數(shù)和最小公倍數(shù)
Min(int x, int y)
{
return x < y ? x : y;
}
Max(int x, int y)
{
return x > y ? x : y;
}
int main()
{
int a = 0;
int b = 0;
int yue = 0;
int bei = 0;
int min = 0;
int max = 0;
int pos = 1;
scanf("%d%d", &a, &b);
min = Min(a, b);
max = Max(a, b);
//求最大公約數(shù)
while (pos <= min)
{
if (a % pos == 0 && b % pos == 0)
yue = pos;
pos++;
}
pos = max;
//求最小公倍數(shù)
while(max<=a*b)
{
if (pos % a == 0 && pos % b == 0) {
bei = pos;
break;
}
pos++;
}
printf("%d %d\n",yue,bei);
return 0;
}
//3.打印1000年到2000年之間的閏年
int main()
{
for (int year = 1000; year <= 2000; year++)
{
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
printf("%d ",year);
}
return 0;
}
//4.打印n以內(nèi)的素數(shù)
int isPrime(int num)
{
for (int i = 2; i < num; i++)
{
if (num % i == 0)
return 0;
}
return 1;
}
int main()
{
int n = 0;
scanf("%d", &n);
for (int i = 2; i <= n; i++)
{
if (isPrime(i))
printf("%d\n", i);
}
return 0;
}
//5.輸入三個數(shù),并從大到小輸出。
int main()
{
//解法1
int a = 0;
int b = 0;
int c = 0;
scanf("%d %d %d", &a, &b, &c);
if (a > b)
{
int tmp = a;
a = b;
b = tmp;
}
if (b > c)
{
int tmp = b;
b = c;
c = tmp;
}
if (a > b)
{
int tmp = a;
a = b;
b = tmp;
}
printf("%d %d %d\n", a,b,c);
//int arr[3] = { 0 };
//for (int i = 0; i < 3; i++)
//{
// scanf("%d", &arr[i]);
//}
解法2:冒泡排序
//for (int i = 3; i >= 2; i--)
// for (int j = 1; j < i; j++)
// {
// if (arr[j - 1] > arr[j]) {
// int tmp = arr[j];
// arr[j] = arr[j - 1];
// arr[j - 1] = tmp;
// }
// }
//for (int i = 2; i >= 0; i--)
//{
// printf("%d ", arr[i]);
//}
return 0;
}
int main()
{
int i = 0;
// 初始化 判斷 調(diào)整
for (int i = 1; i <= 10; i++)
{
if (i == 5)
//break; //1 2 3 4
continue; //1 2 3 4 6 7 8 9 10
printf("%d ", i);
}
return 0;
}
//變種1
int main()
{
//for循環(huán)的初始化,調(diào)整、判斷都可以省略
//但是for循環(huán)的判斷部分被省略,那判斷條件就是:恒為真
for (;;) // 死循環(huán)
{
printf("hehe\n");
}
return 0;
}
int main()
{
int i = 0;
int j = 0;
for (; i < 10; i++)
{
//第二次外循環(huán)開始后,內(nèi)循環(huán)中的j仍未10,故不打印 hehe
for (; j < 10; j++)
{
printf("hehe\n"); //打印10個hehe
}
}
//for (int i = 0; i < 10; i++)
//{
// for (int j = 0; j < 10; j++)
// {
// printf("hehe\n"); //打印100個hehe
// }
//}
return 0;
}
//變種2
int main()
{
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; x++, y++)
{
printf("hehe\n"); //打印兩個 hehe
}
return 0;
}
for循環(huán)與while循環(huán)對比:
一些建議:
- 不可在for循環(huán)體內(nèi)修改循環(huán)變量,防止for循環(huán)失去控制。
- 建議for語句的循環(huán)控制變量的取值采用“前閉后開區(qū)間”寫法。
//2.
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
//1.
//int main()
//{
// int i = 0;
// for (int i = 0; i < 10; i++)
// {
// if (i = 5)
// printf("haha\n");
// printf("hehe\n");
// }
// return 0;
//}
//1.請問以下循環(huán)要循環(huán)多少次?
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++) //k=0為假,循環(huán)零次
k++;
return 0;
}
int main()
{
int i = 1;
do
{
if (i == 5)
break;
//continue; //1 2 3 4 死循環(huán)
printf("%d ", i);
i++;
}
while (i <= 10);
return 0;
}
//1.計算n的階乘
int main()
{
int n = 0;
int ret = 1;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
ret *= i;
}
printf("%d\n", ret);
return 0;
}
//2.計算1!+2!+ ...n!
int main()
{
int n = 0;
int num = 1;
int ret = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
num *= i;
ret += num;
}
printf("%d\n", ret);
return 0;
}
//3.在有序數(shù)組中尋找指定元素
//二分查找
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]); //計算元素個數(shù)
int lt = 0;
int rt = sz;
while (lt <= rt)
{
int mid = (lt + rt) / 2;
if (arr[mid] == k)
{
printf("找到了,下標(biāo)為: %d\n", mid);
break;
}
else if (arr[mid] < k)
{
lt = mid + 1;
}
else
{
rt = mid - 1;
}
}
if (lt > rt)
printf("找不到\n");
return 0;
}
//順序查找
//int main()
//{
// int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
// int k = 7;
// //寫一個代碼,在arr數(shù)組(有序的)中找到7
// int sz = sizeof(arr) / sizeof(arr[0]);
// for (int i = 0; i < sz; i++)
// {
// if (k == arr[i])
// {
// printf("找到了,下標(biāo)是:%d\n", i);
// break;
// }
// if (i == sz)
// printf("找不到\n");
// }
// return 0;
//}
//4.編寫代碼,演示多個字符從兩端向中間匯聚顯示
//考點:數(shù)組拷貝
#include<string.h>
#include<windows.h>
#include<stdlib.h>
int main()
{
//welcome to aoligei!!!
//#####################
//w###################!
//we#################!!
//wel###############!!!
//...
//welcome to aoligei!!!
//
//char arr[]="abc";
//[a b c \0]
// 0 1 2 3
//4-2
char arr1[] = "welcome to aoligei!!!";
char arr2[] = "#####################";
int left = 0;
//int right = sizeof(arr1) / sizeof(arr1[0]) - 1; //err
//int right = sizeof(arr1) / sizeof(arr1[0]) - 2;
int right = strlen(arr1)-1;
while (left<=right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
//休息一秒
Sleep(1000);
system("cls");//執(zhí)行系統(tǒng)命令的一個函數(shù) - cls - 清空屏幕
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
//5.模擬用戶登錄情景,并且只能登錄三次。
//(只允許輸入三次密碼,如果密碼正確則提示登錄成功,
//如果三次均輸入錯誤,則退出程序。)
//考點:比較字符串是否相等 - strcmp
#include<string.h>
int main()
{
char password[20] = { 0 };
for (int i = 0; i < 3; i++)
{
printf("請輸入密碼:");
scanf("%s", password);
//if (password == "123456") //== 不能用來比較兩個字符串是否相等
//strcmp中比較的兩個字符串若相等,則返回0
if (strcmp(password, "123456") == 0)
{
printf("登錄成功\n");
break;
}
if (i == 2)
printf("登錄失敗!\n");
}
return 0;
}
//6.以下程序的輸出結(jié)果是?
int main()
{
int a = 0, b = 0;
for (a = 1, b = 1; a <= 100; a++)
{
if (b >= 20) break;
if (b % 3 == 1)
{
b = b + 3;
continue;
}
b = b - 5;
}
printf("%d\n", a); //8
return 0;
}
//7. 1到 100 的所有整數(shù)中出現(xiàn)多少個數(shù)字9
int main()
{
int count = 0;
for (int i = 1; i <= 100; i++)
{
int num = i;
while (num != 0)
{
if (num % 10 == 9)
count++;
num /= 10;
}
}
printf("%d\n", count);
return 0;
}
//8.計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出結(jié)果
int main()
{
double sum = 0.0;
int flag = 1;
for (int i = 1; i <= 100; i++)
{
sum += flag * 1.0 / i;
flag = -flag;
}
//注意這里的輸出格式是 %lf
printf("%lf\n", sum); //0.688172
return 0;
}
//9.求10 個整數(shù)中最大值
#define N 10
int main()
{
int arr[N] = { 0 }; //這里使用宏定義來為數(shù)組開辟空間
int max = 0;
for (int i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
if (arr[i] > max) {
max = arr[i];
}
}
printf("%d\n", max);
return 0;
}
//10.在屏幕上輸出9*9乘法口訣表
int main()
{
for (int i = 1; i <= 9; i++)
{
for (int j = i; j <= 9; j++) //注意:這里的j從i開始!
{
printf("%d * %d = %d\t", i, j, i * j);
}
printf("\n");
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//11.猜數(shù)字游戲
//11.1電腦會生成一個隨機(jī)數(shù)
//11.2猜數(shù)字
void menu()
{
printf("*********************************\n");
printf("**** 1.play 0.exit ****\n");
printf("*********************************\n");
}
//RAND_MAX 0-32767
void game()
{
//1.生成一個隨機(jī)數(shù)
int ret = 0;
int guess = 0;//接收猜的數(shù)字
int count = 0;//記錄猜數(shù)字的次數(shù)
//拿時間戳來設(shè)置隨機(jī)數(shù)的生成起始點
//time_t time(time_t * timer)
//time_t
//ret = rand(); //生成 0-32767 之間的隨機(jī)數(shù)
ret = rand() % 100 + 1;//生成 1-100 之間的隨機(jī)數(shù)
//printf("%d\n",ret);
//2.猜數(shù)字
while (1)
{
printf("請猜數(shù)字:");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了!\n");
count++;
if (count > 2)
printf("能不能不要下幾把拆!\n");
}
else if (guess < ret)
{
printf("猜小了!\n");
count++;
if (count > 2)
printf("您怎么回事?不會猜?\n");
}
else
{
printf("額,終于猜對了。。。\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("請選擇:");
scanf("%d", &input);
switch (input)
{
case 1:
game(); //猜數(shù)字游戲
break;
case 0:
printf("退出游戲\n");
break;
default:
printf("選擇錯誤\n");
break;
}
} while (input);
return 0;
}
C語言中提供了可以隨意濫用的goto語句和標(biāo)記跳轉(zhuǎn)的標(biāo)號。
從理論上goto語句是沒有必要的,但是某些場合下goto語句還是用得著的,最常見的用法就是終止程序在某些深度嵌套的結(jié)構(gòu)的處理過程,例如一次跳出兩層或多層循環(huán)。
這種情況使用break是達(dá)不到目的的。它只能從最內(nèi)層循環(huán)退出到上一層的循環(huán)。
for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
...
error:
if(disaster)
//處理錯誤情況
//關(guān)機(jī)小程序
#include<string.h>
int main()
{
char input[20] = { 0 };
//shutdown -s -t 60
//system() - 執(zhí)行系統(tǒng)命令的
system("shutdown -s -t 60");
while (1)
{
printf("請注意,您的電腦將在1分鐘內(nèi)關(guān)機(jī),如果輸入:【我是豬】,就取消關(guān)機(jī)\n請輸入:");
scanf("%s", input);
if (strcmp(input, "我是豬") == 0)//比較兩個字符串 - strcmp() -相等則返回0
{
system("shutdown -a");
break;
}
}
return 0;
}
//int main()
//{
// char input[20] = { 0 };
// //shutdown -s -t 60
// //system() - 執(zhí)行系統(tǒng)命令的
// system("shutdown -s -t 60");
//again:
// printf("請注意,您的電腦將在1分鐘內(nèi)關(guān)機(jī),如果輸入:【我是豬】,就取消關(guān)機(jī)\n請輸入:");
// scanf("%s", input);
// if (strcmp(input, "我是豬") == 0)//比較兩個字符串 - strcmp() -相等則返回0
// {
// system("shutdown -a");
// }
// else
// {
// goto again;
// }
// return 0;
//}
因篇幅問題不能全部顯示,請點此查看更多更全內(nèi)容
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號-2
違法及侵權(quán)請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬商天勤律師事務(wù)所王興未律師提供法律服務(wù)